注册 登录
编程论坛 汇编论坛

“+”号还是“-”?

发布于 2011-12-31 19:25, 817 次点击
有如下一段代码:
push 0x1e380a6a ;messageboxa函数名的hash值
push 0x4fd18963 ;exitprocess函数名的hash值
push 0x0c917432 ;loadlibrarya函数名的hash值
mov esi,esp      
lea edi,[esi-0xc]
...
call [edi-0x04] ;调messageboxa函数
...
call [edi-0x08] ;调exitprocess函数
...
现在的问题是调messageboxa函数好象应该是call [edi+0x04]?因为edi离栈顶有0xc的距离,加上0x4恰好等于messageboxa函数,但事实上我理解的不对,谁能解释为什么会是“-”?
8 回复
#2
zjsxwc2011-12-31 19:47
不懂。。。。。。。。

还是觉得应该 lea edi,[esi + 0x0c]

[ 本帖最后由 zjsxwc 于 2011-12-31 20:02 编辑 ]
#3
zklhp2011-12-31 23:12
低                      高

0x0c917432  0x4fd18963  0x1e380a6a

 |
esp

当然我没画出高高低低

第一次画 不好勿喷。。。。。。。
#4
zaixuexi2012-01-01 11:40
              ????                        edi-0x08
              ????                        edi-0x04
edi->         ????        esi-0x0C        edi
              ????        esi-0x08        edi+0x04
              ????        esi-0x04        edi+0x08
esi->esp->    0x0c917432  -0x0C
              0x4fd18963  -0x08
              0x1e380a6a  -0x04
esp_old->     ????        +0x00

push 0x1e380a6a ;messageboxa函数名的hash值
push 0x4fd18963 ;exitprocess函数名的hash值
push 0x0c917432 ;loadlibrarya函数名的hash值
mov esi,esp      
lea edi,[esi-0xC]
...
call [edi-0x04] ;调messageboxa函数
...
call [edi-0x08] ;调exitprocess函数

你这个都没上下文,让人分析,不搞笑么
#5
2012-01-09 09:49
对不起,代码有误,漏掉了下面二句:
POP EDI
STOSD
既然EDI变了,
call [edi-0x04]调messageboxa函数是完全可能的!
#6
zaixuexi2012-01-09 10:06
#7
naruto012012-01-10 10:34
楼主在看0day安全?
#8
2012-01-12 21:36
是的,你也在看吗?
#9
naruto012012-01-14 22:45
当小说看呢,呵呵
1