Bun venit pe SkullBox!

Bine ai venit, Vizitator. Trebuie să te autentifici sau să îţi creezi un cont.
Ai pierdut sau nu ai primit emailul care conţine codul de activare al contului?

Autentifică-te cu numele de utilizator, parola şi precizează durata sesiunii.
  Pagini: [1]
  Imprimă  
IsDebuggerPresent  (Vizualizari 877)
vladiii
*

Deconectat Deconectat

Mesaje: 166

IsDebuggerPresent, Iul 21, 2007, 16:20

Cod:

include 'C:Documents and SettingsVladDesktopFASM W 167INCLUDEwin32ax.inc'
section '.code' code readable writeable executable
tit db 'Rezultat', 0
este db 'Este prezent debuggerul', 0
nueste db 'Nu este prezent debuggerul', 0
;aici am declarat varabilele        
start:
mov eax, 0
Call [IsDebuggerPresent] ;"Chemam" functia API
cmp eax, 1 ;Comparam rezultatul cu 1(1=true, 0=false)
je @esteprezent ;Daca este egal, sari la @esteprezent
jne @nuesteprezent ;Daca nu este egal sari la @nuesteprezent
@nuesteprezent:
push 0
push tit
push nueste
push 0
Call [MessageBox] ;Chemam MessageBoxul de confirmare
push 0
Call [ExitProcess] ;Iesim din program

@esteprezent:
push 0
push tit
push este
push 0
Call [MessageBox] ;Chemam MessageBoxul de confirmare
push 0
Call [ExitProcess] ;Iesim din program

.end start

Stiu Shocker, ai dreptate, nu este cine stie ce !
Memorat

Shocker
*

Deconectat Deconectat

Mesaje: 410

WWW
IsDebuggerPresent, Iul 21, 2007, 22:00

Citat

jne @nuesteprezent ;Daca nu este egal sari la @nuesteprezent
@nuesteprezent:

Sunt redundante aceste 2 instructiuni, chiar daca se sare, chiar daca nu, el tot va executa codul de la @nuesteprezent.

In fine, totul se invarte in jurul functiei IsDebuggerPresent, uite aici o varianta mai 'cool' fara API-ul respectiv, deci nu mai e nevoie inca o intrare pentru IsDebuggerPresent in tabela de importuri :mrgreen:
Cod:

include 'd:programeFASM W 167INCLUDEwin32ax.inc'
section '.code' code readable writeable executable
tit db 'Rezultat', 0
este db 'Este prezent debuggerul', 0
nueste db 'Nu este prezent debuggerul', 0
;aici am declarat varabilele          
start:
;e debuggeru sau nu e ?
mov eax,[FS:18h]
mov eax,[DS:EAX+30h]
movzx eax,BYTE [DS:EAX+2h]

cmp eax, 1 ;Comparam rezultatul cu 1(1=true, 0=false)
je @esteprezent ;Daca este egal, sari la @esteprezent
push 0
push tit
push nueste
push 0
Call [MessageBox] ;Chemam MessageBoxul de confirmare
jmp @exit;

@esteprezent:
push 0
push tit
push este
push 0
Call [MessageBox] ;Chemam MessageBoxul de confirmare

@exit:
push 0
Call [ExitProcess] ;Iesim din program

.end start
Memorat


Just wake me up when everything's less overwhelming..., btw ShockingSoft is back !
Freakz only
Comics of the day
vladiii
*

Deconectat Deconectat

Mesaje: 166

IsDebuggerPresent, Iul 22, 2007, 08:49

Shocker, am impresia ca te inseli. Daca este egal, se executa JE si sare la @esteprezent, iar labelul @nuesteprezent nu se mai executa si invers. Am testat codul folosind debugger si a mers, iar in conditii normale functioneaza perfect(adica fara debugger).
Memorat

tot_zeu
*

Deconectat Deconectat

Mesaje: 152

IsDebuggerPresent, Iul 22, 2007, 11:20

Vladiii sterge @nuesteprezent
Ca oricum chiar daca in eax va fi 0 si nu se va executa @esteprezent...se va executa restul programului adica ceea ce vezi tu la @nuesteprezent.deci sterge instructiunea
Memorat
vladiii
*

Deconectat Deconectat

Mesaje: 166

IsDebuggerPresent, Iul 22, 2007, 11:22

Citat
Vladiii sterge @nuesteprezent
Ca oricum chiar daca in eax va fi 0 si nu se va executa @esteprezent...se va executa restul programului adica ceea ce vezi tu la @nuesteprezent.deci sterge instructiunea

Merge si cu ea pusa.
Memorat

tot_zeu
*

Deconectat Deconectat

Mesaje: 152

IsDebuggerPresent, Iul 22, 2007, 11:24

Tu nu intelegi ca merge dar e  vorba de stilul de programare:|
pot aparea confuzii
Zii tu shocker  Straight face cum mi ai zis si mie
Memorat
Shocker
*

Deconectat Deconectat

Mesaje: 410

WWW
IsDebuggerPresent, Iul 22, 2007, 13:43

Vladii, tu gandesti ceva de genul: IF x THEN y ELSE z.
In ASM NU exista asa ceva.
Spre exemplu: [intructiunile beep si die sunt doar pentru a nu ma chinui sa scriu ceva complicat]
Cod:

IF EAX=1 THEN beep ELSE die

in ASM:
Cod:

CMP EAX, 1
JE @X ;IF EAX=1 atunci sari la BEEP
die   ;altfel continua executia normala a programului
@X
beep


Tu te-ai gandit ca ar fi ceva de genul:
Cod:

CMP EAX, 1
JE @X    ;IF EAX=1 atunci sari la BEEP
JNE @Y   ;altfel continua executia. IF EAX NU este egal cu 1 atunci sari la @Y
@Y:
die
@X
beep

ceea ce e total reduntant. La JNE @Y: e buba. Cand a ajuns cu executia programului la JNE @Y inseamna ca nu a sarit la JE @X.
Asa... dar de ce sa mai pui JNE @Y cand @Y este imediat sub JNE @Y. Deci ori ca se executa jumpul de la JNE, ori ca nu, el tot va executa @Y [in cazul in care nu s-a executat jumpul JE @X]
Memorat


Just wake me up when everything's less overwhelming..., btw ShockingSoft is back !
Freakz only
Comics of the day
vladiii
*

Deconectat Deconectat

Mesaje: 166

IsDebuggerPresent, Iul 22, 2007, 16:04

Da Shocker, acum am inteles! Thanks
Memorat

SkullAds
Ecspert
ReclAmator
* * * * *
Google AdSense

Gen: Bărbat
Mesaje: Multe

Reclama AdSense,
 

 
   


Pagini: [1]
  Imprimă  
 
Schimbă forumul:  

Ethical hacking and programming community
Powered by SMF 1.1.7 | SMF © 2006-2008, Simple Machines LLC
Traducerea în limba română © 2006-2007 www.smf.ro