在C#里边如何获得进程的基地址呢 已经获得了进程的PID , 怎么根据PID再获取这个程序的基地址还有如果获得一个DLL文件的基地址呢求帮助~~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 转载网上一篇“如何获取用户进程全路径名”的文章进程监视器基本上写规矩了,但有点不爽的就是监视进程的名字中不能获得完整的路径,这对监视恶意进程很不好:知道它启动了,但是却不晓得它的执行文件在哪儿.于是在网上看了看关于这个内核获得用户进程的FullPath的讨论,确实有点另类,总结为6个步骤:1.IoGetCurrentProcess()取得当前进程的EPROCESS指针.2.在NT4.0和WIN2K中,首先取得EPROCESS中的SectionHandle,然后用ObReferenceObjectByHandle () 得到SectionObject的指针;在WinXp以上系统中可以直接在EPROCESS的结构中找到SectionObject指针.3.从SectionObject中获取SegmentObject.4.从SegmentObject中获取ControlArea.5.从ControlArea中获取FilePointer (这是一个FileObject指针).6.把FileObject作为第一个参数,调用ObQueryNameString(),返回填充OBJECT_NAME_INFORMATION结构:typedef struct _OBJECT_NAME_INFORMATION {UNICODE_STRING Name;} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;里面的UNICODE_STRING Name就是获得的进程执行文件完整路径.经验教训:所有代码都必须执行在该进程上下文(CONTEXT)中,IRQL为PASSIVE_LEVEL. 关键点是:1、CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwPID );2、调用Module32First、Module32Next获取dll信息 可以通过pid,得到task_struct的首地址,然后通过这个函数就可以得到 可以通过pid,得到task_struct的首地址,然后通过这个函数就可以得到 为“递归执行完后为什么不释放方法内申请的内存?”加分,qldsrx(青龙白虎)请进 请教DATASET转化 winform 最小化时单击任务栏图标的事件 如何判断 文本框中输入的是不是汉字? VS2005的dataGridView自定义列问题 关于登录的问题 如何改变EntityFramework的代码生成策略? C#表格控件 dataGrid1 不解之谜! C系列程序员 帮忙啊。工资问题。大散分!! 关于WMS系统中货位与货物关系设计的疑问 C#如何调用madlldlib.dll
1.IoGetCurrentProcess()取得当前进程的EPROCESS指针.
2.在NT4.0和WIN2K中,首先取得EPROCESS中的SectionHandle,然后用ObReferenceObjectByHandle () 得到SectionObject的指针;在WinXp以上系统中可以直接在EPROCESS的结构中找到SectionObject指针.
3.从SectionObject中获取SegmentObject.
4.从SegmentObject中获取ControlArea.
5.从ControlArea中获取FilePointer (这是一个FileObject指针).
6.把FileObject作为第一个参数,调用ObQueryNameString(),返回填充OBJECT_NAME_INFORMATION结构:typedef struct _OBJECT_NAME_INFORMATION {
UNICODE_STRING Name;
} OBJECT_NAME_INFORMATION, *POBJECT_NAME_INFORMATION;里面的UNICODE_STRING Name就是获得的进程执行文件完整路径.经验教训:所有代码都必须执行在该进程上下文(CONTEXT)中,IRQL为PASSIVE_LEVEL. 关键点是:
1、CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwPID );
2、调用Module32First、Module32Next获取dll信息