【Tech-so】So文件静态分析Step by Step(二) --------读懂IDA Pro
来源:互联网 发布:各类数据出售 编辑:程序博客网 时间:2024/05/22 09:07
上文提及到,我们把一个so文件和classes.dex文件中的时候,两者在IDA Pro中的呈现完全不同。
首先我们先来看简单的dex文件,所谓简单是因为我觉得它在IDA中的代码类似于smali代码,smali是一种android虚拟机编译代码,是一种指令集,
如下图: (红框的就为Davlid虚拟机的指令集)
相关这些指令集的说明,可以去百度一下Android Smali语法分析,读懂了Smali语法再回头看IDA Pro中这些指令集就会完全明白了。
例如其中的一段:
invoke-static: 调用一个getNmuber的静态方法,传入参数V3寄存器的值
move-result: 返回值结果保存到V1寄存器中
const/16: 初始化一个16进制的常量,0x64 = 100
if-ne: 如果V1寄存器的值 不等于 V2寄存器的值 那么就跳到locret:方法段去
首先我们再看看classes.dex拖进IDA Pro后的界面。
以下的界面,可以作为IDA Pro静态分析的主界面,主要呈现了代码集。
我们先从左到右来看,主要关注于窗口栏。
1.首先是Functions window
顾名思义,这是就是一个展示方法名的窗口。这个窗口展示一个dex中或者一个so文件中所包含的所有的方法名称,利用这个窗口来找快速地知道你想要的方法。
当然,这种快速是需要经过过滤的。不然你看看,上图左边的滚动条,那么长,一看就是包含了极多的方法的。依靠滚动条去找到自己想要的方法也未免太SB了。
所以这个窗口中加入了过滤,类似于我们日记输出中的过滤,符合你所找的方法的方法就会保留,其他方法会被清空掉。
在Function name的窗口,点击鼠标右键:
红框中显示了这个Function View中几个重要的方法。删除/编辑 ---快速过滤/修改过滤
我们使用一下其过滤方法,过滤一个方法名中含有“OnCreate”的方法,并且用紫色来标注出来。
结果就是:
2.ManiView中的标签:
主视图:IDA View-A 反汇编窗口 他是操作和分析二进制文件的主要工具。
数据显示: 依然使用我们上图的方法块
红框:虚拟地址
黑框:指令集
黄框:数据存储与方法调用
点击方法名,然后右键,可以看到这个方法的调用视图。
次视图:Hex View-A 十六进制的反汇编窗口
数据显示:默认情况下,第一个十六进制窗口会与第一个反汇编窗口(IDA View-A)同步。
当反汇编窗口与十六进制窗口同步,在一个窗口中滚动鼠标,另一个窗口也会滚动到相同的位置(同一个虚拟地址)。
次视图:结构窗口 结构体窗口用于显示IDA确定的二进制文件中使用的任何复杂的数据结构的布局
数据显示:
次视图:枚举窗口 结构体窗口用于显示IDA确定的二进制文件中使用的任何复杂的数据结构的布局
数据显示:当IDA检测到标准枚举数据类型(C的枚举型),它将在枚举窗口中列出该数据类型。你可以使用枚举来代替整数常量,提高反汇编代码的可读性。
- 【Tech-so】So文件静态分析Step by Step(二) --------读懂IDA Pro
- 【Tech-so】So文件静态分析Step by Step(一) --------入门,利用IDA pro查看代码
- Android之使用IDA Pro静态分析so文件
- 安卓逆向学习笔记 (3)- 使用IDA Pro静态分析so文件
- 使用IDA Pro调试so文件
- IDA Pro动态调试Android so文件
- 使用IDA Pro动态调试SO文件
- 用IDA分析so
- Ida 调试so文件
- 菜鸟总结so分析,arm 汇编,IDA静态分析
- NDK开发-之4-ida工具ndk对so文件静态分析
- [Python]Django Step by Step 笔记(二)
- PL/SQL Step By Step(二)
- Step By Step系列之Fragments(二)
- 卷积神经网络Step by Step(二)
- 代码静态分析工具PC-LINT安装配置--step by step
- 代码静态分析工具PC-LINT安装配置--step by step
- 代码静态分析工具PC-LINT安装配置--step by step[转]
- 【网络】WebService到底是什么?
- swift变量、常量
- RedHat6.5 puppet配置(一)-准备工作
- Android-上传图片(二)_HttpClient
- 51单片机中断详解(中)
- 【Tech-so】So文件静态分析Step by Step(二) --------读懂IDA Pro
- 详解SQL Server数据修复命令DBCC的使用
- MPI学习-规约函数MPI_Allreduce
- 坐在马桶上看算法:快速排序
- HDU2017字符串统计
- 程序员必备的600个英语词汇(2)
- Spring使用JdbcTemplate实现对数据库操作 (内部类定义RowMapper)
- Qt之界面实现技巧
- eclipse项目迁移到android studio(图文最新版)