Detoursnt เป็นโครงการง่าย ๆ ที่มีเป้าหมายเดียว - ทำให้การออกนอกเส้นทางขึ้นอยู่กับ NTDLL.DLL โดยไม่ต้องแก้ไขรหัสต้นฉบับ
NTDLL.DLLที่เก็บนี้ได้แนบพื้นที่เก็บข้อมูล GIT ดั้งเดิมของการออกจาก Microsoft เป็น submodule ดังนั้นรหัสต้นฉบับจึงไม่ได้สัมผัส แต่อย่างใด
การพึ่งพา NTDLL-only ทำได้โดยการสร้างไฟล์ส่วนหัว C detoursnt.h ซึ่งได้รับการบังคับ (สวิตช์ /FI ของ MSVC) ลงในทุกหน่วยการรวบรวมของการออกนอกเส้นทาง ฟังก์ชั่นการเยาะเย้ยส่วนหัวนี้ของ KERNEL32.DLL เพื่อการใช้งานที่กำหนดเองที่กำหนดไว้ใน Detoursnt.cpp
ฉันขอขอบคุณผู้เขียนโครงการต่อไปนี้:
KERNEL32.DLL ฟังก์ชั่นNTDLL.DLLเนื่องจากซอร์สโค้ด Original Detours ถูกแนบเป็น submodule GIT คุณต้องไม่ลืมที่จะดึงข้อมูล:
git clone --recurse-submodules https://github.com/wbenny/DetoursNT
หลังจากนั้นคอมไพล์ Detoursnt โดยใช้ Visual Studio 2017 รวมไฟล์โซลูชัน ไม่จำเป็นต้องมีการพึ่งพาอื่น ๆ
หลังจากที่คุณตี F7 ใน Visual Studio และมีทุกอย่างที่รวบรวมคุณสามารถตรวจสอบได้ว่า SampleHookDLL.dll นั้นขึ้นอยู่กับ NTDLL.DLL เท่านั้น:

การเชื่อมต่อ DLL นี้เฉพาะฟังก์ชั่ NtTestAlert เพื่อการสาธิต ในที่เก็บนี้มีโครงการ Sample มันมีวัตถุประสงค์เพียงอย่างเดียวคือการโทรหา LoadLibrary(TEXT("SampleHookDLL.dll")) , NtTestAlert() และ FreeLibrary() เพื่อแสดงให้คุณเห็นว่าตะขอกำลังทำงาน

ซอฟต์แวร์นี้เป็นโอเพ่นซอร์สภายใต้ใบอนุญาต MIT ดูไฟล์ licence.txt ในที่เก็บนี้
การออกใบอนุญาตภายใต้ใบอนุญาต MIT (สำเนาของใบอนุญาตรวมอยู่ใน Submodule GIT แยกต่างหาก)
หากคุณพบว่าโครงการนี้น่าสนใจคุณสามารถซื้อกาแฟให้ฉันได้
BTC 3GwZMNGvLCZMi7mjL8K6iyj6qGbhkVMNMF
LTC MQn5YC7bZd4KSsaj8snSg4TetmdKDkeCYk