Главная » Статьи » Крэкинг |
Сегодня наша задача состоит в том, чтобы вычислить алгоритм генерации года, а затем написать keygen для этой проги. Имеем : target : Alteros Viewer v2.0 (build 2007) Ну что, поехали потихонечку…. _____________cut here________________ По адресу - :004B1A1D идёт процедура, которая складывает ASCII код
каждого символа нашего имени, и возвращает общую сумму… Далее
получившееся число( у меня 404h) умножается на 207h(h - hex) и
прибавляется 21CFEh, а уже потом сравнивает получившееся значение с
числом, введёным нами, в 16-ричном исчислении. Если хотите узнать код
соответствующий вашему имени, просто переведите число из esi в
10-ричную систему исчисления, и получите ваш код…
Теперь наша задача заключается в том, чтобы написать keygen на ассемблере. Не буду всё подробно описывать, а просто дам исходники : ____________begin of keygen.asm__________ ..486 ..model flat, stdcall option casemap :none include masm32includewindows.inc include masm32includeuser32.inc include masm32includekernel32.inc include masm32includegdi32.inc include masm32includemasm32.inc includelib masm32libuser32.lib includelib masm32libkernel32.lib includelib masm32libgdi32.lib includelib masm32libmasm32.lib szText Macro Name, Text:VARARG LOCAL lbl jmp lbl Name db Text,0 lbl: ENDM WndProc PROTO :DWORD, :DWORD, :DWORD, :DWORD Edit1Proc PROTO :DWORD, :DWORD, :DWORD, :DWORD ..data w1 db " TSRh | TeaM",13,10 db "-<->- Proudly Presents -<->-",13,10,13,10 db " KeygeN FoR :",13,10 db "Alteros Viewer v2.0 (build 2007)",13,10,13,10 db "(c)2001 by EGOiST[TSRh]",13,10 db "Web : http://www.ego1st.cjb.net/",13,10 db "Mail : egoist_tsrh@rbcmail.ru",0 w2 db "About...",0 a db "Hey!",0 b db "Did you forgot something?",0 b1 db "String must be 10 symbols long!",0 hWnd dd 0 hEdit1 dd 0 hEdit2 dd 0 hButn1 dd 0 hButn2 dd 0 hButn3 dd 0 hInstance dd 0 hIcon dd 0 lpfnEdit1Proc dd 0 dlgname db "TESTWIN",0 fMtStrinG db "%lu",0 ..code start: invoke GetModuleHandle, NULL mov hInstance, eax invoke DialogBoxParam, hInstance, ADDR dlgname,0,ADDR WndProc,0 invoke ExitProcess,eax WndProc proc hWin :DWORD, uMsg :DWORD, wParam :DWORD, lParam :DWORD LOCAL Lon :DWORD LOCAL SerB[64] :BYTE LOCAL NameB[64] :BYTE pusha ..if uMsg == WM_INITDIALOG mov eax, hWin mov hWnd, eax szText dlgTitle,"KeygeN FoR Alteros Viewer v2.0 (build 2007)" invoke SendMessage,hWin,WM_SETTEXT,0,ADDR dlgTitle invoke LoadIcon,hInstance,200 mov hIcon, eax invoke SendMessage,hWin,WM_SETICON,1,hIcon invoke GetDlgItem,hWin,100 mov hEdit1, eax invoke SetWindowLong,hEdit1,GWL_WNDPROC,Edit1Proc mov lpfnEdit1Proc, eax invoke GetDlgItem,hWin,101 mov hEdit2, eax invoke GetDlgItem,hWin,1000 mov hButn1, eax invoke GetDlgItem,hWin,1001 mov hButn2, eax invoke GetDlgItem,hWin,1002 mov hButn3, eax ..elseif uMsg == WM_COMMAND ..if wParam == 1002 invoke MessageBox,0,ADDR w1,ADDR w2,MB_OK ..endif ..if wParam == 1000 ;--------------GENERATOR begin------------------ invoke GetWindowText,hEdit1,ADDR NameB,40 ;EditBox1 text puting in NameB lea eax,NameB xor esi,esi xor edx,edx _gen: cmp byte ptr[eax],00 jz _endgen mov dl,byte ptr[eax] inc eax add esi,edx jmp _gen _endgen: imul esi,esi,207h add esi,21CFEh mov Lon,esi invoke dwtoa,Lon,ADDR SerB ;----------------GENERATOR end------------------------ jmp _cool _cool: invoke SetWindowText,hEdit2,ADDR SerB jmp _end _short: invoke MessageBox,0,ADDR b,ADDR a,MB_OK _end: ..elseif wParam == 1001 jmp GetOutaHere ..endif ..elseif uMsg == WM_CLOSE GetOutaHere: invoke EndDialog,hWnd,0 ..endif popa xor eax, eax ret WndProc endp Edit1Proc proc hCtl :DWORD, uMsg :DWORD, wParam :DWORD, lParam :DWORD LOCAL tl:DWORD LOCAL testBuffer[16]:BYTE ..if uMsg == WM_CHAR ..if wParam == 8 jmp @F ..endif invoke GetWindowText,hCtl,ADDR testBuffer,16 invoke lnstr,ADDR testBuffer ..if eax >=100 ;Not min 100 symbols xor eax, eax ret ..endif @@: ..endif invoke CallWindowProc,lpfnEdit1Proc,hCtl,uMsg,wParam,lParam ret Edit1Proc endp end start ___________end of keygen.asm_____________ И ещё, естественно, файл с окошками и кнопками: __________begin of rsrc.rc_________________ #include "masm32includeresource.h" TESTWIN DIALOGEX MOVEABLE IMPURE LOADONCALL DISCARDABLE 10, 10, 146, 52, 0 STYLE 0X0004 | DS_CENTER | WS_CAPTION | WS_SYSMENU | WS_VISIBLE | WS_POPUP EXSTYLE WS_EX_TOOLWINDOW CAPTION "DIALOG" FONT 8, "MS Sans Serif", 700, 0 /*FALSE*/ BEGIN EDITTEXT 100,1,11,90,13, ES_AUTOHSCROLL | ES_MULTILINE EDITTEXT 101,1,26,90,13, ES_AUTOHSCROLL | ES_READONLY CTEXT "Enter your name please :",20,4,1,81,8,SS_LEFT, , 0 CTEXT "(c)2001 by EGOiST[TSRh]",20,0,41,91,9,WS_DISABLED DEFPUSHBUTTON "Gen...", 1000, 96,2,47,15, BS_FLAT DEFPUSHBUTTON "Exit... ", 1001, 96,34,47,15, BS_FLAT DEFPUSHBUTTON "About..." , 1002, 96,18,47,15, BS_FLAT END 200 ICON MOVEABLE PURE LOADONCALL DISCARDABLE "MY.ICO" ____________end of rsrc.rc_________________ Меняете всё на ваше усмотрение… p.s. ну всё это, конечно, for purpose only!!! Writer : EGOiST[TSRh] via http : http://www.ego1st.cjb.net | ||
Просмотров: 1543 | Рейтинг: 0.0/0 |
Всего комментариев: 0 | |