求问大佬,C#如何取64位进程在内存中的首地址,也就是模块句柄

Nvidia1125 2018-01-19 09:56:21
。。上次帖子估计没说清楚,再问一下,C# 怎么能够取64位进程内存首地址,也就是在进程中xxx.exe这个模块的地址。。。64位的进程地址是long型的,所以到现在都找不到方法。。求大佬们解答,感谢
...全文
877 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵庆明老师 2020-05-10
  • 打赏
  • 举报
回复
C# 使用64位编译; var a = myproceexe.MainModule.BaseAddress;
秋的红果实 2018-01-22
  • 打赏
  • 举报
回复
例子倒是很多,关键是找到能处理你的问题的API函数 例子http://blog.csdn.net/bcbobo21cn/article/details/50930221
Saleayas 2018-01-22
  • 打赏
  • 举报
回复
64 位进程的地址当然是 64 位的,在 C# 里面是 IntPtr 型的。 换算成数值就是 long 。 难道你期望 64 位进程的寻址是 32 位的。
Nvidia1125 2018-01-22
  • 打赏
  • 举报
回复
引用 5 楼 From_TaiWan 的回复:
这种问题,C#好像不好弄,你得研究win32 API,在C#里调用这些API
https://wenku.baidu.com/view/d2ff166589eb172dec63b77d.html

在MSDN找到了,有没有大佬来帮忙写个调用的例子。。。

秋的红果实 2018-01-22
  • 打赏
  • 举报
回复
这种问题,C#好像不好弄,你得研究win32 API,在C#里调用这些API https://wenku.baidu.com/view/d2ff166589eb172dec63b77d.html
Nvidia1125 2018-01-22
  • 打赏
  • 举报
回复
引用 9 楼 Saleayas 的回复:
使用 Process 来获取进程。 通过 Modules 属性来枚举进程。 Process Module的 BaseAddress 的 IntPtr 就是基地址了。
感谢大神的指导,非常感谢
Nvidia1125 2018-01-22
  • 打赏
  • 举报
回复
引用 3 楼 Saleayas 的回复:
GetModuleHandle If this parameter is NULL, GetModuleHandle returns a handle to the file used to create the calling process (.exe file).
谢谢老哥,我试过这个方法,但是由于64位进程返回的首地址数值类型是long型的,所以GetModuleHandle还是获取失败的,我生成的事64位的进程,获取的也是64位进程的首地址,所以是不是还有其他的函数可以用。。MSDN里找了半天没找到
Saleayas 2018-01-22
  • 打赏
  • 举报
回复
使用 Process 来获取进程。 通过 Modules 属性来枚举进程。 Process Module的 BaseAddress 的 IntPtr 就是基地址了。
Saleayas 2018-01-21
  • 打赏
  • 举报
回复
GetModuleHandle If this parameter is NULL, GetModuleHandle returns a handle to the file used to create the calling process (.exe file).
Nvidia1125 2018-01-21
  • 打赏
  • 举报
回复
求救,有高手能解答吗

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