war3辅助代码及运行方式
打开VS2019

点这个


自动生成这么一堆代码,全删了,就剩这些就行

然后点这里





然后向CPP里粘贴以下代码
#include "tlhelp32.h"
HANDLE hwnd = { 0 };
DWORD PID = 0;
DWORD MyFindProcess(PTCHAR pnameBuffer) {
HANDLE hHand = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
PROCESSENTRY32 processInfo = { 0 };
processInfo.dwSize = sizeof PROCESSENTRY32;
Process32First(hHand, &processInfo);
do {
if (!_tcscmp(pnameBuffer, processInfo.szExeFile)) {
CloseHandle(hHand);
return processInfo.th32ProcessID;
}
} while (Process32Next(hHand, &processInfo));
}
DWORD MyGetModule(DWORD dwPid, PTSTR strModuleName) {
HANDLE hand = 0;
MODULEENTRY32 ModuInfo = { 0 };
ModuInfo.dwSize = sizeof(MODULEENTRY32);
hand = ::CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwPid);
if (hand == INVALID_HANDLE_VALUE) {
return 0;
}
::Module32First(hand, &ModuInfo);
do {
if (!_tcscmp((PTCHAR)ModuInfo.szModule, strModuleName)) {
return (DWORD)ModuInfo.hModule;
}
} while (::Module32Next(hand, &ModuInfo));
return FALSE;
}
VOID Change(PTSTR strModuleName, DWORD offset[],int offset_num, DWORD Input) {
DWORD BASE = MyGetModule(PID, strModuleName) + offset[0];
for (int i = 1; i < offset_num; i++) {
ReadProcessMemory(hwnd, (LPCVOID)BASE, &BASE, 4, NULL);
;
BASE += offset[i];
}
WriteProcessMemory(hwnd, (LPVOID)(BASE), &Input, 4, NULL);
}
VOID BIND() {
PID = MyFindProcess(_T("War3.exe"));
hwnd = OpenProcess(PROCESS_ALL_ACCESS, FALSE, PID);
LPWSTR strValue = (LPWSTR)malloc(2048);
wsprintf(strValue, L"PID:%d", PID);
MessageBoxW(0, strValue,_T("绑定成功"), 1);
}
bool enableDebugPriv()
{
HANDLE hToken;
LUID sedebugnameValue;
TOKEN_PRIVILEGES tkp;
if (!OpenProcessToken(GetCurrentProcess(),
TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) {
return false;
}
if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &sedebugnameValue)) {
CloseHandle(hToken);
return false;
}
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Luid = sedebugnameValue;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
if (!AdjustTokenPrivileges(hToken, FALSE, &tkp, sizeof(tkp), NULL, NULL)) {
CloseHandle(hToken);
return false;
}
return true;
}
INT_PTR CALLBACK DialogProc(
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam
) {
DWORD os1[] = { 0xBE40A8,0x0C ,0x14,0x78 };
DWORD os2[] = { 0xBE40A8 ,0xc,0x1c ,0x78 };
switch (uMsg)
{
case WM_INITDIALOG: //窗口初始化
return TRUE;
case WM_CLOSE: //清理
EndDialog(hwndDlg, 0);
return TRUE;
case WM_COMMAND: //命令
switch (LOWORD(wParam))
{
case IDC_BUTTON3:
BIND();
break;
case IDC_BUTTON2:
Change(_T("Game.dll"), os2, 4, 1000000);
break;
case IDC_BUTTON1:
Change(_T("Game.dll"), os1, 4, 1000000);
break;
default:
break;
}
return TRUE;
default:
break;
}
return FALSE;
}
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
{
BOOL A = enableDebugPriv();
DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, DialogProc);
}
变成这样子

若出现VS2019项目出现"const char *" 类型的实参与 “char *” 类型的形参不兼容错误的解决方法
在VS2019中依次点击项目->属性->C/C+±>语言->符合模式,将原来的“是”改为“否”即可。

