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 Giải quyết cái crackme này sau nhỉ  XML
  [Question]   Giải quyết cái crackme này sau nhỉ 04/09/2009 08:50:49 (+0700) | #1 | 191917
[Avatar]
langtustyle
Member

[Minus]    0    [Plus]
Joined: 02/08/2009 21:26:10
Messages: 4
Location: Trên Núi
Offline
[Profile] [PM] [Yahoo!]
Em có lấy dc cái crackme này nhưng em không thể giải quyết nó mấy anh em giải quyết và chỉ dẫn cụ thể dùm em nha

Link đây nè anh em ơi: http://www.mediafire.com/download.php?oddjntv0zz3
Trịnh_Hoài_Hận_Mobile
Tel: 01692218105 - 0955334814
Mail: langtustyle912@gmail.com
[Up] [Print Copy]
  [Question]   Thêm một cái nữa nè 04/09/2009 10:23:47 (+0700) | #2 | 191928
[Avatar]
langtustyle
Member

[Minus]    0    [Plus]
Joined: 02/08/2009 21:26:10
Messages: 4
Location: Trên Núi
Offline
[Profile] [PM] [Yahoo!]
http://www.mediafire.com/download.php?admn24wwczx
Trịnh_Hoài_Hận_Mobile
Tel: 01692218105 - 0955334814
Mail: langtustyle912@gmail.com
[Up] [Print Copy]
  [Question]   Giải quyết cái crackme này sau nhỉ 01/10/2009 16:16:46 (+0700) | #3 | 194552
quangthiennguyen
Member

[Minus]    0    [Plus]
Joined: 28/09/2009 13:24:42
Messages: 1
Offline
[Profile] [PM]
Tui đã giai quyết xong cái tut một cho bạn rui nè.Tui cũng vừa mới nghiên crack như bạn vì có học asm loại căn bản thui nên cũng hiểu được sơ sơ.

đầu tiên bạn nhập vào một vài kí tự sau đó ok thử thì nó báo dòng badboy tức là bạn đã nhập sai serial rùi .Bạn ghi lại dòng này rùi nhấp phải của sổ CPU>search for>All referenced text string>rùi tìm dòng tẽt hiện ra khi bạn nhập sai và double click vào nó sẽ nhảy đến hàm API mesagebox báo nhập saỉeial ở trên:

/*4011DB*/ PUSH 10
/*4011DD*/ PUSH hackereh.00403068
/*4011E2*/ PUSH hackereh.00403045
/*4011E7*/ PUSH DWORD PTR SS:[EBP+8]
/*4011EA*/ CALL <JMP.&user32.MessageBoxA>

để ý 2 hàm mesagebox phía dưới đọc nội dung ta thấy nó se báo :
nhập serial thành công

/*4011F1*/ PUSH 40
/*4011F3*/ PUSH hackereh.00403068
/*4011F8*/ PUSH hackereh.0040301E
/*4011FD*/ PUSH DWORD PTR SS:[EBP+8]
/*401200*/ CALL <JMP.&user32.MessageBoxA>

và báo bạn nhập không đủ char

/*401207*/ PUSH 30
/*401209*/ PUSH hackereh.00403068
/*40120E*/ PUSH hackereh.00403000
/*401213*/ PUSH DWORD PTR SS:[EBP+8]

Tiếp theo ta sẽ làm gì? Ta sẽ tìm đến lệnh nhảy gọi hàm này.nhấp vào dòng đầu của hàm messagebox báo sai serial sau đó bấm CTR+R chọn dòng dia chì dầu ta sẽ đến

/*40118F*/ MOV EDI,hackereh.00403138//địa chỉ chuỗi kí tự ta nhập vào
/*401194*/ MOVSX EAX,BYTE PTR DS:[EDI]//lấy kí tự đầu tiên của chuỗi
/*401197*/ AND AL,0AD//thực hiện phép logic and với 0AD
/*401199*/ JNZ SHORT hackereh.004011DB//nhảy nếu khác 0(co zero=0)

Từ đây ta suy luận được để không nhảy đến msg sai sẻial thì AND AL,0AD =0.
có nghĩa là AL phải là not 0AD(dùng máy tính để bấm) sau đó ra được mã ASCII của kí tự 52 tức là chữ R. làm tương tự cho các dòng sau

/*40119B*/ MOVSX EAX,BYTE PTR DS:[EDI+1]
/*40119F*/ AND AL,9A
/*4011A1*/ JNZ SHORT hackereh.004011DB
/*4011A3*/ MOVSX EAX,BYTE PTR DS:[EDI+2]
/*4011A7*/ AND AL,97
/*4011A9*/ JNZ SHORT hackereh.004011DB
/*4011AB*/ MOVSX EAX,BYTE PTR DS:[EDI+3]
/*4011AF*/ AND AL,0BF
/*4011B1*/ JNZ SHORT hackereh.004011DB
/*4011B3*/ MOVSX EAX,BYTE PTR DS:[EDI+4]
/*4011B7*/ AND EAX,5FC5
/*4011BC*/ JNZ SHORT hackereh.004011DB
/*4011BE*/ MOVSX EAX,BYTE PTR DS:[EDI+5]
/*4011C2*/ AND EAX,0D6
/*4011C7*/ JNZ SHORT hackereh.004011DB

Lưu ý AND EAX,5FC5.Phía trên là MOVSX EAX,BYTE PTR DS:[EDI+4] lấy một kí tự đưa vào AL của EAX,các byte còn lại của EAX=0.nên lênh AND EAX,5FC5 ta chỉ quan tâm byte thấp C5 thui (nó dùng code này để lừa chúng ta) các byte còn lại không quan tâm vì 1hay0 and với 0 cũng bằng 0.

làm tương tự với các dòng tiếp theo đến đoạn so sánh nhảy đến msg báo sr sai cuối thì thấy nó chỉ so sánh với thanh ghi ecx

/*4011C9*/ CMP ECX,6
/*4011CC*/ JNZ SHORT hackereh.004011DB

nhiệm vụ của nó là gi ?
kéo lên phía trên xem lệnh mov vào ecx ta thấy MOV ECX,EAX
phía trên nữa là hàm GetDlgItemText có thể dò trong msdn hàm này.Ta thấy hàm này có giá trị trả về UINT(4byte) thường nó sẽ lưu trong EAX hay AL
/*401171*/ PUSH 1E
/*401173*/ PUSH hackereh.00403138
/*401178*/ PUSH 3E9
/*40117D*/ PUSH DWORD PTR SS:[EBP+8]
/*401180*/ CALL <JMP.&user32.GetDlgItemTextA>

/*401185*/ TEST AL,AL
/*401187*/ JE SHORT hackereh.00401207
/*401189*/ MOV ECX,EAX

giờ ta đã hiểu
/*4011C9*/ CMP ECX,6
/*4011CC*/ JNZ SHORT hackereh.004011DB
kiểm tra kí tự nhập vào có đủ 6 ko.

Kết quả sẻial cuối cùng tìm được là:
Reh@smilie


[Up] [Print Copy]
  [Question]   Giải quyết cái crackme này sau nhỉ 07/10/2009 08:45:42 (+0700) | #4 | 194941
spin
Member

[Minus]    0    [Plus]
Joined: 07/04/2009 19:58:17
Messages: 8
Offline
[Profile] [PM] [Email]

quangthiennguyen wrote:

....
 

smilie
Trời ơi, nhìn vào muốn loạn thị với đống code asm đó luôn. smilie
[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|