首页
社区
课程
招聘
[旧帖] [求助]如何使用ESP定律找OEP? 0.00雪花
发表于: 2009-2-28 17:22 6165

[旧帖] [求助]如何使用ESP定律找OEP? 0.00雪花

2009-2-28 17:22
6165
使用ESP定律找OEP,我的数据窗口数据怎么和教学视频不一样啊?

wynney视频系列教学 - 初级班教程 - 第9、10例,和我电脑上显示的数据都不一样!

比如第10例,3800CC(天草)破解crackme_aspacked.exe

反汇编窗口                                                        寄存器

00405002    E8  03000000  call crackme_.0040500A                 ESP  0012FFA4

在寄存器地址 0012FFA4上右健 --> 数据窗口中跟随 --> 选择低8位右键设置硬件断点

3800CC(天草)数据窗口

地址            十六进制                   
0012FFA4         A8 44 F9 77 70 7D F5 77

而我的数据窗口确是如下数据:
0012FFA4         08 02 93 7C FF FF FF FF

3800CC(天草)只用了4、5个F8就找到了OEP
即:
00401000       6A 00                                push 0
00401002       E8 99020000                    call crackme_.004012A0
.......

我在在这个位置
00405002    E8 03000000     call    crackme_.0040500A

按F8后到了以下地址:
004053B0   /75 08           jnz     short crackme_.004053BA
004053B2   |B8 01000000     mov     eax, 1
004053B7   |C2 0C00         retn    0C
004053BA   \68 00104000     push    crackme_.00401000
004053BF    C3              retn

retn 跳到了这里
00401000      6A            db      6A                               ;  CHAR 'j'
00401001      00            db      00
00401002      E8            db      E8
00401003      99            db      99
00401004      02            db      02
00401005      00            db      00
00401006      00            db      00
......
.....
......
......
00401092      00            db      00
00401093      E8            db      E8
00401094      C6            db      C6
00401095      01            db      01
00401096      00            db      00
00401097      00            db      00
00401098      89            db      89
00401099      45            db      45                               ;  CHAR 'E'
0040109A      EC            db      EC
0040109B      8D            db      8D
0040109C      45            db      45                               ;  CHAR 'E'
0040109D      D0            db      D0
0040109E      50            db      50                               ;  CHAR 'P'
0040109F      E8            db      E8

再到这里
77D1A48D    F3:A5           rep     movs dword ptr es:[edi], dword p>
77D1A48F    76 04           jbe     short user32.77D1A495
77D1A491    804D 14 80      or      byte ptr [ebp+14], 80
77D1A495    64:A1 18000000  mov     eax, dword ptr fs:[18]
77D1A49B    F680 E0060000 0>test    byte ptr [eax+6E0], 2
77D1A4A2    0F85 0D950200   jnz     user32.77D439B5
77D1A4A8    33FF            xor     edi, edi
77D1A4AA    F645 15 01      test    byte ptr [ebp+15], 1
77D1A4AE    0F85 84450100   jnz     user32.77D2EA38         跳到  77D2EA38

77D2EA38    6A 01           push    1
77D2EA3A    57              push    edi
77D2EA3B    8D85 FCFEFFFF   lea     eax, dword ptr [ebp-104]
77D2EA41    50              push    eax
77D2EA42    FF73 28         push    dword ptr [ebx+28]
77D2EA45    E8 56AEFEFF     call    user32.77D198A0
77D2EA4A    8BF0            mov     esi, eax
77D2EA4C    3BF7            cmp     esi, edi
77D2EA4E  ^ 0F85 63BAFEFF   jnz     user32.77D1A4B7      

经过了N多代码,也没有打到传说中的OEP,请问这是怎么回事 ?怎么找不到程序入口地址啊!

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
2
可能在不经意间你已经错过了..
2009-2-28 17:29
0
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
00401000      6A            db      6A                               ;  CHAR 'j'
00401001      00            db      00
00401002      E8            db      E8
00401003      99            db      99
00401004      02            db      02
00401005      00            db      00
00401006      00            db      00
应该就是OEP吧
到了这里按 ctrl+a看一下
2009-2-28 18:02
0
雪    币: 360
活跃值: (77)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
4
代码重整里一下就可以了
2009-2-28 18:35
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
OEP到了哦。。。
2009-2-28 19:39
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
多谢各位前辈了,果然,在这个位置 Ctrl + a 一下,就出现了!

retn 跳到了这里
00401000      6A            db      6A                               ;  CHAR 'j'
00401001      00            db      00
00401002      E8            db      E8
00401003      99            db      99
00401004      02            db      02
00401005      00            db      00
00401006      00            db      00

按Ctrl + a 后,上面的代码变成如下:

00401000   .  6A 00         push    0                           ; /pModule = NULL
00401002   .  E8 99020000   call    crackme_.004012A0           ; \GetModuleHandleA
00401007   .  A3 70304000   mov     dword ptr [403070], eax
0040100C   .  E8 83020000   call    crackme_.00401294           ; [GetCommandLineA
00401011   .  A3 74304000   mov     dword ptr [403074], eax
00401016   .  6A 01         push    1
00401018   .  FF35 74304000 push    dword ptr [403074]
0040101E   .  6A 00         push    0
00401020   .  FF35 70304000 push    dword ptr [403070]
00401026   .  E8 07000000   call    crackme_.00401032
0040102B   .  6A 00         push    0                           ; /ExitCode = 0
0040102D   .  E8 5C020000   call    crackme_.0040128E           ; \ExitProcess
2009-2-28 20:26
0
雪    币: 210
活跃值: (145)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
代码分析下,或者删除代码分析,试下就知道了。
2009-2-28 21:30
0
游客
登录 | 注册 方可回帖
返回
//