挂海论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
 友情提示:文字/图片广告均非网站意见,请担保交易勿直接付款,由此产生的责任自负
玩游戏来117游戏网(H5不下载也能玩手游传奇,吃鸡,竞技都有)不懂社区·好资源不错过·各位资源站大佬欢迎来采集搬运IOS签名/udid证书出售/送证书加群1040456405 ██【我要租此广告位】██
... .
查看: 4124|回复: 0
打印 上一主题 下一主题

[讨论交流] 恢复游戏的InlineHook ZwOpenProcess

[复制链接]
6高级会员
786/1100

786

积分

260

主题

12

听众
已帮网友解决0 个问题
好评
0
贡献
526
海币
5853
交易币
0
跳转到指定楼层
楼主
发表于 2015-2-9 23:04:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
提醒:若下载的软件是收费的"请不要付款",可能是骗子,请立即联系本站举报,执意要付款被骗后本站概不负责。(任何交易请走第三方中介,请勿直接付款交易以免被骗!切记).

友情提示:文字/图片广告均非本站意见,请担保交易勿直接付款,由此产生的责任自负!!!↑↑


  1. #include<ntddk.h>
  2. #include<windef.h>
  3. typedef struct _SERVICE_DESCRIPTOR_TABLE
  4. {
  5. PVOID ServiceTableBase;
  6. PULONG ServiceCounterTableBase;
  7. ULONG NumberTableBase;
  8. ULONG ParamTableBase;
  9. }SERVICE_DESCRIPTOR_TABLE,*PSERVICE_DESCRIPTOR_TABLE;  

  10. extern PSERVICE_DESCRIPTOR_TABLE    KeServiceDescriptorTable;


  11. typedef NTSTATUS (*REALZWOPENPROCESS)
  12.         (  
  13. OUT PHANDLE ProcessHandle,
  14. IN ACCESS_MASK AccessMask,
  15. IN POBJECT_ATTRIBUTES ObjectAttributes,
  16. IN PCLIENT_ID ClientId);  

  17. REALZWOPENPROCESS    RealZwOpenProcess;

  18. //***************************************************************************
  19. VOID Hook();
  20. VOID Unhook();
  21. VOID OnUnload(IN PDRIVER_OBJECT DriverObject);
  22. NTSTATUS rc;  
  23. //////////////////////////////////////
  24. ULONG JmpAddress;//跳转到NtOpenProcess里的地址
  25. ULONG OldServiceAddress;//原来NtOpenProcess的服务地址
  26. //////////////////////////////////////
  27. __declspec(naked) NTSTATUS __stdcall MyNtOpenProcess(PHANDLE ProcessHandle,
  28.                ACCESS_MASK DesiredAccess,
  29.                POBJECT_ATTRIBUTES ObjectAttributes,
  30.                PCLIENT_ID ClientId)  
  31. {
  32.   //DbgPrint("NtOpenProcess() called");
  33.   //DbgPrint("RealZwOpenProcess:0x%08X",RealZwOpenProcess);
  34.   rc = (NTSTATUS)(REALZWOPENPROCESS)RealZwOpenProcess( ProcessHandle, DesiredAccess, ObjectAttributes, ClientId );  

  35.                
  36.   __asm{
  37.     push    0C4h
  38.     push    804daab0h  //共十个字节
  39.     jmp     [JmpAddress]      
  40.   }
  41. }


  42. NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,PUNICODE_STRING RegistryPath)
  43. {
  44.   DriverObject->DriverUnload = OnUnload;
  45.   DbgPrint("Unhooker load");
  46.   Hook();
  47.   return STATUS_SUCCESS;
  48. }
  49. /////////////////////////////////////////////////////
  50. VOID OnUnload(IN PDRIVER_OBJECT DriverObject)
  51. {
  52.   DbgPrint("Unhooker unload!");
  53.   Unhook();
  54. }
  55. /////////////////////////////////////////////////////

  56. VOID Hook()
  57. {
  58. ULONG Address;
  59. Address=(ULONG)KeServiceDescriptorTable->ServiceTableBase+0x7A*4;
  60. DbgPrint("Address:0x%08X",Address);
  61. OldServiceAddress=*(ULONG*)Address;
  62. RealZwOpenProcess=(REALZWOPENPROCESS)OldServiceAddress;
  63. DbgPrint("OldServiceAddress:0x%08X",OldServiceAddress);
  64. DbgPrint("MyNtOpenProcess:0x%08X",MyNtOpenProcess);
  65. JmpAddress=OldServiceAddress+10;
  66. DbgPrint("JmpAddress:0x%08X",JmpAddress);

  67. __asm{//去掉内存保护
  68.     cli
  69.          mov  eax,cr0
  70.     and  eax,not 10000h
  71.     mov  cr0,eax
  72.      }
  73.    
  74.    
  75. *((ULONG*)Address) = (ULONG)MyNtOpenProcess;//HOOK SSDT

  76.   __asm{//恢复内存保护   
  77.           mov  eax,cr0
  78.     or   eax,10000h
  79.     mov  cr0,eax
  80.     sti
  81.        }

  82. }


  83. VOID Unhook()
  84. {
  85.   ULONG  Address;
  86.   Address = (ULONG)KeServiceDescriptorTable->ServiceTableBase + 0x7A * 4;//查找SSDT

  87.   __asm{
  88.     cli
  89.           mov  eax,cr0
  90.     and  eax,not 10000h
  91.     mov  cr0,eax
  92.   }

  93. *((ULONG*)Address) = (ULONG)OldServiceAddress;//还原SSDT

  94.   __asm{   
  95.          mov  eax,cr0
  96.     or   eax,10000h
  97.     mov  cr0,eax
  98.     sti
  99.   }

  100.   DbgPrint("Unhook");
  101. }
复制代码




联系我时,请说是在 挂海论坛 上看到的,谢谢!



上一篇:过名将三国驱动保护
下一篇:新手过驱动HOOK保护的常见方法
免责声明:
1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关。一切关于该内容及资源商业行为与www.52ghai.com无关。

2、本站提供的一切资源内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。

3、本站信息来自第三方用户,非本站自制,版权归原作者享有,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

4、如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵犯你版权的,请邮件与我们联系删除(邮箱:xhzlw@foxmail.com),本站将立即改正。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

免责声明|Archiver|手机版|小黑屋|挂海论坛

GMT+8, 2025-4-5 02:56 , Processed in 0.066284 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.2

本站资源来自互联网用户收集发布,如有侵权请邮件与我们联系处理。xhzlw@foxmail.com

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