[Question] Splish_HardCoded_KeygenMe |
28/04/2009 00:21:35 (+0700) | #1 | 178703 |
so61pi
Member
|
0 |
|
|
Joined: 05/03/2009 22:24:36
Messages: 26
Location: nowhere
Offline
|
|
Cái này là bài tập bác kienmanowar để trong tut OllyDbg 15.
Bắt đầu nhé.
Đầu tiên, chúng ta chạy Splish thử xem. Một Splash Screen hiện ra, sau đó hiện cửa sổ đòi Hard Coded, Name, Serial.
Nhập đại 1 fake HardCoded (vd: so61pi ) -> Nag "Sorry, please try again."
Tiếp tục thử Name và Serial -> Nag "Sorry, please try again."
Xong bước đầu rồi.
Công việc là Disable Splash Screen, tìm Hard Coded, Keygen. Chúng ta sẽ đi lần lượt.
*Disable Splash Screen:
Load Splish vào Olly, theo ta thấy ban đầu thì có thể chương trình dùng hàm ShowWindow để hiện Splash Screen.
Đặt BreakPoint tại hàm ShowWindow, run thử -> Olly break rồi . Tiếp tục F9, Splash Screen hiện ra vài giây rồi biến mất => vậy có thể bỏ Splash Screen bằng cách bỏ lời gọi hàm ShowWindow. Tìm về nơi gọi hàm
Code:
00401546 |. E8 21020000 CALL <JMP.&USER32.ShowWindow> ; \ShowWindow
fill NOP, sau đó run thử. Hì, Slpash Screen đã không còn . Save để lần sau khỏi phải làm lại.
___
Trễ rồi, lần sau mình sẽ post tiếp phần tìm HardCoded.
Mong mọi người có ý kiến. |
|
|
|
|
[Question] Re: Splish_HardCoded_KeygenMe |
28/04/2009 23:05:00 (+0700) | #2 | 178819 |
so61pi
Member
|
0 |
|
|
Joined: 05/03/2009 22:24:36
Messages: 26
Location: nowhere
Offline
|
|
Ah, nói thêm một tí về hàm ShowWindow. Trong Olly ta thấy như sau:
Code:
0040153E |. 6A 01 PUSH 1 ; /ShowState = SW_SHOWNORMAL
00401540 |. FF35 11324000 PUSH DWORD PTR [403211] ; |hWnd = NULL
00401546 |. E8 21020000 CALL <JMP.&USER32.ShowWindow> ; \ShowWindow
Hàm ShowWindow nhận 2 tham số nên phía trên hàm có 2 lệnh Push, khi thực hiện, hàm sẽ lấy 2 tham số đó ra sử dụng, nếu ta chỉ fill NOP ở lệnh ShowWindow thì Stack không được bảo toàn ( 2 tham số không sử dụng vẫn ở trên Stack ) -> rác Stack. Vì vậy nên fill NOP ở 2 lệnh Push phía trên luôn.
Tạm xong phần Disable Splash Screen ( còn quay lại sau ). Tiếp theo là phần tìm Hard Coded.
*Tìm Hard Coded:
Đặt BreakPoint tại hàm GetWindowTextA, run Splish, điền vào HardCoded bất kì, Check Hardcoded, Olly break tại vị trí sau
Code:
0040136A |. E8 BB030000 CALL <JMP.&USER32.GetWindowTextA> ; \GetWindowTextA
Tiếp tục trace xuống dưới gặp đoạn code
Code:
0040136F |. 8D05 53134000 LEA EAX, DWORD PTR [401353] ; <== Đưa Hard coded vào EAX
00401375 |. 8D1D 15324000 LEA EBX, DWORD PTR [403215] ; <== Đưa chuỗi ta nhập vào EBX
0040137B |> /8038 00 /CMP BYTE PTR [EAX], 0
0040137E |. |74 0C |JE SHORT 0040138C
00401380 |. |8A08 |MOV CL, BYTE PTR [EAX] ; <== Lấy từng kí tự HardCoded vào
00401382 |. |8A13 |MOV DL, BYTE PTR [EBX] ; <== Lấy từng kí tự trong chuỗi của ta
00401384 |. |38D1 |CMP CL, DL ; <== So sánh 2 kí tự
00401386 |. |75 4A |JNZ SHORT 004013D2
00401388 |. |40 |INC EAX
00401389 |. |43 |INC EBX
0040138A |.^\EB EF \JMP SHORT 0040137B
Đoạn code trên có nhiệm vụ so sánh chuỗi ta nhập vào với HardCoded. Ta thấy nó chỉ so sánh trực tiếp mà không qua tính toán nào cả, mà chuỗi Hard coded của nó là "HardCoded", vậy là tìm được Hard coded rồi .
Thử lại xem, "Congratulations, you got the hard coded serial".
Vậy là xong phần Hard Coded. |
|
|
|
|
|
|
|
Users currently in here |
1 Anonymous
|
|
Powered by JForum - Extended by HVAOnline
hvaonline.net | hvaforum.net | hvazone.net | hvanews.net | vnhacker.org
1999 - 2013 ©
v2012|0504|218|
|
|