SuperAPI AI 工具集

re-android-native

数据与分析

查看项目

更新于 10-15 21:34

技能介绍

一、用途 用于 Android 原生库(JNI/.so)逆向:APK 内存在 lib/*.so、单独 .so 带 JNI 特征、或 Java 层只看到 System.loadLibrary 与 native 声明时,定位并还原 native 实现。纯 Java APK 走 re-apk;加固壳 so 先按 re-mobile-pack / re-anti-analysis 脱壳;.so 内加密库 API 语义转 re-android-crypto;普通无 JNI 特征的 ELF 走 re-binary-core。

二、主要能力

  1. so 提取与架构识别:解压 APK、查找 .so、用 file 与 readelf -h/-d 确认 ABI(arm64-v8a、armeabi-v7a、x86_64/x86)与依赖、是否 strip。
  2. JNI 接口还原:用 readelf --dyn-syms 过滤 Java_* 与 JNI_OnLoad;JNIEnv 实为指向 JNINativeInterface 函数表的指针,调用形如 (env)->Fn(env,...);在 Ghidra/IDA 载入 jni.h 后按名称还原 GetStringUTFChars、NewStringUTF、CallVoidMethod、GetJavaVM 等;注意是 Modified UTF-8。native 函数签名为 (JNIEnv, jclass/jobject, 业务参数...)。
  3. 注册方式还原:静态注册表现为 Java_包名_类名_方法名 导出;动态注册在 JNI_OnLoad 调 RegisterNatives,JNINativeMethod{name, signature, fnPtr} 数组三项均为指针(64 位 8 字节、32 位 4 字节),沿第三参数逐项还原。RegisterNatives 位于 JNIEnv 函数表 index 215。
  4. 逻辑分析:Ghidra/IDA 反编译 native 函数,按 JNI API 参数反推业务入口;混淆走 re-deobfuscate;动态验证可用 frida 观察注册与 Java↔native 交互。
  5. 与 Java 层对齐:jadx 找 native 声明与调用点,形成 Java 调用点 ↔ native 函数映射。

三、必要用法 提取:unzip app.apk -d app/;find app -name "*.so";readelf -h / --dyn-syms。已安装 App:adb pull /data/app/.../lib/arm64-v8a /tmp/lib/(需 root 或 debuggable)。jni.h 随 NDK 提供,可通过 sdkmanager "ndk;27.2.12479018" 安装。动态插桩须在受控设备或模拟器快照内执行,工具先验证再使用。

四、限制 JNI_OnLoad 非必有导出;动态注册函数地址不在导出表;多 ABI 差异需以真机 arm64 为准;受控动态分。资料未提供具体收费、平台与效果信息。