本例仅在Android2.3模拟器跑通过,如果要适配其他机型,请自行研究,这里只是抛砖引玉。
0x00
在Android中的Apk的加固(加壳)原理解析和实现,一文中脱壳代码都写在了java层很容易被识别出来,很多需求需要把脱壳的程序转移到native层,其实转移的思路也很简单,就是在native层通过JNI调用Java层代码。
运行前,首先把ForceApkObj.apk放在/sdcard/payload_odex/目录下。
代码已上传至github,地址为https://github.com/jltxgcy/AndroidNativeShell。
0x01
public class ProxyApplication extends Application {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
DexLoader.load("com.jltxgcy.dynamicdex");
}
@Override
public void onCreate() {
DexLoader.run();
}
} 还记得原来这两个方法有着一大堆代码,这里仅仅有一行代码就搞定。
我们再看来DexLoader类。
public class DexLoader {
static {
System.loadLibrary("dexloader");
}
public static native void load(String path);
public static native void run();
}
原来核心脱壳代码放在了native层。
<

本文介绍了如何在Android中将加壳技术从Java层转移到native层,以提高Apk的加固安全性。通过JNI调用Java代码,实现核心脱壳过程在native层执行。示例代码已在GitHub上分享。
最低0.47元/天 解锁文章
1692

被折叠的 条评论
为什么被折叠?



