【APP逆向31】rpc小应用之DYM

  • 前言:逆向算法

    • Java层,Python去还原。
    • so层
      • 硬核分析
      • frida-rpc,代码注入到手机,主动调用脚本 -> 主动调用so中的方法(APP运行+frida运行)【手机】
      • 安卓程序调用so,调用并获取结果【手机】
      • unidbg调用so,代码创建设备,再用设备调用so文件 -> jar -> 代码执行
  • 1.目标:逆向登录接口中的sign参数

  • 2.入口

  • 3.hook校验

    • 3.1:通过hook与抓包对比,我们可以确定我们的猜测是正确的。
Java.perform(function () {

    var Crypt = Java.use("com.yoloho.libcore.util.Crypt");

    Crypt.encrypt_data.implementation = function (j2,str,i3) {
        console.log(j2,str,i3)
        return this.encrypt_data(j2,str,i3);
    }


});

// frida -UF -l  7.hook_sign.js

  • 4.通过rpc脚本调用so中的方法,返回我们需要的sign值
    • 4.1:脚本
import frida

rdev = frida.get_remote_device()
session = rdev.attach("大姨妈")

scr = """
rpc.exports = {   
    // xx方法名,方便后续python调用
    xx:function(j2,str,j3){
         var res;
          
         // 找到类,并且自行方法,返回结果
         Java.perform(function () {
            var Crypt = Java.use("com.yoloho.libcore.util.Crypt");  
            res = Crypt.encrypt_data(j2,str,j3);
         });

         return res;
    }
}
"""
script = session.create_script(scr)
script.load()


# Python语法调用
sign = script.exports.xx(0, "dd4d356229c14b2b2a65cac7b15efccb52313d4euser/login13388889999Izwi7Fk7u8Ge5O7yV3U27g==", 85)
print(sign)
  • 4.2:通过对比抓包,查看是否正确

  • 4.3:至此,我们通过Frida,hook,python调用等技术,在不硬核破解so总加密方法的情况下获取到了sign的生成结果。此方法的缺点:

    • 4.3.1:需要依赖Frida,手机设备
    • 4.3.2:批量操作时,速度比较慢,而且可能需要多台设备(手机,电脑)通过队列去生成sign值
posted @   Tony_xiao  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示