失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 安卓逆向学习笔记:native层开发 分析和调试基础

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

时间:2022-04-02 08:42:12

相关推荐

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

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

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

一 Android Studio开发环境配置

这里用的版本为4.2版本,直接建立native project来开发,理由是简单。想想吧,谁愿意又是生成什么头文件,又要写什么mk文件,还要搞这个哪个的,太**麻烦了,有简单省事的谁不喜欢用呢,况且只是用这个做逆向分析的案例用于自己玩。

但是简单也伴随着问题,在这里经常会遇到sync build(巴拉巴拉)卡住的问题,通过阅读提示信息,发现主要在于ndk和sdk build tools的问题。最终经过尝试,得出可正常使用的版本如下图所示:

这个开发环境就算是搞定了。

二 分析、调试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就会崩溃,知道原因的麻烦私聊我一下)。

在动态调试时,就可以用动态调试中获取的so文件的内存地址,加上静态分析获取的相对地址(就上图红色圈出来的那个),就可以蹦到你想找的函数啦!

5 调试快捷键

一般来说,找到想要下断点的地址,下个断点然后就可以运行了。

怎么运行?F9或者点一下绿色开始键就行了。然后到了断点,就可以单步调试。

然后就F7单步进入调试或者F8单步调试

引用

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

如果觉得《安卓逆向学习笔记:native层开发 分析和调试基础》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。