一、目标
今天的目标是某电商App的签名 anti-token ,抓个包先:
二、步骤
老规矩,上jadx
今天好幸运,只有两处,范围缩小了。双击进去看看。
这里把 a2 的值赋给了 anti-token,a2的来处是
String a2 = SecureService.m8583a().mo9433a(a, Long.valueOf(longValue));
进入到 mo9433a 去看看,发现是一个接口类。
public interface ISecureService
显然是没法直接hook这个接口类的,所以换个思路,搜索下 "implements ISecureService" 看看谁实现了这个接口:
太棒了,找到了两个类,
com.aimi.android.common.service.d$a
com.xunmeng.pxxx.secure.s
就他们俩了,Hook之
objection
Objection 是一个基于Frida开发的命令行工具,它可以很方便的Hook Java函数和类,并输出参数,调用栈,返回值。
首先加载App,进入交互式分析环境。 objection -g 包名 explore
objection -g com.xunmeng.pxxx explore
然后Hook这两个类:
android hooking watch class 'com.aimi.android.common.service.d$a'
android hooking watch class 'com.xunmeng.pxxx.secure.s'
这样可以一次性把这两个类下所有的函数都Hook,方便咱们定位到底是哪个函数来做了 anti-token 计算
现形了,很明显是 com.xunmeng.pxxx.secure.s.a 函数,不过又遇到一个问题,a函数有好几个重载,而且也看不到他们的入参和返回值?
这时候就可以使用 android hooking watch class_method 来hook函数,并且打印出入参和返回值:
android hooking watch class_method 'com.xunmeng.pxxx.secure.s.a' --dump-args --dump-return
结果很美丽
然后写个 js用frida搞一搞就行了。
三、总结
Objection可以方便的Hook一堆类或者函数,来缩小咱们分析的范围。它的功能很多,咱们后面再慢慢发掘。
年也过完了,神兽也归笼了,知识星球也快过百了。后面我们会继续推出一些实例教程和一些基础教程。虽然技术在进步但是基本的理念和方法是不变的。
很高兴和大家在这个公众号相遇,也很荣幸和大家能一起学习进步,有一切好的建议都可以给公众号留言或者加wx
当然别忘了支持下知识星球
莫因渴望你没有的,而错过你已拥有的;要知道,你现在拥有的,也曾是你渴望的。
关注微信公众号,最新技术干货实时推送
文章作者 奋飞
上次更新 2021-03-04
许可协议 奋飞安全原创,转载请注明出处。