启xin宝app的token算法破解
启xin宝app的token算法破解——抓包分析篇(一)
转:https://blog.csdn.net/qq_34067821/article/details/100050472
为了提升逆向技术,最近几日研究了企cha查的sign和启xin宝的token算法,目前已经成功破解,两个app均是最新版,并将企cha查写成爬虫小demo,放在github上,详情查看 https://juejin.im/post/5d609fd26fb9a06acb3eab29 具体不在多说,今日继续启xin宝的token破解。
启xin宝的token破解可谓是有点小难,秘钥在ndk里面,比较难取,不过用一个比较火的技术就很快搞定了,后边详细说。
对于启xin宝我么就需要先进行抓包了,这里使用Charles进行手机端抓包:
这里随便抓了一个url,我们看到有token、push-registration、imei等等,那这么多的请求头里面是都需要吗??
我们做一个验证,使用requests或者就Charles重发验证,这里使用Charles重发验证,需要先进行更改请求头,然后重新发送即可。
1.右键在url上选择撰写
2.点击请求头
3.对请求头进行更改
4.执行(还可以进行还原操作)
经过我的验证发现只有token、appversion是最重要的,其他都没有太大作用,有兴趣的小伙伴可以自己试试。
对于app-version我们直接就可以拿来用,但是对于token怎么办,下一篇继续分析吧。
启xin宝app的token算法破解——逆向篇(二)
对于一个app而言,我们要逆向app,需要知道什么呢?
逆向工具
Java基础,甚至c和汇编基础
加固类型和脱壳工具
安卓开发基础
对安卓系统的认知
对xposed的认知
smali基础
以上这些是必须了解甚至掌握的,爬虫逆向路上越走越远了。
回归正题,该app是怎样一种app呢??
如何去查看app是否加固(加壳)呢?
我们要借助易开发这款app进行检验(同时带有脱壳功能)
可以看到该app是360加固,我们直接脱壳,然后导出脱壳数据分享到电脑上,导出数据为dex。
dex又是什么呢?
这篇文章可以了解一下浅谈 Android Dex 文件
本文不做相关基础的书写。还需要读者自己进行学习。
我们现在有了安卓apk的dex,现在就需要对dex进行逆向了。
这里推荐的工具有gda(中国人自己写的)、jeb(功能强大,需要付费)、jadx(逆向出更利于阅读的代码),如果涉及到ndk,我们还需要ida,工具的具体用法这里就不详细说了。本次使用jadx进行逆向dex文件,然后保存成Java源代码进行分析,Java源码代码分析,这里使用idea(Java开发工具)。
在使用jadx反编译dex的时候,内存使用比较大,请注意内存的大小。
上图保存成Java源代码之后,使用idea打开,然后继续分析token,下一篇继续。
启xin宝app的token算法破解——token分析篇(三)
本篇就爱你是对token静态分析,其实很简单就可以搞定那种。通过idea的全局搜索,直接搜索"token"直接找到token在哪里,上图。
找到了,进去看看,这是MessageUtil
类里面,可以看下MessageUtil
的具体方法:
具体代码就不贴了,分析到这里发现使用ndk,也就是c编译之后的so文件,这就有点难办了,先不管这个,继续分析下。
static {System.loadLibrary("encrypt-lib");}
在该类里面有这个return b.a(str);
方法,该方法是具体的算法分析。
/* renamed from: a reason: collision with root package name */public static String f1288a = "CryptoTool_KEY";public static String b = "CryptoTool_IV";public static String c = MessageUtil.getKey();public static String d = MessageUtil.getIV();private static final String e = "AES/CBC/PKCS5Padding";private static byte[] f = a.a(c);private static SecretKeySpec g = new SecretKeySpec({}, "AES");private static Cipher h;public static String a(String str) {try {if (h == null) {f = a.a(c);g = new SecretKeySpec(f, "AES");h = Cipher.getInstance(e);h.init(1, g, new IvParameterSpec(a.a(d)));}byte[] bytes = str.getBytes("UTF-8");byte[] bArr = new byte[h.getOutputSize(bytes.length)];h.doFinal(bArr, h.update(bytes, 0, bytes.length, bArr, 0));return Base64.encodeToString(bArr, 2);} catch (Exception e2) {e2.printStackTrace();return null;}}
看到该token使用的是AES进行加密,具体的秘钥和偏移则在encrypt-lib里面。
如何能拿到秘钥和偏移呢?这里可以借助frida和xposed的hook进行提取,下一篇进行frida的hook提取。
启xin宝app的token算法破解——frida篇(四)
本篇就将对token的秘钥进行hook,使用上篇提到的frida进行hook,hooknative方法,获取到秘钥和偏移。
对于frida是什么?
Frida是一个动态代码插桩框架,这里的介绍主要以应用在Android平台应用程序上。动态二进制插桩(DBI)是将外部代码注入到现有的正在运行的二进制文件中,从而让它执行额外操作。DBI可以:
1.访问进程内存
2.在应用程序运行时覆盖函数
3.从导入的类调用函数
4.在堆上查找对象实例并使用
5.Hook、跟踪和拦截函数等
怎么使用呢?
pip install frida (python环境)
1.下载服务器二进制文件frida-server要和pip的版本相同
2.$ adb push frida-server-10.0.1-android-arm /data/local/tmp/frida-server
3.$ adb shell
4.cd /data/local/tmp
5.chmod 755 frida-server
6../frida-server
查看frida-server是否启动成功:
frida-ps -U能看到安卓的应用进程就行
启动成功后开始写python和具体的hook代码。
python代码:
import sys
import frida
def onmsg(msg, data):print(msg)
jscode = open('qxb.js', 'r', encoding='utf8').read()
session = frida.get_usb_device().attach("com.bertadata.qxb")
script = session.create_script(jscode)
script.on('message', onmsg)
script.load()
sys.stdin.read()
现在可以对该app的具体方法hook
需要hook是MessageUtil
类下的具体方(该代码为参考代码,并不是该app的实际应用代码)
setImmediate(function () {
//延迟1秒调用Hook方法console.log('start----')setInterval(test, 1000);// test()
});function test() {Java.perform(function () {var hook = Java.use('com.类名');hook.方法.overload('传参类型', 'java.lang.String', 'java.lang.String').implementation = function (a1, a2, a3) {var ss = this.方法(a1, a2, a3);//调用是本方法console.log('a1参数1 =' + a1);//打印console.log('a2参数2 =' + a2);console.log('a3参数3 =' + a3);console.log('res=' + ss);return ss;};
执行python代码就可以直接打印出需要秘钥和偏移
拿到秘钥之后我们就需要验证该秘钥了,使用第一篇的token进行解密就可以咯。在实际中需要对改密要进行byte数组转换,更具体的转换方法。
启xin宝app的token算法破解相关推荐
- 启xin宝app的token算法破解——逆向篇(二)
启xin宝app的token算法破解--抓包分析篇(一)文章已经对该app进行了抓包分析,现在继续对它进行逆向. 对于一个app而言,我们要逆向app,需要知道什么呢? 逆向工具 Java基础,甚至c ...
- 启xin宝app的token算法破解——frida篇(四)
前两篇文章分析该APP的抓包.的逆向: 启xin宝app的token算法破解--抓包分析篇(一) 启xin宝app的token算法破解--逆向篇(二) 启xin宝app的token算法破解--toke ...
- 启xin宝app的token算法破解——token分析篇(三)
前两篇文章分析该APP的抓包.的逆向: 启xin宝app的token算法破解--抓包分析篇(一) 启xin宝app的token算法破解--逆向篇(二) 本篇就爱你是对token静态分析,其实很简单就可 ...
- 启xin宝app的token算法破解——抓包分析篇(一)
为了提升逆向技术,最近几日研究了企cha查的sign和启xin宝的token算法,目前已经成功破解,两个app均是最新版,并将企cha查写成爬虫小demo,放在github上,详情查看 https:/ ...
- 企查查app sign算法破解(完结)
在经历前两次探索之后,终于可以把所有的加密关键参数搞定了. 企查查app sign算法破解初步探索 企查查app sign算法破解(二) 最后一个参数aXM,这个参数使用的是阿里的聚安全加密,直接看代 ...
- 企查查app sign算法破解初步探索
企查查app sign算法破解初步探索 之前有说过企查查的sign的解密,但这次是企查查app的sign算法破解,目前是初步进程. 目前我们需要做查壳,具体方法可以百度搜索,企查查用的360加固,很简 ...
- 最新2018我破解了天某查 企某查 启某宝 企某猫和全国源站工商企业大数据爬虫系统
Python爬虫-2018年-我破解天某查和启某宝企业数据爬虫--破解反爬技术那些事情 最近在自己用python+mongdb写了一套分布式多线程的天某查爬虫系统,实现了对天某查整个网站的全部数据各种 ...
- 产品3周迭代一次,启信宝驾驭8000万企业征信的平台架构
11+大数据行业应用实践请见https://yq.aliyun.com/activity/156,同时这里还有流计算.机器学习.性能调优等技术实践.此外,通过Maxcompute及其配套产品,低廉的大 ...
- 企查查、天眼查、启信宝API怎么批量操作调用,API接口应用场景。
企查查API:企业工商信用信息API数据接口 - 企查查开放平台 天眼查API:天眼查开放平台 | API数据接口 | 企业数据 - 天眼查 (tianyancha.com) 启信宝API:启信宝数据 ...
最新文章
- ReentrantReadWriteLock读写锁的使用
- [导入][转]常用CSS缩写语法总结
- [ Linux ] [ OS ] [ memory ] Linux 如何查看系統硬體的記憶體(RAM)資訊
- datagrip启动时报错Internal error
- Blueprint:一个Flash Builder代码示例的扩展
- HDU 5608 function (杜教筛)
- eclipse中查看某个方法(函数)被谁调用
- Python_排序算法实现
- 95-130-022-源码-source-基于socket的source源码分析SocketTextStreamFunction
- guava中Range的使用方法(com.google.common.collect.Range)
- cannot remove `libtoolT’: No such file or directory
- mysql 1005 150_錯誤1005 errno:150與mysql
- mybatis PageBounds应用分页
- WINDOWS下git的安装与使用
- mysql主从不同步监控_MySQL主从同步监控
- Mediawiki页面权限设置 禁止游客编辑 禁止注册
- ictclas怎么配置java_ICTCLAS2015 Java版本的使用方法
- 动态分区式内存管理(完整代码)
- 如何打造以人为本的移动游戏
- 深度学习培训完可以找工作吗?深度学习可以做什么?