Skip to content

IDA入门1

参考重命名

这是个IDA极好的功能 他可以将反汇编清单中的一些默认名称更改为有意义的名称 增加代码的可读性 要修改一个名称朱旭单击希望修改的名称按N 键打开更名对话框

如图 我解释一下 下面的选项的作用

  • Local name 句不符合的作用域 仅限于当前函数

  • Include in names list 勾选这个选项 将有一个名称被添加到名称窗口

  • Public name 由二进制文件例如DLL输出的名称

  • Autogenerated name 自动创建符号名

  • Weak name 公共符号的特殊形式

标签的用法

菜单里面有个jump 打开后有个 mark postion 打开标记当前位置的功能

就会出现如图所示的对话框

跳转位置 就可以 先给他命名 然后使用ctrl+M

双击即可跳转回指定位置

格式化指令操作数

IDA可以使用格式化指令使用的常量 因此尽可能使用符号名称而不是数字 从而使反汇编代码更具可读性 IDA根据被反汇编指令的上下文 所使用的数据 做出格式化决定

IDA 一般会将相关反汇编指令的上下文 菜单 该菜单提供的选项可以将常量格式化成十进制八进制或者二进制

在大部分情况 源代码使用的是以命名的常量 例如#define 语句 IDA维护大量的如c标准库 win32API ,可以通过USeSTandard symbolic constant

找个16进制然后右键

点进去过后

打开就是这样根据参数去寻找

函数的操作

IDA允许手动创建干预创建 编辑删除函数 新函数不属于某个现有指令或者违背IDA以任何方式定义原始数据创建

将光标一道创建函数的第一个字节上 西安则Edit ->Functions->Create Function 创建函数或者P键 必要时IDA把数据编程代码 以便分析

得找个没识别的

删除函数 就在create Function下面删除

代码数据转换

反编译的时候 可能无法正确识别代码和数据 汇编课有讲 先不提

如果确信 某个16进制是指令将光标移到第一个字节按C 即可

取消定义就按U 将会以16进制重新展示

按D 就会DB dw dd转换 options->data types 有更多选项可以选择

数组

按* 就可以打开数组排列窗口\

第一个数组大小

第二个每行的项数

第三个对齐方式

结构体

常见类型 IDA会自动加载相应类型的库 Shift+f11打开加载类型库窗口

再右键打开Load Type Libraries

shift11

然后选择库

查看结构体数据结构 打开view ->open sub views-> structures

背景就是结构体

按insert查看结构体名

查找需要的结构体就可以用库了

枚举

可以在IDA动态定义使用枚举类型

View-> Open subviews ->Enumerations

再使用ins 新建插入

eum2

N可以插入枚举

FLITRT

IDA可以快速识别 但是有时候可能识别不出来strlen 可能被搞成call 406E40 有些东西没有识别出来你就shift f5 View->opensubviews->Signatures

按ins添加

库文件列表

找到对应的选上 然后

右键下方就有重分析 对钩下面就是

这就是结尾了 接下来就开始真正的汇编之旅了