一.前言
今天我们讲一个非常简单的app,酒仙网,来做登录和预约功能,版本我们选择9.1.13,这个app非常简单,主要是通过这个来和大家说一下frida反调试和简单脱壳
二.登录接口抓包分析
我们进入app登录
发现账号密码都是明文,但是其中有appKey deviceIdentify pushToken 看起来很像是需要逆向的,我们改包测试一下
发现这几个值压根不需要,直接删除或者写死就好 顾登录接口直接复制curl请求就好了
三.预约接口抓包分析
点击1499台子预约,发现只有那个token需要破解,那个token不就是登录返回的嘛,顾直接复制curl就好了,这个代码简简单单,是不是一点逆向都没,那我们今天就到此为止嘛,但是不是,接下来要和大家讲的才是重头戏
四.frida增强版
之前我们做的某物和v品会是不是进行了frida反调试,当时的那个逻辑是在so文件中有检测frida的代码,我们删除那个so文件就好了,但是有的app不是采取这个逻辑,比如今天的酒仙网,而他是运行的时候检测frida的特征,检测到了就直接退出,而这个时候我们就要用frida增强版。
这里给出下载地址,我们去下载和我们python模块对应的版本
下载好之后我们把他推送到手机的data/local/tmp
再给他赋予可执行权限chmod 777 文件名字
这个和之前安装frida一样,不记得可以去看前面的HOOK章节
这里给出一个测试hook代码给大家感受一下hluda和frida
# 如果运行 frida-server--》hook不到
# 运行 hluda --》hook到
import frida
import sys
rdev = frida.get_remote_device()
pid = rdev.spawn(["com.jiuxianapk.ui"])
session = rdev.attach(pid)
scr = """
console.log("======Start HOOK======");
Java.perform(function () {
var LocaleData = Java.use("libcore.icu.LocaleData");
LocaleData.getDateFormat.implementation = function(i){
console.log('=====>',i);
var res = this.getDateFormat();
console.log('=====>',res);
}
});
"""
script = session.create_script(scr)
def on_message(message, data):
print(message, data)
script.on("message", on_message)
script.load()
rdev.resume(pid)
sys.stdin.read()
启动frida
启动hluda
可以发现这里frida就打印不了值,所以我们后期,完全可以用hluda替代frida
五.app脱壳
5.1 加壳原理
1 把 酒仙app,拖到jadx中,发现反编译回来的代码很少
-有些壳的特征:腾讯,邦邦,360。。。 包
2 加壳原理
安卓开发:
java代码+sdk+JNI代码 ----》apk(java代码写的:dex,JNI代码:so文件 资源文件 xml)
app加壳了
java代码+sdk+JNI代码--》使用第三方加壳工具(邦邦,360)---》把dex隐藏到 so文件--》dex很小,so很大
3 app 运行时
app运行时:未加壳app
把dex加载到内存中,执行了
app运行时:加壳app
先加载dex--》so文件加载进来---》dex都在so中--》逆操作--》从so中解出dex--》在内存中--》执行逻辑
加壳后--》加载运行app--》速度慢--》大厂一般不加壳--》他们用非常强的加密方案,让咱们破解不了
小公司--》没有很强的加密--》加壳,牺牲速度--》保证安全
4 脱壳方案(没有一种通用脱壳方案) app加壳,有很多代--》不同厂商加壳思路不一样
#手动脱壳(难度大):
通过动态调试,跟踪计算Dex源文件的内存偏移地址,从内存中Dump出Dex文件
难度大,寄存器,汇编,反调试,反读写
工具脱壳:
HOOK技术/内存特征寻找
简单易操作
基于xposed 脱壳工具:
Fdex2:Hook ClassLoader loadClass方法 通用脱壳
dumpDex:https://github.com/WrBug/dumpDex
基于frida的脱壳工具(咱们学习):
frida-dexdump:https://github.com/hluwa/FRIDA-DEXDump自己定制脱壳机--》aosp刷机后--》自己定制脱壳机
armPro收费脱壳(花钱)
5.2 frida-dexdump 脱壳
1 安装模块[电脑端]:
pip install frida-dexdump
2 手机端启动frida-server,端口转发3 执行脱壳命令即可
# frida-dexdump -U -f 包名称
frida-dexdump -U -f com.jiuxianapk.ui
frida-dexdump -U -d -f com.jiuxianapk.ui # 深度脱壳4 使用jadx打开下载后的dex即可
5 有时候一次性把dex拖进去会报错
-某个dex可能不是这个app或这个dex有问题
-一个个的把dex拖入,哪个报错,就把哪个删除
-每个dex都可以反编译成一部分java,但是由于下载的dex,某个可能有问题导致整个项目都反编译不了,找出那个有错的dex把它删除即可
六.总结
今天和大家讲的酒仙网特别简单,主要是后面的frida加强版和脱壳是新东西,脱壳没有通用的,但是后边慢慢学,大家肯定会很牛逼,毕竟这个只是基础嘛
补充
有需要源码的看我主页签名名字私信我,有求必应