Python_Caiji_Sea 2024-01-12 18:26 采纳率: 50%
浏览 4

APP逆向只响应数据解密问题

向某APP接口发送请求,返回的响应数据加密了,
使用Frida进行hook StringBuilder,
hook到响应的加密数据和明文,
要想知道使用了什么方式进行的加密解密,
该如何操作,提供一个思路。

想hook一下调用栈
console.log(Java.use("android.util.Log").getStackTraceString(Java.use("java.lang.Throwable").$new()));
软件直接闪退,
终端打印数据错误信息为:
java.lang.StringBuilder.toString(Native Method)
java.lang.StringBuilder.toString(Native Method)
java.lang.StringBuilder.toString(Native Method)
java.lang.StringBuilder.toString(Native Method)
java.lang.StringBuilder.toString(Native Method)

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2024-01-12 20:49
    关注

    【以下回答由 GPT 生成】

    你遇到的问题是因为在hook StringBuilder的toString方法时,会递归调用该方法,导致无限循环,最终导致APP闪退。

    不过,你可以尝试使用Frida的Stalker模块,它可以监视APP中的函数调用,并输出函数参数和返回值。这样你就可以在接口响应的函数中监视返回的数据。

    以下是一个使用Frida Stalker实现的示例代码:

    1. 首先,你需要安装Frida工具,可以通过以下命令在终端中安装:
    pip install frida-tools
    
    1. 创建一个新的JavaScript文件,比如app_hook.js,将以下代码复制到文件中:
    // 导入Frida模块
    const frida = require('frida');
    
    // 获取需要hook的APP进程
    const processName = "your_app_process_name";
    const session = frida.attach(processName);
    
    // 监听函数调用
    session.enableJit();
    
    // 在Stalker期间自动暂停进程,以便我们可以检查函数参数和返回值
    session.stalker.queueCapacity = 10000;
    session.stalker.queueDrainInterval = 100;
    
    session.stalker.exclude(['/system/*']);
    
    session.stalker.on('call', function (summary) {
        const targetModule = "your_target_module_name";
        const targetFunction = "your_target_function_name";
    
        if (summary.moduleName.indexOf(targetModule) !== -1 && summary.symbolName === targetFunction) {
            console.log('[*] ' + summary.moduleName + '!' + summary.symbolName);
            console.log('    Params:', '');
            console.log('    - ' + summary.parameters[0]);
    
            // 修改返回值,如果需要
            // summary.returnRegister = modifiedReturnValue;
        }
    });
    
    session.stalker.follow(Process.getCurrentThreadId());
    
    // 等待程序退出
    session.detached.connect(function () {
        console.log('[*] Process detached.');
    });
    

    请注意,你需要替换以下内容: - your_app_process_name:需要hook的APP进程名称,比如com.example.app。 - your_target_module_name:包含目标函数的模块名称。 - your_target_function_name:需要监视的函数名称。

    1. 运行以下命令来启动Frida监听:
    frida -U -l app_hook.js -f your_app_process_name
    

    注意,你需要将your_app_process_name替换为你的APP的进程名称。

    1. 打开APP并进行一些操作,触发你想要检测的接口。

    2. 在终端中,你将看到包含函数参数和返回值的输出。

    这种方法可以帮助你检测APP接口响应数据的加密方式,而无需hook StringBuilder的toString方法。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 1月12日

悬赏问题

  • ¥15 求指导储层饱和度及含水率测井解释
  • ¥200 建三维地震工区写入sgy到指定目录
  • ¥30 靶向捕获测序探针设计自学
  • ¥15 写代码写代码单片机代码写代码写数字按键代码
  • ¥15 django按照距离进行排序
  • ¥15 (标签-微信|关键词-微信公众号)
  • ¥15 matlab中mjs用不了
  • ¥15 Ios抖音直播的时候如何添加自定义图片在直播间!
  • ¥60 riscv-pulpino总线上挂载axi从机
  • ¥15 ssh登录页面的问题