android 逆向笔记

android,逆向,笔记 · 浏览次数 : 40

小编点评

**壳检测工具 GDA2. 逆向分析APP 一般流程** **1. 自动化检测工具检测APP是否加壳** - 使用自动化检测工具,例如 JDex,检测 APK 文件是否包含反汇编可执行代码(Code Injection)。 **2. 如果apk加壳,则需要先对apk进行脱壳** - 由于 APK 文件是可执行代码,需要对其进行脱壳,将反汇编代码转换为可运行的代码。 **3. 使用`jeb`, `jadx`, `apktool`等反编译工具对apk进行反编译** - 使用反编译工具,例如 JDex,对 APK 文件进行反编译,以获取源代码。 **4. 确定apk的功能和流程** - 分析反编译后的代码,确定 APK 的功能和流程。 - 关键字符串和关键API调用可以帮助快速定位需要分析的函数和流程。 **5. 确定关键函数的实现方式** - 使用 Java 的双亲委派模型分析关键函数的实现方式,例如是否使用 JNI 或 Java 反调用。 **6. 确定apk是否使用 strings 或者反射调用** - 如果关键字符串或关键API无法快速定位,则 APK可能使用字符串加密、反射调用等手段。 - 使用 hook 或动态调试等手段进行分析。 **7. 确定apk的实现方式** - 如果使用 Java 的双亲委派模型,则进一步分析是 Java 的代码实现还是 JNI 的代码实现。

正文

  1. 壳检测工具 GDA

2. 逆向分析APP 一般流程

 1. 使用自动化检测工具检测APP是否加壳,或者借助一些反编译工具依靠经验判断是否加壳
 2. 如果apk加壳,则需要先对apk进行脱壳
 3. 使用`jeb`, `jadx`, `apktool`等反编译工具对apk进行反编译
 4.  先依据静态分析得到的关键字符串、关键API调用快速定位到需要分析的函数和流程
 5. 如果关键字符串或者关键API无法快速定位,则apk可能使用了字符串加密、反射调用等手段;此时可以使用hook或动态调试等手段
 6. 定位到关键函数后,再跟进是java实现还是JNI实现进一步做分析,其中so中的函数逻辑分析难度较大

3. JAVA 的双亲委派模型原理及作用

原理:

  1. Bootstrap ClassLoader(引导类加载器)
    C/C++ 实现的加载器,用于加载JDK的核心类库,比如: java.lang、java.util
    等系统类。JAVA虚拟机启动就是通过Bootstrap ClassLoader;在JAVA里无法获取该类和对象,负责加载/lib下的类
  2. Extention ClassLoader (拓展类加载器)
    JAVA 实现的加载器,提供了除了系统类之外的额外功能,可以在java里获取,负责加载/lib/ext下的类
  3. Application ClassLoader (应用程序类加载器)
    JAVA 实现的加载器,开发人员写的代码默认就是由它来加载,ClassLoader.getSystemClassLoader返回的就是它

双亲委派模型:
当一个加载器要加载一个类时,会向上让父类去加载该类,该类加载不了,再向下加载,都加载不了,则该加载器加载
加载器加载类的顺序
Boostrap -> Extension -> Application -> 自定义的类加载器

作用:

  1. 避免重复加载,如果一个类被加载过了,则直接读取该记载的class
  2. 更加安全,无法通过自定义的类来替代系统的类,防止核心API库被随意篡改

与android 逆向笔记相似的内容:

android 逆向笔记

壳检测工具 GDA 2. 逆向分析APP 一般流程 1. 使用自动化检测工具检测APP是否加壳,或者借助一些反编译工具依靠经验判断是否加壳 2. 如果apk加壳,则需要先对apk进行脱壳 3. 使用`jeb`, `jadx`, `apktool`等反编译工具对apk进行反编译 4. 先依据静态分析得

【Android逆向】frida 破解 jwxdxnx02.apk

apk 路径: https://pan.baidu.com/s/1cUInoi 密码:07p9 这题比较简单,主要是用于练习frida 1. 安装apk到手机 需要输入账号密码 2. 使用jdax 查看apk package hfdcxy.com.myapplication; import andr

[Android逆向]Exposed 破解 jwxdxnx02.apk

使用exposed 遇到了一些坑,这里记录一下 源码: package com.example.exposedlesson01; import de.robv.android.xposed.IXposedHookLoadPackage; import de.robv.android.xposed.X

[Android 逆向]frida 破解 切水果大战原版.apk

1. 手机安装该apk,运行,点击右上角礼物 提示 支付失败,请稍后重试 2. apk拖入到jadx中,待加载完毕后,搜素失败,找到疑似目标类MymmPay的关键方法payResultFalse 4. adb logcat 或者androidstudio 查看该进程的日志,发现以下日志 com.mf

[Android 逆向]Xposed 破解 切水果大战原版.apk

代码 public class Main implements IXposedHookLoadPackage { boolean flag = false; @Override public void handleLoadPackage(XC_LoadPackage.LoadPackageParam

【Android逆向】frida 破解 滚动的天空

1. apk 安装到手机中 2. 玩十次之后,会提示 充值 3. adb shell dumpsys window | grep mCurrentFocus 查看一些当前activity是哪一个 是 AppActivity 4. 阅读代码,感觉是unity3d做的游戏 5. apk拖入到jadx中,

【Android逆向】滚动的天空中插入smali日志

1. 编写一个MyLog.java 放到一个android工程下,编译打包,然后反编译拿到MyLog的smali代码 package com.example.logapplication; import android.util.Log; public class MyLog { public st

【Android逆向】frida hook so 函数

1. apk来自52pojie 链接:https://pan.baidu.com/s/1vKC1SevvHfeI7f0d2c6IqQ 密码:u1an 2.apktool反编译apk,拿到so文件 java -jar ../apktool_2.2.4.jar d app-debug.apk 3. 用j

【Android逆向】修改so文件方式修改程序行为

1. 还是之前的那个apk 链接:https://pan.baidu.com/s/1vKC1SevvHfeI7f0d2c6IqQ 密码:u1an 尝试使用 010Editor来修改so文件 2. 使用ida打开so文件,双击 hello 52pojie!,会跳转到该字符串的偏移地址,ida显示是00

【Android逆向】破解黑宝宝apk,绕过签名校验

这是52pojie的一道题,实现输入任何密码都可以登录成功 他知道你最近在学习Android逆向 他想在游戏上线前让你测试一下他新加的签名验证是否能防住别人的破解。 下面是李华编写的黑宝宝apk 链接:https://pan.baidu.com/s/1h6pX2ARE3qtiKiYbcnJ-3g 密