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
发表评论: