C++书写的注入数据外挂
2019-02-24
我又想了想还是尽早更新了这期CE吧
代码就在下面
#include "stdafx.h"
#include <Windows.h>
#include <stdio.h>
#include <iostream>
using namespace std;
void niceui()
{
printf(" ==欲儿植物大战僵尸辅助==\n");
printf(" 请根据指令选择你的操作\n");
printf(" 1.查看当前阳光值\n");
printf(" 2.修改你需要的阳光值\n");
printf(" 3.退出这个流弊的外挂\n");
printf(" 3.官方QQ群:614815597\n");
}
int _tmain(int argc, _TCHAR* argv[])
{
niceui()
//获取进程;
HWND hWinmine = FindWindow(NULL, L"植物大战僵尸中文版");
DWORD dwPID;
GetWindowThreadProcessId(hWinmine, &dwPID);
HANDLE hProcess = OpenProcess(PROCESS_ALL_ACCESS, false, dwPID);
//先读取静态基址
DWORD sunshineaddress = 0x006A9EC0;
DWORD sunshineaddressvalue = 0;
DWORD dwsize = 0;
ReadProcessMemory(hProcess, (LPVOID)sunshineaddress, &sunshineaddressvalue, sizeof(DWORD), &dwsize);
//再读取一级偏移
DWORD sunshinemovefirst = 0x768;
DWORD sunshinemovefirstvalue = 0;
ReadProcessMemory(hProcess, (LPVOID)(sunshineaddressvalue + sunshinemovefirst), &sunshinemovefirstvalue, sizeof(DWORD), &dwsize);
//printf("%d\n", ReadProcessMemory(hProcess, (LPVOID)(sunshineaddressvalue + sunshinemovefirst), &sunshinemovefirstvalue, sizeof(DWORD), &dwsize));
//最后读取二级偏移
DWORD sunshinemoveseconed = 0x5560;
DWORD sunshinenum = 0;
ReadProcessMemory(hProcess, (LPVOID)(sunshinemovefirstvalue + sunshinemoveseconed), &sunshinenum, sizeof(DWORD), &dwsize);
while(true)
{
int writenum;
cin >> writenum;
if (writenum == 1)
{
//只能用这一种方式打印出这个没有类型的参数,因为DWORD是一种没有类型的数据
printf_s("当前阳光值:%d\n", sunshinenum);
}
else if (writenum == 2)
{
printf("请输入你要修改成的阳光值");
int neednum;
cin >> neednum;
WriteProcessMemory(hProcess, (LPVOID)(sunshinemovefirstvalue + sunshinemoveseconed), &neednum, sizeof(DWORD), &dwsize);
printf("===修改成功===\n");
}
else
{
printf("===参数不合法===\n");
}
}
CloseHandle(hProcess);
system("pause");
while (1);
return 0;
}OKOK。看不懂的函数就评论,或者度娘
这里附赠上同版本植物大战僵尸,源码和,成品
链接:https://pan.baidu.com/s/1YLTULAWhmIfoMmyoDZwIkQ 提取码:456v
发表评论: