游戏版本:DemonStar v3.01 汉化终结版
辅助需求:无限HP、无限核弹
涉及工具:CE、Visual Studio
0x01 获取需求地址
首先启动游戏和CE
然后分析一下界面
由于是很远古的游戏,破解不需要多大功夫,可以拿来做练手项目
打开CE后扫描未知的初始值
每死一次飞机就少一个,数值减少了……输入1
最后拿到地址5CD7C0,这里记录一下
道具我们用同样的方式,最后拿到地址5CDEF8
然后打开visual studio,就可以开始我们的辅助设计了
新建项目→MFC应用
应用程序类型:基于对话框,其他不用选
然后点击创建
添加两个Check Box到设计窗口
标题分别设置为无限飞机和无限核弹
ID分别设置为IDC_HP、IDC_Hedan
然后右键控件添加事件
[C++] 纯文本查看 复制代码 BOOL Window = IsDlgButtonChecked(IDC_HP); //检测控件行为
if (Window) {
MessageBox(0,L"点击了",L"点击了",MB_OK);
}else{
MessageBox(0,L"取消了",L"取消了",MB_OK);
最后确定无误后开始编写修改函数
定义一个函数命名为修改飞机
[C++] 纯文本查看 复制代码 void 修改飞机() {
HWND Window = FindWindowA(NULL, "DemonStar v3.01 汉化终结版");
DWORD pid = 0;
GetWindowThreadProcessId(Window, &pid);
HANDLE 窗口句柄权限 = OpenProcess(
PROCESS_ALL_ACCESS,
FALSE,
pid
);
int 剩余飞机 = 5;
WriteProcessMemory(
窗口句柄权限,
(LPVOID)0x5CD7C0,
&剩余飞机,
4,
0
);
}
再定义一个函数为修改核弹
[C++] 纯文本查看 复制代码 void 修改核弹() {
HWND Window = FindWindowA(NULL, "DemonStar v3.01 汉化终结版");
DWORD pid = 0;
GetWindowThreadProcessId(Window, &pid);
HANDLE 窗口句柄权限 = OpenProcess(
PROCESS_ALL_ACCESS,
FALSE,
pid
);
int 剩余核弹 = 5;
WriteProcessMemory(
窗口句柄权限,
(LPVOID)0x5CDEF8,
&剩余核弹,
4,
0
);
}
最后为控件添加各自的事件
[C++] 纯文本查看 复制代码 void CMFCApplication1Dlg::OnBnClickedHp()
{
// TODO: 在此添加控件通知处理程序代码
BOOL Window = IsDlgButtonChecked(IDC_HP);
if (Window) {
修改飞机();
}
}
void CMFCApplication1Dlg::OnBnClickedHedan()
{
// TODO: 在此添加控件通知处理程序代码
BOOL Window = IsDlgButtonChecked(IDC_HeDan);
if (Window) {
修改核弹();
}
}
这里看下成品
|