view/subview/shift+F5
内存断点
区段断点(alt+M).text下断点
ALT +A改变字符串编码option/string style
edit/export data
设置间接跳转地址
switch
7、IDAPython
IDA自带支持脚本
可以使用几乎所有IDA提供的API
可以快速完成大量重复性操作
方便的了解IDA内部的数据和结构 IDA pro权威指南
8、妙手回春F5出错处理
-HexRays出错处理
格式:XXX:XXX
-positive sp value 成因:IDA会自动分析SP寄存器的变化量,由于缺少调用约定,参数个数等信息,导致分析出错(标准调用约定被调用者清理栈,c调用约定调用者清理)
解决方案:
推荐:在option-general-disssembly-stackpoint
ALT + K 直接修改栈值
-call analysis failed
成因:调用分析失败,未能成功解析参数位置和参数个数 程序会崩溃,程序会提供一个地址
对于间接调用类似call eax可使用设置调用地址
对于直接调用,查看调用目标的type 是否正确,可变参数是引发这种错误的主要原因之一
-cannot convert to microcode
无法转换成伪代码
成因,部分指令无法被反编译
有未设置成指令的数据字节按c将其设置成指令
其次是x86中的rep前缀,比如rep jmp等可以将该指令的第一个字节
-stack frame is too big
成因:分析栈帧时有异常出现
解决方案:找到明显不合常理的stack 双击进入栈帧界面,按U键盘删除对应的stack
有可能加壳
可能由花指令导致,手动或自动检查并去掉花指令
-local variable allocation failed
分析函数 时,有部分变量对应的区域发生重叠,多见于ARM平台出现point rect等8字节,16字节,32字节结构时尤其多见
解决方案:
1、修改对应参数为多个int
2、修改ida安装目录下的hexrays .cfg的HO_
F5结果不正确
F5会自动删除其认为不可能到达的代码
noreturn函数
解决方案:
双击进入再返回(迫使HEXRays)
ALT+P edit(function)
HEXRAYS高级使用方法
1、自定义寄存器传参数
int __usercall __userpurge
test<eax>{int al<eax>}
<>中为对应值的位置
2、源码级调试(在f5后可以设置断点)
f8容易跑飞
IDA Processor
打开git上的两个链接
未整理,凑合着看
9、Manual Load
遇到特殊情况
32位和64位的代码混合存在,修改段寄存器
在打开文件后的对话框
shift + E 单独拖出来
10、导入头文件
如果能找到程序的一部分头文件比如程序公开的API接口,可以通过头文件让IDA了解这个结构并辅助分析
H 切换成16进制
11、回复符号
1、找程序的旧版本
大量程序早期版本的符号
对于苹果应用,可以使用appadmin获取低版本应用
酷app
2、Rizzo匹配
可以搜索并借用前人的工作成果
github上https://github.com/devttys0/ida/tree
3、看程序自带的string
自带了大量的符号
4、google搜索源代码CS IOS
按获得信息搜索源代码,stack overflow答案 CSDN代码
5、自己制作signature
ida提供自动制作signature的工具
请打开IDA SDK68文件夹,找到flair68文件夹
12\多角度切入
win10 14393 允许关闭UAC的运行
注册表 ENableLUA
无法使用内置管理员账户
从商店应用的启动流程入手
13\如何区分用户代码
库函数同样分布在一起
如果发现了——S_
14、搞定需表
HEXRAYScodexplorer
hex rays_tool
HexRaysPyTools下载地址
shift+f6 alt+f8
15、先把程序的后缀名去掉(避免误运行)
绝对不要在真机上运行
推荐打开360或与其同等强度的HPS防御软件(开到最大)