war3辅助代码及运行方式的更多相关文章
- 【腾讯Bugly干货分享】深入理解 ButterKnife,让你的程序学会写代码
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/578753c0c9da73584b025875 0.引子 话说我们做程序员的,都 ...
- 玩转SSRS第十篇---自定义代码
提到SSRS 那么就不得不提一下自定义代码的功能,通过自定义代码,有时候可以解决一些比较复杂的问题,比如将让指定的数据行应用指定的属性值.此篇将演示如何通过简单结构的自定义代码进行报表样式的基本设计. ...
- 【Hadoop代码笔记】通过JobClient对Jobtracker的调用详细了解Hadoop RPC
Hadoop的各个服务间,客户端和服务间的交互采用RPC方式.关于这种机制介绍的资源很多,也不难理解,这里不做背景介绍.只是尝试从Jobclient向JobTracker提交作业这个最简单的客户端服务 ...
- linux相关小工具的使用(一)————代码相关工具
在linux环境下,对于程序员来说,知道使用一些好用的小工具,对源代码的阅读.编译和调试都有着事半功倍的效果,这里我也是边学边写的原则,把自己知道的一丁点小知识分享给大家. 一. 源代码的阅读 首先 ...
- 《代码大全(第二版)》【PDF】下载
<代码大全(第二版)>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382264 内容简介 <代码大全(第2版)>是著 ...
- 小程序代码包压缩 策略&方案
微信小程序自推出以来,逐渐发展,目前正受到越来越多的青睐.其中很重要的一点得益于小程序的轻量级特性,每个小程序最多不超过2MB,招之即来挥之即去,相比于几十上百兆的APP,用户进入小程序,或者说,小程 ...
- Python--day02(编程语言、运行python代码、变量)
day01主要内容回顾 1.进制转换: 二进制: 1111 0101 1010 十六进制 f 5 a 2.内存分布:堆区 和 栈区 外来人只能访问栈区的数据 ...
- [No0000BB]ReSharper操作指南4/16-配置ReSharper代码快修与导航
代码问题的快速修复 ReSharper可以帮助您立即修复设计时检测到的大部分代码问题.就像按Alt+Enter突出显示的代码问题一样简单,并选择合适的方法来解决问题或改进次优代码. GIF 应用快速修 ...
- 【learning】微信跳一跳辅助c++详解 轻松上万 【上】
写在前面 17年年底Wechat出了这个跳一跳的小游戏,今年2月份的时候简单地玩了一下,发现被游戏虐了(手太残了只能跳20多). 今天刚好有点空,于是就花了一个下午的时间写了一个跳一跳的c++ ...
- 如何快速编写和调试 Emit 生成 IL 的代码
.NET Core/.NET Framework 的 System.Reflection.Emit 命名空间为我们提供了动态生成 IL 代码的能力.利用这项能力,我们能够在运行时生成一段代码/一个方法 ...
随机推荐
- springboot 3.x MultipartFile 参数总是为空 参数传递不进来
场景: 在写一个统一文件上传的时候,MultipartFile参数一直传递不进来,一直为空. 排错方法: 我先是将业务简化,使用api文档进行测试,测试是前端问题还是后端问题. 简化后业务: 用api ...
- 【MySQL】 将字段相同的记录排在一起,按时间倒序
一.实现效果: 蓝牙mac字段是相同的记录,排在一起,再按时间倒序,总体时间来说也需要倒序 二.SQL编写: 最开始的想法就是,那我直接按mac和时间排序不就好了 SELECT * FROM aca_ ...
- Reinforcement 代码库
https://github.com/dragen1860?tab=repositories https://github.com/awjuliani?tab=repositories https:/ ...
- 举例说明:ChatGPT和百度文心一言的差距
翻译: we employ ten sub-generators against one discriminator 百度的表现: ChatGPT的表现:
- NVIDIA显卡如何进一步压榨性能 —— 开启单用户独享模式
开启单用户独享模式可以提高显卡利用率,但是最大的缺点就是开启后显卡中只能有一个用户的程序,其他用户的程序只能等待显卡中原有程序全部退出才可以使用显卡,因此该种模式只适合于个人电脑,不适合于服务器(没有 ...
- Git的GPG签名 —— Tag签名 Verified验证,防伪造的gitee/github commit验证
相关资料: 如何使用git通过ssh协议拉取gitee上的项目代码--如何正确的免密使用git 不论是gitee还是GitHub都有两种公钥设置,一种是ssh公钥,另一种则是GPG公钥.ssh公钥是为 ...
- 英特尔Movidius神经计算棒的介绍
手上有一款英特尔Movidius神经计算棒,本打算疫情结束返回学校,突然得到非官方的通知告诉我只能等到9月份返校了,于是就想起这个被闲置的计算棒了,手上的是1代的计算棒,不过1代的和二代的使用起来方法 ...
- 软件开发工程师,几款常用的APP,你用过几款?最后一个测试网络必备
作为一名程序员,手机里一定有几个常用的app,下面给大家推荐几款. 1. CSDN 国内最大编程论坛:虽然有多少人吐槽现在使用csdn就像屎里淘金, 但是不得不承认他仍然是大家搜索技术资料.问题的首选 ...
- .NET8 Blazor 从入门到精通:(三)类库和表单
目录 Razor 类库 创建 使用 使可路由组件可从 RCL 获取 静态资源 表单 EditForm 标准输入组件 验证 HTML 表单 Razor 类库 这里只对 RCL 创建和使用的做一些简单的概 ...
- k8s批量操作
批量删除Evicted状态pod kubectl -n gitee get pods | grep Evicted |awk '{print$1}'|xargs kubectl -n gitee de ...