吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2960|回复: 2
收起左侧

[讨论] vmp IAT 脚本修复问题

[复制链接]
hjm666 发表于 2019-7-7 11:15
到手一个vmp壳,如图,应该是一个 vmp 1.x版本的壳。
搜狗截图20190704190748.png

撸到OEP后,在进一步的修复IAT输入表过程中遇到了一时间无法解决的问题。
       以前也没脱过相应的VMP壳以及需要写脚本修复IAT输入表单的壳,所以以下的脚本编写以及壳的脱法,都是从网络上各个帖子中一点一点分析,以及总结出来的。
[如有错误,望大佬指正,学习的机会很甚重要,不胜感激!]

脚本编写思路
       1、将VMP对IAT的调用以及操作的进行加密的call 找出来
       2、定位VMP解密后对IAT以及API地址进行操作的代码,将我们需要的信息记录
       3、对相应的IAT地址等对程序代码进行写入还原真实地址,然后进行重复2-3步骤,直到IAT修复完成
问题来了,我需要编写的脚本在第二步骤卡住了。我无法让脚本定位到这些vmp解密后调用的代码,未找到相应特征,规律,一时间无法解决。

先上我找到的一些进行操作的代码吧。


[Asm] 纯文本查看 复制代码
0086239C    870424          xchg dword ptr ss:[esp],eax
0086239F    60              pushad
008623A0    66:0FB6C2       movzx ax,dl
008623A4    60              pushad
008623A5    B8 156C4300     mov eax,Main.00436C15          eax ,第一次进行操作
008623AA  ^ E9 F0E6F5FF     jmp Main.007C0A9F
007C0A9F    8B80 662D4200   mov eax,dword ptr ds:[eax+0x422D66]     第二次进行操作
007C0AA5  ^ E9 3751FDFF     jmp Main.00795BE1
00795BE1    E8 686C0500     call Main.007EC84E
007EC84E   /E9 60C00400     jmp Main.008388B3
008388B3    8D80 CE307320   lea eax,dword ptr ds:[eax+0x207330CE]           计算出真实api地址,存到eax
008388B9  ^ E9 63B5FBFF     jmp Main.007F3E21
007F3E21    874424 44       xchg dword ptr ss:[esp+0x44],eax     将api地址写入到iat地址中 , 关键代码
007F3E25    57              push edi                                 ; Main.00636BD0
007F3E26    FF7424 48       push dword ptr ss:[esp+0x48]
007F3E2A    C2 4C00         retn 0x4C


搜狗截图20190705182336.png





[Asm] 纯文本查看 复制代码
007DE13B    895424 1C       mov dword ptr ss:[esp+0x1C],edx          ; ntdll.KiFastSystemCallRet
007DE13F    894C24 04       mov dword ptr ss:[esp+0x4],ecx
007DE143    5A              pop edx                                  ; Main.00795BE6
007DE144    BA EB954200     mov edx,Main.004295EB         edx ,第一次进行赋值
007DE149    9C              pushfd
007DE14A    9C              pushfd
007DE14B    60              pushad
007DE14C    8B92 53DD4000   mov edx,dword ptr ds:[edx+0x40DD53]       第二次进行操作
007DE152    55              push ebp  
007DE153    E8 59E20700     call Main.0085C3B1
0085C3B1  ^\E9 923DFAFF     jmp Main.00800148
00800148    68 34DBBE34     push 0x34BEDB34
0080014D    8D92 C7F218B7   lea edx,dword ptr ds:[edx-0x48E70D39]    第三次得出api地址
00800153  ^ E9 5463FFFF     jmp Main.007F64AC
007F64AC    E8 EB61FFFF     call Main.007EC69C
007EC69C    9C              pushfd
007EC69D    894C24 0C       mov dword ptr ss:[esp+0xC],ecx
007EC6A1    875424 50       xchg dword ptr ss:[esp+0x50],edx         ; ntdll.KiFastSystemCallRet     写入过程,关键
007EC6A5    887424 04       mov byte ptr ss:[esp+0x4],dh
007EC6A9    893424          mov dword ptr ss:[esp],esi
007EC6AC    FF7424 50       push dword ptr ss:[esp+0x50]
007EC6B0    C2 5400         retn 0x54


搜狗截图20190705182938.png






[Asm] 纯文本查看 复制代码
007CE36D    BB ED9A4500     mov ebx,Main.00459AED       ////
007CE372    C74424 04 4B9F5>mov dword ptr ss:[esp+0x4],0x155A9F4B
007CE37A    E9 2CE00100     jmp Main.007EC3AB
007EC3AB    8B9B 137E3E00   mov ebx,dword ptr ds:[ebx+0x3E7E13]       /////
007EC3B1    FF3424          push dword ptr ss:[esp]
007EC3B4    8D9B 8DAE9EF3   lea ebx,dword ptr ds:[ebx-0xC615173]    /////
007EC3BA    E9 8E790100     jmp Main.00803D4D
00803D4D    880C24          mov byte ptr ss:[esp],cl
00803D50    875C24 3C       xchg dword ptr ss:[esp+0x3C],ebx      ////
00803D54    9C              pushfd
00803D55    51              push ecx
00803D56    68 D80E9E6D     push 0x6D9E0ED8
00803D5B    FF7424 48       push dword ptr ss:[esp+0x48]
00803D5F    C2 4C00         retn 0x4C







