安卓逆向十二

在上次我们基本了解JNI以后,对基本的工具也有了使用。这次从代码底层追踪下是如何实现的

system.loadlibary后,我们应该要找到一个相似的地方,应该是知道加载过程。下面这位大佬转载了两篇文章,两位大佬都写的非常全面。一个是从底层详细分析loadLibrary的加载过程,一个是从实践做一个简单的demo去使用动态加载链中的函数。虽然AOSP源码版本可能不同,但是大概是相同的

System.loadLibrary()
	Runtime.loadLibrary()
		Runtime.doLoad()
			Runtime_nativeLoad()
				LoadNativeLibrary()
					dlopen()
					dlsym()
					JNI_OnLoad()

这两篇文章仔细研读并且跟踪代码还是相当费时间的。但是跟踪过以后,慢慢能力就培养出来了,以后也容易跟踪其他链过程,比如跟踪JAVA那几个链。

Android so 加载原理分析_android shared library already opened-CSDN博客

篇文章我们简单了解到了静态注册。没错,简单理解就是不重写jni_onload的都是静态注册,重写jni_onload的都是动态注册。

之前对JNI不熟悉或者有什么遗漏的地方可以详细的看看这份文章系列,总共5份。虽然比较难懂,但是多看几遍,认真学习,还是能有非常大的收获。

Android JNI(一)——NDK与JNI基础 - 简书

又找到一个新的资源:

安卓 APP 三代加壳方案的研究报告

这几个写着是看似简单,实际我也被这个折磨了不少时间。

安装idea,这个只需要是安装idea的社区版就行了,不需要安装商业版

下载idea的版本使用communiyt就可以,这个也有个玄学的事情。idea不能版本过低,会出现点问题。直接说我用的吧是

unidbg 启动

unidbg下载地址:GitHub - zhkl0228/unidbg: Allows you to emulate an Android native library, and an experimental iOS emulation

这个直接运行会提示JDK的问题,在Oracle官方里面可以下载JDK17,在idea里面直接配置就好了,这样就不用在kali里面配置了。

直接运行以后,结果如下所示。

  • 6
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值