IDA Pro权威指南的学习笔记

Hello world,hello blog!

Posted by 吴柚 on May 15, 2019

##

这几天在博客上找别人在IDA Pro上分析程序的例子来看,发现自己对于IDA Pro的使用手法很low,所以将《IDA Pro权威指南》里关于IDA的基本功能模块大致看了一遍,也看了不少别的大佬的使用技巧总结。

ps:我发现可以使用IDA处理器模块来编写myvm相应的反编译器、或者实现反编译的功能,后面边分析myvm边学习处理器模块的知识。

一些二进制工具

在《IDA pro权威指南》的开篇一两章中,先是介绍了几款常用于二进制研究的工具,我这里简单的记了几个,介绍一波:

C++filt:

可以用于显示出c++中复杂的重载后的函数名称

PE tools:

是一组用于分析Windows系统中正在运行的进程和可执行文件的工具

string:

可以用于直接搜索出elf文件中的所有字符串

参数-a 表示搜索整个文件,参数-t 可以显示出每一个字符串的偏移,参数-e 可以用于搜索更多的字符编码的字符串,如Unicode编码

IDA目录结构

在IDA的安装根目录下有许多文件夹,各个文件夹存储不同的内容

cfg:包含各种配置文件,基本IDA配置文件ida.cfg,GUI配置文件idagui.cfg,文本模式用户界面配置文件idatui.cfg, idc:包含IDA内置脚本语言IDC所需要的核心文件 ids:包含一些符号文件 loaders:包含用于识别和解析PE或者ELF plugins:附加的插件模块 procs:包含处理器模块

常用快捷键

IDA中的快捷键都是和菜单栏的各个功能选项一一对应的,基本上你只要能在菜单栏上找到某个功能,也就能看到相应的快捷键,这里记录几个常用的:

a:将数据转换为字符串

f5:一键反汇编

esc:回退键,能够倒回上一部操作的视图(只有在反汇编窗口才是这个作用,如果是在其他窗口按下esc,会关闭该窗口)

shift+f12:可以打开string窗口,一键找出所有的字符串,右击setup,还能对窗口的属性进行设置

ctrl+w:保存ida数据库

ctrl+s:选择某个数据段,直接进行跳转

ctrl+鼠标滚轮:能够调节流程视图的大小

x:对着某个函数、变量按该快捷键,可以查看它的交叉引用

g:直接跳转到某个地址

n:更改变量的名称

y:更改变量的类型

/:在反编译后伪代码的界面中写下注释

\:在反编译后伪代码的界面中隐藏/显示变量和函数的类型描述,有时候变量特别多的时候隐藏掉类型描述看起来会轻松很多

;:在反汇编后的界面中写下注释

ctrl+shift+w:拍摄IDA快照

u:undefine,取消定义函数、代码、数据的定义

在流程视图中添加地址偏移

IDA中的流程视图可以说是非常的好用,简单明了地能看出程序的执行流程,尤其是在看if分支代码和循环代码的时候,能够非常直观

但是,我们还可以改得更加好用,在这个视图中添加地址偏移的话,我们取地址就非常方便,不再需要按空格切换视图去找,在菜单栏中设置:option–>general

将该选项打钩后就可以看到效果了:

自动添加反汇编注释

这个功能对我来说太友好了,这么晚才发现这个宝藏真是不应该,一些难懂的蛇皮指令也能明白了。

同样是在菜单栏中设置:option–>general

效果如下:

函数调用图

菜单栏中:view–>graphs–>Function calls(快捷键Ctrl+F12)

这个图能很清楚地看到函数之间是如何相互调用的

函数流程图

菜单栏中:view–>graphs–>flowt chart(快捷键F12)

有了这几个宝藏,我觉得这个函数我很快就能分析好了