IDA和OD是逆向中必不可少的一部分,现在来分享一下IDA和OD的一些技巧
IDA
1、查找字符串
(Shift+f9)View->open subviews->Strings
2、修改文件,打补丁(patch)
1、找到修改地方
2、修改文件,也可以在(Hex view)窗口修改16进制:双击要修改的地方 ->使用F2捷方式修改当前字节 ->再按下F2快捷方式应用修改。
3、保存文件修改后的文件:[IDA Main Menu]->[Edit]->[PatchProgram]->[Apply patches to input file…]
IDA图形视图会有执行流,Yes箭头默认为绿色,No箭头默认为红色,蓝色表示默认下一个执行块。
3、ida无法识别,红色代码,不能f5
如果地址是红色,当f5时会出现这句话:The function has undefined instruction/data at the specified address.那就创建一个函数(P),当创建函数时,会出现这句话:The function has undefined instruction/data at the specified address.Your request has been put in the autoanalysis queue
如果我们不能创建函数,就不能使用F5来分析代码了,想让这些代码变绿色的方法(创建函数)很简单.
用鼠标从函数头部开始到 retn 结尾 拖一下,变成灰色.
然后用快捷键 P 或者右键菜单,CreateFunction 来创建函数就可以了。当然了,到这里也不算完.下图是代码变绿色的,我用上面的方法创建函数了,可还是不能F5,我们通过Stack Pointer (option->General->Disassembly选中stack pointer)发现这个函数的堆栈是不平衡的.此时我们需要找接近retn 的 最后一个Call 然后去修正堆栈.此时我们需要找接近retn 的 最后一个Call 然后去修正堆栈.我们看到 retn 左边绿色的数字是 28,我们通过ALT + k 修正堆栈,把 28 retn 改成 0 就可以了。修正堆栈的时候一定要选择 Call 然后修正堆栈,下图是修正后的 代码
4、常用快捷键
1、快捷键F5显示C伪代码
2、(Shift+f9)查找字符串
3、快捷键Alt+T,打开文本搜索对话框,在String文本框中输入要搜索的字符串点击OK即可
4、翻页 esc 和 Ctrl+Enter
5、使用小键盘“-”,“+”查看函数之间的关系
6、G跳转地址
7、使用快捷键”*”把变量重定义为数组
8、对于数字,16进制和10进制转换(H),转化成10字符(R)
9、注释’;’
OD(olldbg)
1、常用快捷键
0、f2下断点
1、f7进入call
2、f8不进入call
3、f9运行
4、f4运行到当前位置
5、’-‘回到上一步的位置
6、’*’回到当前运行的位置
7、Ctrl+F2 重新运行程序到起始处,用于重新调试程序
8、Ctrl+G 寻找十六进制地址
9、Alt+F2 关闭被调试程序。
10、f3 选择可执行文件
11、ctrl+b 在地址栏进行查找字符串
12、m -> 查找
13、ctrl+f ->将汇编转成16进制
OD上面图标
1、’b’查看断点
2、’m’打开内存
3、’c’回到反汇编窗口
OD保存文件
1、寻找到需要patch的地方
2、修改(patch)文件
3、 保存文件: 窗口中选中修改过的语句—>右击—>复制到可执行文件—>“选择”或者“所有修改”—>出现“文件”窗口—>右击—>保存文件