郁金香 魔兽世界技能栏逆向
c++遍历链表
读取链表数据
分析快捷栏的数组
四字节对齐就是可以整除的
调用call 执行快捷栏技能
这个call的上下层
上--快捷栏调用
下-技能ID读取 调用
进入上一层
快捷栏调用
数组逆分析复习
结构体逆向分析
读取链表数据

XDBG条件断点-分析一些固定的值是否会变动
分析快捷栏的数组

节省数据
四字节对齐就是可以整除的

快捷栏数组 和技能id
调用call 执行快捷栏技能


这个call的上下层
上--快捷栏调用
下-技能ID读取 调用
进入上一层

快捷栏调用
sub esp,0x100
lea eax,[esp+0]
mov dword ptr[eax+0x00],0
mov dword ptr[eax+0x04],0
push 19FCA234 ///字符串
push eax
push 4///快捷栏下标
call 0x005ABBC0
add esp,0x100
void 使用快捷栏(int 下标) { int pcall = 0x5ABBC0; int 参数2[3] = { 0,0 }; char 参数3[] = "LeftButton"; __asm { lea eax, 参数3 push eax lea eax, 参数2 push eax push 下标 call pcall add esp,0x0C } } VOID CALLBACK 主线_使用快捷栏(HWND h, UINT arg2, UINT_PTR arg3_id, DWORD time) { KillTimer(h, arg3_id); 使用快捷栏(3);//调用第4格快捷栏 } void CPAGE00::OnBnClickedButton4() { // TODO: 在此添加控件通知处理程序代码 printf("wowyjx OnBnClickedButton1\n");//debugview HWND 游戏窗口句柄 = FindWindowA("GxWindowClassD3d", "魔兽世界"); //printf("游戏窗口句柄=%p 行号=%d \r\n", 游戏窗口句柄, __LINE__); //::SetTimer(游戏窗口句柄, 10086, 1, 主线_遍历对象数组); //#inclue<windows.h> ::SetTimer(游戏窗口句柄, 10086, 1, 主线_使用快捷栏); } void CPAGE00::OnBnClickedButton5() { // TODO: 在此添加控件通知处理程序代码 使用快捷栏(3);//调用第4格快捷栏 printf("使用快捷栏 \n"); }
数组逆分析复习
结构体逆向分析
本文来自博客园,作者:逆向狗,转载请注明原文链接:https://www.cnblogs.com/Agtw/p/16987833.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现