一、目标

一、目标

何以解忧,除了烤串啤酒,也只有刷刷小视频了。

main
1:main

今天我们的目标就是看看海外版的这个小视频App的 X-Gorgon

二、步骤

Jadx搜索 "X-Gorgon"

jadx
1:jadx

居然只有两个结果,很容易就定位到了这里

上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

这个入参看上去比较复杂。

rc1
1:rc1

我们结合一下代码看, 这个入参其实由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;
}

跑一下,这个结果就很清晰了

rc2
1:rc2

再整理整理,就可以做个RPC调用了。

三、总结

小视频有毒,控制不住我记几

ffshow
1:ffshow

人们从历史中学到的唯一教训,就是人们无法从历史中学到任何教训

100

关注微信公众号,最新技术干货实时推送

100