浅谈逆向——静态分析简介(静态分析1)
IDA PRO
- IDA是按照区块装载PE文件的。
.text | 代码块
.data | 数据块
.rsrc | 资源块
.idata | 输入表
.cdata | 输出表
IDA反汇编选项配置
Option->General(选项->常规)
左侧从上至下分别为
-
函数偏移
包含段地址
使用段名 -
空白行
数据/代码分界
基础块边界
源程序行号 -
行前缀范例
空白下限
空白上限
右侧从上至下分别是
-
行前缀
栈指针
注释
可重复注释
自动注释
坏指令标记
机器码数 -
指令缩进
注释缩进
右边距
IDA界面简介
A:反汇编窗口 通过空格键切换图形界面和文字界面
B:输入窗口中列出了可执行文件调用的所有函数,列出了函数名称和包含该函数库的名称,列出的地址为虚拟地址,双击即转跳
C:导航栏提供加载文件地址空间线性视图
D:提示窗口用来反馈文件分析进度,状态消息,错误消息及IDA脚本或插件信息。
E:字符串窗口使用Shift+F12打开,它显示从二进制文件中提取的一组字符串,双击反汇编窗口则会跳转到该处与交叉引用结合使用,可以实现快速定位。
F:Ctrl+G 跳转到地址窗口,知道目标地址即可实现输入跳转。
交叉参考
XREF
CODE XREF:sub_XXXXXX+B(上箭头)j
j表示跳转
o表示偏移量
p表示子程序
参考重命名
将反汇编中默认名称改为你认为更适合自己理解的名称,增加代码可读性。方法:单击需要修改的名称,使用快捷键N打开更名对话框
Local name:局部符号名的作用域仅限了当前函数
Include in name list :将有一个名称被添加到名称窗口中
Public name: 由二进制文件输出的名称(DLL)
Autogenerated name:自动创建符号名
Weak name:弱符号,是公共符号的一种特殊形式
标签
Jump->Mark position,打开标记当前位置功能。使用快捷键Ctrl+M或者双击标签,执行跳转到标记位置,即可转跳到指定代码。
创建函数
IDA允许手动干预创建,编辑,删除函数。新函数由不属于某个函数的现有指令创建,或者由未被IDA以任何方式定义的原始数据创建。
将光标移动到创建的函数的第一个字节上Edit->Functions->Creat Functions,创建一个函数。(快捷键未P)必要时,IDA会将数据转化为代码,以便分析函数的结构,如果找到函数的结束部分,IDA将生成一个新的函数名,以函数形式重组代码。如果无法确定函数结束部分,或者发现非法指令,这个操作将会终止。删除函数Edit->Functions->Delete Function
55