能力值:
( LV2,RANK:10 )
|
-
-
2 楼
0x3233就是 23
0x72657375 就是resu
执行loadlibrary的参数入栈:
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
感谢,原来是读书不仔细
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
我也想在此提两个问题(也是第五章):
1、jne find_functions
xchg eax,ebp ;①
call [edi-0x8] ;②
xchg eax,ebp ;③
其中的xchg eax,ebp有何作用?eax开始时保存的是hash,ebp则是kernel32.dll的基地址。通过①调换,再调用②call,eax则是调用后的返回内容,通过③ebp所保存的原来的地址不是丢失了吗??
2、… … …
cmp edx,[esp+0x1c]
jnz next_function_loop
mov ebx,[ecx+0x24]
add ebx,ebp
mov di,[ebx+2*edi]
… … …
此处为什么要再求di,edi不是已经保存了对应的位置(序号)了吗?而且此处所求的道理也不是很明白,为什么这样求?
希望有人愿意回答,帮帮小弟了!
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
1.
call,eax则是调用后的返回为user32.dll的基地址
xchg eax,ebp 之后eax为Hash
ebp随后保存的是user32.dll的基地址
你再好好理解吧。。。 2、… … …
要理解才行
这个你还用看看...那个啥的结构来理解就好了。
|
能力值:
(RANK:330 )
|
-
-
6 楼
给你一个tips:跟一下就明白了,别硬读代码
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
恩,第一个明白了!偶像也来了
|
能力值:
( LV9,RANK:180 )
|
-
-
8 楼
[QUOTE=wjling;483601]我也想在此提两个问题(也是第五章):
1、jne find_functions
xchg eax,ebp ;①
call [edi-0x8] ;②
xchg eax,ebp ;③
其中的xchg eax,ebp有何作用?eax开始时保存的是has...[/QUOTE]
不知道你们在讨论什么. 我想是可能是 shellcode 吧
xchg eax,ebp
....
xchg eax,ebp
主要是保存'还原 EAX 或 EBP (看你书这里是要保存那一个)
为什么不用 mov 呢?
因为 xchg 只需 1 个 byte
PS. 书没见过 ' shellcode 没玩过. 以上纯属猜测.
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
呵呵,我也是昨天才看这章的
楼上说的对,shellcode要尽量减少机器码
xchg eax,ebp 保护好原来的EAX,只用1个字节的代码
CALL XXXX 会改变EAX
xchg eax,ebp 得到的值给EBP,原来的EAX还给EAX
2、…
可能导出函数的索引和序号未必相等,不然就不用搞2个字节存储了
|
能力值:
( LV9,RANK:180 )
|
-
-
10 楼
[QUOTE=wjling;483601]2、… … …
cmp edx,[esp+0x1c]
jnz next_function_loop
mov ebx,[ecx+0x24]
add ebx,ebp
mov di,[ebx+2*edi]
… … …
此處為什麼要再求di,edi不是已經保存了對應的位置(序號)了嗎?而且此處所求的道理也不是很明白,為什麼這樣求?[/QUOTE]
再來猜一次
原 edi 為 "第幾個"
mov di,[ebx+2*edi] 取出他的 Hint
0 1 2 3
EBX 指向 0495 0162 049D 02AA ...
PS. 没见过书没玩过shellcode, 猜错不要笑.
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
第二个问题:我按照failwest说的在Ollydbg跟了一边,结果发现序号和导出函数的索引确实是相等的!这又作何解呢??
而且我引去了下面的三句代码:
mov ebx,[ecx+0x24]
add ebx,ebp
mov di,[ebx+2*edi]
结果运行仍然正确地显示“failwest”对话框!
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
............
|
|
|