exoproc
Hooking

NHook ve MinHook

Exoproc iki inline hook modeli sağlar. Seçim “hangisi daha iyi?” sorusu değil; hedef prologue'u, detour gereksinimi ve kabul edilen çalışma zamanı...

Exoproc iki inline hook modeli sağlar. Seçim “hangisi daha iyi?” sorusu değil; hedef prologue'u, detour gereksinimi ve kabul edilen çalışma zamanı davranışı sorusudur.

ÖzellikNHookMinHook
Patch2 byte EB FEEn az 5 byte göreli jmp
Hit akışıThread park edilir, host poll() ile yakalarDetour hedef process'te doğrudan çalışır
Özgün prologueDesteklenen talimatlar host tarafından simüle edilirTaşınır ve trampoline içinde yürür
DetourYerleşik JS hit/resume modeliÇağıranın sağladığı adres veya CMachineCode
Başlıca sınırTalimat simülasyonu ve hit lifecycle'ıTalimat relocation ve rel32 mesafesi

NHook: park et, yakala, sürdür

NHook, hedef girişindeki tam talimatları en az iki byte kapsayana kadar çözer ve başlangıca EB FE yazar. Hedef thread bu sonsuz kısa atlamaya gelince host poll() ile hit'i görür. resume() varsayılan akışta taşınan talimatların desteklenen alt kümesini simüle eder ve thread'i fonksiyon gövdesinin devamına yönlendirir; istenirse dönüş değeri zorlanabilir.

Bu yaklaşım “trampoline yok” demektir, “her prologue desteklenir” demek değildir. Desteklenmeyen talimatlar, karmaşık control flow ve hit'i zamanında işleyemeyen host tasarımı için uygunluğu test edin.

MinHook: detour ve trampoline

MinHook, hedefin yeterli başlangıç talimatını trampoline'e taşır ve hedefe beş byte'lık jmp yazar. create() trampoline'i kurar ama patch yazmaz; enable(detour) detour'u seçip patch'i yükler. Detour uzak adres ise çağıranın bunu hedefte kullanılabilir hale getirmesi gerekir; CMachineCode verildiğinde accessor üzerinden taşınabilir.

Detour doğrudan rel32 erişiminde değilse MinHook, hedefe yakın ayrılmış bir relay kullanır. Relay/trampoline tahsisi, RIP-relative talimat relocation'ı ve detour'un kendi ABI'si MinHook'un en kritik doğrulama alanlarıdır. Detour'un JavaScript ile iletişim protokolünü MinHook tanımlamaz.

Her iki hook için de yaşam döngüsünü ve kontrollü hedef üzerindeki enable/disable testini temel alın.