启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算法破解相关推荐

  1. 启xin宝app的token算法破解——逆向篇(二)

    启xin宝app的token算法破解--抓包分析篇(一)文章已经对该app进行了抓包分析,现在继续对它进行逆向. 对于一个app而言,我们要逆向app,需要知道什么呢? 逆向工具 Java基础,甚至c ...

  2. 启xin宝app的token算法破解——frida篇(四)

    前两篇文章分析该APP的抓包.的逆向: 启xin宝app的token算法破解--抓包分析篇(一) 启xin宝app的token算法破解--逆向篇(二) 启xin宝app的token算法破解--toke ...

  3. 启xin宝app的token算法破解——token分析篇(三)

    前两篇文章分析该APP的抓包.的逆向: 启xin宝app的token算法破解--抓包分析篇(一) 启xin宝app的token算法破解--逆向篇(二) 本篇就爱你是对token静态分析,其实很简单就可 ...

  4. 启xin宝app的token算法破解——抓包分析篇(一)

    为了提升逆向技术,最近几日研究了企cha查的sign和启xin宝的token算法,目前已经成功破解,两个app均是最新版,并将企cha查写成爬虫小demo,放在github上,详情查看 https:/ ...

  5. 企查查app sign算法破解(完结)

    在经历前两次探索之后,终于可以把所有的加密关键参数搞定了. 企查查app sign算法破解初步探索 企查查app sign算法破解(二) 最后一个参数aXM,这个参数使用的是阿里的聚安全加密,直接看代 ...

  6. 企查查app sign算法破解初步探索

    企查查app sign算法破解初步探索 之前有说过企查查的sign的解密,但这次是企查查app的sign算法破解,目前是初步进程. 目前我们需要做查壳,具体方法可以百度搜索,企查查用的360加固,很简 ...

  7. 最新2018我破解了天某查 企某查 启某宝 企某猫和全国源站工商企业大数据爬虫系统

    Python爬虫-2018年-我破解天某查和启某宝企业数据爬虫--破解反爬技术那些事情 最近在自己用python+mongdb写了一套分布式多线程的天某查爬虫系统,实现了对天某查整个网站的全部数据各种 ...

  8. 产品3周迭代一次,启信宝驾驭8000万企业征信的平台架构

    11+大数据行业应用实践请见https://yq.aliyun.com/activity/156,同时这里还有流计算.机器学习.性能调优等技术实践.此外,通过Maxcompute及其配套产品,低廉的大 ...

  9. 企查查、天眼查、启信宝API怎么批量操作调用,API接口应用场景。

    企查查API:企业工商信用信息API数据接口 - 企查查开放平台 天眼查API:天眼查开放平台 | API数据接口 | 企业数据 - 天眼查 (tianyancha.com) 启信宝API:启信宝数据 ...

最新文章

  1. ReentrantReadWriteLock读写锁的使用
  2. [导入][转]常用CSS缩写语法总结
  3. [ Linux ] [ OS ] [ memory ] Linux 如何查看系統硬體的記憶體(RAM)資訊
  4. datagrip启动时报错Internal error
  5. Blueprint:一个Flash Builder代码示例的扩展
  6. HDU 5608 function (杜教筛)
  7. eclipse中查看某个方法(函数)被谁调用
  8. Python_排序算法实现
  9. 95-130-022-源码-source-基于socket的source源码分析SocketTextStreamFunction
  10. guava中Range的使用方法(com.google.common.collect.Range)
  11. cannot remove `libtoolT’: No such file or directory
  12. mysql 1005 150_錯誤1005 errno:150與mysql
  13. mybatis PageBounds应用分页
  14. WINDOWS下git的安装与使用
  15. mysql主从不同步监控_MySQL主从同步监控
  16. Mediawiki页面权限设置 禁止游客编辑 禁止注册
  17. ictclas怎么配置java_ICTCLAS2015 Java版本的使用方法
  18. 动态分区式内存管理(完整代码)
  19. 如何打造以人为本的移动游戏
  20. 深度学习培训完可以找工作吗?深度学习可以做什么?

热门文章

  1. 动力节点 mysql 郭鑫 34道经典的面试题三
  2. 西门子et200 分布式i/o_西门子S7-1500H冗余系统硬件及网络结构
  3. 一个AI小白如何理解近似匹配检索
  4. 运维小白的python之路(一)
  5. 第2关:求解出n以内所有能被5整除的正整数的乘积-------C语言程序设计技术(循环结构程序设计1)
  6. 华为C8815 默认logcat信息
  7. 读取D3D后备缓冲区的数据
  8. 基于惯性动作捕捉技术进行快速动画制作教程
  9. 逻辑回归:逻辑回归中的参数
  10. Cookie获取问题:ajax方法后端只获取到一个Cookie,Request无法获取到自定义的Cookie