【问题标题】:Getting the base address of a process in vb.net在 vb.net 中获取进程的基地址
【发布时间】:2019-02-25 19:47:14
【问题描述】:

好的,这很奇怪。我需要在 vb.net(不是我的应用程序)中获取进程的基地址。为了深入研究另一个进程的内存(在将其编码到 vb.net 之前探索我需要的值),我使用了作弊引擎。作弊引擎给了我这样的地址:

Client.exe + 00BBD310

这里的问题是,每当我重新运行程序时,Client.exe 地址都会发生变化。我已经在我的代码中声明了该过程,所以我尝试了这个:

bAddress = handle_s.MainModule.BaseAddress

handle_s 是有问题的进程。这里的问题是我在 bAddress 中获得的值不是作弊引擎“Client.exe”所代表的值 - 我可以向后工作以找出作弊引擎所指的内容,因为它告诉我上面的总和是,但是随着每次值的变化,我需要一种方法来简单地获取 vb.net 中的值。

欢迎任何意见/建议。

【问题讨论】:

  • 这不是00BBD310 偏移量吗?含义 Module.Address + BBD310.
  • @Jimi 确实只是一个偏移量。在作弊引擎中,我可以看到基地址 + 偏移量等于多少。由此我可以重新排列方程以获得作弊引擎中的基地址。这个值不等于 module.Baseaddress 这是我的问题
  • 我应该补充一点,我是 Fraserofsmeg。我的移动帐户和桌面帐户不会同步!
  • 在不知道Client.exe 的情况下很难说些什么。你确定这个可执行文件只有一个进程吗?另外,你能说(作弊引擎)显示的地址实际上是主模块入口点,而不可能是另一个地址引用吗?标题偏移量,也许。除非您一开始没有正确计算偏移量:对齐可能很棘手。您可以使用从Process.GetProcessByName() 获得的地址搜索您拥有的值,看看您是否能理解作弊引擎指向的地址。无聊的程序,我知道。
  • 可能是ASLR

标签: vb.net process cheat-engine base-address


【解决方案1】:

MainModule.BaseAddress 为您提供加载模块的地址 (source)

因此它是模块的绝对动态虚拟地址。如果 0x0BBD310 是一个相对偏移量,那么将 0x0BBD310 添加到 MainModule.BaseAddress 将为您提供运行时变量的地址。

如果它与您在 Cheat Engine 中看到的不匹配,那么您要么附加到错误的进程,要么您感到困惑。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 2017-02-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多