【加密与解密】第三章③
4.提示窗口
下方提示窗口是ida的输出控制台,主要反馈各种信息。
5.字符串窗口
view-》opensubviews-》strings打开字符串窗口,显示的是从二进制文件中提取的一组字符串,双击窗口中的字符串,将会跳转到字符串所在地址。字符串窗口与交叉引用结合使用,就可以快速定位程序中任何引用此字符串的位置。
6.输出窗口
列出了可执行文件调用的所有函数。双击函数就会跳转到该地址。
7.跳转到地址窗口
可以按G打开jump to address窗口,输入地址(十六进制),就会显示该地址代码。
交叉参考
通过交叉参考可以了解指令代码相互调用的关系。例子如下
CODE XREF:sub_401120+B↑j表示该调用地址是401120h,j是跳转,另外o是偏移量,p是子程序。
参考重命名
可以将反汇编清单当中一些默认名称改为有意义的名称,增加了代码的可读性。例子如下,loc没意义,咱们重命名
修改后所有loc401120赋予的名称都变成新名称了。
标签的用法
jump→mark position打开“标记当前位置功能”
用来标记当前位置,并且可以用来返回。
格式化指令操作数
可以格式化指令使用的常量,因此尽量使用符号名称而非数字使得反汇编代码更有可读性。
ida提供多种进制显示,把光标移到需要转换进制的常量上,单击右键会出现上下文菜单,可以格式化成十进制,八进制或者二进制。
函数的操作
ida允许手动干预编辑删除函数。新函数由不属于某个函数现有的指令创建,或有未被ida以任何定义的原始数据创建。方式如下
代码和数据转换
反汇编中可能无法正确区分数据和代码(有些程序就是利用这一点来对抗静态反汇编)我们用户可以将某段十六进制数据指定为代码或者数据。方式如下。
如果一个字节被转换过,ida再次转换他们使会提醒用户确认。下面有一个简单的例子。
字符串
编程语言的不同导致了字符串格式的不同。例如以0结尾的c语言风格字符串及以$结尾的dos字符串。ida支持所有字符串。只要移动好光标,edit→strings→ascii即可,如图
也可以设置默认字符串格式。
ida有时候无法确定ascii字符串,原因是字符串在主程序没有被调用,方法如下。