简单的cs修改器
各个函数解析
这是我根据b站上面的视频使用ce初步修改,自己用vs2022用c语言实现的,完成了其中的部分功能
在自己的电脑上完美运行,不知道其他的怎么样
main()
int main()
{
int *base1 = (int*)0x2433240; //所有人的子弹基址
int *base2 = (int*)0x25069bc; //自己的子弹基址
int *bblood = (int*)0x204ba020; //血基址
int* bloodadd = (int*)0x1ff8a020;
int myp = 0x2040fbc8; //僵直
DWORD csid = 0;
csid = GetPid();
//printf("%d\n", csid);
int choice = 0;
int flag = 0; //flag用来存放是否修改(1修改,0恢复)
int yon; //是否继续修改
while (1)
{
printf("\n是否继续修改?(1|0)\n");
scanf("%d", &yon);
if (yon == 1)
{
}
else
{
printf("\n\n\n\n+++++++++++++++感谢使用++++++++++++++++\n\n\n\n");
return 0;
}
printf("1:所有人无限子弹\n\n2:自己无限子弹\n\n3:血量999999(开启此项功能后控制台无反应,关闭控制台效果结束)\n\n4:无限金币\n\n5:被击中不减速(无效果请刷新游戏)\n\n6:稳定的射击\n\n7:手枪连发\n\n");
printf("\n\n\n+++++++++++++++++++++++++++++++请输入想要达到效果前面的号码,格式:<效果> <1|0> +++++++++++++++++++++++++++++++\n");
scanf("%d", &choice);
scanf("%d", &flag);
if (choice == 1)
{
Bullet(flag, csid, base1);
}
else if (choice == 2)
{
Bullet(flag, csid, base2);
}
else if (choice == 3)
{
Blood(flag, csid, bloodadd);
}
else if (choice == 4)
{
Mymoney(flag, csid, base2);
}
else if (choice == 5)
{
Speed(flag,csid, base1, myp);
}
else if (choice == 6)
{
StableShooting(flag,csid, base2);
}
else if (choice == 7)
{
ShortGun(flag,csid);
}
else
{
printf("Input error");
}
}
return 0;
}
GetPid()
DWORD GetPid()
{
DWORD pid = 0;
HWND hcs = 0;
hcs = FindWindow(NULL, L"Counter-Strike"); //第一个参数是窗口的类型,vs的spy++可以查询,第二个参数是窗口的名称)
//printf("%d\n", hcs);
if (hcs != 0)
{
GetWindowThreadProcessId(hcs, &pid); //通过FindWindow返回的窗口的句柄来获取Pid
}
else
{
printf("please open cs\n");
return 0;
}
return pid;
}
无限子弹
这一块可以修改所有人的子弹数和自己的子弹数
样的
下面的代码是根据在ce中找到的多层偏移地址,通过ReadProcessMemory() 和 WriteProcessMemory() ,对存放子弹的内存空间修改,将子弹数设置为999
也可以通过修改汇编代码实现真正的子弹数不减少,但在内存中每把枪都有自己的空间,需要一个一个进行修改,创建一个专门的函数即可)
void Bullet(int flag,DWORD pid,int *base)
{
//int buadd = 0x2038151f;
//Patch(buadd, pid);
DWORD oldprotect;
HANDLE hPro = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);
int base2 =0;
int base3 = 0;
int base4 = 0;
int base5 = 0;
int s1 = ReadProcessMemory(hPro, (LPCVOID)base, &base2, 4, NULL);
int t1 = GetLastError();
if (s1 == 0)
{
printf("ReadProcessMemory Error1\n");
}
int s2 = ReadProcessMemory(hPro, (LPCVOID)(base2+0x7c), &base3, 4, NULL);
int t2 = GetLastError();
if (s2 == 0)
{
printf("ReadProcessMemory Error2\n");
}
int s3 = ReadProcessMemory(hPro, (LPCVOID)(base3 +0x5ec), &base4, 4, NULL);
int t3 = GetLastError();
if (s3 == 0)
{
printf("ReadProcessMemory Error3\n");
}
int s4 = ReadProcessMemory(hPro, (LPCVOID)(base4 + 0xcc), &base5, 4, NULL);
int t4 = GetLastError();
if (s4 == 0)
{
printf("ReadProcessMemory Error4\n");
}
int address = base4+0xcc;
int nbullet = 999;
//DWORD NumberOfByteRead;
if (flag == 0)
{
nbullet = 30;
}
if (hPro == 0)
{
printf("false to get process PID\n");
return;
}
VirtualProtectEx(hPro, (LPVOID)address, 10, PAGE_READWRITE, &oldprotect);
int a = GetLastError();
int write = WriteProcessMemory(hPro, (LPVOID)address, &nbullet, 2, NULL);
if (write == 0)
{
printf("falied to WriteProcessMemory\n");
int b = GetLastError();
return ;
}
}
无限血
通过偏移地址的跟踪找到血量的内存地址并将该地址一直写入255
该方法的缺点是,只有关闭修改器才可以停止修改
int Blood(int flag,DWORD pid,int *base)
{
DWORD NumberOfByteRead;
DWORD oldprotect;
HANDLE hPro = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);
int base2 = 0;
int base3 = 0;
float base4 = 0;
int s1 = ReadProcessMemory(hPro, (LPCVOID)base, &base2, 4, NULL);
int t1 = GetLastError();
if (s1 == 0)
{
printf("Blood ReadProcessMemory Error1\n");
}
int s2 = ReadProcessMemory(hPro, (LPCVOID)(base2+0x2eb0), &base3, 4, NULL); //偏移2e60
int t2 = GetLastError();
if (s2 == 0)
{
printf("Blood ReadProcessMemory Error2\n");
}
int s3 = ReadProcessMemory(hPro, (LPCVOID)(base3+0x160), &base4, 4, NULL);
int t3 = GetLastError();
if (s3 == 0)
{
printf("Blood ReadProcessMemory Error3\n");
}
int add = base3 + 0x160;
long time = 0;
int seconds;
VirtualProtectEx(hPro, (LPVOID)add, 10, PAGE_READWRITE, &oldprotect);
int a = GetLastError();
/*printf("how many time do you want to matain HP(minute): ");
scanf("%d", &seconds);
time = seconds * 1000;*/
float blood = 255;
while (1)
{
if (flag == 0)
{
blood = 100;
}
int write = WriteProcessMemory(hPro, (LPVOID)add, &blood, 4, NULL);
if (write == 0)
{
printf("falied to WriteProcessMemory Blood\n");
int b = GetLastError();
return 0;
if (seconds <= 0)
{
return 0;
}
}
}
//基址切换的情况
if (s1 == 0 || s2 == 0 || s3 == 0)
{
return 0;
}
else
{
return 1;
}
}
无限金币
打补丁修改汇编
void Mymoney(int flag,DWORD pid, int* base)
{
int madd = 0x2041365f;
int madd1 = 0x1fee365f;
//base = (int*)madd;
if (flag == 0)
{
int madd1 = madd + 0x4;
HANDLE hPro = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);
int patch1 = 0x01cc8e89;
int patch2 = 0x0000;
VirtualProtectEx(hPro, (LPVOID)madd, 10, PAGE_READWRITE, tmp);
int write1 = WriteProcessMemory(hPro, (LPVOID)madd, &patch1, 4, NULL);
int write2 = WriteProcessMemory(hPro, (LPVOID)madd1, &patch2, 2, NULL);
printf("\nBingo\n");
}
else
{
Patch(madd, pid);
Patch(madd1, pid);
}
}
Patch()
用于修改填充六个字节NULL的补丁
void Patch(int add,DWORD pid)
{
int add2 = add + 0x4;
HANDLE hPro = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);
int patch1 = 0x90909090;
int patch2 = 0x9090;
VirtualProtectEx(hPro, (LPVOID)add, 10, PAGE_READWRITE, tmp);
int write1 = WriteProcessMemory(hPro, (LPVOID)add, &patch1, 4, NULL);
int write2 = WriteProcessMemory(hPro, (LPVOID)add2, &patch2, 2, NULL);
printf("\nBingo\n");
}
无僵直
void Speed(int flag,DWORD pid, int* base,int myp)
{
//DWORD NumberOfByteRead;
DWORD oldprotect;
HANDLE hPro = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);
int base2 = 0;
int base3 = 0;
float base4 = 0;
int sbase = 0x25069bc,sbase1 = 0,sbase2 = 0; //判断是否改写了速度,通过这几个变量偏移读取speedadd
int add = myp;
int add2 = myp+0x4;
int add3 = add2 + 0x4;
int speed = 0x90909090;
int speed2 = 0x90909090;
int speed3 = 0x9090;
int sadd = 0; //速度的地址(变化)
if (flag == 0)
{
speed = 0x01b085c7;
speed2 = 0x00000000;
speed3 = 0x00003f00;
VirtualProtectEx(hPro, (LPVOID)add, 10, PAGE_READWRITE, &oldprotect);
int write1 = WriteProcessMemory(hPro, (LPVOID)add, &speed, 4, NULL);
int write2 = WriteProcessMemory(hPro, (LPVOID)add2, &speed2, 4, NULL);
int write3 = WriteProcessMemory(hPro, (LPVOID)add3, &speed3, 2, NULL);
}
else
{
VirtualProtectEx(hPro, (LPVOID)add, 10, PAGE_READWRITE, &oldprotect);
int write1 = WriteProcessMemory(hPro, (LPVOID)add, &speed, 4, NULL);
int write2 = WriteProcessMemory(hPro, (LPVOID)add2, &speed2, 4, NULL);
int write3 = WriteProcessMemory(hPro, (LPVOID)add3, &speed3, 2, NULL);
//步枪修复
int myp2 = myp - 0x53;
int sbyte = 0x51eb;
VirtualProtectEx(hPro, (LPVOID)myp2, 10, PAGE_READWRITE, &oldprotect);
int write4 = WriteProcessMemory(hPro, (LPVOID)myp2, &sbyte, 2, NULL);
}
//基址变化
myp = 0x1fd3fbc8;
add = myp;
add2 = myp + 0x4;
add3 = add2 + 0x4;
sadd = 0; //速度的地址(变化)
if (flag == 0)
{
speed = 0x01b085c7;
speed2 = 0x00000000;
speed3 = 0x00003f00;
VirtualProtectEx(hPro, (LPVOID)add, 10, PAGE_READWRITE, &oldprotect);
int write1 = WriteProcessMemory(hPro, (LPVOID)add, &speed, 4, NULL);
int write2 = WriteProcessMemory(hPro, (LPVOID)add2, &speed2, 4, NULL);
int write3 = WriteProcessMemory(hPro, (LPVOID)add3, &speed3, 2, NULL);
}
else
{
VirtualProtectEx(hPro, (LPVOID)add, 10, PAGE_READWRITE, &oldprotect);
int write1 = WriteProcessMemory(hPro, (LPVOID)add, &speed, 4, NULL);
int write2 = WriteProcessMemory(hPro, (LPVOID)add2, &speed2, 4, NULL);
int write3 = WriteProcessMemory(hPro, (LPVOID)add3, &speed3, 2, NULL);
//步枪修复
int myp2 = myp - 0x53;
int sbyte = 0x51eb;
VirtualProtectEx(hPro, (LPVOID)myp2, 10, PAGE_READWRITE, &oldprotect);
int write4 = WriteProcessMemory(hPro, (LPVOID)myp2, &sbyte, 2, NULL);
}
return ;
}
稳定射击
void StableShooting(int flag,DWORD pid, int* base)
{
HANDLE hPro = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);
//后坐力地址
int mp5add = 0x2038a9b9; //mp5
int akadd = 0x20381479; //AK
int sgadd = 0x2038cad9; //sg552
int augadd = 0x20381e99; //aug
int m4add = 0x20389cb9; //m4a1
int tmpadd = 0x2038d8f9; ///tmp冲锋枪
int p90add = 0x2038b66e; //p90
int macadd = 0x2038a3b9; //mac冲锋枪
int m249add = 0x20388d39; //m249
//int eliteadd = 0x20383dce; //双枪
//int deagleadd = 0x20383740; //沙漠之鹰
//int p228add = 0x2038b090; //p228
//int uspadd = 0x2038e7e0; //usp
//int gloadd = 0x20386b55; //glock
if (flag == 0)
{
Depatch1(mp5add, pid);
Depatch1(akadd, pid);
Depatch1(sgadd, pid);
Depatch1(augadd, pid);
Depatch1(m4add, pid);
Depatch1(tmpadd, pid);
Depatch1(p90add, pid);
Depatch1(macadd, pid);
Depatch1(m249add, pid);
}
else
{
Patch(mp5add, pid);
Patch(akadd, pid);
Patch(sgadd, pid);
Patch(augadd, pid);
Patch(m4add, pid);
Patch(tmpadd, pid);
Patch(p90add, pid);
Patch(macadd, pid);
Patch(m249add, pid);
//Patch(eliteadd, pid);
//Patch(deagleadd, pid);
//Patch(p228add, pid);
//Patch(uspadd, pid);
//Patch(gloadd, pid);
printf(" ");
}
}
Depatch1
void Depatch1(int add, DWORD pid)
{
int add2 = add + 0x4;
HANDLE hPro = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);
int patch1 = 0x0100ae89;
int patch2 = 0000;
VirtualProtectEx(hPro, (LPVOID)add, 10, PAGE_READWRITE, tmp);
int write1 = WriteProcessMemory(hPro, (LPVOID)add, &patch1, 4, NULL);
int write2 = WriteProcessMemory(hPro, (LPVOID)add2, &patch2, 2, NULL);
printf("\nBingo\n");
}
上面代码中修改手枪的调用不仅会减少手枪的后坐力,还会让手枪连发
每个武器的后坐力都是单独的,这也可以自己写代码完成部分武器的修改
手枪连发
void ShortGun(int flag,DWORD pid)
{
int eliteadd = 0x20383dce; //双枪
int deagleadd = 0x20383740; //沙漠之鹰
int p228add = 0x2038b090; //p228
int uspadd = 0x2038e7e0; //usp
int gloadd = 0x20386b55; //glock
if (flag == 0)
{
Depatch(eliteadd, pid);
Depatch(deagleadd, pid);
Depatch(p228add, pid);
Depatch(uspadd, pid);
Depatch(gloadd, pid);
}
else
{
Patch(eliteadd, pid);
Patch(deagleadd, pid);
Patch(p228add, pid);
Patch(uspadd, pid);
Patch(gloadd, pid);
}
}
Depatch
void Depatch(int add, DWORD pid)
{
int add2 = add + 0x4;
HANDLE hPro = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);
int patch1 = 0x01009689;
int patch2 = 0000;
VirtualProtectEx(hPro, (LPVOID)add, 10, PAGE_READWRITE, tmp);
int write1 = WriteProcessMemory(hPro, (LPVOID)add, &patch1, 4, NULL);
int write2 = WriteProcessMemory(hPro, (LPVOID)add2, &patch2, 2, NULL);
printf("\nBingo\n");
}
源代码部分
// CS辅助.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <Windows.h>
PDWORD tmp;
void Patch(int add,DWORD pid)
{
int add2 = add + 0x4;
HANDLE hPro = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);
int patch1 = 0x90909090;
int patch2 = 0x9090;
VirtualProtectEx(hPro, (LPVOID)add, 10, PAGE_READWRITE, tmp);
int write1 = WriteProcessMemory(hPro, (LPVOID)add, &patch1, 4, NULL);
int write2 = WriteProcessMemory(hPro, (LPVOID)add2, &patch2, 2, NULL);
printf("\nBingo\n");
}
void Depatch(int add, DWORD pid)
{
int add2 = add + 0x4;
HANDLE hPro = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);
int patch1 = 0x01009689;
int patch2 = 0000;
VirtualProtectEx(hPro, (LPVOID)add, 10, PAGE_READWRITE, tmp);
int write1 = WriteProcessMemory(hPro, (LPVOID)add, &patch1, 4, NULL);
int write2 = WriteProcessMemory(hPro, (LPVOID)add2, &patch2, 2, NULL);
printf("\nBingo\n");
}
void Depatch1(int add, DWORD pid)
{
int add2 = add + 0x4;
HANDLE hPro = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);
int patch1 = 0x0100ae89;
int patch2 = 0000;
VirtualProtectEx(hPro, (LPVOID)add, 10, PAGE_READWRITE, tmp);
int write1 = WriteProcessMemory(hPro, (LPVOID)add, &patch1, 4, NULL);
int write2 = WriteProcessMemory(hPro, (LPVOID)add2, &patch2, 2, NULL);
printf("\nBingo\n");
}
DWORD GetPid()
{
DWORD pid = 0;
HWND hcs = 0;
hcs = FindWindow(NULL, L"Counter-Strike");
//printf("%d\n", hcs);
if (hcs != 0)
{
GetWindowThreadProcessId(hcs, &pid);
}
else
{
printf("please open cs\n");
return 0;
}
return pid;
}
void ShortGun(int flag,DWORD pid)
{
int eliteadd = 0x20383dce; //双枪
int deagleadd = 0x20383740; //沙漠之鹰
int p228add = 0x2038b090; //p228
int uspadd = 0x2038e7e0; //usp
int gloadd = 0x20386b55; //glock
if (flag == 0)
{
Depatch(eliteadd, pid);
Depatch(deagleadd, pid);
Depatch(p228add, pid);
Depatch(uspadd, pid);
Depatch(gloadd, pid);
}
else
{
Patch(eliteadd, pid);
Patch(deagleadd, pid);
Patch(p228add, pid);
Patch(uspadd, pid);
Patch(gloadd, pid);
}
}
void StableShooting(int flag,DWORD pid, int* base)
{
HANDLE hPro = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);
//后坐力地址
int mp5add = 0x2038a9b9; //mp5
int akadd = 0x20381479; //AK
int sgadd = 0x2038cad9; //sg552
int augadd = 0x20381e99; //aug
int m4add = 0x20389cb9; //m4a1
int tmpadd = 0x2038d8f9; ///tmp冲锋枪
int p90add = 0x2038b66e; //p90
int macadd = 0x2038a3b9; //mac冲锋枪
int m249add = 0x20388d39; //m249
//int eliteadd = 0x20383dce; //双枪
//int deagleadd = 0x20383740; //沙漠之鹰
//int p228add = 0x2038b090; //p228
//int uspadd = 0x2038e7e0; //usp
//int gloadd = 0x20386b55; //glock
if (flag == 0)
{
Depatch1(mp5add, pid);
Depatch1(akadd, pid);
Depatch1(sgadd, pid);
Depatch1(augadd, pid);
Depatch1(m4add, pid);
Depatch1(tmpadd, pid);
Depatch1(p90add, pid);
Depatch1(macadd, pid);
Depatch1(m249add, pid);
}
else
{
Patch(mp5add, pid);
Patch(akadd, pid);
Patch(sgadd, pid);
Patch(augadd, pid);
Patch(m4add, pid);
Patch(tmpadd, pid);
Patch(p90add, pid);
Patch(macadd, pid);
Patch(m249add, pid);
//Patch(eliteadd, pid);
//Patch(deagleadd, pid);
//Patch(p228add, pid);
//Patch(uspadd, pid);
//Patch(gloadd, pid);
printf(" ");
}
}
void Speed(int flag,DWORD pid, int* base,int myp)
{
//DWORD NumberOfByteRead;
DWORD oldprotect;
HANDLE hPro = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);
int base2 = 0;
int base3 = 0;
float base4 = 0;
int sbase = 0x25069bc,sbase1 = 0,sbase2 = 0; //判断是否改写了速度,通过这几个变量偏移读取speedadd
int add = myp;
int add2 = myp+0x4;
int add3 = add2 + 0x4;
int speed = 0x90909090;
int speed2 = 0x90909090;
int speed3 = 0x9090;
int sadd = 0; //速度的地址(变化)
if (flag == 0)
{
speed = 0x01b085c7;
speed2 = 0x00000000;
speed3 = 0x00003f00;
VirtualProtectEx(hPro, (LPVOID)add, 10, PAGE_READWRITE, &oldprotect);
int write1 = WriteProcessMemory(hPro, (LPVOID)add, &speed, 4, NULL);
int write2 = WriteProcessMemory(hPro, (LPVOID)add2, &speed2, 4, NULL);
int write3 = WriteProcessMemory(hPro, (LPVOID)add3, &speed3, 2, NULL);
}
else
{
VirtualProtectEx(hPro, (LPVOID)add, 10, PAGE_READWRITE, &oldprotect);
int write1 = WriteProcessMemory(hPro, (LPVOID)add, &speed, 4, NULL);
int write2 = WriteProcessMemory(hPro, (LPVOID)add2, &speed2, 4, NULL);
int write3 = WriteProcessMemory(hPro, (LPVOID)add3, &speed3, 2, NULL);
//步枪修复
int myp2 = myp - 0x53;
int sbyte = 0x51eb;
VirtualProtectEx(hPro, (LPVOID)myp2, 10, PAGE_READWRITE, &oldprotect);
int write4 = WriteProcessMemory(hPro, (LPVOID)myp2, &sbyte, 2, NULL);
}
//基址变化
myp = 0x1fd3fbc8;
add = myp;
add2 = myp + 0x4;
add3 = add2 + 0x4;
sadd = 0; //速度的地址(变化)
if (flag == 0)
{
speed = 0x01b085c7;
speed2 = 0x00000000;
speed3 = 0x00003f00;
VirtualProtectEx(hPro, (LPVOID)add, 10, PAGE_READWRITE, &oldprotect);
int write1 = WriteProcessMemory(hPro, (LPVOID)add, &speed, 4, NULL);
int write2 = WriteProcessMemory(hPro, (LPVOID)add2, &speed2, 4, NULL);
int write3 = WriteProcessMemory(hPro, (LPVOID)add3, &speed3, 2, NULL);
}
else
{
VirtualProtectEx(hPro, (LPVOID)add, 10, PAGE_READWRITE, &oldprotect);
int write1 = WriteProcessMemory(hPro, (LPVOID)add, &speed, 4, NULL);
int write2 = WriteProcessMemory(hPro, (LPVOID)add2, &speed2, 4, NULL);
int write3 = WriteProcessMemory(hPro, (LPVOID)add3, &speed3, 2, NULL);
//步枪修复
int myp2 = myp - 0x53;
int sbyte = 0x51eb;
VirtualProtectEx(hPro, (LPVOID)myp2, 10, PAGE_READWRITE, &oldprotect);
int write4 = WriteProcessMemory(hPro, (LPVOID)myp2, &sbyte, 2, NULL);
}
return ;
}
int Blood(int flag,DWORD pid,int *base)
{
//DWORD NumberOfByteRead;
DWORD oldprotect;
HANDLE hPro = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);
int base2 = 0;
int base3 = 0;
float base4 = 0;
int s1 = ReadProcessMemory(hPro, (LPCVOID)base, &base2, 4, NULL);
int t1 = GetLastError();
if (s1 == 0)
{
printf("Blood ReadProcessMemory Error1\n");
}
int s2 = ReadProcessMemory(hPro, (LPCVOID)(base2+0x2eb0), &base3, 4, NULL); //偏移2e60
int t2 = GetLastError();
if (s2 == 0)
{
printf("Blood ReadProcessMemory Error2\n");
}
int s3 = ReadProcessMemory(hPro, (LPCVOID)(base3+0x160), &base4, 4, NULL);
int t3 = GetLastError();
if (s3 == 0)
{
printf("Blood ReadProcessMemory Error3\n");
}
int add = base3 + 0x160;
long time = 0;
int seconds;
VirtualProtectEx(hPro, (LPVOID)add, 10, PAGE_READWRITE, &oldprotect);
int a = GetLastError();
/*printf("how many time do you want to matain HP(minute): ");
scanf("%d", &seconds);
time = seconds * 1000;*/
float blood = 255;
if (flag == 0)
{
blood = 100;
WriteProcessMemory(hPro, (LPVOID)add, &blood, 2, NULL);
goto L1;
}
while (1)
{
int write = WriteProcessMemory(hPro, (LPVOID)add, &blood, 4, NULL);
if (write == 0)
{
printf("falied to WriteProcessMemory Blood\n");
int b = GetLastError();
return 0;
if (seconds <= 0)
{
return 0;
}
}
}
L1:
//基址切换的情况
if (s1 == 0 || s2 == 0 || s3 == 0)
{
return 0;
}
else
{
return 1;
}
}
void Mymoney(int flag,DWORD pid, int* base)
{
int madd = 0x2041365f;
int madd1 = 0x1fee365f;
//base = (int*)madd;
if (flag == 0)
{
int madd1 = madd + 0x4;
HANDLE hPro = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);
int patch1 = 0x01cc8e89;
int patch2 = 0x0000;
VirtualProtectEx(hPro, (LPVOID)madd, 10, PAGE_READWRITE, tmp);
int write1 = WriteProcessMemory(hPro, (LPVOID)madd, &patch1, 4, NULL);
int write2 = WriteProcessMemory(hPro, (LPVOID)madd1, &patch2, 2, NULL);
printf("\nBingo\n");
}
else
{
Patch(madd, pid);
Patch(madd1, pid);
}
//HANDLE hPro = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);
//int base2 = 0;
//int base3 = 0;
//int base4 = 0;
//int s1 = ReadProcessMemory(hPro, (LPCVOID)base, &base2, 4, NULL);
//int t1 = GetLastError();
//if (s1 == 0)
//{
// printf("Money ReadProcessMemory Error1\n");
//}
//int s2 = ReadProcessMemory(hPro, (LPCVOID)(base2+0x7c), &base3, 4, NULL);
//int t2 = GetLastError();
//if (s2 == 0)
//{
// printf("Money ReadProcessMemory Error2\n");
//}
//int s3 = ReadProcessMemory(hPro, (LPCVOID)(base3 + 0x1cc), &base4, 4, NULL);
//int t3 = GetLastError();
//if (s3 == 0)
//{
// printf("Money ReadProcessMemory Error2\n");
//}
//int address = base3 + 0x1cc;
//int mymoney =0;
//int money = 16000;
//VirtualProtectEx(hPro, (LPVOID)address, 10, PAGE_READWRITE, NULL);
//int a = GetLastError();
//while (mymoney != 16000)
//{
// int write = WriteProcessMemory(hPro, (LPVOID)address, &money, 4, NULL);
// if (write == 0)
// {
// printf("falied to WriteProcessMemory Money\n");
// int b = GetLastError();
// return;
// }
//}
}
void Bullet(int flag,DWORD pid,int *base)
{
//int buadd = 0x2038151f;
//Patch(buadd, pid);
DWORD oldprotect;
HANDLE hPro = OpenProcess(PROCESS_ALL_ACCESS, TRUE, pid);
int base2 =0;
int base3 = 0;
int base4 = 0;
int base5 = 0;
int s1 = ReadProcessMemory(hPro, (LPCVOID)base, &base2, 4, NULL);
int t1 = GetLastError();
if (s1 == 0)
{
printf("ReadProcessMemory Error1\n");
}
int s2 = ReadProcessMemory(hPro, (LPCVOID)(base2+0x7c), &base3, 4, NULL);
int t2 = GetLastError();
if (s2 == 0)
{
printf("ReadProcessMemory Error2\n");
}
int s3 = ReadProcessMemory(hPro, (LPCVOID)(base3 +0x5ec), &base4, 4, NULL);
int t3 = GetLastError();
if (s3 == 0)
{
printf("ReadProcessMemory Error3\n");
}
int s4 = ReadProcessMemory(hPro, (LPCVOID)(base4 + 0xcc), &base5, 4, NULL);
int t4 = GetLastError();
if (s4 == 0)
{
printf("ReadProcessMemory Error4\n");
}
int address = base4+0xcc;
int nbullet = 999;
//DWORD NumberOfByteRead;
if (flag == 0)
{
nbullet = 30;
}
if (hPro == 0)
{
printf("false to get process PID\n");
return;
}
VirtualProtectEx(hPro, (LPVOID)address, 10, PAGE_READWRITE, &oldprotect);
int a = GetLastError();
int write = WriteProcessMemory(hPro, (LPVOID)address, &nbullet, 2, NULL);
if (write == 0)
{
printf("falied to WriteProcessMemory\n");
int b = GetLastError();
return ;
}
}
int main()
{
int *base1 = (int*)0x2433240; //所有人的子弹基址
int *base2 = (int*)0x25069bc; //自己的子弹基址
int *bblood = (int*)0x204ba020; //血基址
int* bloodadd = (int*)0x1ff8a020;
int myp = 0x2040fbc8; //僵直
DWORD csid = 0;
csid = GetPid();
//printf("%d\n", csid);
int choice = 0;
int flag = 0;
int yon; //是否继续修改
while (1)
{
printf("\n是否继续修改?(1|0)\n");
scanf_s("%d", &yon);
if (yon == 1)
{
}
else
{
printf("\n\n\n\n+++++++++++++++感谢使用++++++++++++++++\n\n\n\n");
return 0;
}
printf("1:所有人无限子弹\n\n2:自己无限子弹\n\n3:血量999999(开启此项功能后控制台无反应,关闭控制台效果结束)\n\n4:无限金币\n\n5:被击中不减速(无效果请刷新游戏)\n\n6:稳定的射击\n\n7:手枪连发\n\n");
printf("\n\n\n+++++++++++++++++++++++++++++++请输入想要达到效果前面的号码,格式:<效果> <1|0> +++++++++++++++++++++++++++++++\n");
scanf_s("%d", &choice);
scanf_s("%d", &flag);
if (choice == 1)
{
Bullet(flag, csid, base1);
}
else if (choice == 2)
{
Bullet(flag, csid, base2);
}
else if (choice == 3)
{
int sign = Blood(flag, csid, bblood);
if (flag == 0)
{
Blood(flag, csid, bloodadd);
}
}
else if (choice == 4)
{
Mymoney(flag, csid, base2);
}
else if (choice == 5)
{
Speed(flag,csid, base1, myp);
}
else if (choice == 6)
{
StableShooting(flag,csid, base2);
}
else if (choice == 7)
{
ShortGun(flag,csid);
}
else
{
printf("Input error");
}
}
return 0;
}
简单的cs修改器的更多相关文章
- UWP游戏防内存修改器的方法
最近我一直在编写适用于Windows 10商店的游戏.这款游戏比较怕玩家用修改器改金钱,因为这种修改会导致某些内购失效并且损害公平性.于是我把自己见过的三种反修改器的方法给网友们介绍一下. 首先说明一 ...
- CE修改器修改DNF 测试视频 阿修罗提升智力增加攻击力
使用CE修改器来修改网络游戏,如DNF 测试视频: CE修改器:指的是Cheat Engine,字面上的意思指的是作弊引擎的意思,是一款内存修改编辑工具.通过修改游戏的内存数据来得到一些原本无法实现的 ...
- Blender 之修改器代码分析
Blender的修改器(modifier)模块,默认界面右下块(Property)面板的扳手,分类(修改.生成.形变.模拟)列出所有的修改器.也可以空格键 ...
- 一个简单的CS系统打包过程图文版
一个简单的CS系统打包过程图文版 1. 打包内容 1.1. 此次打包的要求和特点 主工程是一个CS系统: 此CS系统运行的先决条件是要有.Net Framework 3.5: 主工程安装完成 ...
- Mp3tag(MP3文件信息修改器) V2.79a 多语绿色版
软件名称: Mp3tag(MP3文件信息修改器) 软件语言: 多国语言 授权方式: 免费软件 运行环境: Win 32位/64位 软件大小: 3.0MB 图片预览: 软件简介: Mp3Tag 是一款m ...
- 硬盘图标修改器 V1.0 绿色版
软件名称:硬盘图标修改器 V1.0 绿色版软件语言: 简体中文授权方式: 免费软件应用平台: Win7 / Vista / Win2003 / WinXP / Win2008 软件大小: 12.3MB ...
- 自己动手实现一个简单的JSON解析器
1. 背景 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.相对于另一种数据交换格式 XML,JSON 有着诸多优点.比如易读性更好,占用空间更少等.在 ...
- mongo数据更新(修改器)
数据更新简单的做法是删除重新插入update()函数语法 db.集合.update(更新条件,新的对象数据(更新操作符),upsert,multi)upsert如果要更新的数据不存在,则增加一条新的内 ...
- Android For JNI(二)——C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器
Android For JNI(二)--C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器 当我们把Hello World写完之后,我们就可以迈入C的大门了,今天就来讲讲基本的一些数据类型 ...
- MongoDB之修改器
MongoDB之修改器 $set 简单粗暴 {name: valuel} 直接将key对应的值赋值给value. db.xxoo.insert({}, {set: {key: value}}) / ...
随机推荐
- 容器内Java微服务报错:unable to create new native thread
unable to create new native threadhttps://stackoverflow.com/questions/16789288/java-lang-outofmemory ...
- 三,打包electron
1,在当前项目下运行 npm install --save-dev @electron-forge/cli npx electron-forge import 此时package.json内容如下: ...
- expected expression before')'token
如上图所示,今天遇到的一个编译问题,明明用法跟其他地方的一摸一样,在主程序里编译就没问题,动态库里死活都编译不过去,可把我折磨死了,最后没办法,只能请教大佬,大佬过来几分钟就找到了问题,真正出错的地方 ...
- K8SPod进阶资源限制以及探针
一.Pod 进阶 1.资源限制 当定义 Pod 时可以选择性地为每个容器设定所需要的资源数量. 最常见的可设定资源是 CPU 和内存大小,以及其他类型的资源. 当为 Pod 中的容器指定了 reque ...
- Scala操作Kakfa API
如需大数据开发整套视频(hadoop\hive\hbase\flume\sqoop\kafka\zookeeper\presto\spark):请联系QQ:1974983704 由于我使用的是kafk ...
- 使用NTC计算温度,增加计算精度的算法
uint16_t uGetPCB_Temperature(void) { uint16_t x; float Adcn; float k; Adcn = userADC_var.ADCMeasureV ...
- Vue学习之基础大全
1 导入vue: 2 <script src="vue.min.js"></script> 3 创建vm实例 4 var vm=new Vue({ 5 el ...
- Ubuntu 22.04 安装 VMWare 16.2.3 后无法启动
异常日志: 2022-06-13T03:49:56.019Z In(05) host-29676 In file included from /tmp/modconfig-XR2GVI/vmmon-o ...
- git 拉取远端别的分支的代码,并创建本地分支
创建本地分支 new_dev, 并且拉取远端new_dev的代码到本地new_devgit checkout -b new_dev origin/new_dev
- 复制文本到粘贴板 (vue3)(兼容ios)
// 点击复制到剪贴板 const copyToClipboard = (content)=> { if (window.clipboardData) { window.clipboardDat ...