能力值:
( LV2,RANK:10 )
|
-
-
2 楼
可能每个机器显示的不一样吧,输入Hr:0013FFC4,试试看。是在不行的话,你把附件上传,大家一起来帮吗,o(∩_∩)o...哈哈
|
能力值:
( LV3,RANK:20 )
|
-
-
3 楼
谢谢你的回复,请教是输入HW 0013FFC4吧? 我试了,在按F9之后OB直接打开了调试的程序。请问在输入HW命令之后,是按F9吗?
在使用ESP定律查找OEP时,在命令里即输入了“HW 12FFC0”(ESP定律)也输入了“HW
13FFC0”,都不能实现教程里的结果。更很奇怪的是:在命令里输入HW命令后,按F9(ESP定
律教程里提示这样做),OB打开了调试的程序(就像双击打开程序一样),而反编译里的代码仍然
在开始执行命令的那一行:0040E8C0 > 60 pushad,并没
有出现教程里的中断,更找不到OEP,完全调试不出来教程里的结果。
|
能力值:
( LV3,RANK:20 )
|
-
-
4 楼
期待高手或论坛大大能给我指点一二,小弟在此先拜谢了。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
载入后,你单步走了没有?
|
能力值:
( LV3,RANK:20 )
|
-
-
6 楼
我发现问题了,你说的是对的,是输入:HR 0013FFC0,是HR(硬件中断在访问时)命令,而不是HW(硬件中断在写入时)命令。
不过我在ESP定律教程里看到说是HW,而且还是图文并貌,命令处:HW 12FFC0,哎。
我刚测试了输入:HR 0013FFC0,按F9,代码执行了,没有打开调试的程序,而且代码执行到OEP处中断了。
载入时的反汇编代码:(调试选项-时间-设置第一次暂停在-WinMaann<如果位置已知>)
0040E8C0 > 60 pushad
0040E8C1 BE 15B04000 mov esi, 0040B015
0040E8C6 8DBE EB5FFFFF lea edi, dword ptr [esi+FFFF5FEB]
0040E8CC 57 push edi
0040E8CD 83CD FF or ebp, FFFFFFFF
0040E8D0 EB 10 jmp short 0040E8E2
0040E8D2 90 nop
0040E8D3 90 nop
0040E8D4 90 nop
0040E8D5 90 nop
0040E8D6 90 nop
0040E8D7 90 nop
0040E8D8 8A06 mov al, byte ptr [esi]
0040E8DA 46 inc esi
0040E8DB 8807 mov byte ptr [edi], al
0040E8DD 47 inc edi
0040E8DE 01DB add ebx, ebx
0040E8E0 75 07 jnz short 0040E8E9
0040E8E2 8B1E mov ebx, dword ptr [esi]
0040E8E4 83EE FC sub esi, -4
对应的寄存器(FPU)数据:
EAX 00000000
ECX 0013FFB0
EDX 7C92E4F4 ntdll.KiFastSystemCallRet
EBX 7FFDF000
ESP 0013FFC4
EBP 0013FFF0
ESI FFFFFFFF
EDI 7C930208 ntdll.7C930208
EIP 0040E8C0 notepad_.<模块入口点>
C 1 ES 0023 32 位 0(FFFFFFFF)
P 0 CS 001B 32 位 0(FFFFFFFF)
A 0 SS 0023 32 位 0(FFFFFFFF)
Z 0 DS 0023 32 位 0(FFFFFFFF)
S 1 FS 003B 32 位 7FFDE000(FFF)
T 0 GS 0000 NULL
D 0
O 0 LastErr ERROR_NO_IMPERSONATION_TOKEN (0000051D)
EFL 00000283 (NO,B,NE,BE,S,PO,L,LE)
ST0 empty -UNORM BBB0 01050104 002E0067
ST1 empty 0.0
ST2 empty 0.0
ST3 empty 0.0
ST4 empty 0.0
ST5 empty 0.0
ST6 empty 1.0000000000000000000
ST7 empty 1.0000000000000000000
3 2 1 0 E S P U O Z D I
FST 4020 Cond 1 0 0 0 Err 0 0 1 0 0 0 0 0 (EQ)
FCW 027F Prec NEAR,53 Mask 1 1 1 1 1 1
没有单步F8,命令输入:HR 0013FFC4后,直接按F9后的代码:
0040EA0F - E9 B826FFFF jmp 004010CC //OEP
0040EA14 0000 add byte ptr [eax], al
0040EA16 0000 add byte ptr [eax], al
0040EA18 0000 add byte ptr [eax], al
0040EA1A 0000 add byte ptr [eax], al
0040EA1C 0000 add byte ptr [eax], al
0040EA1E 0000 add byte ptr [eax], al
0040EA20 0000 add byte ptr [eax], al
0040EA22 0000 add byte ptr [eax], al
0040EA24 0000 add byte ptr [eax], al
0040EA26 0000 add byte ptr [eax], al
0040EA28 0000 add byte ptr [eax], al
0040EA2A 0000 add byte ptr [eax], al
0040EA2C 0000 add byte ptr [eax], al
0040EA2E 0000 add byte ptr [eax], al
此时寄存器(FPU)对应的数据:
EAX 00000000
ECX 0013FFB0
EDX 7C92E4F4 ntdll.KiFastSystemCallRet
EBX 7FFDF000
ESP 0013FFC4
EBP 0013FFF0
ESI FFFFFFFF
EDI 7C930208 ntdll.7C930208
EIP 0040EA0F notepad_.0040EA0F
C 0 ES 0023 32 位 0(FFFFFFFF)
P 1 CS 001B 32 位 0(FFFFFFFF)
A 0 SS 0023 32 位 0(FFFFFFFF)
Z 1 DS 0023 32 位 0(FFFFFFFF)
S 0 FS 003B 32 位 7FFDE000(FFF)
T 0 GS 0000 NULL
D 0
O 0 LastErr ERROR_NO_IMPERSONATION_TOKEN (0000051D)
EFL 00000246 (NO,NB,E,BE,NS,PE,GE,LE)
ST0 empty -UNORM BBB0 01050104 002E0067
ST1 empty 0.0
ST2 empty 0.0
ST3 empty 0.0
ST4 empty 0.0
ST5 empty 0.0
ST6 empty 1.0000000000000000000
ST7 empty 1.0000000000000000000
3 2 1 0 E S P U O Z D I
FST 4020 Cond 1 0 0 0 Err 0 0 1 0 0 0 0 0 (EQ)
FCW 027F Prec NEAR,53 Mask 1 1 1 1 1 1
后话,看来调试时的ESP值并不是一样的,每台电脑显示的不同,而是以自己电脑显示的,我用的是联想杨天商务机,而笔记本也是联想的,我在这2台电脑上看到的ESP都是等于0013FFC4,而不是ESP定律教程里的0012FFC4,谢谢,谢谢楼上的。几天疑惑终于解决了。
|
能力值:
( LV3,RANK:20 )
|
-
-
7 楼
cracklu 哥们,再次谢谢啦。
不过我还是有个疑问:刚刚又逛了下论坛,也看了些技巧文章,看到关于使用ESP定律找OEP,很多里面提到使用的是HW命令,我奇怪,应该是他们这么用了,所以才这么说,而我使用HW为什么就不行呢?
我使用HW命令,然后按F9,OB直接打开了调试的应用程序。
而你提到的是HR命令就可以,其实我也是看到你在这个区提交的一个贴子,里面写的是使用HR命令,就你这个唯一的帖子,是HR命令。
是不是使用HW或HR都可以,而不是唯一的,但在特定的环境下只能使用其中之一???
哎,让我这个新手看起来很雾,哈哈。
|
能力值:
( LV3,RANK:20 )
|
-
-
8 楼
不知道是不是我自己操作的问题,我是在用OB载入之后,在命令行里输入HW,就按F9,而没有其他的任何操作。
哎,有出现问题了,现在用HR命令也不行。(清除了UDD文件夹中的缓存文件,重新载入调试的文件)
流程:OB载入--输入命令--F9
在这流程中是不是还有其他的操作啊?????
|