前言 快手web端协议相对来说简单点,但也没简单多少,所以还是需要写一下
加密参数分析sign3是创作者的一个接口
算法还原123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 ...
前言这天五一假期期间,我做了一下字节系逆向分析(tiktok和国内抖音)
参数分析目前国内抖音主要的参数是 a_bougs,tiktok的参数是x_bougs
算法分析目前,在我五一逆向期间。抖音的算法和TK的算法都是大差不差的。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631 ...
Twitter前言前面两章我们已经讲了Twitter的混淆和整体的代码逻辑,那么本章讲重点注重具体的实现方法
Twitter(纯算法)实现1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768let _2DArray;function encode(n) { return btoa(Array.from(n)["map"](n => String["fromCharCode"](n))["join"](""))["replace"](/=/g, "")}function getKey() { // <meta name="twitter-site-verification" content=&quo ...
背景x-client-transaction-id 是 X(原 Twitter)API 请求中的一个头字段,用于标识请求的唯一性。其生成涉及多个步骤,包括哈希前拼接、SHA256 哈希、哈希后拼接、字节数组转字符串、和 Base64 编码。
输入1234567请求字符串:POST!/i/api/1.1/jot/error_log.json!62368548obfiowerehiring8abafa10170a3d70a3d70a0170a3d70a3d70a100method:POSTendpoint:/i/api/1.1/jot/error_log.jsonadditionalData:62368548obfiowerehiring8abafa10170a3d70a3d70a0170a3d70a3d70a100
动态值:1234yr(o)(rand_bytes):长度为 48 字节yr(u)(time_bytes):长度为 4 字节sc(index_bytes):长度为 2 字节([45, 48])qo["DeRae"]:obfiowerehiring(来自 ...
Twitter逆向这个是Twitter请求参数,x-client-transaction-id,x-client-uuid,x-csrf-token后续经过测试x-client-transaction-id,是我们要逆向的值
逆向点(知识点)本章用到的知识点是异步调试,和异步逆向分析,1.跟栈分析发现是异步在这里调用的步入到异步函数中发现这个是高度混淆的js代码,颗粒度较大且是异步调用的,下章我们重点分析这个异步函数
算法介绍ChaCha20 是一个流加密算法,它通过一个伪随机数生成器(PRNG)产生一个密钥流,然后和明文进行异或(XOR)得到密文。明文 ⊕ 密钥流 = 密文密文 ⊕ 密钥流 = 明文ChaCha20 的核心是一个 状态矩阵(4x4 共 16 个 32-bit 字),用以下数据初始化:
[ 常量 ][ 密钥 256-bit ][ 计数器 ][ Nonce ]⚙️ 核心操作:Quarter RoundChaCha 的核心计算是“Quarter Round”,它对 4 个 32-bit 的字进行一系列加法、异或、循环位移的混合操作:
a += b; d ^= a; d <<<= 16;c += d; b ^= c; b <<<= 12;a += b; d ^= a; d <<<= 8;c += d; b ^= c; b <<<= 7;这种设计既安全又高效,对现代 CPU 和嵌入式 ...
unidbg初识Unidbg 是一个开源的动态二进制分析工具,基于 Unicorn 引擎,专注于模拟执行 Android 和 iOS 的原生库(主要是 .so 文件)。它允许在无需真实设备或完整运行 APK 的情况下,调用和分析 JNI(Java Native Interface)方法,特别适合逆向工程、算法分析和安全研究。
快速上手环境准备:下载 Unidbg 源码:git clone https://github.com/zhkl0228/unidbg使用 IntelliJ IDEA 打开项目,配置 Maven 依赖。推荐 Java 8 或更高版本。基本代码示例(加载 .so 文件并调用函数):
12345678910111213141516171819202122232425import com.github.unidbg.AndroidEmulator;import com.github.unidbg.Module;import com.github.unidbg.linux.android.AndroidEmulatorBuilder;import com.github.un ...
IDA界面这个就是IDA的界面
F5功能反编译为伪C代码上述是反编译后的伪c代码反编译的过程中,IDA可能不是100%正确,但是基本可以得到伪c代码注意和浏览器动态调试
断点调试打上的断点,点击F5,就会进入断点调试模式
F7/F8:单步调试。单步调试,要下载相应的IDAying 的插件,然后就可以使用F7/F8进行单步调试
Shift + F12:打开字符串窗口。这个是比较重要的一步,这个就是搜索字符串的功能,可以搜索到一些关键的字符串,比如flag,password等,帮助我们快速定位到关键代码。这个功能直接快速的定位到加密的位置方便调试程序
Alt + T:搜索文本。功能进一步确认加密的位置和加密的方法配合浏览器来调试程序
G:跳转到地址。这个可以定位指针位置确定加密位置
X:查看交叉引用(右键代码,选择 Jump to xref)。可以更好的确定加密的位置,理解ida的代码结构
N:重命名变量或函数。修改变量或者函数的名称,方便理解代码
总结利用好IDA的调试功能,可以快速定位加密的位置,并且可以更好的理解ida的代码结构,从而更好的调试程序。熟悉ida调试 ...
再遇wasm网站地址:aHR0cHM6Ly9tLndhbmRhY2luZW1hcy5jb20vP2NpbmVtYUlkPTYwMDYmY2luZW1hTmFtZT0lRTQlQkYlOUQlRTUlQUUlOUElRTYlOUMlQUElRTYlOUQlQTUlRTclOUYlQjMlRTQlQjglODclRTglQkUlQkUlRTUlQjklQkYlRTUlOUMlQkElRTUlQkElOTcmY2l0eUlkPTM3OSZjaXR5TmFtZT0lRTQlQkYlOUQlRTUlQUUlOUE=
加密参数确定修改下参数发现不通过了因此check就是我们要逆向的值打上XHR断点刷新网页下面就是漫长的跟栈我们看到这个地方可能有我们要的值哦,发现了check就是由
1d = document.getElementsByTagName("meta").env ? gowasm.sqp("" + m, p, "", n) : gowasm.sp("" + m, p, "", n ...









