看流星社区

 找回密码
 注册账号
查看: 1806|回复: 1

VC驱动读内存代码

[复制链接]

该用户从未签到

发表于 2013-4-25 09:14:23 | 显示全部楼层 |阅读模式
  1. ULONG MyReadMemory(IN PVOID BaseAddress,IN SIZE_T BufferSize,IN HANDLE pid)
  2. {
  3. PEPROCESS EProcess;
  4. KAPC_STATE ApcState;
  5. PVOID readbuffer;
  6. NTSTATUS status;

  7. status = PsLookupProcessByProcessId((HANDLE)pid,&EProcess);
  8. if(!NT_SUCCESS(status))
  9. {
  10.    DbgPrint("failed to get the EPROCESS!!/n");
  11.    return 0;
  12. }


  13. readbuffer = ExAllocatePoolWithTag (NonPagedPool, BufferSize, 'Sys');
  14. if(readbuffer==NULL)
  15. {
  16.    DbgPrint("failed to alloc memory!/n");
  17.    return 0;
  18. }

  19. *(ULONG*)readbuffer=(ULONG)0x1;

  20. KeStackAttachProcess (EProcess, &ApcState);

  21.        __try
  22.     {
  23.      ProbeForRead ((CONST PVOID)BaseAddress, BufferSize, sizeof(CHAR));
  24.            RtlCopyMemory (readbuffer, BaseAddress, BufferSize);
  25.      KeUnstackDetachProcess (&ApcState);
  26.    
  27.     } __except(EXCEPTION_EXECUTE_HANDLER)
  28.     {
  29.      KeUnstackDetachProcess (&ApcState);
  30.     }
  31.    
  32.     DbgPrint("%x/n",*(ULONG*)readbuffer);
  33.     ExFreePool (readbuffer);
  34.     return 1;
  35.    
  36. }
复制代码

该用户从未签到

发表于 2013-4-25 13:44:29 | 显示全部楼层
如果你读成功了,可能你用的是XP。反正win 7下内核模式直接访问用户模式代码是不可能的。rtlcopymemory会抛出异常。所以我们必须采取其他更有效的方法。
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-5-4 12:59

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

快速回复 返回顶部 返回列表