ida 工具常用操作

导航条:
蓝色 表示常规的指令函数
黑色 节与节之间的间隙
银白色 数据内容
粉色 表示外部导入符号
暗黄色 表示ida未识别的内容

IDA主界面:
IDA View三种反汇编视图:文本视图、图表视图、路径视图
Hex View 十六进制窗口
Imports 导入函数窗口
Struceures 结构体窗口
Exports 导出函数窗口
Enums 枚举窗口
Strings 字符串窗口

常用功能及快捷键:
空格键:切换文本视图与图表视图
ESC:返回上一个操作地址
G:搜索地址和符号
N:对符号进行重命名
冒号键:常规注释
分号键:可重复注释
Alt+M:添加标签
Ctrl+M:查看标签
Ctrl+S:查看段的信息
代码数据切换
C-->代码/D-->数据/A-->ascii字符串/U-->解析成未定义的内容
X:查看交叉应用
F5:查看伪代码
Alt+T:搜索文本
Alt+B:搜索十六进制

导入jni.h分析jni库函数。

伪C代码窗口:
右键
comment-注释伪c代码。
copy to -assembly-把伪c代码复制到反汇编窗口的汇编代码。

IDA可以修改so的hex来修改so,edit,然后edit-patchrogram,
在这里建议使用winhex来实现。

1.反汇编窗口
C 将当前地址处的数据解析成代码
P
2.十六进制窗口
编辑内存数据和代码
3.寄存器窗口
修改寄存器的值
4.模块窗口
模块路径和地址
5.线程窗口
6.栈窗口
7.输出信息窗口

ID调式常用功能:
1.断点和运行
设置断点 F2
设置断点不可用 Disable breakpoint
编辑断点 Edit breakpoint
删除断点 Delete breakpoint
继续运行 F9
查看当前所有断点 Ctrl+Alt+B
2.单步调式
单步步入 F7
单步步过 F8
运行到函数的返回地址 Ctrl+F7
运行到光标处 F4
3.IDC脚本
static main(void)
{
auto fp, dexAddress, end, size;
dexAddress = 0x77607640;
size = 0x19E118;
end = dexAddress + size;
fp = fopen("D:\\classes.dex", "wb");
for ( ; dexAddress < end; dexAddress++ )
fputc(Byte(dexAddress), fp);
}
4.修改内存数据
5.修改寄存器
7.NOP函数或代码
NOP函数mov R0,R0(00 00 AO E1/00 1C)
清空指令(00 00 00 00/00 00)
函数头直接返回mov pc,lr(0E F0 A0 E1/F7 46)
8.改变执行流程
修改寄存器的值
修改跳转指令

注意:修改内存和修改代码的时机选择不同,因为修改内存和寄存器,必须调式到某一处,才能让寄存器和内存是想要的值,此时修改,而且数据的值一般对程序影响不大,而修改代码就
不同了,如果已经走到了那一句代码,才去修改代码,是要报错的,提前在它运行到前面1-2条
指令时修改代码。


ADD R6,PC,R6 //R6=PC+R6=847C+1840=9CBC+8? 9CC4

PC指令预读
----读取指令

posted @ 2019-08-05 17:27  心住神明  阅读(2828)  评论(0编辑  收藏  举报