霍雅
WMPFDebugger 新版本找偏移 通过x64dbg
由于ida加载整个dll太慢了 所以使用x64dbg作为调试
https://github.com/evi0s/WMPFDebugger/blob/main/ADAPTATION.md
附加任意一个wechatappex
到符号找到flue.dll
复制右键基址00007FF8A7E30000
然后双击进来
右键当前模块字符串
LoadStartHookOffset
等待加载完毕,搜索OnLoadStart
双击进去
寻找有applet_index_container.cc的
然后继续往上看,push r14就是函数的首地址
右键复制偏移
填写
{
"Version": xxx,
"LoadStartHookOffset": "0x25B5DD0",
}SceneOffsets一般不用修改,
如果要修改的话需要用到ida,
但是比你用ida加载整个dll快很多,通常加载整个dll需要一晚上
但是加载到这个地方只需要十分钟
拿到上面的LoadStartHookOffset偏移0x25B5DD0
ida打开dll默认的偏移是0x180000000
所以只需要在LoadStartHookOffset前面加上18
0x1825B5DD0
ida按g输入0x1825B5DD0
然后按f5
往下找看到这种结构
你将找到魔法数字 1376LL ,这是 SceneOffsets 的第一个参数
"SceneOffsets": [1376, ?, ?]双击并导航到包含该数字的函数(如上例中的sub_182B021D0)
您会发现类似
result = *(_QWORD *)(a1 + 8);
if ( *(_DWORD *)(*(_QWORD *)(*(_QWORD *)(result + 1312) + 16LL) + 456LL) != 1101 && *(_BYTE *)(a1 + 41) != 1 )
goto LABEL_32;
v34 = 0xAAAAAAAAAAAAAAAAuLL;
ws:__localhost:9421_1 = 0;
v30 = 0;
v31 = 0;
memset(v33, 0, sizeof(v33));
v32 = v33;
ws:__localhost:9421 = (char *)&ws:__localhost:9421_1;"SceneOffsets": [1376, 1312, 456]CDPFilterHookOffset
搜索SendToClientFilter
双击过来看看结构是不是有devtools_message_filter_applet_webview
是的话往上找
找到
push r15
pushr14
然后从push开始找的第一个call
然后双击这个call
会跳到push rsi
右键复制RVA
301B3C0
"CDPFilterHookOffset": "0x301B3C0",Save the config 保存配置
将您在上面找到的参数保存到 frida/config 中的 addresses.xxxxx.json 处,其中 xxxxx 是新版本
{
"Version": xxxxx,
"LoadStartHookOffset": "0x25B5DD0",
"CDPFilterHookOffset": "0x301B3C0",
"SceneOffsets": [1376, 1312, 456]
}