app逆向 || 某品会请求头参数分析

本文仅供学习参考,如有侵权可私信本人删除,请勿用于其他途径,违者后果自负!

如果觉得文章对你有所帮助,可以给博主点击关注和收藏哦!
本文适用于对安卓开发和Java有了解的同学!

插句题外话,很多app的历史版本都可以在豌豆荚中下载,不用盲目的去找。

我这里找的app版本比较老,不推荐使用最新版,只要安装能运行得到数据就ok了。

抓包

抓包依旧使用的是charles+postern 配合,通过过滤就可以得到数据包,这一点没什么好说的。

在这里说一点不推荐使用模拟器,因为在用的时候发现一直hook不到相关的so层,用真机就没有这种情况。遇到这种情况真是搞死人。

可以看到数据是可以对的上的,右键copy cURL Request。

可以通过在线爬虫工具库直接生成爬虫代码,通过请求测试发现headers中有一个authorization中的api_sign字段每次抓包都会变化,注释掉运行就发现不能够得到结果了。

由此可见,该字段后端会校验是否合法,也是爬虫er需要逆向的目标。

参数分析

搜索关键词authorization,一下就能搜索到还是比较幸运的。

分析流程

函数开头定义了str,赋值和调用的位置有颜色标记还是比较清晰的。

还是比较明显的能看到,b.b方法生成了该值,ctrl+鼠标左键跳到指定函数中。

经过hook发现if判断不成立,所以直接走return的逻辑,继续看a函数。

在这里就可以看到apiSign,继续下一步。


hook gs函数发现已经出了想要的结果。

使用到了invole方法,该方法是java中的 反射方法,而gsMethod在上方定义,顺着向上寻找,有一个初始化的操作。

clazz在这里定义,此时出现一个比较关键的类,通过Class.forName方法加载指定的类,通过上文联系,加密极有可能在此处。
com.vip.vcsp.KeyInfo类的gs方法。

看return处调用了gsNav函数。

是一个native函数,也就是说加密在so层,需要找到指定的so文件去分析。

keyInfo类中直接就可以看到。

找到后拖到ida中进行分析。

是一个静态注册的函数。

紧接着使用F5将其转换成伪c函数。




sha1加密,不知道是否标准,可以hook一下函数然后本地做校验。

hook代码如下:

java 复制代码
Java.perform(function () {
        var native_func = Module.findExportByName(
            "libkeyinfo.so", "getByteHash"
        );

        Interceptor.attach(native_func, {
            onEnter: function (args) {
                //dosomething
            },
            onLeave: function (return_val) {
               //dosomething
            }
        });
    });

验证后发现是一个标准sha1加密两次最后得到sign,

验证结果

参考资料

https://blog.csdn.net/xmx_000/article/details/133976667
https://www.bilibili.com/video/BV1XX4y1a7oU/

最后

做逆向分析最好还是参考大佬的一些文章,然后一定要动手实践,动手!动手!动手!重要的事情说三遍。

相关推荐
Bazingga2 小时前
Java16 record 完整拆解——语法、语义、限制、反射
java·后端
卷无止境2 小时前
一人公司的全栈选型指南:让 AI Agent 写得快,也让生意跑得稳
后端·python
SL_staff3 小时前
规则联动:给工厂装上‘自动化神经反射弧’——JVS·物联网平台规则引擎实战教程
java·人工智能·物联网
骑着蜗牛撵大象3273 小时前
Linux 进程间通信之管道:从 pipe() 的内核语义到 FIFO 落地排错
android·java·linux·系统编程·fifo·管道·进程间通信
WJ.Polar3 小时前
Java封装、继承、多态
java·开发语言
ly76894 小时前
PostgreSQL 备份恢复策略:pg_basebackup、WAL 归档与 PITR 在企业 Java 系统中的落地
java·数据库·postgresql·pitr·pg_basebackup·wal 归档
摇滚侠4 小时前
Java 中如何表示负数,有符号和无符号的区别,补码的计算规则,char byte short int long 的范围
java·开发语言
滴啦嘟啦哒4 小时前
【具身笔记】【π0.5 微调与仿真】五、在MuJoCo中实现可视化仿真
笔记·python·vla·具身
奇牙coding4 小时前
Codex CLI 升级后多文件编辑静默失效:config.yaml 枚举变更排查与修复指南
java·前端·javascript·ai
全栈练习生4 小时前
AI安全与红队测试
python·ai