安卓逆向-静态分析
1.APK结构
assets,资源文件(js、json、图片等)
res,资源文件(XML、布局、图片等)
lib,so层(动态链接库)
META-INF,签名文件
AndroidManifest.xml,配置文件
classes.dex,一个可执行文件
resources.arsc,打包生成的文件
2.Smali
反汇编语言
Android Killer
逆向工具(APK->Smali),https://github.com/liaojack8/AndroidKiller
配置->Java->填jdk1.8的bin路径
Android->APKTOOL->添加apktool(我默认用的2.3.4,https://ibotpeaches.github.io/Apktool/)
想添加的插件放/cfgs/injectcode/,在插入代码管理器使用
直接拖入APK(正在反编译APK源码->重启工具(不分析当前工程))
修改完Smali等->编译生成新APK
Jadx gui
逆向工具(APK->Java),https://github.com/skylot/jadx
直接拖入APK->工具->反混淆
java2smali
IntelliJ IDEA插件(Java->Smali)
File->Project Structure->SDKs填jdk1.8路径
File->Settings->Plugins搜索java2smali安装
Build->Compile to smali转换
3.JNI
使Java和C/C++能够相互调用的接口,C/C++代码在so层
例:
public native String stringFromJNI();
Java_com_package_name_ClassName_stringFromJNI(JNIEnv* env, jobject){ std::string hello = "Hello from C++"; return env->NewStringUTF(hello.c_str()); }
IDA
逆向工具(ARM指令集)
静态分析:Go->拖入so文件->Exports窗口->ctrl+F搜索函数名进入->空格切换视图->F5查看伪代码