RE: Asm-Crackme#1 By Predator
Dark_Bunny91: si è tutto codato in assembler.
Whievel: tutte le stringhe "Crackme!","Hey, crackme!","Good work reverser
" sono ovviamente contenute nel crackme.
modificare la scritta "Hey, crackme" (come anche tu evidenzi) è come barare in un software e scrive "ok registrato" ma poi non lo è. Anche se non credo sia possibile perchè "hey, crackme!" è piu' corto di "Good work reverser
"
come sicuramente sai in assembler le stringhe vengono richiamate con ADDR 'indirizzo della stringa'
pertanto prima della SetDlgItemTextA viene pushato l'indirizzo ma io l'ho fatto calcolato e non costante, per rendere leggermente piu' difficile la cosa,
infatti in primo luogo è "CrackMe", poi quando premi il tasto cambia in "Hey crackme".
trovare l'indirizzo a cui puntano le stringhe è estremamente facile, la difficoltàsta altrove ma te ne accorgerai solo dopo aver salvato il file modificato ed averlo provato
cmq il crackme ha una piccola sopresa, che non credo hai ancora scoperto
L'assembler è un linguaggio fantastico codice limpido e chiaro, fate conto che ho pure piazzato una icona, ha l'interfaccia grafica ed è solo 6.5 kb, un codice identico scritto in VB (apparte che non sarebbe possibile) sarebbe minimo 45 kb in VC++ 25Kb
Update:
Ctrl_alt_canc: grazie ma penso sia un livello 2 su 10 forse un 3.
con l'assembler puoi scrivere l'interfaccia senza res, in una trentinadi righe di codice.
Giusto per dare maggiore risposta a ctrl e bunny il codice seguente genera una semplice finestra
LOCAL wc:WNDCLASSEX
LOCAL msg:MSG
LOCAL hwnd:HWND
mov wc.cbSize,SIZEOF WNDCLASSEX
mov wc.style, CS_HREDRAW or CS_VREDRAW
mov wc.lpfnWndProc, OFFSET WndProc
mov wc.cbClsExtra,NULL
mov wc.cbWndExtra,NULL
push hInst
pop wc.hInstance
mov wc.hbrBackground,COLOR_WINDOW+1
mov wc.lpszMenuName,NULL
mov wc.lpszClassName,OFFSET ClassName
invoke LoadIcon,NULL,IDI_APPLICATION
mov wc.hIcon,eax
mov wc.hIconSm,eax
invoke LoadCursor,NULL,IDC_ARROW
mov wc.hCursor,eax
invoke RegisterClassEx, addr wc
invoke CreateWindowEx,NULL,ADDR ClassName,ADDR AppName,\
WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\
CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL,NULL,\
hInst,NULL
mov hwnd,eax
invoke ShowWindow, hwnd,SW_SHOWNORMAL
invoke UpdateWindow, hwnd
.WHILE TRUE
invoke GetMessage, ADDR msg,NULL,0,0
.BREAK .IF (!eax)
invoke TranslateMessage, ADDR msg
invoke DispatchMessage, ADDR msg
.ENDW
mov eax,msg.wParam
ret