查看: 1178|回复: 7
收起左侧

[已解决] 关于汇编反汇编的问题

 关闭 [复制链接]
天鹅爸爸
发表于 2010-5-19 22:28:50 | 显示全部楼层 |阅读模式
当前ESP内的值为柞顶,当执行PUSH EAX指令时,执行以下两个步骤:
1,ESP=ESP-4,ESP指向当前新柞
顶前面的单元,以当前柞顶前面的单元为新的柞顶,


为什么是ESP-4呢?,,,

4是哪里出来的
Anderson997
发表于 2010-5-19 22:35:51 | 显示全部楼层
进入main函数的时候,
1)保存ebp指针
2)使得ebp->esp
3)保持现场ebx,esi,edi
4)进入一般函数的时候,push参数,例如有n个参数 esp = esp - 4*n
5)push函数返回地址 esp = esp -4
6)调用函数 EIP指向函数地址,jmp 函数地址
7)Push ebp 保存 (故有[ebp+8]就是第一个参数的内容)
8)使得ebp ->esp, esp = esp - 40h - 临时变量需要字节数(有字节对齐问题)
9)保持现场ebx,esi,edi
10)返回值=》eax
11)恢复现场,就是依次pop出edi,esi,ebx,
12)Esp = ebp
13)Pop ebp
14)pop 函数返回地址(即ret),EIP指向下个指令地址 esp = esp +4
15)Esp + n*4 (每个字有4个字节);push是按字操作的,32位机器


不懂

评分

参与人数 1经验 +6 收起 理由
穿越星空 + 6 懂装不懂最可耻^_^

查看全部评分

天鹅爸爸
 楼主| 发表于 2010-5-19 22:48:08 | 显示全部楼层
我好像懂得

是不是每个字有四个字节呢

但是不是啊

一个字两个字节啊
爱吃蔬菜
发表于 2010-5-20 21:49:43 | 显示全部楼层
这个我也不是很懂,可能大概是这样的吧:
EAX是32位寄存器,一个内存地址存放的是一个字节(8位)的数据,4*8=32,所以ESP指向要减4
不一定是这样的,我瞎猜的
天鹅爸爸
 楼主| 发表于 2010-5-20 22:34:51 | 显示全部楼层
好吧

懂得人都来看看

有没有做免杀的人呀

我弱弱的问一句
Galois
发表于 2010-5-20 22:46:38 | 显示全部楼层
EPS、EAX这些都是寄存器,相对16位汇编来说:eax 是 ax寄存器的扩展  esp是sp 的扩展(用法是一致的,长度从16位扩展到32位)

EAX是32位寄存器,对于栈空间来说,一个8字节,所以入栈之后,esp指针向上移动4个字节
JY-YZX714
发表于 2010-5-21 13:57:57 | 显示全部楼层
EAX是个32位啊,所以是ESP-=4
天鹅爸爸
 楼主| 发表于 2010-5-21 15:31:29 | 显示全部楼层
EPS、EAX这些都是寄存器,相对16位汇编来说:eax 是 ax寄存器的扩展  esp是sp 的扩展(用法是一致的,长度从 ...
Galois 发表于 2010-5-20 22:46



    懂得了

谢谢你哈
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-6-15 03:08 , Processed in 0.129846 second(s), 17 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表