本文仅作学习交流。
已测试可行性(仍需越狱)
一键缓存登录态、Cookie、设备指纹、观演人、场次、票档
提前构造签名 X-Sign、时间戳、设备ID
直接调用下单接口,不经过页面渲染及按钮点击
窗口期下单实现00提交
如需了解效果请说明
可来单测试,联系主页
环境:ios16系统以下已越狱设备
越狱hook:
// iOS平台SO库Hook
function hookIOSNativeFunctions() {
// 获取动态库
var libdamai = Module.findBaseAddress("/usr/lib/libdamai.dylib");
if (!libdamai) {
console.log("[-] 无法找到libdamai.dylib");
return;
}
console.log("[+] libdamai.dylib基址: " + libdamai);
// Hook签名生成函数
var generateSignAddr = Module.findExportByName("libdamai.dylib", "generateSign");
if (generateSignAddr) {
Interceptor.attach(generateSignAddr, {
aaaaaaaaa
onLeave: function(retval) {
console.log("[+] iOS generateSign返回: " + retval);
}
});
}
}
// 启动Hook
if (ObjC.available) {
console.log("[+] iOS环境检测成功");
hookIOSNativeFunctions();
} else {
console.log("[-] 非iOS环境");
反调试绕过:
// iOS平台
if (ObjC.available) {
// Hook sysctl
var sysctl = Module.findExportByName(null, "sysctl");
if (sysctl) {
Interceptor.attach(sysctl, {
onEnter: function(args) {
// 检查是否查询调试状态
var name = args[0];
var namelen = args[1].toInt32();
if (namelen >= 4) {
var ctl_name = Memory.readByteArray(name, 4);
var ctl_str = Array.from(ctl_name).map(b => String.fromCharCode(b)).join('');
// 拦截CTL_KERN.KERN_ASLR
if (ctl_str === "CTL\0") {
aaaaaaaaa
}
}
}
},
onLeave: function(retval) {
if (this.is_aslr_query) {
// 返回非调试状态
Memory.writePointer(retval, ptr(0));
}
}
});
}
}