IDA简单学习
IDA的反汇编窗口(IDA-View)
主要显示汇编代码、地址、控制流图
两种模式:上图文本模式、下图图形模式


使用空格切换文本/图形模式
图形模式:Ctrl+鼠标中键滚轮缩放
文本模式:指令地址、指令间线性关系、机器码
图形模式:方便观察控制流

IDA的伪代码窗口
反汇编 ->伪代码:Tab健 /F5
伪代码 ->反汇编:Tab键
如果我们想知道伪代码所对应的汇编语言在哪,我们把光标放到代码上然后按一下Tab键就能切换到光标位置对应的汇编,汇编转伪代码也是一样的
IDA的字符串表
Shift+f12键(背下来)
菜单打开View - > Open subviews ->string
字符串表里面列举了IDA里面所有的被识别的字符串
我们可以通过字符串去搜索开源库可以少逆向很多代码
我们可以使用ctrl+f在函数和字符串表格窗口进行一些搜索


可以看到是在rdata段,内存地址和标识符啥的也都在后面了
要注意一点的是,字符串表收集的是IDA识别到的所有字符串(不一定齐全)
字符串信息是逆向工作中非常关键的信息
IDA的数据窗口
菜单 -> view ->Open subviews ->hex dump
因为二进制不太好展示,所以用16进制来展示
如果要修改呢我们先右键点击
可以看到有个edit

改完之后直接邮件应用一下就行

撤回上一步操作就是按ctrl+z
或者按F2就可以直接进入编辑模式
在这个Hex View窗口里面可以按G键弹出地址跳转窗口(也可以在反汇编/伪代码窗口使用)
如何快速复制这个数据呢?
IDA的交叉引用
程序中的地址用符号来表示,例如sub_xxx,var_xxx,...
符号可能被代码、数据引用,IDA交叉引用的窗口能展示引用关系
void main() {printf("%s",abc);},main函数引用了printf、“%s”、abc
IDA可以通过abc、printf、"%s" 交叉引用找到main函数
在符号名上按下x键,查找当前引用x的代码或数据
单机点一下符号名字。就会变成黄色,然后按X就可以弹出交叉引用的窗口了

交叉引用窗口展示了所有引用当前符号的代码和数据
双击就可以跳转

IDA代码定位

这里全是函数,怎么在海量代码里面找到感兴趣的代码就是如何找到main函数的代码了
我们使用的就是字符串定位法
字符串定位法指的是通过已知的字符串来定位代码
我们可以运行程序,然后就是搜索运行的程序中出来的字符串

然后就可以不断地x找函数的上层是啥
IDA的重命名
比如说我们有一个函数名称不好看我们可以给他改一个有意义的名字然后方便我们分析
快捷键是n
快捷键汇总
