使用frida-net脱离pc在手机上直接暴漏app的算法供三方调用
目标:fulao算法接口在手机上用http暴露下(提示:使用frida-net库和frida-inject)
下载安装frida-net,把frida-inject和_agent.js push到手机上。
开启监听:
测试脚本:
环境部署完毕,接下来是找到算法接口,写入agent.js中,重编译再放入手机运行。
要找算法接口,肯定先看看请求中什么东西被加密了。
先抓个包:
https://api-al.vipmxmx.cn/v1/videos/long/keyword_cover/t?payload=e4FeAkyuziEcFilBjcx7qA%3D%3D.7DkvRGCe%2FDdHD6Tg0g8oM5B74pqq4vTTFmMMmrT0YHaC80BJiXYu27LxNBFzpaCQBoYiArYEmES5R68jJTc%2F1T1QnjfLTtAunn1BbCiFPVYRc0HkMbQTU1yj7PtFzYWPA1V0p0NxBUIIFTdrNxbS9mUmETeNcgnD08Sxb74knTqDjILo3aFS427jj7HEG%2BtEjywgK7LWf59pnmdXhWoFwUFzTmPuVhLw2%2FeZph9tJil8fZTdggwSbchwtqN8BtuvcLn4tinaIe7aLSPUTt55pkd%2BkphoJUhZV2yqfYXZPKX09yh0wsrR%2BrPMoCOm0QBp
Connection: Keep-Alive
Accept-Encoding: gzip
User-Agent: okhttp/3.12.1
返回结果被加密:
生成payload的地方用了条件运算符,看起来更合理些。
分别查看两个生成方式:
ba 为随机生成的16字节数组。
str初始值为”.”:
Sc的初始值略微复杂:
第二个参数就是前面生成的16字节随机数ba。
直接定位到反编译后k.r的实现:
可以判断出f13822b为response body,而a()方法直接返回这个变量值。
获取a2值的具体实现为判断response header中是否带有X-App-Name字段,且X-App-Name字段值是否为app。如果是的话对header中的X-VTag字段值进行md5哈希,再从第九个字符开始取到第24个字符(16个)。
这里直接假设a2不为空,进行body解密:
一个是包含AES、MD5等算法调用的EncodeUtility类,混淆后的类名为com.ilulutv.fulao2.other.i.b。还有一个是获取加解密时用到的key和IV等参数的CipherClient类。前面那个感觉暴露出来不太好调用,先就尝试下暴露CipherClient类的各个调用接口。
看雪ID:Avacci
https://bbs.pediy.com/user-home-879855.htm
*本文由看雪论坛 Avacci 原创,转载请注明来自看雪社区
# 往期推荐
球分享
球点赞
球在看
点击“阅读原文”,了解更多!