【Android 逆向】r0zapataNative.apk 破解

android,逆向,r0zapatanative,apk,破解 · 浏览次数 : 70

小编点评

**apk 安装和导入** 1. 下载并安装 APK 文件。 2. 使用 JNIA 等工具导入 APK 文件。 3. 获取 APK 中的 Native 方法名称。 **native 方法分析** 1. 使用 `System.loadLibrary()` 等方法加载 Native 库。 2. 获取 `hallbBase64()` 等方法的名称。 3. 使用 `jnitrace` 等工具跟踪方法调用。 **结果** `hallbBase64()` 方法使用 `byte_13A8` 的数组作为参数,并返回一个 Base64编码的字符串。 **结论** 该方法使用 Native 方法将 Base64编码的字符串解码为 plain文本。

正文

1. apk 安装到手机,需要输入内容,随便输入,提示fail...

2. apk 导入到jadx中查看一下

MainActivity.java

String textData = "b2FueHVl";
...
String roysue_1 = Test.hallbBase64(MainActivity.this.username_et.getText().toString());
if (roysue_1.compareTo(MainActivity.this.textData) == 0) {
                    Toast.makeText(MainActivity.this.getApplicationContext(), "sucess.....", 0).show();
                } else {
                    Toast.makeText(MainActivity.this.getApplicationContext(), "fail.....", 0).show();
                }
...

在这里注册了native方法
Test.java

public class Test {
    public static native String hallbBase64(String str);

    public static native String hellaBase64(String str);

    public static native String hellbBase64(String str);

    public static native String helloBaae64(String str);

    public static native String helloBasa64(String str);

    public static native String helloBase64(String str);

    static {
        System.loadLibrary("ooo");
        System.loadLibrary("ooo111");
        System.loadLibrary("ooo2222");
        System.loadLibrary("ooo333");
    }
}

这里应该是考察到底是哪个so对应着真正的方法,使用jnitrace 看一下
jnitrace -l libooo333.so -l libooo2222.so -l libooo111.so -l libooo.so com.zapata.r0zapatanative
ps: 跟github描述的不符合, 不能使用 -l *,否则会报错

输入内容 123456789

      /* TID 930 */
   5307 ms [+] JavaVM->GetEnv
   5307 ms |- JavaVM*          : 0x77a54cf500
   5307 ms |- void**           : 0x7fca40acb0
   5307 ms |:     0x77a5445ea0
   5307 ms |- jint             : 65542
   5307 ms |= jint             : 0

   5307 ms ------------------------------------Backtrace------------------------------------
   5307 ms |->       0x778910131c: _ZN7_JavaVM6GetEnvEPPvi+0x34 (libooo333.so:0x7789100000)
   5307 ms |->       0x778910131c: _ZN7_JavaVM6GetEnvEPPvi+0x34 (libooo333.so:0x7789100000)


           /* TID 930 */
   5311 ms [+] JNIEnv->FindClass
   5311 ms |- JNIEnv*          : 0x77a5445ea0
   5311 ms |- char*            : 0x77891014e8
   5311 ms |:     com/zapata/r0zapatanative/Test
   5311 ms |= jclass           : 0x81    { com/zapata/r0zapatanative/Test }

   5311 ms -------------------------------------Backtrace-------------------------------------
   5311 ms |->       0x7789101354: _ZN7_JNIEnv9FindClassEPKc+0x2c (libooo333.so:0x7789100000)
   5311 ms |->       0x7789101354: _ZN7_JNIEnv9FindClassEPKc+0x2c (libooo333.so:0x7789100000)

从日志上看,锁定是libooo333.so

3. 使用 IDA 打开libooo333.so看看,最终会调用到一个base64_enc 的函数,改函数使用了一个byte_13A8 的数组

.rodata:00000000000013A8 41 42 43 44 45 46 47 48 49 4A+aAbcdefghijklmn DCB "ABCDEFGHIJKLMNOPQRSTUVWXYZbacdefghijklmnopqrstuvwxyz0123456789+/"
.rodata:00000000000013A8 4B 4C 4D 4E 4F 50 51 52 53 54+                                        ; DATA XREF: base64_enc(char const*,char *)+10↑o
.rodata:00000000000013E8 FF                            unk_13E8 DCB 0xFF                       ; DATA XREF: base64_dec(char *,char *)+BC↑o

明显就是一个base64的字典
使用CyberChef , 输入反编译的那个验证字符串看看(字典设置为 ABCDEFGHIJKLMNOPQRSTUVWXYZbacdefghijklmnopqrstuvwxyz0123456789+/)

image
成功得到正确密码

与【Android 逆向】r0zapataNative.apk 破解相似的内容:

【Android 逆向】r0zapataNative.apk 破解

1. apk 安装到手机,需要输入内容,随便输入,提示fail... 2. apk 导入到jadx中查看一下 MainActivity.java String textData = "b2FueHVl"; ... String roysue_1 = Test.hallbBase64(MainActi

【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 密