1. Trang chủ
  2. » Công Nghệ Thông Tin

Cracker Handbook 1.0 part 244 pps

6 105 1

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 6
Dung lượng 129,82 KB

Nội dung

push hInst pop wc.hInstance mov wc.hbrBackground,COLOR_BTNFACE+1 mov wc.lpszMenuName,IDM_MENU 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 CreateDialogParam,hInstance,IDD_DIALOG,NULL,addr WndProc,NULL 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 WinMain endp WndProc proc hWin:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM mov eax,uMsg .if eax==WM_INITDIALOG push hWin pop hWnd .elseif eax==WM_COMMAND mov eax,wParam and eax,0FFFFh .if eax==IDM_FILE_EXIT invoke SendMessage,hWin,WM_CLOSE,0,0 .elseif eax==IDM_HELP_ABOUT invoke ShellAbout,hWin,addr AppName,addr AboutMsg,NULL .endif ; .elseif eax==WM_SIZE .elseif eax==WM_CLOSE invoke DestroyWindow,hWin .elseif uMsg==WM_DESTROY invoke PostQuitMessage,NULL .else invoke DefWindowProc,hWin,uMsg,wParam,lParam ret .endif xor eax,eax ret WndProc endp end start Để nhúng nhạc vào Delphi bạn cần sử dụng thư viện MMSystem.dcu trong phần khai báo của main form! Sau đó bạn mở một trình soạn thảo tạo một file keygenmusic.rc có nội dung: KeygenMusic Wave "LoveStory.wav" Sau đó chép file brcc32.exe,rw32core.dll trong thư mục bin của Delphi, chạy dòng lệnh : C:\keygen\brcc32.exe keygenmusic.rc để biên dịch ra file .RES Tiếp đó chép dòng {$R keygenmusic.RES} vào sau dòng {$R *.dfm} Trong thủ tục form load! Bạn chèn dòng này vào PlaySound(PChar('KeygenMusic'), hInstance,snd_Sync or snd_Resource); Enjoy! Hacnho(REA) How to keygen Ap PDF Stamp Quote: Soft: Ap PDF Stamp 2.2.0 HomePage: http://www.adultpdf.com Protection: ASPack 2.12 -> Alexey Solodovnikov Tools: OllyDbg 1.10; Peid 0.93; AspackDie 1.41 Cracker: Ha Viet Hung (hvh0904) Tôi chỉ là một tay gà mờ trong lĩnh vực Assembler nhưng hehe, lại có soft nó có cơ chế tạo key quá gà nên tôi cũng đành phải KeyGen nó. OK. Bắt tay vào làm thịt thằng này (Các soft trong cùng trang này làm tương tự): Chạy thử thấy nó bắn nag đòi đăng ký. Đăng ký thử bằng your mail và điền số bạn thích, nó bắn nag báo lỗi. Nhận thấy cái này rất giống MessageBox. OK. Thoát. Dùng Peid kiểm tra thấy soft này được pack bằng ASPack 2.12 -> Alexey Solodovnikov. Tiến hành unpack bằng tay hoặc dùng AspackDie để unpack nó. Ở đây tôi dùng AspackDie cho nhanh. Chạy thử file unpacked thấy nó hoạt động tốt. Vậy là xong công việc chuẩn bị. Load file đã unpack lên bằng OllyDbg. Như lúc đầu ta đã nhận xét là chương trình sử dụng hàm MessageBox để bắn thông báo lỗi. Do đó RightClick chọn Search for > All intermodular calls. Một bảng liệt kê hiện ra, tìm hàm MessageBoxA và RightClick chọn "Set breakpoint on every call to MessageBoxA".Xong, nhấn F9 để run. Trong quá trình run có thể có lỗi Exception. Cứ nhấn Shift-F9 cho đến khi chương trình run hoàn toàn. Điền YourMail và SerialNumber bạn thích vào phần đăng ký. Ở đây tôi điền: E-mail: hbb506ilikeuhehe@yahoo.com.vn; SerialNumber: 09041984-05061985.Nhấn OK, Olly dừng tại hàm MessageBoxA: Code: 00410DFF |. E8 50A60E00 CALL unpacked.004FB454 00410E04 |. 50 PUSH EAX ; |hOwner 00410E05 |. E8 E6021600 CALL <JMP.&USER32.MessageBoxA> >Dừng tại đây 00410E0A |. FF4F 1C DEC DWORD PTR DS:[EDI+1C] 00410E0D |. 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8] Kéo lên phía trên một chút thấy lệnh nhảy có điều kiện qua hàm MessageBox này: Code: 00410DB4 |> 8D56 1E LEA EDX,DWORD PTR DS:[ESI+1E] 00410DB7 |> 8BC3 MOV EAX,EBX 00410DB9 |. E8 FE070000 CALL unpacked.004115BC 00410DBE |. 84C0 TEST AL,AL 00410DC0 |. 75 76 JNZ SHORT unpacked.00410E38 >nhảy qua nag báo lỗi. 00410DC2 |. 66:C747 10 2C0>MOV WORD PTR DS:[EDI+10],2C 00410DC8 |. 8D56 1F LEA EDX,DWORD PTR DS:[ESI+1F] phía trên lệnh nhảy này có một hàm call, đây là hàm check serial. Lệnh nhảy sẽ được thực thi nếu AL=1. Do đó, nếu thông tin đăng ký đúng hàm này sẽ trả về AL=1 ngược lại AL=0. Lần lên đầu đoạn này tại 00410D30 và set breakpoint tại đó. Code: 00410D2F 90 NOP 00410D30 /. 55 PUSH EBP >breakpoint here 00410D31 |. 8BEC MOV EBP,ESP 00410D33 |. 83C4 B8 ADD ESP,-48 00410D36 |. 53 PUSH EBX Xong nhấn F9 để run, nhấn OK và nhấn OK lần nữa để đăng ký lại. Olly sẽ dừng tại 00410D30. Dùng F8 trace cho đến hàm call đã nói ở trên (00410DB9). Nhấn F7 để vào hàm ta sẽ ở đây: Code: 004115BC /$ 56 PUSH ESI 004115BD |. 8BF2 MOV ESI,EDX 004115BF |. 85F6 TEST ESI,ESI 004115C1 |. 75 04 JNZ SHORT unpacked.004115C7 004115C3 |. 33C0 XOR EAX,EAX 004115C5 |. 5E POP ESI 004115C6 |. C3 RETN ESI chứa chuỗi Serial mà chúng ta đã điền. Nếu chuỗi này rỗng, lệnh nhảy sẽ không thực hiện và sẽ XOR EAX,EAX (AL=0) rồi quay về. Vì đã điền Serial nên sẽ nhảy đến đoạn này: Code: 004115C7 |> 803E 00 CMP BYTE PTR DS:[ESI],0 004115CA |. 75 04 JNZ SHORT unpacked.004115D0 004115CC |. 33C0 XOR EAX,EAX 004115CE |. 5E POP ESI 004115CF |. C3 RETN Ở đây sẽ kiểm tra ký tự đầu có phải là ký tự NUL không. Nếu phải thì XOR EAX,EAX (AL=0) và quay về. Ký tự đầu của tôi là 0 (30) nên sẽ nhảy đến: Code: 004115D0 |> 56 PUSH ESI 004115D1 |. E8 26BE1300 CALL unpacked.0054D3FC 004115D6 |. 59 POP ECX 004115D7 |. 83F8 10 CMP EAX,10 004115DA |. 74 04 JE SHORT unpacked.004115E0 004115DC |. 33C0 XOR EAX,EAX 004115DE |. 5E POP ESI 004115DF |. C3 RETN Ở đây so sánh chiều dài chuỗi Serial của chúng ta với 10 (hệ 16) tức là 16 (hệ 10). Nếu không bằng thì XOR EAX,EAX (AL=0). Vì ở đây số Serial của tôi là 17 (hệ 10) tức là 11 (hệ 16) nên sẽ không nhảy. Các bạn có thể nhấn F9 rồi đăng ký lại với số ký tự là 16 và lại lần vào lệnh call cho chắc ăn nhưng trong trường hợp này là không cần thiết. Tại sao? Vì cơ chế tạo key của chương trình này quá gà mà. hehe. Mặc dù nó không nhảy nhưng tôi cứ patch cho nó nhảy. Đổi 74 tại 004115DA thành EB và chúng ta sẽ nhảy đến đây: Code: 004115E0 |> 33D2 XOR EDX,EDX 004115E2 |. 8BC6 MOV EAX,ESI 004115E4 |> 0FBE08 /MOVSX ECX,BYTE PTR DS:[EAX] 004115E7 |. 83F9 41 |CMP ECX,41 004115EA |. 7C 05 |JL SHORT unpacked.004115F1 >NOP lệnh này lại. 004115EC |. 83F9 5A |CMP ECX,5A 004115EF |. 7E 04 |JLE SHORT unpacked.004115F5 >JMP lệnh này. 004115F1 |> 33C0 |XOR EAX,EAX 004115F3 |. 5E |POP ESI 004115F4 |. C3 |RETN 004115F5 |> 42 |INC EDX 004115F6 |. 40 |INC EAX 004115F7 |. 83FA 10 |CMP EDX,10 004115FA |.^7C E8 \JL SHORT unpacked.004115E4 Từ 004115E4 đến 004115FA là vòng lặp trong đó ta thấy có lệnh XOR EAX,EAX. Chắc các bạn cũng đã biết là chúng ta phải tránh nó rồi. Vòng lặp này sẽ đưa từng ký tự trong chuỗi SerialNumber vào để kiểm tra và buộc chúng phải nằm trong đoạn [41 5A] tức là [A Z]. Nếu các ký tự của các bạn không thỏa mãn điều kiện của nó thì các bạn cứ patch cho nó thỏa mãn. Cụ thể ở đây là patch lệnh nhảy JL và lệnh nhảy JLE. Miễn sao nó nhảy qua lệnh XOR EAX,EAX. Kiểm tra xem đã hết 16 ký tự chưa. Nếu đã hết thì thực hiện tiếp: Code: . 33C0 |XOR EAX,EAX 00 411 5F3 |. 5E |POP ESI 00 411 5F4 |. C3 |RETN 00 411 5F5 |> 42 |INC EDX 00 411 5F6 |. 40 |INC EAX 00 411 5F7 |. 83FA 10 |CMP EDX , 10 00 411 5FA |.^7C E8 JL SHORT unpacked .00 411 5E4. này: Code: 00 4 10 DB4 |> 8D56 1E LEA EDX,DWORD PTR DS:[ESI+1E] 00 4 10 DB7 |> 8BC3 MOV EAX,EBX 00 4 10 DB9 |. E8 FE0 700 00 CALL unpacked .00 411 5BC 00 4 10 DBE |. 84C0 TEST AL,AL 00 4 10 DC0 |. 75 76. đến đoạn này: Code: 00 411 5C7 |> 803 E 00 CMP BYTE PTR DS:[ESI] ,0 00 411 5CA |. 75 04 JNZ SHORT unpacked .00 411 5D0 00 411 5CC |. 33C0 XOR EAX,EAX 00 411 5CE |. 5E POP ESI 00 411 5CF |. C3 RETN Ở

Ngày đăng: 03/07/2014, 17:21

TỪ KHÓA LIÊN QUAN