安卓逆向学习笔记:native层开发、分析和调试基础

安卓逆向学习笔记:native层开发、分析和调试基础

本笔记主要是自己看,所以如果有看不懂的地方也请多多包涵,这一篇的笔记主要是《Android应用安全防护和逆向分析》的部分内容。

一 Android Studio开发环境配置

这里用的版本为4.2版本,直接建立native project来开发,理由是简单。想想吧,谁愿意又是生成什么头文件,又要写什么mk文件,还要搞这个哪个的,太**麻烦了,有简单省事的谁不喜欢用呢,况且只是用这个做逆向分析的案例用于自己玩。
但是简单也伴随着问题,在这里经常会遇到sync build(巴拉巴拉)卡住的问题,通过阅读提示信息,发现主要在于ndk和sdk build tools的问题。最终经过尝试,得出可正常使用的版本如下图所示:
安卓逆向学习笔记:native层开发、分析和调试基础_第1张图片
安卓逆向学习笔记:native层开发、分析和调试基础_第2张图片
这个开发环境就算是搞定了。

二 分析、调试so源码工具

IDA永远的神好吧,多了不解释,怎么使用他调试的具体流程也不说了。(推荐大家姜维大神的《Android应用安全防护和逆向分析》,其实我下面的内容基本都是这本书上的,为了就是做个笔记,熟练下)
单纯写几个常用的快捷键拉倒。
1 ARM指令转化成C语言 F5
这里注意要还原JNI函数方法名
2 字符串内容窗口 Shift + F12
3 定位so中的段地址 Ctrl + S
当处于静态分析时,是得到一个相对地址,不是so映射到内存后的地址
当处于动态调试时,是一个so文件映射到内存的地址
4 跳转到指定地址快捷键 G
这个其实主要是针对动态调试的,因为静态分析的时候,根本用不到这个命令,他会列出其中的函数便于直接跳转。顺便说一下,想要快速跳转到别人写的native函数那,可以在Function那个地方,随便点一个然后按Java,或者你再View-A中按下Ctrl + F自己搜你想搜的(我也不知道为啥,我的IDA每次按Ctrl + F就会崩溃,知道原因的麻烦私聊我一下)。

安卓逆向学习笔记:native层开发、分析和调试基础_第3张图片

在动态调试时,就可以用动态调试中获取的so文件的内存地址,加上静态分析获取的相对地址(就上图红色圈出来的那个),就可以蹦到你想找的函数啦!
5 调试快捷键
一般来说,找到想要下断点的地址,下个断点然后就可以运行了。
怎么运行?F9或者点一下绿色开始键就行了。然后到了断点,就可以单步调试。
然后就F7单步进入调试或者F8单步调试

引用

《Android应用安全防护和逆向分析》

你可能感兴趣的:(android)