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
然后选择库
查看结构体数据结构 打开view ->open sub views-> structures
背景就是结构体
按insert查看结构体名
查找需要的结构体就可以用库了
枚举
可以在IDA动态定义使用枚举类型
View-> Open subviews ->Enumerations
再使用ins 新建插入
N可以插入枚举
FLITRT
IDA可以快速识别 但是有时候可能识别不出来strlen 可能被搞成call 406E40 有些东西没有识别出来你就shift f5 View->opensubviews->Signatures
按ins添加
库文件列表
找到对应的选上 然后
右键下方就有重分析 对钩下面就是