【问题标题】:Finding the base address of a program via Visual Basic code通过 Visual Basic 代码查找程序的基地址
【发布时间】:2023-04-07 11:27:01
【问题描述】:

我正在使用 Visual Studio 2019 - Visual Basic。

我正在尝试通过代码查找程序的基地址。我已经知道基地址,但我需要我正在制作的程序自行找到它。

我用这个,它显示了很多来自模块的地址:

Dim target As Process = Process.GetProcessesByName("The Program")(0)
For Each mo As ProcessModule In target.Modules
    ListBox1.Items.Add(mo.BaseAddress.ToString())

    'MsgBox(Hex(mo.BaseAddress.ToString()))
Next

(我从上面的代码中重命名了程序的名称,以防程序出现版权问题。)

我正在尝试获取基地址 我的基本地址是:

Base Address in Hex = 00007FF7BE6B0000
Base Address in Dec = 140702028333056

当我运行上面的代码时,它列出的没有地址是我拥有的基地址。

我使用 PE 编辑器查看程序的基地址。我使用了一个来自 GitHub 的名为 PE Tools 的程序。

那么我如何编写代码来获取这个图像基地址?

【问题讨论】:

  • 基地址是target.MainModule.BaseAddress,入口点是target.MainModule.EntryPointAddress,RVA是p.MainModule.EntryPointAddress.ToInt64() - target.MainModule.BaseAddress.ToInt64()
  • 我不知道这意味着什么......我很抱歉......我还是新手......
  • 您没有使用Dim target As Process = Process.GetProcessesByName("The Program)(0) 获得的 Process 对象吗?这个实例不是叫target吗? (好吧,我写的是p.MainModule.EntryPointAddress.ToInt64()而不是target. ...,只是一个错字)然后......

标签: vb.net visual-studio memory memory-address base-address


【解决方案1】:

我让它与这段代码一起工作:

Dim p As Process = Process.GetProcessesByName(GetCurrentProcessName)(0)
For Each moz As System.Diagnostics.ProcessModule In p.Modules
    If moz.FileName.IndexOf(GetCurrentProcessName) <> -1 Then
      Hex(moz.BaseAddress.ToString)
    End If
Next

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-19
相关资源
最近更新 更多