【发布时间】: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