高手们帮忙啊 OpenProcess 失败

netsmu 2009-09-27 03:41:05
用 GetLastError() 返回值是5. 不知道什么问题啊。
我想读取某个进程的内存地址。但是OpenProcess却不行,这个进程做了ring0 保护,任务管理器里都看不到这个进程的路径。而且这个进程也屏蔽了 OpenProcess。
上网找了很多资料,搞了几天通宵,说是要什么驱动ring0, 还有什么钩子hook 的,

谁有这方面的资料介绍下啊。非常非常感谢。


反正就是要 OpenProcess 某个进程,读出那个进程的内存地址就可以了,前提是这个进程驱动保护了,而且还HOOK了。
...全文
122 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
蒋晟 2009-09-28
  • 打赏
  • 举报
回复
5=权限不足。要先获取访问权限才可以。驱动屏蔽了的话,得写个驱动把屏蔽去掉。看谁先下手了。
wanjingwei 2009-09-27
  • 打赏
  • 举报
回复
帮顶
thy38 2009-09-27
  • 打赏
  • 举报
回复
对付ring0 inline hook的基本思路是这样的,自己写一个替换的内核函数,以NtOpenProcess为例,就是MyNtOpenProcess。然后修改SSDT表,让系统服务进入自己的函数MyNtOpenProcess。而MyNtOpenProcess要做的事就是,实现NtOpenProcess前10字节指令,然后再JMP到原来的NtOpenProcess的十字节后。这样NtOpenProcess 函数头写的JMP都失效了,在ring3直接调用OpenProcess再也毫无影响。

http://codechina.net/sort/tag/openprocess
loveour 2009-09-27
  • 打赏
  • 举报
回复
mark~~准备学习
limaolinghu 2009-09-27
  • 打赏
  • 举报
回复
去汇编区,那里有几个很牛的人。
信念 2009-09-27
  • 打赏
  • 举报
回复
不熟,路过
柯本 2009-09-27
  • 打赏
  • 举报
回复
一般ring0可以对物理设备进行操作,如读写物理内存,但对进程内存(它用操作系统虚存管理)操作估计难实现,而且在XP以后的操作系统,除了在驱动级,正常程序很难进ring0
HOOK也难,因为没有切入点(我对HOOK不是很熟,只知可HOOK设备/消息)
这个有难度,关注一下

中才德创 2009-09-27
  • 打赏
  • 举报
回复
Mark
whg01 2009-09-27
  • 打赏
  • 举报
回复
这么牛的进程。收藏。
rendao0563 2009-09-27
  • 打赏
  • 举报
回复
你这个跟OpenProcess没关系. 你只是想读取他进程里面资源并做操作是不是?

一般实现你这种功能有三种方法:
1. 直接读
2. 开远程线程
3. 钩子
但是常规这三种都是常规被屏蔽的. 还有其他三种不太常规的方法. 用这些成功率高点.
你这是自己玩玩. 还是商业的?

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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