您的位置:首页 > 其它

IDA使用初探-2.了解栈

2012-09-25 00:39 260 查看
在VC6 中新建一个控制台应用程序工程IDA_B,文件内容为一个空的main函数,使用Debug方式编译,保留PDB。



打开IDA,进入主工作界面。将VC6生成的可执行文件IDB_B.exe加载。加载完毕就进入逆向工作界面。

将不用的子窗口关闭,把IDA View-A子窗口最大化,点右键选择Text view显示偏移量。此次主函数直接显示为main,因为IDA从VC++编译产生的可执行文件中找到了符号表,能够对符号进行解析。



在push ebp那一行上按F2键设置断点,选择菜单Debugger下的Start process(也可以按F9键)来开始调试。调试会让程序在电脑中执行,所以IDA会提示注意提防恶意程序、病毒和木马。



点确认进入调试界面,由多个看似分离的窗口组成,不再是原来的一个窗口中多分页标签的形式。各个观察窗口独立出来了,一个是反汇编窗口。



一个是堆栈地址窗口。



一个是寄存器窗口。



在寄存器窗口中显示着每个寄存器当前的值和对应在反汇编窗口中的内存地址。函数在进入时都会保存堆栈地址EBP和ESP,退出函数时恢复。

按F8键一行一行单步执行,可以看到栈顶在往上涨。



此处只是简单的注释了空函数的反汇编流程,关于main的前前后后,以后会专门写一遍文章的,此处主要学习IDA的各个窗口,就不多言了。

IDA不提供撤销功能,如果不小心按下某键,导致IDB数据库文件发生意外,是无法进行回退操作的。

IDA加载完程序后,3个立即可见的窗口分别为IDA-View,Named,和消息输出窗口。

反汇编窗口有两种显示格式:面向文本的列表视图和图形视图。不同视图在不同的场景下各有所长,按空格键可以快速切换。

IDA图形视图会有执行流,Yes箭头默认为绿色,No箭头默认为红色,蓝色表示默认下一个执行块。

至于IDA其他窗口,函数、二进制数据、导入表、导出表、字符串等窗口,未来根据需要再说吧。很晚了,现这样,晚安。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: