Réponse acceptée !
salut,
pour proteger un programme, il faut savoir comment le cracker.
pour cacher une chaine, on peut l'inclure directement dans le code:
maProc PROC p1:DWORD;... ;jmp @F ; azUser32 db "user32.dll",0,0 ; chaines a "xorer" suivant le code + bas ; azMsgBox db "MessageBoxA",0 ; azMsg db "chaine inclue dans le code",0 ;@@: lea edx,azUser32 xor [edx],0AAAAAAAAh xor [edx+4],055555555h xor [edx+8],0AAAAAAAAh invoke GetModuleHandle,edx and eax,eax lea edx,azMsgBox je sortie xor [edx],0AAAAAAAAh xor [edx+4],055555555h xor [edx+8],0AAAAAAAAh invoke GetProcAddress, eax,edx and eax,eax lea edx,azMsg push MB_OKCANCEL push 0 ; par defaut, windows affichera "Erreur" push edx push 0 je sortie xor [edx],0AAAAAAAAh ... call eax lea esp,[esp+4*4] ; optionnel si leave sortie: ret azUser32 db "user32.dll",0,0 ; chaines a "xorer" suivant le code + haut azMsgBox db "MessageBoxA",0 azMsg db "chaines inclues dans le code",0 maProc ENDP
un bpx avec softice sur MessageBoxA donnera toujours ce qu'on veut.
autrement que de chercher a faire une solution anti-debugger, on peut aussi commencer a emuler le debut du code de la fonction MessageBoxA et sauter a une adresse inferieure.
comme un bpx sur l'ensemble du code de la fonction permettra tj de nous reperer, on peut faire de meme avec createwindowsex ou autres...
on peut aussi inclure du code dans une exception. ( div 0, ou GPF )
@++
|