龙马谷

 找回密码
 立即注册

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实现原理及防护思路
查看: 1592|回复: 0

X64 HOOK IDT源码

[复制链接]

10

主题

10

回帖

22

积分

编程入门

Rank: 1

龙马币
20

X64 HOOK IDT源码

  1. kd> dt nt!_KIDTENTRY64 @idtr + @@(sizeof(nt!_KIDTENTRY64))
  2.    +0x000 OffsetLow        : 0x44c0
  3.    +0x002 Selector         : 0x10
  4.    +0x004 IstIndex         : 0y000
  5.    +0x004 Reserved0        : 0y00000 (0)
  6.    +0x004 Type             : 0y01110 (0xe)
  7.    +0x004 Dpl              : 0y00
  8.    +0x004 Present          : 0y1
  9.    +0x006 OffsetMiddle     : 0x40e
  10.    +0x008 OffsetHigh       : 0xfffff800
  11.    +0x00c Reserved1        : 0
  12.    +0x000 Alignment        : 0x40e8e00`001044c0
  13. kd> !idt 1

  14. Dumping IDT:
  15. 01:        fffff800040e44c0 nt!KiDebugTrapOrFault


  16. #pragma pack(1)
  17. typedef struct{
  18.         USHORT limit;
  19.         ULONG64 BASE;
  20. }IDT_INFO,*PIDT_INFO;


  21. typedef union _KIDTENTRY64
  22. {
  23.         struct
  24.          {
  25.                 USHORT OffsetLow;
  26.                 USHORT Selector;
  27.                 USHORT IstIndex : 3;
  28.                 USHORT Reserved0 : 5;
  29.                 USHORT Type : 5;
  30.                 USHORT Dpl : 2;
  31.                 USHORT Present : 1;
  32.                 USHORT OffsetMiddle;
  33.                 ULONG OffsetHigh;
  34.                 ULONG Reserved1;
  35.                 };
  36.         UINT64 Alignment;
  37.         } KIDTENTRY64, *PKIDTENTRY64;

  38. #pragma pack()
  39. typedef NTSTATUS(NTAPI *_KeSetAffinityThread)(
  40.         IN PKTHREAD Thread,
  41.         IN KAFFINITY Affinity
  42.         );


  43. NTSTATUS HOOKIDT(ULONG IDTID, PVOID NewfcuncAddress,__out  PVOID * oldTRAP1)
  44. {
  45. KIRQL oldIrql;
  46. ULONG lowpart;
  47. KAFFINITY processOrs;
  48. PKTHREAD thread;
  49. LONG i;
  50. IDT_INFO idtinfo;
  51. ULONG_PTR oldTrap = 0;
  52. ULONG_PTR newTrap;
  53. KIDTENTRY64*idt_entry;
  54. UNICODE_STRING ustrKeSetAffinityThread;
  55. _KeSetAffinityThread KeSetAffinityThread;
  56. RtlInitUnicodeString(&ustrKeSetAffinityThread, L"KeSetAffinityThread");
  57. KeSetAffinityThread = (_KeSetAffinityThread)MmGetSystemRoutineAddress(&ustrKeSetAffinityThread);
  58. processOrs = KeQueryActiveProcessors();
  59. thread = KeGetCurrentThread();
  60. newTrap = (ULONG_PTR)NewfcuncAddress;
  61. if (!MmIsAddressValid(oldTRAP1))
  62. { return 1; }

  63. for (i = 0; i < 32; i++){
  64. KAFFINITY curProc = processOrs &(1 << i);
  65. if (curProc != 0){

  66. KeSetAffinityThread(thread, curProc);
  67. __sidt(&idtinfo);
  68. idt_entry = idtinfo.BASE;

  69. oldTrap = (ULONG_PTR)((((ULONGLONG)idt_entry[IDTID].OffsetHigh) << 32) | (ULONGLONG)(((idt_entry[IDTID].OffsetMiddle << 16) | idt_entry[IDTID].OffsetLow) & 0x00000000ffffffff));
  70. if ( *oldTRAP1 == NULL)
  71. {
  72. *oldTRAP1 = (PVOID)oldTrap;
  73. }

  74. KeRaiseIrql(HIGH_LEVEL, &oldIrql);
  75. lowpart = (ULONG)((ULONGLONG)(newTrap));
  76. idt_entry[IDTID].OffsetLow = (USHORT)lowpart;
  77. idt_entry[IDTID].OffsetMiddle = (USHORT)(lowpart >> 16);
  78. idt_entry[IDTID].OffsetHigh = (ULONG)((ULONGLONG)newTrap >> 32);
  79. KeLowerIrql(oldIrql);
  80. }
  81. }
  82. KeSetAffinityThread(thread, processOrs);
  83. return STATUS_SUCCESS;
  84. }
复制代码

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

本版积分规则

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