温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
瑞客论坛 www.ruike1.com
013-xdbg.CE分析游戏lua解释器指针L指针【瑞客论坛
www.ruike1.com】
013
xdbg
CE
013-xdbg.CE分析游戏lua解释器指针L指针
2021在线班
郁金香灬老师 QQ 150330575
交流群:158280115
学习目标:
xdbg.CE分析游戏lua解释器指针L指针
wow.exe+93F78C
// CPAGE00.cpp: 实现文件
//
#include "pch.h"
#include "C011_C012.h"
#include "CPAGE00.h"
#include "afxdialogex.h"
// CPAGE00 对话框
IMPLEMENT_DYNAMIC(CPAGE00, CDialogEx)
// for i=1,6,1 do print(i,GetTime()) end
CPAGE00::CPAGE00(CWnd* pParent /*=nullptr*/)
: CDialogEx(IDD_DIALOG1, pParent)
, m_lua_str1(_T("CastSpellByID(168)"))
{
}
CPAGE00::~CPAGE00()
{
}
void CPAGE00::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT1, m_lua_str1);
}
BEGIN_MESSAGE_MAP(CPAGE00, CDialogEx)
ON_BN_CLICKED(IDC_BUTTON1_DOSTRING, &CPAGE00::OnBnClickedButton1Dostring)
ON_EN_CHANGE(IDC_EDIT1, &CPAGE00::OnEnChangeEdit1)
END_MESSAGE_MAP()
#include<string>
std::string luacmd;
// wow.exe+93F78C
UINT_PTR L指针 = R4(0x00D3F78C);// 0x1794F518;//0x1414C9C0;// 0x175E0EB0; //明天分析L指针
#define 主线程定时器ID 1236
VOID CALLBACK 执行脚本Proc(HWND arg1, UINT arg2, UINT_PTR arg3_id, DWORD arg4)
{
//游戏主线程空间
KillTimer(arg1, 主线程定时器ID);
//char buf[233];
//sprintf_s(buf, "L指针=%X\n", L指针);
//MessageBoxA(0, buf, "信息", MB_OK);
__try
{
luaL_dostring(L指针, luacmd.c_str());
}
__except (1)
{
MessageBoxA(0,"可能是L指针需要更新","出错", 0);
}
}
void CPAGE00::OnBnClickedButton1Dostring()
{
// TODO: 在此添加控件通知处理程序代码
this->UpdateData(TRUE);
luacmd = m_lua_str1.GetBuffer();
HWND 游戏窗口句柄 = ::FindWindowA("GxWindowClassD3d", "魔兽世界");
if (游戏窗口句柄 == NULL) MessageBox("ERROR 未找到游戏窗口");
::SetTimer(游戏窗口句柄, 主线程定时器ID, 1, 执行脚本Proc);
}
void CPAGE00::OnEnChangeEdit1()
{
// TODO: 如果该控件是 RICHEDIT 控件,它将不
// 发送此通知,除非重写 CDialogEx::OnInitDialog()
// 函数并调用 CRichEditCtrl().SetEventMask(),
// 同时将 ENM_CHANGE 标志“或”运算到掩码中。
// TODO: 在此添加控件通知处理程序代码
}