安卓逆向-静态分析

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查看伪代码

posted @ 2022-12-13 22:29  Hacker&Cat  阅读(75)  评论(0编辑  收藏  举报