浅谈逆向——静态分析简介(静态分析1)

IDA PRO

  • IDA是按照区块装载PE文件的。
    .text | 代码块
    .data | 数据块
    .rsrc | 资源块
    .idata | 输入表
    .cdata | 输出表

IDA反汇编选项配置

Option->General(选项->常规)浅谈逆向——静态分析简介(静态分析1)

左侧从上至下分别为

  • 函数偏移
    包含段地址
    使用段名

  • 空白行
    数据/代码分界
    基础块边界
    源程序行号

  • 行前缀范例
    空白下限
    空白上限

右侧从上至下分别是

  • 行前缀
    栈指针
    注释
    可重复注释
    自动注释
    坏指令标记
    机器码数

  • 指令缩进
    注释缩进
    右边距

IDA界面简介

浅谈逆向——静态分析简介(静态分析1)

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