NtUtils เป็นเฟรมเวิร์กสำหรับการเขียนโปรแกรมระบบ Windows ใน Delphi ที่ให้ชุดฟังก์ชันที่มีการจัดการข้อผิดพลาดและการบูรณาการภาษาที่ดีกว่าส่วนหัว Winapi/Ntapi ทั่วไป รวมกับข้อมูลโค้ดที่ใช้บ่อยและประเภทข้อมูลอัจฉริยะ
คุณสามารถค้นหาโค้ดตัวอย่างได้ใน พื้นที่เก็บข้อมูลเฉพาะ
ห้องสมุดมีโครงสร้างเป็นชั้นๆ รวม 3 ชั้น คือ
Winapi.*.pas
ในตัวและไลบรารี Ntapi.*.pas
ในโปรแกรมของคุณ แม้ว่าอาจจำเป็นต้องระบุคำนำหน้าเนมสเปซอย่างชัดเจนในกรณีที่ชื่อขัดแย้งกันSystem.SysUtils
, System.Rtti
และ System.Generics.Collections
ดังนั้นทุกสิ่งที่คุณต้องการจะรวมอยู่ใน Delphi เวอร์ชันฟรีล่าสุดแล้ว โบนัสคือการรวบรวมแอปพลิเคชันคอนโซลที่ไม่มี RTTI (หรือที่เรียกว่าการสะท้อนกลับ) จะทำให้ได้ไฟล์ปฏิบัติการที่น้อยมาก ดูตัวอย่างสำหรับรายละเอียดเพิ่มเติม
เนื่องจากการรวมทุกไฟล์จากไลบรารีลงในโปรเจ็กต์ของคุณมักจะซ้ำซ้อน คุณจึงสามารถกำหนดค่า Delphi สำหรับการค้นหาไฟล์อัตโนมัติได้ ด้วยวิธีนี้ คุณสามารถระบุหน่วยในส่วน uses
และ Delphi จะรวมหน่วยดังกล่าวและการขึ้นต่อกันไว้ในโปรเจ็กต์โดยอัตโนมัติ หากต้องการกำหนดค่าโฟลเดอร์ที่ Delphi ทำการค้นหา ให้ไปที่ Project -> Options -> Building -> Delphi Compiler และเพิ่มบรรทัดต่อไปนี้ลงในเส้นทางการค้นหา:
.NtUtilsLibrary
.NtUtilsLibraryHeaders
.NtUtilsLibraryNtUiLib
หากชื่อโฟลเดอร์หรือตำแหน่งที่แตกต่างกันสำหรับโปรเจ็กต์ของคุณ คุณจะต้องปรับบรรทัดเหล่านี้ตามลำดับ
ไลบรารีบ่งชี้ถึงความล้มเหลวของผู้เรียกโดยการส่งคืนค่า TNtxStatus ที่ไม่สำเร็จ TNtxStatus
(กำหนดใน NtUtils.pas) เป็นโครงสร้างที่เก็บรหัสข้อผิดพลาด (เข้ากันได้กับ NTSTATUS
, HRESULT
และข้อผิดพลาด Win32) รวมถึงข้อมูลเมตาเกี่ยวกับลักษณะของการดำเนินการที่พยายามทำ เช่น ตำแหน่งของความล้มเหลว stacktrace และ รายละเอียดอื่นๆ เช่น รูปแบบการเข้าถึงที่คาดหวัง/ร้องขอสำหรับการโทรแบบเปิด หรือค่าคลาสข้อมูลสำหรับการสืบค้น/ตั้งค่าการโทร หากต้องการตรวจสอบว่า TNtxStatus
สำเร็จหรือไม่ ให้ใช้วิธี IsSuccess
ในการเข้าถึงหรือตั้งค่ารหัสข้อผิดพลาดพื้นฐาน (ขึ้นอยู่กับประเภทและการตั้งค่าของผู้โทร) ให้ใช้คุณสมบัติเช่น Status
, HResult
, HResultAllowFalse
, Win32Error
, Win32ErrorOrSuccess
, IsHResult
, IsWin32
ฯลฯ
หากคุณต้องการใช้ข้อยกเว้น คุณสามารถเรียก RaiseOnError()
บน TNtxStatus
ที่กำหนดได้ตลอดเวลา โปรดทราบว่าเว้นแต่คุณต้องการใช้ข้อยกเว้นโดยไม่ต้องนำเข้า System.SysUtils
(ซึ่งเป็นไปได้) ควรรวม NtUiLib.Exceptions ที่นำคลาสข้อยกเว้น ENtError
เฉพาะมาด้วย (ได้มาจาก EOSError
ในตัว)
NtUiLib.Errors แนบสี่วิธีในการแสดงค่า TNtxStatus
เป็นสตริง ตัวอย่างเช่น หากข้อผิดพลาดที่มีค่า 0xC0000061
มาจากความพยายามที่จะเปลี่ยน ID เซสชันของโทเค็น วิธีการเหล่านี้จะส่งคืนข้อมูลต่อไปนี้:
วิธี | สตริงที่ส่งคืน |
---|---|
Name | STATUS_PRIVILEGE_NOT_HELD |
Description | A required privilege is not held by the client |
Summary | Privilege Not Held |
ToString | NtSetInformationToken returned STATUS_PRIVILEGE_NOT_HELD |
หากคุณต้องการไปไกลกว่านี้และแสดงกล่องข้อความที่สวยงามให้กับผู้ใช้ NtUiLib.Errors.Dialog เสนอ ShowNtxStatus()
นอกจากนี้ การรวม NtUiLib.Exceptions.Dialog จะช่วยสนับสนุนการสะท้อนกลับที่จำเป็นและเพิ่มคุณค่าให้กับกล่องโต้ตอบให้ดียิ่งขึ้น นี่คือตัวอย่างลักษณะที่ปรากฏ:
TNtxStatus
รองรับการจับร่องรอยสแต็ก (ปิดใช้งานตามค่าเริ่มต้น) หากต้องการเปิดใช้งาน ให้ตั้งค่า NtUtils.CaptureStackTraces
เป็น True โปรดทราบว่าการแสดงสแต็กเทรซอย่างมีความหมายนั้นจำเป็นต้องกำหนดค่าการสร้างสัญลักษณ์การดีบักสำหรับไฟล์ปฏิบัติการของคุณ น่าเสียดายที่ Delphi สามารถส่งออกเฉพาะไฟล์ .map
เท่านั้น (กำหนดค่าผ่านโครงการ -> ตัวเลือก -> การสร้าง -> คอมไพเลอร์ Delphi -> การเชื่อมโยง -> ไฟล์แผนที่) ซึ่งโดยทั่วไปยังไม่เพียงพอ คุณจะต้องใช้เครื่องมือ map2dbg ของบริษัทอื่นเพื่อแปลงเป็นไฟล์ .dbg
เพื่อให้ API สัญลักษณ์นั้นสามารถเข้าใจได้ แม้ว่าไฟล์ .dbg
อาจจะเพียงพอแล้ว แต่จะดีกว่าถ้าประมวลผลไฟล์เหล่านี้เพิ่มเติมด้วยการแปลงเป็น .pdb
เวอร์ชันใหม่ผ่าน cv2pdb
หากต้องการสร้างสัญลักษณ์แก้ไขข้อบกพร่องโดยอัตโนมัติ ให้เพิ่มเหตุการณ์หลังการสร้างต่อไปนี้ในโครงการของคุณ:
map2dbg.exe $(OUTPUTPATH)
cv2pdb64.exe -n -s. -p$(OUTPUTNAME).pdb $(OUTPUTPATH)
Delphi ไม่มีตัวรวบรวมขยะ จึงมีเพียงไม่กี่ประเภทเท่านั้นที่ได้รับการจัดการแบบสำเร็จรูป: บันทึก สตริง อาร์เรย์ไดนามิก และอินเทอร์เฟซ ในทางกลับกัน คลาสและพอยน์เตอร์จำเป็นต้องมีการล้างข้อมูลอย่างชัดเจน ซึ่ง (ในรูปแบบที่ปลอดภัย) ต้องใช้การบล็อก แบบลองขั้นสุดท้าย ดังนั้นจึงทำให้โปรแกรมมีความซับซ้อนอย่างมาก เพื่อแก้ไขปัญหานี้ ไลบรารีมีสิ่งอำนวยความสะดวกสำหรับการจัดการอายุการใช้งานอัตโนมัติสำหรับหน่วยความจำและทรัพยากรอื่นๆ ซึ่งนำมาใช้ใน DelphiUtils.AutoObjects ด้วยการใช้ประเภทจากโมดูลนี้ เราแนะนำให้คอมไพเลอร์สร้างโค้ดที่ปลอดภัยต่อข้อยกเว้นโดยอัตโนมัติสำหรับการนับการอ้างอิง และปล่อยอ็อบเจ็กต์ในบทส่งท้ายของฟังก์ชันโดยอัตโนมัติ โมดูลนี้กำหนดอินเทอร์เฟซต่างๆ สำหรับทรัพยากรประเภทต่างๆ ที่อาจต้องมีการล้างข้อมูล โดยจะแนะนำลำดับชั้นต่อไปนี้:
กราฟ LR;
กราฟย่อย id1[ทรัพยากรใดๆ]
IAutoรีลีสได้
จบ
กราฟย่อย id2[ค่า THandle]
ฉันจัดการ
จบ
กราฟย่อย id3 [คลาส Delphi]
IAutoObject[IAutoObject<T>]
จบ
กราฟย่อย id4 [ตัวชี้]
IAutoPointer[IAutoPointer<P>]
จบ
กราฟย่อย id5 [ขอบเขตหน่วยความจำ]
IMemory[IMemory<P>]
จบ
IAutoReleasable -> IHandle;
IAutoReleasable -> IAutoObject;
IAutoReleasable -> IAutoPointer;
IAutoPointer -> IMemory;
IAutoReleasable
เป็นประเภทพื้นฐานสำหรับทรัพยากรทั้งหมดที่จำเป็นต้องดำเนินการกับการล้างข้อมูล (อัตโนมัติ) IHandle
ทำหน้าที่เป็นตัวห่อหุ้มสำหรับทรัพยากรที่กำหนดโดยค่า THandle IAutoObject<T>
เป็น wrapper ทั่วไปสำหรับการปล่อยคลาส Delphi โดยอัตโนมัติ (เช่น สิ่งใดก็ตามที่มาจาก TObject) IAutoPointer<P>
กำหนดอินเทอร์เฟซที่คล้ายกันสำหรับการปล่อยพอยน์เตอร์ที่จัดสรรแบบไดนามิก (โดยที่ขนาดของขอบเขตไม่เกี่ยวข้อง) IMemory<P>
จัดเตรียม wrapper สำหรับขอบเขตหน่วยความจำในขนาดที่ทราบ ซึ่งสามารถเข้าถึงได้ผ่านตัวชี้ที่พิมพ์ เช่น บันทึกแบบกล่องที่มีการจัดการและไม่ได้รับการจัดการ
สูตรการใช้สิ่งอำนวยความสะดวกนี้มีดังต่อไปนี้:
กำหนดตัวแปรทุกตัวที่ต้องรักษา (อาจแชร์) ความเป็นเจ้าของบนออบเจ็กต์โดยใช้อินเทอร์เฟซใดอินเทอร์เฟซหนึ่ง:
ใช้ตัวช่วย อัตโนมัติ สำหรับการจัดสรร/คัดลอก/จับภาพวัตถุอัตโนมัติ:
เมื่อจำเป็น ให้ใช้การชี้ไปทางด้านซ้ายซึ่งจะช่วยหลีกเลี่ยงข้อมูลประเภทที่ซ้ำกัน และทำให้ไวยากรณ์สั้นลง
ตัวอย่างเช่น นี่คือโค้ดที่ปลอดภัยสำหรับการทำงานกับ TStringList โดยใช้แนวทางแบบคลาสสิก:
var
x: TStringList;
begin
x := TStringList.Create;
try
x.Add( ' Hi there ' );
x.SaveToFile( ' test.txt ' );
finally
x.Free;
end ;
end ;
ตามที่คุณสามารถจินตนาการได้ การใช้วัตถุมากขึ้นในฟังก์ชันนี้จะเพิ่มความซับซ้อนอย่างมีนัยสำคัญและไม่เชิงเส้น อีกทางหนึ่ง นี่คือโค้ดที่เทียบเท่าซึ่งใช้ IAutoObject และขยายขนาดได้ดีขึ้น:
uses
DelphiUtils.AutoObjects;
var
x: IAutoObject<TStringList>;
begin
x := Auto.From(TStringList.Create);
x.Self.Add( ' Hi there ' );
x.Self.SaveToFile( ' test.txt ' );
end ;
คอมไพเลอร์ปล่อยโค้ดการล้างข้อมูลที่จำเป็นลงในบทส่งท้ายของฟังก์ชัน และตรวจสอบให้แน่ใจว่าจะดำเนินการได้แม้ว่าจะมีข้อยกเว้นเกิดขึ้นก็ตาม นอกจากนี้ วิธีการนี้ยังช่วยให้รักษาความเป็นเจ้าของร่วมกันเหนือออบเจ็กต์ที่ซ่อนอยู่ ซึ่งช่วยให้คุณบันทึกการอ้างอิงที่สามารถอยู่ได้นานกว่าฟังก์ชันปัจจุบัน (โดยการจับภาพในฟังก์ชันที่ไม่ระบุชื่อและส่งคืน เป็นต้น) หากคุณไม่ต้องการฟังก์ชันนี้และต้องการรักษาเจ้าของเพียงคนเดียวที่ปล่อยอ็อบเจ็กต์ว่างเมื่อฟังก์ชันออก คุณสามารถลดความซับซ้อนของไวยากรณ์ให้ดียิ่งขึ้นไปอีก:
uses
NtUtils;
var
x: TStringList;
begin
x := Auto.From(TStringList.Create).Self;
x.Add( ' Hi there ' );
x.SaveToFile( ' test.txt ' );
end ;
รหัสนี้ยังคงเทียบเท่ากับรหัสเริ่มต้น ภายในจะสร้างตัวแปรท้องถิ่นที่ซ่อนอยู่ซึ่งจัดเก็บอินเทอร์เฟซและเผยแพร่อ็อบเจ็กต์ในภายหลัง
เมื่อทำงานกับการจัดสรรหน่วยความจำแบบไดนามิก การใช้การแคสต์ด้านซ้ายจะสะดวกดังต่อไปนี้:
var
x: IMemory<PByteArray>;
begin
IMemory(x) := Auto.AllocateDynamic( 100 );
x.Data[ 15 ] := 20 ;
end ;
คุณยังสามารถสร้างเรกคอร์ดที่มีการจัดการแบบกล่อง (จัดสรรบนฮีป) ที่อนุญาตให้ใช้ประเภทค่าร่วมกันราวกับว่าเป็นประเภทอ้างอิง โปรดทราบว่ายังสามารถรวมเขตข้อมูลที่ได้รับการจัดการ เช่น สตริง Delphi และอาร์เรย์แบบไดนามิก - คอมไพลเลอร์จะปล่อยโค้ดเพื่อปล่อยโดยอัตโนมัติ:
type
TMyRecord = record
MyInteger: Integer;
MyArray: TArray<Integer>;
end ;
PMyRecord = ^TMyRecord;
var
x: IMemory<PMyRecord>;
begin
IMemory(x) := Auto.Allocate<TMyRecord>;
x.Data.MyInteger := 42 ;
x.Data.MyArray := [ 1 , 2 , 3 ];
end ;
เนื่องจาก Delphi ใช้การนับอ้างอิง จึงยังคงเป็นไปได้ที่จะรั่วไหลของหน่วยความจำหากวัตถุสองชิ้นมีการพึ่งพาแบบวงกลม คุณสามารถป้องกันไม่ให้เกิดขึ้นได้โดยใช้ การอ้างอิงที่ไม่รัดกุม การอ้างอิงดังกล่าวไม่นับรวมการยืดอายุการใช้งาน และตัวแปรที่จัดเก็บไว้จะกลายเป็น ศูนย์ โดยอัตโนมัติเมื่อวัตถุเป้าหมายถูกทำลาย คุณต้องอัปเกรดการอ้างอิงที่อ่อนแอเป็นการอ้างอิงที่รัดกุมก่อนจึงจะสามารถใช้งานได้ ดู Weak<I> จาก DelphiUtils.AutoObjects สำหรับรายละเอียดเพิ่มเติม
มีนามแฝงบางส่วนสำหรับประเภทตัวชี้ขนาดตัวแปรที่ใช้กันทั่วไป ต่อไปนี้คือตัวอย่างบางส่วน:
ตัวจัดการใช้ประเภท IHandle (ดู DelphiUtils.AutoObjects) ซึ่งเป็นไปตามตรรกะที่กล่าวถึงข้างต้น ดังนั้นจึงไม่จำเป็นต้องปิดอย่างชัดเจน คุณยังสามารถค้นหานามแฝงบางอย่างสำหรับ IHandle (IScmHandle, ISamHandle, ILsaHandle ฯลฯ) ซึ่งมีให้เพื่อความสะดวกในการอ่านโค้ดเท่านั้น
หากคุณต้องการเป็นเจ้าของค่าการจัดการใน IHandle คุณต้องมีคลาสที่ใช้อินเทอร์เฟซนี้และรู้วิธีปล่อยทรัพยากรที่ซ่อนอยู่ ตัวอย่างเช่น NtUtils.Objects กำหนดคลาสดังกล่าวสำหรับอ็อบเจ็กต์เคอร์เนลที่ต้องเรียก NtClose
นอกจากนี้ยังแนบวิธีการช่วยเหลือเข้ากับ Auto
เพื่อให้สามารถจับเคอร์เนลจัดการตามค่าผ่าน Auto.CaptureHandle(...)
หากต้องการสร้าง IHandle ที่ไม่ใช่เจ้าของ ให้ใช้ Auto.RefHandle(...)
ชื่อของเรกคอร์ด คลาส และการแจงนับขึ้นต้นด้วย T
และใช้ CamelCase (ตัวอย่าง: TTokenStatistics
) ตัวชี้ไปยังเรคคอร์ดหรือประเภทค่าอื่นๆ เริ่มต้นด้วย P
(ตัวอย่าง: PTokenStatistics
) ชื่อของอินเทอร์เฟซเริ่มต้นด้วย I
(ตัวอย่าง: ISid
) ค่าคงที่ใช้ ALL_CAPITALS คำจำกัดความทั้งหมดจากเลเยอร์ส่วนหัวที่มีชื่ออย่างเป็นทางการที่รู้จัก (เช่นประเภทที่กำหนดไว้ใน Windows SDK) จะถูกทำเครื่องหมายด้วยแอตทริบิวต์ SDKName
ที่ระบุชื่อนี้
ฟังก์ชันส่วนใหญ่ใช้หลักการตั้งชื่อต่อไปนี้: คำนำหน้าของระบบย่อยที่มี x ต่อท้าย (Ntx, Ldrx, Lsax, Samx, Scmx, Wsx, Usrx, ...) + Action + Target/Object type/etc ชื่อฟังก์ชันยังใช้ CamelCase
ไลบรารีกำหนดเป้าหมายเป็น Windows 7 หรือสูงกว่า ทั้งรุ่น 32 และ 64 บิต แม้ว่าฟังก์ชันบางอย่างอาจมีเฉพาะใน Windows 11 เวอร์ชัน 64 บิตล่าสุดเท่านั้น ตัวอย่างบางส่วนคือ AppContainers และ ntdll syscall unhooking หากฟังก์ชันไลบรารีขึ้นอยู่กับ API ที่อาจไม่ปรากฏบน Windows 7 ฟังก์ชันนั้นจะใช้การนำเข้าแบบล่าช้าและตรวจสอบความพร้อมใช้งานในขณะรันไทม์
Delphi มาพร้อมกับระบบการสะท้อนที่หลากหลายซึ่งไลบรารีใช้ภายในเลเยอร์ NtUiLib ประเภทส่วนใหญ่ที่กำหนดไว้ในเลเยอร์ Headers ได้รับการตกแต่งด้วยแอตทริบิวต์ที่กำหนดเอง (ดู DelphiApi.Reflection) เพื่อให้บรรลุผล การตกแต่งเหล่านี้ปล่อยเมทาดาทาที่เป็นประโยชน์ซึ่งช่วยให้ไลบรารีแสดงประเภทข้อมูลที่ซับซ้อนได้อย่างแม่นยำ (เช่น PEB, TEB, USER_SHARED_DATA) ในรันไทม์ และสร้างรายงานที่น่าอัศจรรย์ด้วยโค้ดเพียงบรรทัดเดียว
นี่คือตัวอย่างการแสดง TSecurityLogonSessionData
จาก Ntapi.NtSecApi โดยใช้ NtUiLib.Reflection.Types:
ภาพรวมวัตถุประสงค์ของโมดูลต่างๆ มีดังนี้
หน่วยสนับสนุน | คำอธิบาย |
---|---|
DelphiUtils.AutoObjects | การจัดการอายุการใช้งานทรัพยากรอัตโนมัติ |
DelphiUtils.กิจกรรมอัตโนมัติ | กิจกรรมที่ไม่ระบุตัวตนของสมาชิกหลายคน |
DelphiUtils.Arrays | ผู้ช่วย TArray |
DelphiUtils.Lists | รายการลิงค์คู่ทางพันธุกรรมดั้งเดิม |
DelphiUtils.Async | ข้อกำหนดการสนับสนุน Async I/O |
DelphiUtils.ExternalImport | ผู้ช่วย IAT คำหลักภายนอกของ Delphi |
DelphiUtils.RangeChecks | ตัวช่วยตรวจสอบระยะ |
NtUtils | ประเภทห้องสมุดทั่วไป |
NtUtils.SysUtils | การจัดการสตริง |
NtUtils ข้อผิดพลาด | การแปลงรหัสข้อผิดพลาด |
NtUiLib.ข้อผิดพลาด | ค้นหาชื่อรหัสข้อผิดพลาด |
NtUiLib.ข้อยกเว้น | การรวมข้อยกเว้น SysUtils |
DelphiUiLib.Strings | การทำให้สวยงามของสตริง |
DelphiUiLib การสะท้อนกลับ | รองรับ RTTI พื้นฐาน |
DelphiUiLib.Reflection.Numeric | การแสดง RTTI ของประเภทตัวเลข |
DelphiUiLib.Reflection.Records | การแสดง RTTI ของประเภทเรคคอร์ด |
DelphiUiLib.Reflection.Strings | RTTI prettification ของสตริง |
NtUiLib.Reflection.Types | การแสดง RTTI สำหรับประเภททั่วไป |
NtUiLib.คอนโซล | ตัวช่วย I/O คอนโซล |
NtUiLib.TaskDialog | GUI ที่ใช้ TaskDialog |
NtUiLib.ข้อผิดพลาดกล่องโต้ตอบ | กล่องโต้ตอบข้อผิดพลาด GUI |
NtUiLib.ข้อยกเว้นกล่องโต้ตอบ | กล่องโต้ตอบข้อยกเว้น GUI |
หน่วยระบบ | คำอธิบาย |
---|---|
NtUtils.ActCtx | บริบทการเปิดใช้งาน |
NtUtils.AntiHooking | ยกเลิกการเชื่อมต่อและ syscall โดยตรง |
NtUtils.คอม | COM, IDispatch, WinRT |
NtUtils.Csr | การลงทะเบียน CSRSS/SxS |
NtUtils.DbgHelp | สัญลักษณ์ DbgHelp และดีบัก |
NtUtils.Debug | แก้ไขข้อบกพร่องวัตถุ |
NtUtils.Dism | DISM API |
NtUtils.สิ่งแวดล้อม | ตัวแปรสภาพแวดล้อม |
NtUtils.สิ่งแวดล้อมผู้ใช้ | ตัวแปรสภาพแวดล้อมของผู้ใช้ |
NtUtils.สิ่งแวดล้อม.ระยะไกล | ตัวแปรสภาพแวดล้อมของกระบวนการอื่นๆ |
NtUtils.Files | ชื่อไฟล์ Win32/NT |
NtUtils.Files.Open | ไฟล์และไปป์เปิด/สร้าง |
NtUtils.Files.Operations | การดำเนินงานไฟล์ |
NtUtils.Files.Directories | การแจงนับไดเรกทอรีไฟล์ |
NtUtils.Files.FltMgr | API ตัวจัดการตัวกรอง |
NtUtils.Files.Mup | ผู้ให้บริการ UNC หลายราย |
NtUtils.Files.Volumes | การดำเนินการตามปริมาณ |
NtUtils.Files.Control | การดำเนินงาน FSCTL |
NtUtils.ImageHlp | การแยกวิเคราะห์ PE |
NtUtils.ImageHlp.Syscalls | การเรียกค้นหมายเลข Syscall |
NtUtils.ImageHlp.DbgHelp | สัญลักษณ์สาธารณะที่ไม่มี DbgHelp |
NtUtils.งาน | วัตถุงานและไซโล |
NtUtils.งาน.ระยะไกล | แบบสอบถามออบเจ็กต์งานข้ามกระบวนการ |
NtUtils.Ldr | รูทีน LDR และการแยกวิเคราะห์ |
NtUtils.Lsa | นโยบายแอลเอสเอ |
NtUtils.Lsa.การตรวจสอบ | นโยบายการตรวจสอบ |
NtUtils.Lsa.Sid | การค้นหา SID |
NtUtils.Lsa.Logon | เซสชันการเข้าสู่ระบบ |
NtUtils.Manifests | ตัวสร้างรายการ Fusion/SxS |
NtUtils.หน่วยความจำ | การดำเนินงานของหน่วยความจำ |
NtUtils.MiniDumps | การแยกวิเคราะห์รูปแบบ Minidump |
NtUtils.Objects | วัตถุเคอร์เนลและจุดจับ |
NtUtils.Objects.Snapshots | จัดการสแนปช็อต |
NtUtils.Objects.Namespace | เนมสเปซวัตถุ NT |
NtUtils.Objects.Remote | การดำเนินการจัดการข้ามกระบวนการ |
NtUtils.Objects.เปรียบเทียบ | จัดการการเปรียบเทียบ |
NtUtils.แพ็คเกจ | แพ็คเกจแอปและตระกูลแพ็คเกจ |
NtUtils.Packages.SRCache | แคชที่เก็บของรัฐ |
NtUtils.Packages.WinRT | ข้อมูลแพ็คเกจที่ใช้ WinRT |
NtUtils.Power | ฟังก์ชั่นที่เกี่ยวข้องกับพลังงาน |
NtUtils กระบวนการ | ประมวลผลวัตถุ |
NtUtils กระบวนการ ข้อมูล | ประมวลผลข้อมูลแบบสอบถาม/ชุด |
NtUtils.Processes.Info.Remote | ประมวลผลแบบสอบถาม/ตั้งค่าผ่านการแทรกโค้ด |
NtUtils กระบวนการ โมดูล | การแจงนับ LDR ข้ามกระบวนการ |
NtUtils กระบวนการ สแนปชอต | การแจงนับกระบวนการ |
NtUtils กระบวนการ สร้าง | คำจำกัดความการสร้างกระบวนการทั่วไป |
NtUtils.Processes.Create.Win32 | วิธีการสร้างกระบวนการ Win32 |
NtUtils.Processes.Create.Shell | วิธีการสร้างกระบวนการเชลล์ |
NtUtils.Processes.Create.Native | NtCreateUserProcess และผู้ร่วม |
NtUtils กระบวนการ สร้าง คู่มือ | NtCreateProcessEx |
NtUtils.Processes.Create.Com | การสร้างกระบวนการที่ใช้ COM |
NtUtils กระบวนการ สร้าง Csr | การสร้างกระบวนการผ่าน SbApiPort |
NtUtils.Processes.Create.Package | การเปิดใช้งาน Appx |
NtUtils.Processes.Create.Remote | การสร้างกระบวนการด้วยการฉีดโค้ด |
NtUtils.Processes.Create.Clone | กระบวนการโคลนนิ่ง |
NtUtils.โปรไฟล์ | โปรไฟล์ผู้ใช้และ AppContainer |
NtUtils.Registry | คีย์รีจิสทรี |
NtUtils.Registry.ออฟไลน์ | การจัดการรังแบบออฟไลน์ |
NtUtils.Registry.VReg | การจำลองเสมือนของรีจิสทรีแบบไซโล |
NtUtils.Sam | ฐานข้อมูลแซม |
NtUtils.Sections | วัตถุฉายภาพส่วน/หน่วยความจำ |
NtUtils.ความปลอดภัย | ตัวอธิบายความปลอดภัย |
NtUtils.Security.Acl | ACL และ ACE |
NtUtils.Security.Sid | SID |
NtUtils.Security.AppContainer | AppContainer และ SID ความสามารถ |
NtUtils.Shellcode | การฉีดโค้ด |
NtUtils.Shellcode.Dll | การฉีด DLL |
NtUtils.Shellcode.Exe | การฉีด EXE |
NtUtils.Svc | บริการ SCM |
NtUtils.Svc.SingleTaskSvc | การดำเนินการบริการ |
NtUtils การซิงโครไนซ์ | การซิงโครไนซ์เบื้องต้น |
NtUtils.System | ข้อมูลระบบ |
NtUtils.TaskScheduler | ตัวกำหนดเวลางาน |
NtUtils.กระทู้ | วัตถุด้าย |
NtUtils.Tokens.Info | สอบถามกระทู้/ข้อมูลการตั้งค่า |
NtUtils.Threads.Worker | คนทำงานเธรด (กลุ่มเธรด) |
NtUtils.โทเค็น | วัตถุโทเค็น |
NtUtils.Tokens.เลียนแบบ | การเลียนแบบโทเค็น |
NtUtils.Tokens.Logon | ผู้ใช้ & เข้าสู่ระบบ S4U |
NtUtils.Tokens.AppModel | นโยบายโทเค็น AppModel |
NtUtils.ธุรกรรม | ออบเจ็กต์ธุรกรรม (TmTx) |
NtUtils.ธุรกรรม.ระยะไกล | บังคับให้กระบวนการเข้าสู่ธุรกรรม |
NtUtils.UserManager | บริการตัวจัดการผู้ใช้ (Umgr) API |
NtUtils.Wim | Windows Imaging (*.wim) API |
NtUtils.WinSafer | API ที่ปลอดภัยยิ่งขึ้น |
NtUtils.WinStation | API เซิร์ฟเวอร์เทอร์มินัล |
NtUtils.WinUser | User32/GUI API |
NtUtils.WinUser.WindowAffinity | การปรับเปลี่ยนความสัมพันธ์ของหน้าต่าง |
NtUtils.WinUser.WinstaLock | การล็อคและปลดล็อคสถานีหน้าต่าง |
NtUtils.XmlLite | การแยกวิเคราะห์และสร้าง XML ผ่าน XmlLite |
NtUiLib.การเติมข้อความอัตโนมัติ | เติมข้อมูลอัตโนมัติสำหรับการควบคุมการแก้ไข |
NtUiLib.AutoCompletion.Namespace | การเติมเนมสเปซวัตถุ NT ให้สมบูรณ์อัตโนมัติ |
NtUiLib.การทำให้สมบูรณ์อัตโนมัติ.Sid | SID เติมข้อมูลอัตโนมัติ |
NtUiLib.การทำให้สมบูรณ์อัตโนมัติ.Sid.Common | ผู้ให้บริการ/ตัวจดจำชื่อ SID แบบธรรมดา |
NtUiLib.AutoCompletion.Sid.AppContainer | AppContainer และผู้ให้บริการ/ตัวจดจำ SID แพ็คเกจ |
NtUiLib.AutoCompletion.Sid.ความสามารถ | ผู้ให้บริการ/ตัวจดจำความสามารถ SID |
NtUiLib.WinCred | กล่องโต้ตอบข้อมูลรับรอง |