[Asm] 纯文本查看 复制代码
007E3873    66:0FCE         bswap si
007E3876    BE CA944600     mov esi,Main.004694CA        ///
007E387B    E9 F69F0000     jmp Main.007ED876
007ED876    FF3424          push dword ptr ss:[esp]
007ED879    8BB6 C1863600   mov esi,dword ptr ds:[esi+0x3686C1]      ; Main.006A9610    /////
007ED87F    9C              pushfd
007ED880    E8 0D270400     call Main.0082FF92
0082FF92    896424 04       mov dword ptr ss:[esp+0x4],esp
0082FF96    8DB6 BE8E97A3   lea esi,dword ptr ds:[esi-0x5C687142]      /////
0082FF9C    9C              pushfd
0082FF9D    68 2BC161AC     push 0xAC61C12B
0082FFA2    877424 3C       xchg dword ptr ss:[esp+0x3C],esi    /////
0082FFA6    FF7424 04       push dword ptr ss:[esp+0x4]              ; Main.007DE158
0082FFAA    FF7424 40       push dword ptr ss:[esp+0x40]
0082FFAE    C2 4400         retn 0x44







[Asm] 纯文本查看 复制代码
007E13AA    9C              pushfd
007E13AB    0FBEDA          movsx ebx,dl
007E13AE    8D99 631BE38D   lea ebx,dword ptr ds:[ecx-0x721CE49D]
007E13B4    BB 818A4200     mov ebx,Main.00428A81       /////
007E13B9    9C              pushfd
007E13BA    C70424 39FA3FA7 mov dword ptr ss:[esp],0xA73FFA39
007E13C1    E8 D91E0700     call Main.0085329F
0085329F    9C              pushfd
008532A0    8B9B 5A0E3D00   mov ebx,dword ptr ds:[ebx+0x3D0E5A]     /////
008532A6    68 20627128     push 0x28716220
008532AB    FF3424          push dword ptr ss:[esp]
008532AE  ^ E9 ACA0FDFF     jmp Main.0082D35F
0082D35F    8D9B 1030684B   lea ebx,dword ptr ds:[ebx+0x4B683010]     ////
0082D365    C64424 04 51    mov byte ptr ss:[esp+0x4],0x51
0082D36A    9C              pushfd
0082D36B    E9 B0C40200     jmp Main.00859820
00859820    51              push ecx
00859821    875C24 50       xchg dword ptr ss:[esp+0x50],ebx   /////
00859825    886C24 0C       mov byte ptr ss:[esp+0xC],ch
00859829    C60424 E0       mov byte ptr ss:[esp],0xE0
0085982D    FF7424 50       push dword ptr ss:[esp+0x50]
00859831    C2 5400         retn 0x54








[Asm] 纯文本查看 复制代码
007967AB    B9 F6AF4700     mov ecx,Main.0047AFF6    ////
007967B0    9C              pushfd
007967B1    C60424 EB       mov byte ptr ss:[esp],0xEB
007967B5    FF3424          push dword ptr ss:[esp]
007967B8    8B89 AD603B00   mov ecx,dword ptr ds:[ecx+0x3B60AD]     ////
007967BE    60              pushad
007967BF    9C              pushfd
007967C0    9C              pushfd
007967C1    E8 CD680000     call Main.0079D093
0079D093    8D89 D1B1148C   lea ecx,dword ptr ds:[ecx-0x73EB4E2F]    ////
0079D099    9C              pushfd
0079D09A    E8 7BAA0200     call Main.007C7B1A
007C7B1A    874C24 44       xchg dword ptr ss:[esp+0x44],ecx    /////
007C7B1E    68 299EF656     push 0x56F69E29
007C7B23    9C              pushfd
007C7B24    FF7424 4C       push dword ptr ss:[esp+0x4C]             ; Main.00467DED
007C7B28    C2 5000         retn 0x50




        问题目前就是这样了,不知道怎么让脚本在漫漫代码中定位到这些进行关键操作的代码 ,有试过下对代码层等的内存访问或者写入断点,都跑飞了。
如果有,写过相应脚本的大佬希望能指出,不胜感激。看了别人的成品脚本,也是到了如何定位这块代码过程中不甚很懂。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

安兆童 发表于 2019-7-7 11:32
谢谢分享一下!
llkbkh 发表于 2019-7-9 15:12
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 19:12

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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