登录后更精彩...O(∩_∩)O...
您需要 登录 才可以下载或查看,没有账号?立即注册
×
Unidbg调用so学习
当我们使用抖音时,每一个操作都会通过HTTP请求与服务器进行交互,从而获取或者发送数据。这些HTTP请求包含了很多信息,这些信息就保存在请求头中。在这篇文章中,我们将一探请求头中的加密参数。
1. 什么是"六神"参数?"六神"参数是抖音请求头中的六个核心参数,它们是:X-Ladon,X-Khronos,X-Argus,X-Gorgon,X-Helios,X-Medusa。这些参数对于识别用户设备以及获取用户相关的数据非常重要。 测试过程中发现一些特定的接口会对这6个参数进行验证,如何构造这些加密参数呢?
2. 如何生成这些参数?这些参数的生成通常依赖于设备的一些硬件信息如IMEI、MAC地址等,以及软件信息如应用的安装时间、更新时间等。具体的生成算法可能会依赖于抖音的内部逻辑,可能涉及到一些复杂的哈希函数和加密算法。 分析了下,后发现关键算法在libmetasec_ml.so中,还原算法有一定难度,在这里,可以采用主动调用加密参数生成函数的办法,省时省力省心。 主动调用so中加密函数生成有好几种办法,frida-rpc、lsposed、自写代码加载so进行调用等等。 这里推荐使用unidbg框架,模拟Java虚拟机加载生成算法的so,并调用相关位置生成加密参数。
3. unidbg主动调用so中函数
创建模拟器实例,模拟32位或者64位 [JavaScript] 纯文本查看 复制代码 emulator = AndroidEmulatorBuilder.for64Bit().setProcessName("com.ss.android.ugc.aweme").build();
系统类库解析
[JavaScript] 纯文本查看 复制代码 final Memory memory = emulator.getMemory();
memory.setLibraryResolver(new AndroidResolver(29));
创建虚拟机
[JavaScript] 纯文本查看 复制代码 vm = emulator.createDalvikVM();
加载加载libttEncrypt.so到unicorn虚拟内存
[JavaScript] 纯文本查看 复制代码 DalvikModule dm = vm.loadLibrary(TempFileUtils.getTempFile("libmetasec_ml-23.9.0.so"), true);
手动执行JNI_OnLoad函c数
[JavaScript] 纯文本查看 复制代码 dm.callJNI_OnLoad(emulator);
初始化差不多就这样,接下来就是补环境,加载so后运行会提示找不到的方法签名,自行加上就行了。
[JavaScript] 纯文本查看 复制代码 public DvmObject<?> callStaticObjectMethodV(BaseVM vm, DvmClass dvmClass, String signature, VaList vaList) {
//省略
return super.callStaticObjectMethodV(vm, dvmClass, signature, vaList);
}
public DvmObject<?> callObjectMethodV(BaseVM vm, DvmObject<?> dvmObject, String signature, VaList vaList) {
//省略
return super.callObjectMethodV(vm, dvmObject, signature, vaList);
}
传入url和请求头,得到结果:
[Objective-C] 纯文本查看 复制代码 {
"X-Ladon":"J6k8auF3LGw8gWhB6j2IAxFAS0GhPIFZ5GppELphx7nmIra6",
"X-Khronos":"1694251445",
"X-Argus":"qfXImGca75htu1c89fDAl+qZ/JLW2EhxGLvZnYDV+qlNPxmdc5lOwrQ2LC69uJUy/mb5evybJt6dCUn0u2kqg2EZ4kw8pLBUC9TIu4uEflkmeT6ULrMGZ7FItqRgNrSLPkO89Sc8kPYG6UR+pVeLRYKlI2ZwqTKKWT9Dbrfj3jI+vJh/YABDswJdVqk2NrCF0r8Xnr9SE6uK0sM2VCIF3DwDJDDjw7IyM9Ou5WCSe7fhQQ==",
"X-Gorgon":"840420f80000a85d3aaceedfbc768d3377c115c79fd782790d56",
"X-Helios":"YihYG23nqP0LdwRe42czwue5hX4CYAfxfUKXWcLDBAVMrqKe",
"X-Medusa":"tzn8ZINVaQiAS6b/Ue3hAX2BhUInFCE50FFmX4nhBm2n1IGgK3RW1L85wUZhQkuEwUJVxr5C4sUcrjJzD6o4WuaxpSAVCmUTiq/y+AkTXaTAQIfjqsrLBEs47NzzFaC0W7+0/VrAX5/3yAPIT90vmsJzO/BLENnOznJXA+U7LKy2I5WOEEn8OKGdQQnj00brMcpKPB2baPTjC0GVLSP1YegmHQlNx5fFzd+dfstzsO/Y6KJ6LrmjJ13FqAFwr2QAGWJ4NrlMMAmGUr/XNiwLx4t2JUbRt2Q6IRV400XEtjzGm15TrM13xPJoY+OnuozE5rTns1+fe+wxlETM5vnP23fxIM5dRQ=="
}
|