龙马谷

 找回密码
 立即注册

QQ登录

只需一步,快速开始

龙马谷VIP会员办理客服QQ:82926983(如果临时会话没有收到回复,请先加QQ好友再发。)
1 [已完结] GG修改器新手入门与实战教程 31课 2 [已完结] GG修改器美化修改教程 6课 3 [已完结] GG修改器Lua脚本新手入门教程 12课
4 [已完结] 触动精灵脚本新手入门必学教程 22课 5 [已完结] 手游自动化脚本入门实战教程 9课 6 [已完结] C++射击游戏方框骨骼透视与自瞄教程 27课
7 [已完结] C++零基础UE4逆向开发FPS透视自瞄教程 29课 8 [已完结] C++零基础大漠模拟器手游自动化辅助教程 22课
以下是天马阁VIP教程,本站与天马阁合作,赞助VIP可以获得天马阁对应VIP会员,名额有限! 点击进入天马阁论坛
1 [已完结] x64CE与x64dbg入门基础教程 7课 2 [已完结] x64汇编语言基础教程 16课 3 [已完结] x64辅助入门基础教程 9课
4 [已完结] C++x64内存辅助实战技术教程 149课 5 [已完结] C++x64内存检测与过检测技术教程 10课 6 [已完结] C+x64二叉树分析遍历与LUA自动登陆教程 19课
7 [已完结] C++BT功能原理与x64实战教程 29课 8 [已完结] C+FPS框透视与自瞄x64实现原理及防护思路
查看: 2673|回复: 0

Win7 64上隐藏进程和保护进程源代码

[复制链接]

11

主题

1

回帖

19

积分

编程入门

Rank: 1

龙马币
66

实现隐藏进程和保护进程的手段依然是DKOM,不过是修改的位置不同而已。
至于怎么在64位操作系统上加载驱动,我已经说过了,请参考这里。
驱动使用WDK7的x64 Free Build Environment编译。

核心源码:

  1. #define PROCESS_FLAGS_OFFSET                   0x440
  2. #define PROCESS_ACTIVE_PROCESS_LINKS_OFFSET    0x188
  3. #define PROCESS_RUNDOWN_PROTECT_OFFSET         0x178

  4. ULONG64 Get64bitValue(PVOID p)
  5. {
  6.     if(MmIsAddressValid(p)==FALSE)
  7.         return 0;
  8.     return *(PULONG64)p;
  9. }


  10. VOID Set64bitValue(PVOID p, ULONG64 v)
  11. {
  12.     KIRQL OldIrql;
  13.     if(MmIsAddressValid(p)==FALSE)
  14.         return ;
  15.     OldIrql = KeRaiseIrqlToDpcLevel();
  16.     *(PULONG64)p=v;
  17.     KeLowerIrql(OldIrql);
  18. }


  19. VOID RemoveListEntry(PLIST_ENTRY ListEntry)
  20. {
  21.     KIRQL OldIrql;
  22.     OldIrql = KeRaiseIrqlToDpcLevel();
  23.     if (ListEntry->Flink != ListEntry &&
  24.         ListEntry->Blink != ListEntry &&
  25.         ListEntry->Blink->Flink == ListEntry &&
  26.         ListEntry->Flink->Blink == ListEntry)
  27.     {
  28.             ListEntry->Flink->Blink = ListEntry->Blink;
  29.             ListEntry->Blink->Flink = ListEntry->Flink;
  30.             ListEntry->Flink = ListEntry;
  31.             ListEntry->Blink = ListEntry;
  32.     }
  33.     KeLowerIrql(OldIrql);
  34. }


  35. VOID HideProcess(PEPROCESS Process)
  36. {
  37.     RemoveListEntry((PLIST_ENTRY)((ULONG64)Process + PROCESS_ACTIVE_PROCESS_LINKS_OFFSET));
  38. }


  39. VOID Test(ULONG uIoControlCode)
  40. {
  41.     switch(uIoControlCode)
  42.     {
  43.         case IOCTL_HideProcess:
  44.             {
  45.                 __try
  46.                 {
  47.                     memcpy(&dwInputPid,pIoBuffer,sizeof(dwInputPid));
  48.                     status=PsLookupProcessByProcessId(dwInputPid,&eProcess);
  49.                     if(NT_SUCCESS(status))
  50.                     {
  51.                         HideProcess(eProcess);
  52.                     }
  53.                 }
  54.                 __except(EXCEPTION_EXECUTE_HANDLER)
  55.                 {
  56.                     ;
  57.                 }
  58.                 break;
  59.             }
  60.         case IOCTL_ProtectProcess:
  61.             {
  62.                 __try
  63.                 {
  64.                     memcpy(&dwInputPid,pIoBuffer,sizeof(dwInputPid));
  65.                     status=PsLookupProcessByProcessId(dwInputPid,&eProcess);
  66.                     if(NT_SUCCESS(status))
  67.                     {
  68.                         OldVal=Get64bitValue((PULONG64)((ULONG64)eProcess+PROCESS_RUNDOWN_PROTECT_OFFSET));
  69.                         Set64bitValue((PULONG64)((ULONG64)eProcess+PROCESS_RUNDOWN_PROTECT_OFFSET),RdpVal);
  70.                     }
  71.                 }
  72.                 __except(EXCEPTION_EXECUTE_HANDLER)
  73.                 {
  74.                     ;
  75.                 }
  76.                 break;
  77.             }
  78.         case IOCTL_UnprotectProcess:
  79.             {
  80.                 __try
  81.                 {
  82.                     Set64bitValue((PULONG64)((ULONG64)eProcess+PROCESS_RUNDOWN_PROTECT_OFFSET),OldVal);
  83.                 }
  84.                 __except(EXCEPTION_EXECUTE_HANDLER)
  85.                 {
  86.                     ;
  87.                 }
  88.                 break;
  89.             }
  90.     }
  91. }
