能力值:
( LV2,RANK:10 )
|
-
-
51 楼
感谢关注我的问题,OD反汇编后的代码如下:
0012FAF0 33DB xor ebx, ebx
0012FAF2 53 push ebx
0012FAF3 58 pop eax
0012FAF4 77 65 ja short 0012FB5B
0012FAF6 73 74 jnb short 0012FB6C
0012FAF8 68 6661696C push 6C696166
0012FAFD 8BC4 mov eax, esp
0012FAFF 53 push ebx
0012FB00 50 push eax
0012FB01 50 push eax
0012FB02 53 push ebx
0012FB03 B8 DED83B77 mov eax, user32.MessageBoxA
0012FB08 FFD0 call near eax
0012FB0A 90 nop
0012FB0B 90 nop
0012FB0C 90 nop
0012FB0D 90 nop
0012FB0E 90 nop
0012FB0F 90 nop
0012FB10 90 nop
0012FB11 90 nop
vc中的反汇编如下:
6: XOR EBX,EBX
0040103C 33 DB xor ebx,ebx
7: PUSH EBX
0040103E 53 push ebx
8: PUSH 74736577h
0040103F 68 77 65 73 74 push 74736577h
9: PUSH 6C696166h
00401044 68 66 61 69 6C push 6C696166h
10: MOV EAX,ESP
00401049 8B C4 mov eax,esp
11: PUSH EBX
0040104B 53 push ebx
12: PUSH EAX
0040104C 50 push eax
13: PUSH EAX
0040104D 50 push eax
14: PUSH EBX
0040104E 53 push ebx
15: MOV EAX, 0x773bd8de
0040104F B8 DE D8 3B 77 mov eax,773BD8DEh
16: CALL EAX
00401054 FF D0 call eax
没看出来哪有问题啊?看来还是太菜!`希望帮看下!`
|
能力值:
( LV9,RANK:210 )
|
-
-
52 楼
很明显: 下面这个数据有错:
0012FAF3 58 pop eax
应该是68,而不是58, 以后敲键盘和看数据时,小心一点哦!
|
能力值:
( LV9,RANK:210 )
|
-
-
53 楼
个人感觉在49楼代码中:
好,照你说的继续 换成44个字节的 0012FAF0 5853DB33 buffer 0012FAF4 74736577 buffer+4 0012FAF8 69616668 0012FAFC 53C48B6C 0012FB00 B8535050 0012FB04 773BD8DE user32.MessageBoxA 0012FB08 9090D0FF 0012FB0C 90909090 0012FB10 90909090 0012FB14 90909090 0012FB18 90909090 buffer+44 0012FB1C 0040106C justt.0040106C authenticated 0012FB20 90909090 ebp 0012FB24 0012FAF0 ip 返回地址
上面红色部分应该有误,应该还是用4个90来填充,原因是如果用0040106C的话,由于在之前fscanf函数读到此处时遇到0040106C前的两个00则提前结束,而后面的两条指令根本没读进去。
|
能力值:
( LV2,RANK:10 )
|
-
-
54 楼
请问显示反汇编后显示函数名而不是显示函数编号的OD插件是什么?谢谢大侠能帮助我,有这个插件的话不妨上传一个
我也有如第四讲上所说39楼的问题,我在导入库中加了一些库都没成功,哪位大侠帮忙吱一声
|
能力值:
( LV2,RANK:10 )
|
-
-
55 楼
这人太现实,但如果你是自己用VC编译的Debug版本的话,用OD打开,查看-》源码,就可以直接定位到了
|
能力值:
( LV2,RANK:10 )
|
-
-
56 楼
楼上,我试了,还不行啊
|
能力值:
( LV4,RANK:50 )
|
-
-
57 楼
我完成了
|
能力值:
( LV2,RANK:10 )
|
-
-
58 楼
感谢大家关注,现在不方便调试,明天再去试试!
|
能力值:
( LV2,RANK:10 )
|
-
-
59 楼
终于成功,把0012FAF3 68 pop eax写错为58了,抄错了,郁闷,搞了好久,终于成功,吱一个!`嘿嘿...
|
能力值:
(RANK:550 )
|
-
-
60 楼
鼠年将至 沾沾鼠气 也吱一下
0012FAF0 50 push eax ; Buffer[0]--->0012FAF0
0012FAF1 83EC 40 sub esp, 40
0012FAF4 33DB xor ebx, ebx
0012FAF6 53 push ebx
0012FAF7 68 6861776B push 6B776168 ; "hawk"--->Message Info
0012FAFC 8BC4 mov eax, esp
0012FAFE 53 push ebx
0012FAFF 50 push eax
0012FB00 50 push eax
0012FB01 53 push ebx
0012FB02 B8 8A05D577 mov eax, user32.MessageBoxA ; 77D5058A--->MessageBoxA
0012FB07 FFD0 call eax
0012FB09 83C4 48 add esp, 48
0012FB0C 58 pop eax
0012FB0D 8BEF mov ebp, edi
0012FB0F B9 E7EEBFFF mov ecx, FFBFEEE7
0012FB14 F7D1 not ecx
0012FB16 FFE1 jmp ecx ; 00401118--->Return Address
0012FAF0 50 83 EC 40 33 DB 53 68 68 61 77 6B 8B C4 53 50 P冹@3跾hhawk嬆SP
0012FB00 50 53 B8 8A 05 D5 77 FF D0 83 C4 48 58 8B EF B9 PS笂誻袃腍X嬶
0012FB10 E7 EE BF FF F7 D1 FF E1 90 90 90 90 90 90 90 90 珙?餮釔悙悙悙
0012FB20 90 90 90 90 F0 FA 12 00 悙悙瘊.|?.
50 83 EC 40 33 DB 53 68 [COLOR=blue]68 61 77 6B[/COLOR] 8B C4 53 50 50 53 B8 [COLOR=blue]8A 05 D5 77[/COLOR] FF D0 83 C4 48 58 8B EF B9 [COLOR=blue]E7 EE BF FF[/COLOR] F7 D1 FF E1 90 90 90 90 90 90 90 90 90 90 90 90 [COLOR=blue]F0 FA 12 00[/COLOR]
|
能力值:
( LV17,RANK:1820 )
|
-
-
61 楼
关于查找API函数的方法,可否用OD加载user32.dll,然后查找导出函数MessageBoxA,跳转到该函数的所在位置,对应地址就是了该函数的虚拟地址了吧!!!1
|
能力值:
( LV2,RANK:10 )
|
-
-
62 楼
实验成功,学习
|
能力值:
( LV5,RANK:60 )
|
-
-
63 楼
恩,学习了~~~~~
应该找到ExitProcess的地址
push 0
call [ExitProcess]应该可以安全退出了吧
|
能力值:
( LV2,RANK:10 )
|
-
-
64 楼
可能我比较习惯用vc2003,第四章的内容,其实用vc2003编译也可以实现。就是注意将几个配置改一下就行了:
1、code generation 中Smaller Type Check:NO
2、code generation 中Base Runtime Checks:Default
3、code generation 中Buffer sucurity check:No
4、language 中全 NO
就可以了。
看你的文章也为你的例子扩展做一点小贡献,算是对你这么好的文章的感谢!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
65 楼
可能我比较习惯用vc2003,第四章的内容,其实用vc2003编译也可以实现。
就是注意将几个配置改一下就行了:
1、code generation 中Smaller Type Check:NO
2、code generation 中Base Runtime Checks:Default
3、code generation 中Buffer sucurity check:No
4、language 中全 NO
还有一个函数得改一下
1、你用fscan读取文件,应换成fread,好像fscan中用了字符串调整。
这样就可以了。
看你的文章也为你的例子扩展做一点小贡献,算是对你这么好的文章的感谢!!!
|
能力值:
( LV2,RANK:10 )
|
-
-
66 楼
是的 。查找所有模块中的名称最快了 我认为。。。。
|
能力值:
( LV2,RANK:10 )
|
-
-
67 楼
专门的破坏啊
|
能力值:
( LV2,RANK:10 )
|
-
-
68 楼
真是期待啊,写得太棒了,真是相见恨晚,大侠辛苦!
|
能力值:
( LV2,RANK:10 )
|
-
-
69 楼
用OllyDbg加载这个生成的PE文件进行动态调试,字符串拷贝函数过后的栈状态如图。
这句话的后半段怎么实现不了呢,用OD加载进入到main函数时就JMP走,怎么才能解决啊??
|
能力值:
( LV2,RANK:10 )
|
-
-
70 楼
动态定位BUFFER用$
动态定位MessageBoxA用GetProcAddress
没试,不知道我说得对不
|
能力值:
( LV2,RANK:10 )
|
-
-
71 楼
ok,操作成功,吱吱吱吱……
|
能力值:
( LV2,RANK:10 )
|
-
-
72 楼
好文,学习中
|
能力值:
( LV2,RANK:10 )
|
-
-
73 楼
学习~~~~
|
能力值:
( LV9,RANK:490 )
|
-
-
74 楼
学习学习再学习
|
能力值:
( LV2,RANK:10 )
|
-
-
75 楼
终于看完了这一课,好好消化一下:)
|
|
|