美文网首页逆向 & 外挂
某app协议简单的分析

某app协议简单的分析

作者: h080294 | 来源:发表于2018-12-14 10:47 被阅读52次

    最近有个小需求,要模拟一下某app的请求协议。正好请假一天办点事儿,完后有一些空余时间,顺便就测试了一下。

    请求如下,目标是找到sign的计算方法。

    一、反编译&定位

    反编译app,搜索关键字可以搜到一些基础字段的涵义。

    继续搜索“sign”,可以发现所有的sign都是调用了同一个方法。

    进去看一下../core/common/utils/i中的b方法。

    简单的从方法的类型(String)、参数(salt)及命名(getSortURL)能大概猜到:先是排序一下,然后加盐算出一个值来。再跟进v,发现a方法就是一个md5算法,同时请求中sign值非常吻合md5的特征,所以可以草率的猜测:sign值计算方法就是将url参数排序,然后加盐再md5。

    二、Frida hook验证

    接下来就是验证一下,可以用hook的方式打印下日志来对比。由于是java层的代码,这里有两个选择:xposed和frida。

    因为懒得写个xposed apk+重启手机,所以这里就采用frida这个神器。具体的环境配置说明就不在啰嗦了,参考网上或者官方文档说明https://www.frida.re/docs/javascript-api/

    这里我使用的版本的11.0.13,注意保持这两个地方的版本一致即可。

    然后就是hook一下这个getSortURL方法,打印一下返回值看看。

    script也非常简单,设备上运行frida-server和进行端口转发后,打开app运行,然后执行脚本就能看到结果了。

    运行脚本,可以看到已经打印到控制台了。

    然后md5计算一下,得到值:8a07f79c6a4f86319f9c3eef11f73aa0。与抓包中的请求值一致。

    三、总结

    1、Frida工具对于逆向者来说真的非常方便,安装环境和配置要求都非常简单,兼容性也非常好,而且支持Java层和Native层hook操作。

    2、java层的信息非常容易被反编译得到

    3、建议:关键信息建议放在native层,提高逆向的难度(虽然也拦不住)。

    相关文章

      网友评论

        本文标题:某app协议简单的分析

        本文链接:https://www.haomeiwen.com/subject/hpzbhqtx.html