|
004F774D 8B048E mov eax, dword ptr ds:[esi+ecx*4] //下断点Shift+F9中断2,清除内存断点。
004F7750 8B5C8E 04 mov ebx, dword ptr ds:[esi+ecx*4+4]
004F7754 2BC3 sub eax, ebx
004F7756 C1C8 11 ror eax, 11
004F7759 03C2 add eax, edx
004F775B 81F2 B0362B9F xor edx, 9F2B36B0
004F7761 89048E mov dword ptr ds:[esi+ecx*4], eax
004F7764 49 dec ecx
004F7765 ^ EB E1 jmp short Pey.004F7748
004F7767 61 popad
004F7768 61 popad
004F7769 C3 retn //F4直接下来,这时是模拟跟踪的时候了。
........................................................................
Ctrl+T设置暂停运行跟踪条件
将命令是一个复选框打勾,填入 PUSH EBP ,确定。
这个条件断点如何在命令行设置,肯请诸位大侠不吝指教。为什么要设置这个命令,先前已说明这是Acprotect的死穴之一,对准它点吧。
Ctrl+F11跟踪进入每个Call,1分钟左右。
004254C9 55 push ebp //Stolen Code
004254CA 8BEC mov ebp, esp //Stolen Code //一切尽在掌握
004254CC 83EC 44 ADD ESP,-10 //Stolen Code
004254CF 60 pushad
004254D0 60 pushad
005074D1 E8 00000000 call Pey.005074D6
也可以下个12ffc0的硬件写入dword断点,可以断在4254CA这句
........................................................................
这个程序抽了六个字节。
ALT+M 打开内存镜像断点,对准它的第二个死穴点。
内存镜像,项目 21
地址=00401000 //Code段下内存访问断点
大小=000B7000 (749568.)
Owner=Pey 00400000
区段=CODE
包含=code
类型=Imag 01001002
访问=R
初始访问=RWE
F9运行到达
004B7220 BF C12D8DE2 mov edi, E28D2DC1
004B7225 90 nop
004B7226 B8 A86F4B00 mov eax, Pey.004B6FA8 //临时Oep,滚动条向上看,如何判断抽掉多少字节,用滚动条是代码会混乱,然后用Ctrl+向上下键配合保证看到临时Oep代码完整,并且上面的要有几行代码同时存在,如我现在调整的样式。
004B722B E8 6CF4F4FF call Pey.0040669C
004B7230 A1 C4A04B00 mov eax, dword ptr ds:[4BA0C4]
004B7235 8B00 mov eax, dword ptr ds:[eax]
004B7237 E8 C48CFCFF call Pey.0047FF00
004B723C A1 C4A04B00 mov eax, dword ptr ds:[4BA0C4]
004B7241 8B00 mov eax, dword ptr ds:[eax]
004B7243 BA 80724B00 mov edx, Pey.004B7280
004B7248 E8 AB88FCFF call Pey.0047FAF8
004B724D 8B0D F4A14B00 mov ecx, dword ptr ds:[4BA1F4] ; Pey.004BBCAC
004B7253 A1 C4A04B00 mov eax, dword ptr ds:[4BA0C4]
004B7258 8B00 mov eax, dword ptr ds:[eax]
004B725A 8B15 48E44A00 mov edx, dword ptr ds:[4AE448] ; Pey.004AE494
004B7260 E8 B38CFCFF call Pey.0047FF18
........................................................................
OD直接修复找到的六个字节。
004B7220 55 push ebp //用Od插件修正入口为B7220直接脱壳吧,重建输入表的勾去掉
004B7221 8BEC mov ebp, esp
004B7223 83C4 F0 add esp, -10
004B7226 B8 A86F4B00 mov eax, Pey.004B6FA8
004B722B E8 6CF4F4FF call Pey.0040669C
004B7230 A1 C4A04B00 mov eax, dword ptr ds:[4BA0C4]
004B7235 8B00 mov eax, dword ptr ds:[eax]
004B7237 E8 C48CFCFF call Pey.0047FF00
004B723C A1 C4A04B00 mov eax, dword ptr ds:[4BA0C4]
004B7241 8B00 mov eax, dword ptr ds:[eax]
004B7243 BA 80724B00 mov edx, Pey.004B7280
004B7248 E8 AB88FCFF call Pey.0047FAF8
004B724D 8B0D F4A14B00 mov ecx, dword ptr ds:[4BA1F4] ; Pey.004BBCAC
004B7253 A1 C4A04B00 mov eax, dword ptr ds:[4BA0C4]
004B7258 8B00 mov eax, dword ptr ds:[eax]
004B725A 8B15 48E44A00 mov edx, dword ptr ds:[4AE448] ; Pey.004AE494
004B7260 E8 B38CFCFF call Pey.0047FF18
........................................................................
修复IAT必须关闭OD单独开加壳程序修复,不然ImportREC停止响应,最后用ImportREC Oep填B7220,跟踪等级三轻松修复,无法运行!? 寻找出错原因。
004F01F8 /78 01 js short dumped_.004F01FB
004F01FA |F8 clc
004F01FB \BF 58D5CC8F mov edi, 8FCCD558
004F0200 8B45 00 mov eax, dword ptr ss:[ebp]
004F0203 7C 03 jl short dumped_.004F0208
004F0205 7D 01 jge short dumped_.004F0208
004F0207 E9 E9040000 jmp dumped_.004F06F5
004F020C 004E 66 add byte ptr ds:[esi+66], cl
004F020F 1BD9 sbb ebx, ecx
004F0211 33C2 xor eax, edx
004F0213 50 push eax
004F0214 E8 01000000 call dumped_.004F021A //发现这个Call可能是新版Acprotect的解码技术,和完美卸载Xp里面的一样的,这一段修复一直没搞定,比原先的Jmp xxxxx 那种语句难多了。
004F0219 EA 58587B05 668>jmp far 8166:057B5858
不好意思,文章没写完,卡住了。
今天看到Fly大侠的文章,呵呵,明白是什么一会事。
其实本版本Acprotect嵌有Oep处代码检验程序,发现Oep处代码被替换,立即拒绝解码,你失去了关键的代码当然程序无法运行,还要承认N次错误确定按钮。
上一页 [1] [2] [3] 下一页 |