Opsporen SoftICE door te bellen INT 3h


  Share  
|


Dit is een van de meest bekende anti-debugging trucs, en het gebruik van een achterdeur in SoftICE zelf. Het werkt in alle versies van Windows, en het is gebaseerd op bellen INT 3u met registers waarin de volgende waarden: EAX = 04h en EBP = 4243484Bh. Dit is eigenlijk de "BCHK" string. Als SoftICE actief is in het geheugen, zal de EAX register bevat een andere waarde dan 4.

Deze truc is vaak gebruikt in de code van diverse compressie en codering van programma's, en het is bekend vanwege zijn brede gebruik. Bij goed gebruikt, kan dit problemen veroorzaken, zelfs voor de meer ervaren krakers.

.386 
. MODEL FLAT, STDCALL 
 
locals sprongen 
UNICODE = 0 
omvatten w32.inc 
Extrn SetUnhandledExceptionFilter: Proc. Message3 gegevens message2 delayESP vorige. Db-code "Opsporing door te bellen INT 3h", 0 dB "SoftICE gevonden", 0 dB "SoftICE niet gevonden", 0 dd 0
, ESP register wordt hier opgeslagen. dd 0; de ESP-register zal redden het adres van de 
; vorige SEH dienst hier. 
Start: 
;------------------------------------------------- -----------------------------------------------
-; Sets SEH in het geval van een fout 
;------------------------------------------------- ------------------------------------------------
mov [delayESP], esp 
push compenseren fout 
oproep SetUnhandledExceptionFilter 
mov [vorige], eax 
;------------------------------------------------- ------------------------------------------------
; Het nieuwe adres voor Structured Exception Handling (SEH) hier is ingesteld om ervoor te zorgen dat in geval van een 
; fout, zal het programma verder uit een fout label en wordt correct einde. Dit is belangrijk 
, als, bijvoorbeeld, het programma vraagt een interrupt die zal worden uitgevoerd correct alleen als SoftICE 
; actief is, maar die zal leiden tot een fout en crash van het programma als SoftICE is niet actief. 
; Ten slotte is de vorige SEH service-adres opgeslagen. 
;------------------------------------------------- ------------------------------------------------ eax, 4 ebp mov, "BCHK" int 3u push eax; "magische" waarden worden gevonden; of SoftICE is actief
 ; roept de INT 3u onderbreking; slaat de return waarde 
;------------------------------------------------- ------------------------------------------------
; Sets vorige SEH dienst 
;------------------------------------------------- ------------------------------------------------ push dword ptr [vorige] 
oproep SetUnhandledExceptionFilter 
;------------------------------------------------- ------------------------------------------------
; Stelt de oorspronkelijke SEH service-adres 
;------------------------------------------------- ------------------------------------------------ pop eax cmp eax, 4 Jnz springen verder:; herstelt de return waarde
 ; testen om te zien of eax werd veranderd, als het was veranderd, SoftICE actief is; in het geheugen
 
oproep MessageBoxA, 0, offset message2, \ offset message1, 0 
;------------------------------------------------- ------------------------------------------------
; Als de return waarde is 4 SoftICE werd niet gevonden en het programma drukt een foutmelding.
 ;------------------------------------------------- ------------------------------------------------ oproep ExitProcess , -1 
; eindigt programma 
jump: 
oproep MessageBoxA, 0, offset message3, \ offset message1, 0 
;------------------------------------------------- ------------------------------------------------
; Geeft een bericht dat SoftICE werd gevonden; elke code kan volgen dit punt.
 ;------------------------------------------------- ------------------------------------------------ oproep ExitProcess , -1 
; eindigt programma 
fout: 
; start een nieuwe SEH dienst in geval van een fout. mov esp, [delayESP] 
push compenseren blijven ret 
;------------------------------------------------- ------------------------------------------------
; Als er een fout optreedt in het programma, SEH zal ervoor zorgen dat het programma zal blijven van de; fout etiket. 
;------------------------------------------------- ------------------------------------------------ eindigt 
einde Start
; einde van het programma 
een artikel afkomstig van Sam Petrone


Share  

© 2005-2010 E-articles.info All Rights Reserved - Terms and conditions