banner

[Rule] Rules  [Home] Main Forum  [Portal] Portal  
[Members] Member Listing  [Statistics] Statistics  [Search] Search  [Reading Room] Reading Room 
[Register] Register  
[Login] Loginhttp  | https  ]
 
Forum Index Thủ thuật reverse engineering Splish_HardCoded_KeygenMe  XML
  [Question]   Splish_HardCoded_KeygenMe 28/04/2009 00:21:35 (+0700) | #1 | 178703
so61pi
Member

[Minus]    0    [Plus]
Joined: 05/03/2009 22:24:36
Messages: 26
Location: nowhere
Offline
[Profile] [PM] [Yahoo!]
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. smilie

Công việc là Disable Splash Screen, tìm Hard Coded, Keygen. Chúng ta sẽ đi lần lượt. smilie
*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 smilie . 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 smilie . 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.
[Up] [Print Copy]
  [Question]   Re: Splish_HardCoded_KeygenMe 28/04/2009 23:05:00 (+0700) | #2 | 178819
so61pi
Member

[Minus]    0    [Plus]
Joined: 05/03/2009 22:24:36
Messages: 26
Location: nowhere
Offline
[Profile] [PM] [Yahoo!]
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 smilie .
Thử lại xem, "Congratulations, you got the hard coded serial". smilie
Vậy là xong phần Hard Coded.
[Up] [Print Copy]
[digg] [delicious] [google] [yahoo] [technorati] [reddit] [stumbleupon]
Go to: 
 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|