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

Cracker Handbook 1.0 part 244 pps

6 106 1
Tài liệu đã được kiểm tra trùng lặp

Đ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

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

.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 Wnd

Trang 1

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

Trang 2

.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

Trang 3

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

Trang 4

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:

Trang 5

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à

Trang 6

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:

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

TỪ KHÓA LIÊN QUAN