zoukankan      html  css  js  c++  java
  • 启xin宝app的token算法破解——frida篇(四)

    前两篇文章分析该APP的抓包、的逆向:
    启xin宝app的token算法破解——抓包分析篇(一)
    启xin宝app的token算法破解——逆向篇(二)
    启xin宝app的token算法破解——token分析篇(三)
    本篇就将对token的秘钥进行hook,使用上篇提到的frida进行hook,hooknative方法,获取到秘钥和偏移。
    对于frida是什么?

    Frida是一个动态代码插桩框架,这里的介绍主要以应用在Android平台应用程序上。动态二进制插桩(DBI)是将外部代码注入到现有的正在运行的二进制文件中,从而让它执行额外操作。DBI可以:

    1. 访问进程内存
    2. 在应用程序运行时覆盖函数
    3. 从导入的类调用函数
    4. 在堆上查找对象实例并使用
    5. Hook、跟踪和拦截函数等

    怎么使用呢?

    1. pip install frida (python环境)
    2. 下载服务器二进制文件frida-server要和pip的版本相同
    3. $ adb push frida-server-10.0.1-android-arm /data/local/tmp/frida-server
    4. $ adb shell
    5. cd /data/local/tmp
    6. chmod 755 frida-server
    7. ./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数组转换,更具体的转换方法。需要的话可以关注小白技术公众号讨论技术。
    欢迎关注小白微信公众号【小白技术社】,一起学习一起交流。

    小白技术社
  • 相关阅读:
    JavaScript 获得今天的日期 (yy-mm-dd)格式
    web前端筛选页面(类似大众点评)
    JS 获取浏览器的名称和版本信息
    java 接收json数据
    指定配置文件启动mongodb
    linux写一个定时任务
    windows杀死占用端口
    mongodb聚合操作汇总
    jpa常用查询
    idea 更换主题
  • 原文地址:https://www.cnblogs.com/xbjss/p/13326660.html
Copyright © 2011-2022 走看看