【问题标题】:How can i get pointer's address from other application without Cheat Engine?如何在没有作弊引擎的情况下从其他应用程序获取指针地址?
【发布时间】:2019-07-21 10:09:51
【问题描述】:

我想更改或读取其他程序中的指针值。但我需要知道指针的地址。我可以在没有作弊引擎的情况下获取地址吗?我该怎么做?在 youtube/google/facebook 他们使用作弊引擎来知道地址。

#include <iostream>
#include <windows.h>

int main() {
  DWORD pointer = 0x006DFEF8;  // I learned this address from Cheat Engine.
  DWORD pid;
  int deger;
  char program_isim[100];

  std::cin >> program_isim;

  HWND program = FindWindow(0, program_isim);
  if (program == 0) {
    std::cout << program_isim << ",bulunamadi." << std::endl;
  } 
   else {
    GetWindowThreadProcessId(program, &pid);
    HANDLE hand = OpenProcess(PROCESS_ALL_ACCESS, 0, pid);
    while (1) {
           ReadProcessMemory(hand, (void*)pointer, &deger, sizeof(deger), 0);
           std::cout << deger << std::endl;
              }
  }
  return 0;
}

【问题讨论】:

  • 虽然间距和缩进与编译器无关,但对于试图阅读和理解代码的人来说非常重要。请编辑您的问题以添加至少一些(一致的)缩进,并可能添加一些空行以将代码拆分为“段落”。
  • 您必须实现与作弊引擎类似的机制才能找到您要查找的地址。

标签: c++ pointers memory visual-c++ function-pointers


【解决方案1】:

Cheat Engine 是一个反汇编器和调试器。您可以使用这两个功能找到指针,但是在运行时使用调试器时,一切都是最简单的。它允许您设置“读取时中断”和“写入时中断”断点。作弊引擎的“查找访问”功能只是使用读取断点并记录断点所在的地址。

作弊引擎永远是寻找指针的最佳方式。你能通过静态分析找到指针吗?是的,你可以,但会更难。

您可以通过编写自己的程序来复制作弊引擎的行为,该程序将自己注册为 Windows API 的调试器并在目标进程上设置断点。

但是你不能使用作弊引擎的原因是因为游戏有反作弊功能可以检测到你的调试器,它也会检测到你编写的调试器,所以这不是解决方案。

解决方法是绕过反作弊,然后照常使用作弊引擎。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-12
    • 2018-12-03
    • 2015-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多