首页
社区
课程
招聘
[求助]求助,第5章有些地方不明白
发表于: 2008-7-18 11:36 6807

[求助]求助,第5章有些地方不明白

2008-7-18 11:36
6807
《0day》第5章 第105页的汇编代码 其中第三段是

;push a pointer to "user32" onto stack
mov bx, 0x3233   ;这里的0x3233代表什么意思???
push ebx
push 0x72657375 ;同样,0x72657375代表什么???
push esp
xor edx, edx

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
0x3233就是 23

0x72657375 就是resu

执行loadlibrary的参数入栈:

2008-7-18 12:05
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢,原来是读书不仔细
2008-7-18 12:18
0
雪    币: 202
活跃值: (10)
能力值: ( 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不是已经保存了对应的位置(序号)了吗?而且此处所求的道理也不是很明白,为什么这样求?

希望有人愿意回答,帮帮小弟了!
2008-7-19 22:18
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
1.

call,eax则是调用后的返回为user32.dll的基地址
xchg eax,ebp  之后eax为Hash
ebp随后保存的是user32.dll的基地址

你再好好理解吧。。。

2、… … …
要理解才行

这个你还用看看...那个啥的结构来理解就好了。
2008-7-20 02:55
0
雪    币: 2041
活跃值: (261)
能力值: (RANK:330 )
在线值:
发帖
回帖
粉丝
6
给你一个tips:跟一下就明白了,别硬读代码
2008-7-20 02:57
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
恩,第一个明白了!偶像也来了
2008-7-20 07:32
0
雪    币: 2067
活跃值: (82)
能力值: ( 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 没玩过. 以上纯属猜测.
2008-7-20 07:58
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
呵呵,我也是昨天才看这章的

楼上说的对,shellcode要尽量减少机器码
xchg eax,ebp  保护好原来的EAX,只用1个字节的代码
CALL XXXX 会改变EAX
xchg eax,ebp  得到的值给EBP,原来的EAX还给EAX

2、…
可能导出函数的索引和序号未必相等,不然就不用搞2个字节存储了
2008-7-21 10:14
0
雪    币: 2067
活跃值: (82)
能力值: ( 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, 猜错不要笑.
2008-7-21 10:49
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
第二个问题:我按照failwest说的在Ollydbg跟了一边,结果发现序号和导出函数的索引确实是相等的!这又作何解呢??
而且我引去了下面的三句代码:

mov ebx,[ecx+0x24]
add ebx,ebp
mov di,[ebx+2*edi]
结果运行仍然正确地显示“failwest”对话框!
2008-7-27 17:43
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
............
2008-8-2 11:18
0
游客
登录 | 注册 方可回帖
返回
//