抖音xogrgon、device_id、xlog
本文仅提供思路,以学习为目标,分析下目前抖音算法的解决方法。
xgorgon简介
xgorgon是APP接口中请求时需要携带的加密参数,每次动态生成。
xgorgon算法在libcms.so中。
xgorgon目前分为xg0306,xg0401,xg0404,xg0408等版本。
目前xg0306相对于04的风控更容易获取数据。
xgorgon生成
可以通过hook框架进行调用,比如xposed 和 unidbg。
xposed-hook具体思路
下载完apk之后,使用 andriodkiller 进行反编译
全局搜索 x-gorgon关键字(13版本之后不可用)
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()))));
可以看到 xgorgon 是经过这些个方法生成的。
leviathan 是Native方法,在so文件中。
so文件混淆非常复杂不建议去逆向,可以通过编写 hook 脚本通过 xpostd 调用该方法。
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);
}
本地搭建服务
然后可以搭本地服务,其他的参数也是相同的做法。
public NanoHTTPD.Response serve(NanoHTTPD.IHTTPSession session) {
String msg = "";
Map<String, String> parms = session.getParms();
if (parms.get("url") == null && parms.get("formdata") == null) {
String msg2 = msg + "<html><body><h1>Aweme Server</h1>\n";
msg = msg2 + "<form action'?' 'method='get'>\n URL: <input type='text' name='url'><br>\n FORMDATA: <input type='text' name='formdata'><br>\n <input type='submit' value='提交'>\n</form>";
} else {
try {
String url = URLDecoder.decode(parms.get("url"), "utf-8");
String formdata = URLDecoder.decode(parms.get("formdata"), "utf-8");
msg = msg + get_device(url, formdata);
} catch (Exception e) {
XposedBridge.log(e.toString());
}
}
return newFixedLengthResponse(msg);
}
案例: https://blog.csdn.net/weixin_43582101/article/details/108012579
抖音device_id设备注册
device_id简介
device_id是设备号,在请求时需要携带的身份信息,标示了当前手机的ID。抖音会基于设备号做一系列的风控。
设备号和xgorgon及cookie都是请求数据的关键
device_id生成
和上面思路相同,先找到在哪个so文件中,在libEncryptor.so
然后找到注册方法,通过hook调用。
unidbg-hook具体思路
unidbg 是一个标准的 java 项目。基于 unicorn 的逆向工具,可以调用安卓的 so 文件。
github:https://github.com/zhkl0228/unidbg
载入unidbg的安卓虚拟机,即可调用 libEncryptor.so 中的方法:"ttEncrypt([BI)[B"。
public class TTEncryptUtils
{
private final AndroidEmulator emulator;
private final VM vm;
private final Module module;
private final DvmClass TTEncryptUtils;
private final boolean logging;
public static byte[] startTTEncypt(String filePath, String postData) {
TTEncryptUtils utils = new TTEncryptUtils(filePath, true);
byte[] data = utils.ttEncrypt(postData);
Inspector.inspect(data, "ttEncrypt");
try {
utils.destroy();
} catch (IOException e) {
e.printStackTrace();
}
return data;
}
public TTEncryptUtils(String filePath, boolean logging) {
this.logging = logging;
this.emulator = (AndroidEmulator)new AndroidARMEmulator("com.douyin.lx.did");
Memory memory = this.emulator.getMemory();
memory.setLibraryResolver((LibraryResolver)new AndroidResolver(23, new String[0]));
this.vm = this.emulator.createDalvikVM(null);
this.vm.setVerbose(logging);
File file = getSoFile(filePath);
DalvikModule dm = this.vm.loadLibrary(file, false);
dm.callJNI_OnLoad((Emulator)this.emulator);
this.module = dm.getModule();
this.TTEncryptUtils = this.vm.resolveClass("com/bytedance/frameworks/encryptor/EncryptorUtil", new DvmClass[0]);
}
当有了xgorgon和设备id之后,就可以完成很多数据采集工作了。像用户视频、粉丝数据、评论数据、搜索数据等。
xlog
xlog是抖音算法中的一个,具体的作用是对于设备信息的风控,xlog在本地获取到设备的状态,比如设备型号、内存信息、手机号、是否是模拟器、是否安装了xposed等等一系列环境监测。
如果只是为了采集数据,就不需要来关注xlog的问题了。xlog对于设备注册之后的激活其实无关紧要。但是需要去协议完成一些操作的时候,还是需要过了风控的。
xlog.snssdk.com/v2/ ,v2代表了xlog的版本,目前应该还是以v2为主。
解决方法其实还是可以像上面两种一样,通过hook调用来实现,但是效果一般,毕竟除了xlog还有其他环境监测的算法,比如applog等
每个版本的抖音算法不尽相同,掌握了正确的方法才能实现算法。
- 分享
- 举报
-
浏览量:1328次2022-02-20 09:00:45
-
浏览量:1054次2023-01-12 12:51:39
-
浏览量:1132次2023-09-01 15:22:51
-
浏览量:478次2023-10-08 17:57:29
-
浏览量:2221次2022-03-11 09:01:37
-
浏览量:987次2024-02-18 16:38:33
-
浏览量:4409次2020-11-14 14:33:28
-
浏览量:4676次2021-02-22 13:48:24
-
浏览量:1282次2023-11-15 11:12:53
-
浏览量:4476次2021-09-30 20:27:22
-
浏览量:4795次2022-10-14 08:34:42
-
浏览量:504次2024-02-21 17:14:02
-
浏览量:1020次2023-08-14 16:26:07
-
浏览量:1045次2023-08-11 18:18:49
-
浏览量:1724次2019-01-16 16:03:27
-
浏览量:3139次2020-08-05 20:32:31
-
浏览量:3748次2021-07-05 10:04:38
-
浏览量:6329次2022-11-10 14:33:49
-
浏览量:3121次2020-03-11 13:56:02
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
冬晨夕阳
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明