一、目标
何以解忧,除了烤串啤酒,也只有刷刷小视频了。
今天我们的目标就是看看海外版的这个小视频App的 X-Gorgon
TIP: v18.9.4(180904)
二、步骤
Jadx搜索 "X-Gorgon"
居然只有两个结果,很容易就定位到了这里
上Frida搞一下
var strUtilCls = Java.use('com.ss.a.b.a'); strUtilCls.a.overload('[B').implementation = function(a){ var rc = this.a(a); console.log(">>> X-Gorgon = " + rc); return rc ; }
跑一下
>>> X-Gorgon = 040420f90005015f8e95d8d8da66ce27e0c536e8eabdc77847f5
没问题,成功抓到了 X-Gorgon
搞搞入参
结果找到了,那么咱们还需要分析下入参
strUtilCls.a.overload("java.lang.String").implementation = function(a){ var rc = this.a(a); console.log("inStr = " + a); return rc ; }
再跑一下,入参打出来了
inStr = 7322d9d39cbeb2fff08237fb1e2199c495A35C6A6BFFAAFEE6A7265145CC097C0000000000000000000000000000000000000000000000000000000000000000
这个入参看上去比较复杂。
我们结合一下代码看, 这个入参其实由4部分组成,每部分都是一个 MD5串
inStr = 7322d9d39cbeb2fff08237fb1e2199c4 95A35C6A6BFFAAFEE6A7265145CC097C 00000000000000000000000000000000 00000000000000000000000000000000
那么是哪些数据来做md5呢? 我们再打印一下
var ParamHttpCls = Java.use('com.ss.sys.ces.gg.tt$1'); ParamHttpCls.a.implementation = function(a,b){ var rc = this.a(a,b); console.log("a = " + a); console.log("b = " + b.entrySet().toArray()); console.log(">>> rc = " + rc.entrySet().toArray()); return rc; }
跑一下,这个结果就很清晰了
再整理整理,就可以做个RPC调用了。
三、总结
小视频有毒,控制不住我记几
人们从历史中学到的唯一教训,就是人们无法从历史中学到任何教训
TIP: 本文的目的只有一个就是学习更多的逆向技巧和思路,如果有人利用本文技术去进行非法商业获取利益带来的法律责任都是操作者自己承担,和本文以及作者没关系,本文涉及到的代码项目可以去 奋飞的朋友们 知识星球自取,欢迎加入知识星球一起学习探讨技术。有问题可以加我wx: fenfei331 讨论下。
关注微信公众号: 奋飞安全,最新技术干货实时推送