吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5519|回复: 53
收起左侧

[Android 原创] 某打车平台Autojs脚本的逆向分析

[复制链接]
adjclubyb 发表于 2024-1-21 17:26
本帖最后由 adjclubyb 于 2024-1-21 17:29 编辑

之前有位兄弟有偿求破一脚本卡密,说是某打车抢单的,因为没有接触过这种脚本的逆向,所以給看了看

第一步,先上GDA,看看有没有壳
image.png
看到是没有壳,而且又得到一个信息,这是Autojs脚本

第二步,安装,看看界面(打码是为了不砸人饭碗,以后可能也在这个圈子混呢,哈哈哈)
image.png
可以看到有卡密,这里有个点要注意下,像一般脚本去卡密到这步,可能要上MT管理器去搜关键字了,当然我也这样做了,但是dex里面根本搜不到什么有用的信息,而且看这个布局,如果写过Autojs脚本的应该可以猜到这个卡密模块是写在js里面的,这里用MT看看js脚本是不是有加密
8dda11ab94b5d931fddbaa168ce688d.jpg
a3409cf784eba18872a0273491b212a.jpg
可以看到是加密了所以下一步,我们要dump里面的js脚本下来研究了

第三步,上FrIDA脱脚本
分析脱脚本的文章网上有很多,我也是直接拿的其它人的成果,这里不深入分析
先上代码,把加载的js代码先按照byte数组打印出来
[JavaScript] 纯文本查看 复制代码
Java.perform(function(){
    function bytesToString(bytes){
        var str="{";
        for(var i = 0; i < bytes.length; i++) {
            str +=bytes[i]+","  
        } 
        return str+"0}";
    }
    var scriptEncryption= Java.use("com.stardust.autojs.engine.encryption.ScriptEncryption");
    scriptEncryption.decrypt.overload('[B',"int","int").implementation=function(paramArrayOfByte,paramInt1,paramInt2){
        var bytes=this.decrypt(paramArrayOfByte,paramInt1,paramInt2);
        //最终得到的结果是一个十进制的byte数组
        console.log("bytes is:"+bytesToString(bytes));
        return bytes
    }
});

再用python处理转为js
[Python] 纯文本查看 复制代码
arr=[39, 117, 105, 39, 59, 13, 10, 13, 10, 105, 109, 112, 111, 114, 116,] # byte数组放这里

with open("jiaoben.js","w",encoding="utf-8") as f:
        for s in arr:
                f.write(chr(s&0xff))

这里有个坑需要提下,因为这个脱脚本的点是在打开app加载js脚本的时候,网上一些文章说是要先用spawn模式启动frida去hook,再启动app,但是我试了是不行的,这里还有个操作顺序:
1.先启动app,等加载到主界面,不要操作其它
2.电脑上运行命令:frida -U -l hook.js app,在手机上按返回键返回到桌面,这里很重要
3.点击app启动,这里才算是hook到加载脚本的点,加载了多少脚本这里都会打印出来
image.png
但是........,这里脱下的脚本,main.js里面的字符串没有解开,只能脱下common.js
image.png
所以这里要上第二个脚本,操作步骤和上面一样,这个不需要转换byte,直接就是js代码
[JavaScript] 纯文本查看 复制代码
function write_file(full_path, data) { 
    var f = new File(full_path, 'w')
    f.write(data)
    f.close()
}

Java.perform(function () {
    var ClassName = Java.use('com.stardust.autojs.script.StringScriptSource');
    ClassName.$init.overload("java.lang.String","java.lang.String").implementation=function(param_1,param_2){
        write_file("/storage/emulated/0/main_dump.js", param_2)
        var ret =  this.$init(param_1,param_2); 
        return ret;
    }
});

这里就可以脱下完整的main.js脚本了
image.png

