【Android 逆向】r0zapataNative.apk 破解
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+/)

成功得到正确密码
【Android 逆向】r0zapataNative.apk 破解的更多相关文章
- Android逆向之旅---破解"穿靴子的猫"游戏的收费功能
一.游戏收费分析 游戏收费非常正常的,可是玩游戏最恶心的就是你还没玩就要充值,非常恼火,事实上我不怎么玩游戏,主要是给小孩子们弄,比方如今好多小屁孩们喜欢玩水果忍者这个游戏.可是这个游戏在没有開始玩的 ...
- Android逆向基础----APK文件结构
参考这个博客 http://www.cnblogs.com/wangtianxj/archive/2010/06/13/1757639.html http://blog.csdn.net/bupt07 ...
- Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码)
Android逆向之旅---动态方式破解apk进阶篇(IDA调试so源码) 来源 https://blog.csdn.net/jiangwei0910410003/article/details/51 ...
- Android逆向之旅---静态分析技术来破解Apk
一.前言 从这篇文章开始我们开始我们的破解之路,之前的几篇文章中我们是如何讲解怎么加固我们的Apk,防止被别人破解,那么现在我们要开始破解我们的Apk,针对于之前的加密方式采用相对应的破解技术,And ...
- Android逆向破解表单注册程序
Android逆向破解表单注册程序 Android开发 ADT: android studio(as) 程序界面如下,注册码为6位随机数字,注册成功时弹出通知注册成功,注册失败时弹出通知注册失败. 布 ...
- Android逆向破解表单登录程序
Android逆向破解表单登录程序 Android开发 ADT: android studio(as) 程序界面如下,登录成功时弹出通知登录成功,登录失败时弹出通知登录失败. 布局代码 <?xm ...
- Android 逆向实战篇(加密数据包破解)
1. 实战背景由于工作需要,要爬取某款App的数据,App的具体名称此处不便透露,避免他们发现并修改加密逻辑我就得重新破解了. 爬取这款App时发现,抓包抓到的数据是加密过的,如图1所示(原数据较长, ...
- Android动态方式破解apk终极篇(加固apk破解方式)
一.前言 今天总算迎来了破解系列的最后一篇文章了,之前的两篇文章分别为: 第一篇:如何使用Eclipse动态调试smali源码 第二篇:如何使用IDA动态调试SO文件 现在要说的就是最后一篇了,如何应 ...
- android: 使用android逆向助手反编译APK
第一步:下载逆向助手:(链接: https://pan.baidu.com/s/15jtoFDg9LWV80HREeyx5HA 提取码: k527 ) 第二步:将apk文件拷贝到逆向助手的apktoo ...
- Android逆向——破解水果大战
最近公司需要测试安卓app安全,但安卓基本上0基础,决定开始学习下安卓逆向根据吾爱破解上教程 <教我兄弟学Android逆向系列课程+附件导航帖> https://www.52pojie. ...
随机推荐
- [转帖]15分钟了解TiDB
https://zhuanlan.zhihu.com/p/338947811 由于目前的项目把mysql换成了TiDb,所以特意来了解下tidb.其实也不能说换,由于tidb和mysql几乎完全兼容, ...
- [转帖]Web性能优化工具WebPageTest(一)——总览与配置
https://www.cnblogs.com/strick/p/6677836.html 网站性能优化工具大致分为两类:综合类和RUM类(实时监控用户类),WebPageTest属于综合类. Web ...
- Redis7.0.7的简单安装与学习
Redis7.0.7的简单安装与学习 摘要 2022.12.18 世界杯决赛 另外是我感染奥密克戎第五天. 高烧已经没了,但是嗓子巨疼. 睡不着觉,肝胆学习一下最新的Redis7.0.7 第一部分安装 ...
- React中受控组件与非受控组件的使用
受控组件 受控组件的步骤: 1.在state中添加一个状态,作为表单元素的value值(控制表单元素值的来源) 2.给表单元素绑定change事件,将表单元素的值设置为state的值(这样就可以控制表 ...
- Vue 中keep-alive组件将会被缓存
动态包裹哈 <keep-alive> <component :is="comName"></component> </keep-alive ...
- C/C++ 关于继承与多态笔记
继承的基本语法: 继承的目的就是用于提高代码的可用性,减少代码的重复内容,高效开发. #include <iostream> using namespace std; class Base ...
- rpm安装卸载jdk
安装 rpm -ivh jdk-7-linux-x64.rpm 卸载 先查看安装的包 rpm -qa | grep jdk 卸载 rpm -e --nodeps jdk-1.7.0-fcs.x86_6 ...
- Windows安装MySQL到最后卡主无响应处理办法
安装mysql-5.5.62-winx64到最后Ready to execute ... 生效配置时卡主无响应 最有效,最快的解决办法 就是:重启电脑 或者 关闭电脑,在开机,找到MySQL安装目录, ...
- Windows配置PHP的MongoDB扩展
环境 Windows 10 PHP 5.6.40/8.1.11 配置 下载MongoDB扩展 下载地址:https://pecl.php.net/package/mongodb 下载PHP版本对应的扩 ...
- XXE注入详解
XML介绍 XML全称可扩展标记语言(EXtensible Markup Language),XML跟HTML格式类似,但是作用不同,XML侧重于数据传输,HTML注重于标记语言,也就是说XML其实是 ...