6a 00 push 0
004208a5 6a 00 push 0
004208a7 68 8c164c00 push 004c168c ; ascii "demo"
004208ac 50 push eax
004208ad e8 fa730600 call 00487cac
004208b2 68 84164c00 push 004c1684 ; ascii "skin"
004208b7 68 7c164c00 push 004c167c ; ascii "skin1"
004208bc 6a 00 push 0
004208be e8 94780600 call 00488157
004208c3 e9 c1640000 jmp 00426d89 ; jmp to mfc42.#5943
经过n久的时间把全部的正确代码找回来了之后,dump下code段,第一个任务就算完成了,接下来完成第二个任务。
去除replace code:
这个任务也算是acprotect 的一样法宝吧,替换了很多的代码。每次替换5个字节的代码,方式为3+2或2+3,壳
解压出来时已经加了垃圾代码。
重来,载入目标,先在rdata段下断点,断下后,在text段下断,运行停止在fake oep后,在最后一个段下内存写
入断点。再运行,这样就中断在replace code的关键代码处了:
sub_restore_replace_code:
0057d02e > 60 pushad ; sub_restore_replace_code
0057d02f 4a dec edx
0057d030 fc cld
......
0057d0eb 8945 1d mov dword ptr ss:[ebp+1d],eax ; 中断在这里
0057d0ee eb 01 jmp short 0057d0f1
......
0057d1c5 83e9 01 sub ecx,1
0057d1c8 ^ 0f85 69ffffff jnz 0057d137 ; 循环解压代码
0057d1ce eb 01 jmp short 0057d1d1
0057d1d0 71 72 jno short <decrypt_replaced_code>
0057d1d2 06 push es
0057d1d3 81e7 b34d2a57 and edi,572a4db3
0057d1d9 e8 22ef0000 call <sub_getebp >
0057d1de 8b4424 20 mov eax,dword ptr ss:[esp+20] ; 取call这个处理模块的地址
0057d1e2 33c9 xor ecx,ecx
0057d1e4 8b9c8d 812e4000 mov ebx,dword ptr ss:[ebp+ecx*4+402e81>; 指向一个表,通过在表里查询来还原代码
0057d1eb 039d 46f84000 add ebx,dword ptr ss:[ebp+40f846]
0057d1f1 3bc3 cmp eax,ebx
0057d1f3 74 07 je short 0057d1fc ; 表里查到符合条件的则跳
0057d1f5 90 nop
0057d1f6 90 nop
0057d1f7 90 nop
0057d1f8 90 nop
0057d1f9 41 inc ecx
0057d1fa ^ eb e8 jmp short 0057d1e4 ; 循环查表
0057d1fc 8db5 615d4000 lea esi,dword ptr ss:[ebp+405d61]
0057d202 b8 0a000000 mov eax,0a
0057d207 f7e1 mul ecx
0057d209 03f0 add esi,eax
0057d20b 8dbd 07184000 lea edi,dword ptr ss:[ebp+401807]
0057d211 0fb6840d c92240>movzx eax,byte ptr ss:[ebp+ecx+4022c9]
0057d219 fec0 inc al
0057d21b 88840d c9224000 mov byte ptr ss:[ebp+ecx+4022c9],al
0057d222 3c 20 cmp al,20
0057d224 75 13 jnz short 0057d239
0057d226 90 nop
0057d227 90 nop
0057d228 90 nop
0057d229 90 nop
0057d22a 8bbd 4af84000 mov edi,dword ptr ss:[ebp+40f84a]
0057d230 b8 0a000000 mov eax,0a
0057d235 f7e1 mul ecx
0057d237