@Tree 2023-07-10 21:30 采纳率: 100%
浏览 40
已结题

植物大战僵尸读取游戏数据一直输出0怎么办

先上代码


#include<iostream>
#include<windows.h>
#include<Windows.h>
#include<TLHELP32.H>
#include<direct.h>
#include<TCHAR.h>
using namespace std;
int main(){
    const long long baseaddr=0x6A9EC0;
    PROCESSENTRY32 pe32;
    pe32.dwSize=sizeof(pe32);
    HANDLE hProcessSnap=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
    int pid=-1;
    for(bool ret=Process32First(hProcessSnap,&pe32);ret;ret=Process32Next(hProcessSnap,&pe32))
        if(!_tcscmp(pe32.szExeFile,_T("Plants vs. Zombies.exe"))){
            pid=pe32.th32ProcessID;
            break;
        }
    CloseHandle(hProcessSnap);
    HANDLE hprocess=OpenProcess(PROCESS_ALL_ACCESS,FALSE,pid);
    DWORD timer;
    long long addr;
    ReadProcessMemory(hprocess,LPVOID(baseaddr),&addr,4,0);
    ReadProcessMemory(hprocess,LPVOID(addr+0x768),&addr,4,0);
    ReadProcessMemory(hprocess,LPVOID(addr+0x5568),&timer,4,0);
    cout<<timer;
    return 0;
}

功能是读取植物大战僵尸游戏时间
bug是输出一直为0
然后在前两个ReadProcessMemory之间加一行cout<<addr;会输出1就很神奇
我用Cheat Engine看了addr理论上应该是39428000
timer理论上应该是114905
但输出就是1和0
要读个游戏时间这么难吗,整了我一天了,一开始试的python也一直输出0
难绷死了·-·

  • 写回答

1条回答 默认 最新

  • 赵4老师 2023-07-11 10:34
    关注
    
    bool AdjustPrivileges() {
        HANDLE hToken;
        TOKEN_PRIVILEGES tp;
        TOKEN_PRIVILEGES oldtp;
        DWORD dwSize=sizeof(TOKEN_PRIVILEGES);
        LUID luid;
    
        if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) {
            if (GetLastError()==ERROR_CALL_NOT_IMPLEMENTED) return true;
            else return false;
        }
        if (!LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &luid)) {
            CloseHandle(hToken);
            return false;
        }
        ZeroMemory(&tp, sizeof(tp));
        tp.PrivilegeCount=1;
        tp.Privileges[0].Luid=luid;
        tp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
        /* Adjust Token Privileges */
        if (!AdjustTokenPrivileges(hToken, FALSE, &tp, sizeof(TOKEN_PRIVILEGES), &oldtp, &dwSize)) {
            CloseHandle(hToken);
            return false;
        }
        // close handles
        CloseHandle(hToken);
        return true;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 7月20日
  • 已采纳回答 7月12日
  • 创建了问题 7月10日

悬赏问题

  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址