第四步,分析
在代码里面,我们先看看卡密这个位置,先看看绑定的逻辑,查找代码定位
image.png
点击的逻辑,触发checkCard
image.png
checkCard的逻辑,这里可以看到这个卡密用的是某云验证
image.png
里面还有个geiapi的方法,我们跟进去看
image.png
base_url?我们找下这是个啥
image.png
第一个地方,最上面初始化了这个变量
image.png
第二个地方,是个try catch里面,这个应该是脚本执行的时候就执行了,在点击卡密绑定的之前就已经获取了,那接着跟着看下面的逻辑呗
我们回到那个get_api的方法,可以看到是为了获取第二个api,这里把卡密和设备id都上传了,应该是作者自己的第二层校验,其实到这里,我们或许可以猜测,这个脚本是不是存在云加载之类的动作,这样来回的获取地址确实可疑
image.png
这里卡密绑定的逻辑就结束了,那获取的第二个api是干嘛用的勒,我们搜下代码里面
main.js里面只有两处,就是一个初始化,一个获取
image.png
common.js里面用到的地方是请求方法这里
image.png
我们在main.js搜索下这个request_server2
image.png
这里是第二个界面里面的功能
image.png
那也就是说,除了卡密验证第一步,这里还有个第二步,让你登录作者的后端。这样的话,那这个卡密其实破了也没有作用,下面还有几个请求我也看了,全部都是请求的作者的后端,都要把卡密还有设备id上传。
到这里可以看到作者把抢单的逻辑都放后端了,这个脚本只是作为前端提交数据交互而已,那最后我们就来抓包看看,交互的都是些啥

最后,抓包
抓包这里我们使用Charles+SocksDroid,小黄鸟试了脚本会闪退,但是代码看了并没有检测proxy的逻辑,感觉是和Autojs里面的逻辑有冲突,这里不纠结
image.png
这是打开app的接口交互数据,卡密那里就不搞了,整个分析过程没有什么亮点,这个也是第一次分析这种Autojs的脚本,仅当记录

免费评分

参与人数 10威望 +1 吾爱币 +33 热心值 +10 收起 理由
junjia215 + 1 + 1 谢谢@Thanks!
KaNI + 1 用心讨论,共获提升!
18870589390 + 1 + 1 谢谢@Thanks!
qtfreet00 + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
anderawYang + 1 + 1 谢谢@Thanks!
正己 + 7 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
71Du + 1 + 1 我很赞同!
jerk + 1 用心讨论,共获提升!
T4DNA + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
hulinpo + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| adjclubyb 发表于 2024-1-22 15:17
jerk 发表于 2024-1-22 15:10
厉害啊,我也是5期的,基础还没看完。

群友来了,楼上雅座
LiHuaming 发表于 2024-7-30 11:27
今天我也想随便看看autojs,但是我看来你的过程打算直接抓包,顺着api的域名找到了泡椒云,然后想起来你的代码里面也有pjysdk,去看泡椒云的官方文档,哦,还真是,都用的一个云。
ddian 发表于 2024-1-22 11:11
这个对我这种新的来说还是太难了,邦顶一下
寻寻觅觅x 发表于 2024-1-22 11:47
看不懂,挺厉害的样子
可坏 发表于 2024-1-22 12:12
所以,抢单其实是 云机器做到的?
JMGE123 发表于 2024-1-22 12:21
这个对我这种新的来说还是太难了,邦顶一下看不懂,挺厉害的样子
ghss 发表于 2024-1-22 12:23
作为网约车司机的我很关注
yidaowyf 发表于 2024-1-22 12:45
还不错的工具
Casual0128 发表于 2024-1-22 12:54
老哥你好,我对网约车这些软件也有破解的需求
Jper 发表于 2024-1-22 14:00
所以这个app就相当于一个前端的UI,具体实现全部都在云后端完成?那他服务器的压力够大的啊
jerk 发表于 2024-1-22 15:10
厉害啊,我也是5期的,基础还没看完。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-28 03:18

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表