复制代码


更新内容:

  1. #define PROCESS_ACTIVE_PROCESS_LINKS_OFFSET    0x188
  2. #define PROCESS_FLAG2_OFFSET                   0x43C
  3. #define CROSS_THREAD_FLAGS_OFFSET              0x448

  4. VOID Test(ULONG uIoControlCode)
  5. {
  6.     switch(uIoControlCode)
  7.     {
  8.         case IOCTL_ProtectProcess:
  9.             {
  10.                 __try
  11.                 {
  12.                     memcpy(&dwInPid,pIoBuffer,sizeof(dwInPid));
  13.                     dprintf("[x64Drv] dwInPid=%ld",dwInPid);
  14.                     status=PsLookupProcessByProcessId(dwInPid,&eProcess);
  15.                     if(NT_SUCCESS(status))
  16.                     {
  17.                         dwPOV=Get64bitValue((PULONG64)((ULONG64)eProcess+PROCESS_FLAG2_OFFSET));
  18.                         Set64bitValue((PULONG64)((ULONG64)eProcess+PROCESS_FLAG2_OFFSET),dwPNV);
  19.                         dprintf("[x64Drv] Protect Process finished");
  20.                     }
  21.                 }
  22.                 __except(EXCEPTION_EXECUTE_HANDLER)
  23.                 {
  24.                     ;
  25.                 }
  26.                 break;
  27.             }
  28.         case IOCTL_ProtectThread:
  29.             {
  30.                 __try
  31.                 {
  32.                     memcpy(&dwInTid,pIoBuffer,sizeof(dwInTid));
  33.                     dprintf("[x64Drv] dwInTid=%ld",dwInTid);
  34.                     status=PsLookupThreadByThreadId(dwInTid,&eThread);
  35.                     if(NT_SUCCESS(status))
  36.                     {
  37.                         dwTOV=Get32bitValue((PULONG64)((ULONG64)eThread+CROSS_THREAD_FLAGS_OFFSET));
  38.                         Set32bitValue((PULONG64)((ULONG64)eThread+CROSS_THREAD_FLAGS_OFFSET),dwTNV);
  39.                         dprintf("[x64Drv] Protect Thread finished");
  40.                     }
  41.                 }
  42.                 __except(EXCEPTION_EXECUTE_HANDLER)
  43.                 {
  44.                     ;
  45.                 }
  46.                 break;
  47.             }
  48.         case IOCTL_UnprotectProcess:
  49.             {
  50.                 __try
  51.                 {
  52.                     Set64bitValue((PULONG64)((ULONG64)eProcess+PROCESS_FLAG2_OFFSET),dwPOV);
  53.                     Set32bitValue((PULONG64)((ULONG64)eThread+CROSS_THREAD_FLAGS_OFFSET),dwTOV);
  54.                     dprintf("[x64Drv] Unprotect Process and Thread finished");
  55.                 }
  56.                 __except(EXCEPTION_EXECUTE_HANDLER)
  57.                 {
  58.                     ;
  59.                 }
  60.                 break;
  61.             }
  62.         case IOCTL_PauseThrdProtect:
  63.             {
  64.                 __try
  65.                 {
  66.                     Set32bitValue((PULONG64)((ULONG64)eThread+CROSS_THREAD_FLAGS_OFFSET),dwTOV);
  67.                     dprintf("[x64Drv] Thread Protect Suspended!");
  68.                 }
  69.                 __except(EXCEPTION_EXECUTE_HANDLER)
  70.                 {
  71.                     ;
  72.                 }
  73.                 break;
  74.             }
  75.         case IOCTL_ResumeThrdProtect:
  76.             {
  77.                 __try
  78.                 {
  79.                     Set32bitValue((PULONG64)((ULONG64)eThread+CROSS_THREAD_FLAGS_OFFSET),dwTNV);
  80.                     dprintf("[x64Drv] Thread Protect Resumed!");
  81.                 }
  82.                 __except(EXCEPTION_EXECUTE_HANDLER)
  83.                 {
  84.                     ;
  85.                 }
  86.                 break;
  87.             }
  88.     }
  89. }
复制代码

警告:此代码在没有破解内核的WIN7 X64上使用,会触发PatchGuard引起蓝屏。
Warning: If you use this code in WIN7 X64 without "crack kernel", it will trigger PatchGuard and cause BSOD.

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

本版积分规则

龙马谷| C/C++辅助教程| 安卓逆向安全| 论坛导航| 免责申明|Archiver|
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表龙马谷立场!
任何人不得以任何方式翻录、盗版或出售本站视频,一经发现我们将追究其相关责任!
我们一直在努力成为最好的编程论坛!
Copyright© 2018-2021 All Right Reserved.
在线客服
快速回复 返回顶部 返回列表