Conectar código fuente del disco duro
Hacer este tipo de preguntas no conducirá a buenos resultados. Déjame explicarte brevemente las ideas y principios. Esta función se origina en NTDLL.DLL en RING3 y la dirección de la función de servicio del sistema correspondiente se guarda en SSDT. No sé si estás preguntando sobre la capa de aplicación o la capa del kernel. Te lo diré solo. En RING3, puede escribir una DLL e inyectarla en cada proceso, y luego modificar la tabla de exportación de la biblioteca de enlaces dinámicos del sistema en cada proceso, que es el enlace IAT. Para obtener la dirección de la función original, primero abra el archivo NTDLL.DLL en el disco, analice la tabla de exportación del archivo (EAT) y calcule manualmente la dirección de la función NtReadVirtualMemory según la dirección base de memoria de NTDLL.DLL y RVA. grabado en el archivo del disco. En RING0, modificar directamente la tabla SSDT puede conectar el servicio del sistema NtReadVirtualMemory. Para obtener la dirección original de cada rutina en SSDT, también necesita analizar el archivo del disco (ntoskrnl.exe) usted mismo. Hay mucho contenido sobre SSDT Hook en Internet. Encontré una buena publicación mientras miraba la nieve. Como referencia:
Hace mucho tiempo escribí un programa usando VB6 para detectar ganchos/ganchos IAT en ring3, pero solo se probó en XP. Hoy en día, pocas personas usan VB6. Es posible que este código no tenga ningún valor de referencia para usted. Si es necesario, puedes ir a mi blog para encontrar el código de naylon.0ginr.com.