声明:
1.只为纪录自己成长历程,高手勿喷
2.您的热心是新手持续发帖的动力
1.载入PEID
ASProtect v1.23 RC1
2.载入OD,不勾选内存访问异常,其他异常全部勾选
[Asm] 纯文本查看 复制代码 00401000 > 68 01C04200 push 跑跑排行.0042C001 ; //入口处
00401005 E8 01000000 call 跑跑排行.0040100B
0040100A C3 retn
0040100B C3 retn
0040100C D6 salc
0040100D 54 push esp
0040100E 4A dec edx
0040100F 60 pushad
00401010 55 push ebp
3.使用最后一次异常法,来到最后一次异常处应该是第16次,第17次就跑飞了
[Asm] 纯文本查看 复制代码 009E2CD1 3100 xor dword ptr ds:[eax],eax ; //落脚点
009E2CD3 64:8F05 0000000>pop dword ptr fs:[0]
009E2CDA 58 pop eax
009E2CDB 833D 7C6D9E00 0>cmp dword ptr ds:[9E6D7C],0
009E2CE2 74 14 je short 009E2CF8
009E2CE4 6A 0C push 0C
009E2CE6 B9 7C6D9E00 mov ecx,9E6D7C
009E2CEB 8D45 F8 lea eax,dword ptr ss:[ebp-8]
009E2CEE BA 04000000 mov edx,4
009E2CF3 E8 54E1FFFF call 009E0E4C
4.往下拉找到最近的一个retn处F2,shift+F9,F2,让程序运行到指定位置
[Asm] 纯文本查看 复制代码 009E2D08 FF75 F0 push dword ptr ss:[ebp-10]
009E2D0B FF75 EC push dword ptr ss:[ebp-14]
009E2D0E C3 retn ; //F2,shift+F9,F2
009E2D0F 5F pop edi
009E2D10 5E pop esi
009E2D11 5B pop ebx
5.程序到这里有两种方式可以到达OEP:
第一种:打开内存窗口,在00401000处下段然后shift+F9就可以到达OEP
[Asm] 纯文本查看 复制代码 0040A41E 55 push ebp ; //来到OEP
0040A41F 8BEC mov ebp,esp
0040A421 6A FF push -1
0040A423 68 C8CB4000 push 跑跑排行.0040CBC8
0040A428 68 A4A54000 push 跑跑排行.0040A5A4
0040A42D 64:A1 00000000 mov eax,dword ptr fs:[0]
0040A433 50 push eax
0040A434 64:8925 0000000>mov dword ptr fs:[0],esp
0040A43B 83EC 68 sub esp,68
第二种:找到堆栈窗口第四行(跑跑排行榜.0040000下面两行)的值,也就是"0012FFA4",然后命令行下硬件断点"hr 0012FFA4",然后shift+F9运行一次
堆栈窗口:
[Asm] 纯文本查看 复制代码 0012FF5C 009F2BF4 //第一行
0012FF60 00400000 跑跑排行.00400000
0012FF64 3D375BA5
0012FF68 0012FFA4 //第四行
0012FF6C 009D0000
0012FF70 009B0000
这里是一个大跳转,也就是指向OEP的关键跳,F8单步一次
[Asm] 纯文本查看 复制代码
009F3457 - FFE0 jmp eax ; //落脚点
009F3459 66:8BC4 mov ax,sp
009F345C BD F2E44268 mov ebp,6842E4F2
009F3461 F7D5 not ebp
009F3463 81C5 8039C332 add ebp,32C33980
009F3469 80D2 51 adc dl,51
009F346C BF A1CAF122 mov edi,22F1CAA1
009F3471 C1CF B3 ror edi,0B3
[Asm] 纯文本查看 复制代码 0040A41E 55 push ebp ; //来到OEP
0040A41F 8BEC mov ebp,esp
0040A421 6A FF push -1
0040A423 68 C8CB4000 push 跑跑排行.0040CBC8
0040A428 68 A4A54000 push 跑跑排行.0040A5A4
0040A42D 64:A1 00000000 mov eax,dword ptr fs:[0]
0040A433 50 push eax
0040A434 64:8925 0000000>mov dword ptr fs:[0],esp
0040A43B 83EC 68 sub esp,68
6.然后依然是LoadPE+ImportREC脱壳,注意使用ImportREC修复的时候等级1+插件修复
7.运行查壳
运行OK,查壳:Microsoft Visual C++ v6.0
8.还是ximo大神的例子,还是放个附件把
跑跑排行榜.rar
(131.14 KB, 下载次数: 24)
|