抖音xgorgon(0401)
抖音x-gorgon0401版(X-Gorgon)的获取方法及演示
单纯的从本地入手,提供思路和方法。
更新 : 原文文末有模块,可直接下载使用
---------------------------------------------------------------------------------------
从源码入手:
下载完apk之后,使用AK进行反编译,可能需要升级apktools到2.3.4,
然后在 androidkill\bin\apktool\apktool 下执行语句, 清除framework
java -jar .\ShakaApktool.jar empty-framework-di
https://img-blog.csdnimg.cn/20200715171352760.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzU4MjEwMQ==,size_16,color_FFFFFF,t_70
在工程搜索中全局搜索 x-gorgon,并打开查看
https://img-blog.csdnimg.cn/20200715171814411.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzU4MjEwMQ==,size_16,color_FFFFFF,t_70
localHashMap.put(“X-Gorgon”, com.ss.a.b.a.c(com.ss.sys.ces.a.leviathan(i, com.ss.a.b.a.b(paramString.toString()))));
https://img-blog.csdnimg.cn/20200715171930853.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzU4MjEwMQ==,size_16,color_FFFFFF,t_70
可以看到 xg 是经过这些个方法生成的
com.ss.a.b.a :
package com.ss.a.b;
public final class a
public static byte[] b(String paramString)
{
int j = paramString.length();
byte[] arrayOfByte = new byte;
int i = 0;
while (i < j)
{
arrayOfByte[(i / 2)] = ((byte)((Character.digit(paramString.charAt(i), 16) << 4) + Character.digit(paramString.charAt(i + 1), 16)));
i += 2;
}
return arrayOfByte;
}
public static String c(byte[] paramArrayOfByte)
{
if (paramArrayOfByte == null) {
return null;
}
char[] arrayOfChar1 = "0123456789abcdef".toCharArray();
char[] arrayOfChar2 = new char;
int i = 0;
while (i < paramArrayOfByte.length)
{
int j = paramArrayOfByte & 0xFF;
int k = i * 2;
arrayOfChar2 = arrayOfChar1[(j >>> 4)];
arrayOfChar2[(k + 1)] = arrayOfChar1[(j & 0xF)];
i += 1;
}
return new String(arrayOfChar2);
}
com.ss.sys.ces.a:
https://img-blog.csdnimg.cn/20200716105631808.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzU4MjEwMQ==,size_16,color_FFFFFF,t_70
leviathan 本地化方法,不是用Java代码实现的,它们来源于本地库的实现,在动态链接库so文件中。
没有深追的必要了,可以通过编写 hook 脚本通过 xpostd 调用该方法。
---------------------------------------------------------------------------------------
编写hook文件 搭建本地服务
把上面图中的方法,写入到文件。
通过xp来调用 leviathan 方法。
import de.robv.android.xposed.callbacks.XC_LoadPackage;
public byte[] hk_leviathan(int i,int time, byte[] s){
return (byte[]) XposedHelpers.callStaticMethod(XposedHelpers.findClass("com.ss.sys.ces.a", lpparam classLoader), "" +
"" +
"", i, time, s);
}
然后写一个NanoHTTPD 服务,来返回生成出来的参数。
其他的参数也是相同的做法。
stub: 把url的参数转成bytes,然后gzip压缩,然后转成md5。
结合xposed使用演示
xpostd 和相关工具下载地址 :https://blog.csdn.net/weixin_43582101/article/details/105264021
- 下载完成之后,给我们打包好的 hook 模块 **XGacy** 选上勾,然后重启设备
(我用的模拟器,手机使用需要root或者下载**virtuaXposed**)
https://img-blog.csdnimg.cn/2020071613190082.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzU4MjEwMQ==,size_16,color_FFFFFF,t_70
- 重启完成之后,打开抖音App,然后在浏览器打开 127.0.0.1:18989,提交需要获取xg的链接,发送请求。
示例: http://127.0.0.1:18989/?url= (要访问的抖音链接) &formdata= (post则填,get为空即可)
- 返回headers中的参数 x-stub、x-ticket、x-gorgon、x-khronos
https://img-blog.csdnimg.cn/20200716133210233.png
- 如果需要本地去访问模拟器服务,则PC需要与模拟器通信,可以通过adb命令转发tcp端口的数据
先根据自己的电脑系统安装配置 adb的环境。配置完成之后执行下面的命令:
adb forward tcp:18989 tcp:18989
把PC上所有18989端口通信数据将被重定向到手机端18989端口server上。
这样本地就可以访问在模拟器上运行的服务了。
声明:本文内容仅供学习,禁止商用、出现任何纠纷与作者无关
---------------------------------------------------------------------------------------
原文链接: https://blog.csdn.net/weixin_43582101/article/details/107365977
XGacy 模块下载地址 :需要到原文订阅查看
666 666 666 666 牛皮 66666
页:
[1]