该app
没有抓包限制, 直接charles
就可以完整抓包:
经过测试, 有效的校验参数只有sign
;
根据r0ysue
的逻辑:
so, 任何一个开发都不想单独写个方法混淆字符串, 都是被逼无奈, 所以常规操作, 上来先搜字符串;
sign
, "sign"
的结果都太多了, 最后用的是url
地址encryptedLineDetail
定位到可以位置 ;
使用objection
监控第一个watch
第一个a
方法:
手动触发请求, 结果如下:
返回的是一个object
, 使用Wallbreaker
打印对象的内容, 看看sign
是否已经生成:
查找对应的object
地址
plugin wallbreaker objectsearch dev.xesam.chelaile.sdk.f.y
打印对应的地址0x4386
;
直接打印出sign
的内容了,a()
方法直接生成了sign
;
分析一下a
方法的生成逻辑:
该类的构造函数d(Context context, ppVar, z zVar)
调用了o.a(this.f30583a)
, 返回的结果调用了getParams()
方法, 跟进去看一下;
整个加密代码都找到了, getParams
方法调用了a()
, 并将结果赋值给了AppLinkConstants.SIGN
也就是sign
; a()
调用了a(String str, String str2)
进行加密, 参数为时间戳和字符串: "" + System.currentTimeMillis()
和woqunimalegebi1234567890
(真的很有素质) ;
用frida
直接hook
这个方法, 生成时间戳然后调用即可, 请求的时候带上一样的时间戳就可以保证正常请求了;
返回的response
内容是加密的, 解密位置就在发送请求回调的位置:
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课
最后于 2020-9-8 22:07
被lotus*编辑
,原因: