冰凌汇编

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 81|回复: 0
收起左侧

[原创] VMProtect 3.x IAT Fix

[复制链接]
aaaaaaa2 发表于 2022-7-28 23:51:45

VMProtect 3.x IAT Fix

This Program is a dynamic x86/x64 VMProtect 3.x import fixer(Tested on VMP3.3). The main goal of this project was to build correct and reliable tool to fix imports in x86/x64 applications.

Note: this tool can dump and rebuild import directory .

​          Fix 32bit program,please use 32bit version,vice versa .

Before

VMProtect 3.x IAT Fix - aaaaaaa2_冰凌汇编

After
VMProtect 3.x IAT Fix - aaaaaaa2_冰凌汇编

new IAT:
VMProtect 3.x IAT Fix - aaaaaaa2_冰凌汇编

Compile

VS2019

Usage

VMProtect 3.x IAT Fix - aaaaaaa2_冰凌汇编

-p :target process pid

-s :This tool first search call IAT address in sections,-s option specify ignore  sections default [.vmp0,.vmp1,.vmp2]

-i :specify the section that is used to storage IAT in memory,if you don't  specify this option, this tool default will use VirtualAlloc alloc memory that is used to store IAT content

-d :dump file and rebuild import table

Tips:VMProtect unpacking must be complete before running this tool ,

Example:

when target program is reach to OEP
VMProtect 3.x IAT Fix - aaaaaaa2_冰凌汇编

execute this tool

.\vmp3-import-fix.exe -p 31652

if you want dump and rebuild import table

.\vmp3-import-fix.exe -p 31652 -d

if you want dump,rebuild import table and fix new iat in .vmp0 section

.\vmp3-import-fix.exe -p 31652 -d -i ".vmp0"

below is dump and fix import table result for ida.vmp.exe
VMProtect 3.x IAT Fix - aaaaaaa2_冰凌汇编

new IAT section in the last section
VMProtect 3.x IAT Fix - aaaaaaa2_冰凌汇编

you can see log  file in log/logger.txt
VMProtect 3.x IAT Fix - aaaaaaa2_冰凌汇编

VMProtect 3.x IAT Fix - aaaaaaa2_冰凌汇编

VMProtect Encrypt IAT detail

VMProtect encrypt IAT through 3 modes

  1. call ret or call int3 or call 0xXX
  2. push call
  3. pop call

Call Ret mode

original code:

.text:0040D87E 50                              push   eax       *; hFile*

.text:0040D87F FF 15 1C C1 45 00               call   ds:FlushFileBuffers

.text:0040D885 85 C0                            test   eax, eax

encdrypt IAT

0040D87E | 50                         | push eax                                                   |
0040D87F | E8 47890B00                | call test1_vmp.4C61CB                                      |
0040D884 | C3                         | ret                                                        |
0040D885 | 85C0                       | test eax,eax                                               |

at address 0x0040D87F,code call   ds:FlushFileBuffers has changed to call test1_vmp.4C61CB ;ret

we follow encrypt IAT code,below code analyze process that VMProtect decrypt API Address

004C61CC | 55                         | push ebp                                                   |保存ebp
004C61CD | 0FCD                       | bswap ebp                                                  |
004C61CF | 66:8BE9                    | mov bp,cx                                                  |
004C61D2 | 66:BD F53D                 | mov bp,3DF5                                                |
004C61D6 | 8B6C24 04                  | mov ebp,dword ptr ss:[esp+4]                               |ebp=call返回地址
0048718D | 8D6D 01                    | lea ebp,dword ptr ss:[ebp+1]                               |ebp=call返回地址+1
0056A3E4 | 896C24 04                  | mov dword ptr ss:[esp+4],ebp                               |[esp+4]=call返回地址+1
0056A3E8 | 66:0F47EB                  | cmova bp,bx                                                |
0056A3EC | 0FBFED                     | movsx ebp,bp                                               |
0056A3EF | BD E6224000                | mov ebp,test1_vmp.4022E6                                   |
004B2DCA | 8BAD 432F0800              | mov ebp,dword ptr ss:[ebp+82F43]                           |
004BF11F | 8DAD C713DE73              | lea ebp,dword ptr ss:[ebp+73DE13C7]                        |
004F561B | 872C24                     | xchg dword ptr ss:[esp],ebp                                |恢复ebp,esp[0]=api地址
                                        ret                                                         |ret返回到Api

Push Call  mode

original code

.text:004099DF 56                                                           push    esi
.text:004099E0 8B 35 0C C0 45 00                                            mov     esi,ds:InitializeCriticalSection
.text:004099E6 FF 35 A4 41 41 00                                            push    lpCriticalSection ; lpCriticalSection

code mov     esi,ds:InitializeCriticalSection has changed to push ebx  call test1_vmp.57350F

Thanks

unicorn

BlackBone

vmpfix

Scylla

zydis

spdlog

Dwon

https://github.com/woxihuannisja/vmp3-import-fix

冰凌汇编免责声明
以上内容均来自网友转发或原创,如存在侵权请发送到站方邮件9003554@qq.com处理。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|站点统计|Archiver|小黑屋|RSS|冰凌汇编 ( 滇ICP备2022002049号 滇公网安备 53032102000029号)|网站地图

GMT+8, 2022-9-25 07:17 , Processed in 0.127136 second(s), 8 queries , Redis On.

冰凌汇编 - 建立于2021年12月20日

Powered by Discuz! © 2001-2022 Comsenz Inc.

快速回复 返回顶部 返回列表