在上次我们基本了解JNI以后,对基本的工具也有了使用。这次从代码底层追踪下是如何实现的
system.loadlibary后,我们应该要找到一个相似的地方,应该是知道加载过程。下面这位大佬转载了两篇文章,两位大佬都写的非常全面。一个是从底层详细分析loadLibrary的加载过程,一个是从实践做一个简单的demo去使用动态加载链中的函数。虽然AOSP源码版本可能不同,但是大概是相同的
System.loadLibrary()
Runtime.loadLibrary()
Runtime.doLoad()
Runtime_nativeLoad()
LoadNativeLibrary()
dlopen()
dlsym()
JNI_OnLoad()
这两篇文章仔细研读并且跟踪代码还是相当费时间的。但是跟踪过以后,慢慢能力就培养出来了,以后也容易跟踪其他链过程,比如跟踪JAVA那几个链。
https://blog.csdn.net/oncealong/article/details/103764745
文章中我们简单了解到了静态注册。没错,简单理解就是不重写jni_onload的都是静态注册,重写jni_onload的都是动态注册。
之前对JNI不熟悉或者有什么遗漏的地方可以详细的看看这份文章系列,总共5份。虽然比较难懂,但是多看几遍,认真学习,还是能有非常大的收获。
这几个写着是看似简单,实际我也被这个折磨了不少时间。
安装idea,这个只需要是安装idea的社区版就行了,不需要安装商业版
idea版本如下
unidbg下载地址:https://github.com/zhkl0228/unidbg
这个直接运行会提示JDK的问题,在Oracle官方里面可以下载JDK17,在idea里面直接配置就好了,这样就不用在kali里面配置了。
直接运行以后,结果如下所示。
又找到一个新的资源:
ps:如果想一块讨论渗透&代码审计&APP逆向可以添加下面的微信号相互交流
本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,文章作者及本公众号不为此承担任何责任。
欢迎关注公众号“呼啦啦安全”,原创技术文章第一时间推送
原文始发于微信公众号(呼啦啦安全):安卓逆向十二
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论