sweet_cherry_vn

New Member
1. IDM

Phần mềm này quá nổi tiếng rồi, chắc có lẽ mình không nên giới thiệu gì thêm về nó. Có chăng chỉ là 1 chút ít thông tin "ngoài lề" nhưng cần thiết trong quá tŕnh Cr-ack

1. Cr-ack tools

- OllyDBG: Disassembler

- PEiD with plugin Krypto ANAlyzer: scan code.

2. Information software

Cài đặt, run process. Vào phần Help\About Bấm vào nút đăng kí, nhập fake username/code ta thấy bad nag hiển thị


3. Information code

Dùng PEiD scan ta thấy nó code bằng Microsoft Visual C++ 6.0 [Overlay]. Với plugin Krypto ANALyzer, ta lại biết thêm có 4 crypto.


Hờ hờ... Nếu bạn đã từng Cr-ack IDM thì bạn sẽ nhận thấy sự khác biệt về code của chúng ở ngay chỗ này đây. Các phiên bản trước 5.11 build 5 hầu như đều dùng UPX để pack, nhưng hông hiểu sao cái ver này lại không bị pack kiểu đó nữa. Có lẽ các nhà sx phần mềm IDM có chiêu ǵ mới chăng? Cũng chính v́ lẽ đó mà các file patch cũ không sử dụng được cho phiên bản này nữa!

IDM ver 5.11 build 5 này bị "Overlay" và "Crypto". Bạn có thể unpack để làm mất overlay, dùng DeCrypto để làm mất crypto. Nhưng khoan vội hăy làm. Cứ load vào OllyDBG thử xem, bạn vẫn có thể dễ dàng nhận thấy những thông tin quen thuộc! Với những thông tin này, tui lờ mờ đoán rằng không cần unpack và decrypto mà vẫn có thể Cr-ack được nó.

Do đây là soft register và sau đó nó kiểm tra online nên chú ư trong quá tŕnh Cr-ack, chúng ta phải t́m hết những điểm cần thiết để patch (sau khi Cr-ack xong, tui đếm lại có tới 23 điểm!).

4. Phương pháp Cr-ack

- Dùng stack để ṃ offset

- Patch nút register trước, làm cho đăng kí thành công, từ đó suy ra chỗ mà IDM kiểm tra thông tin soft đă được registered hay chưa mỗi khi nó start.

5. Cr-ack it

Target file: IDMan.exe

Tắt IDM (tắt hoàn toàn, không c̣n thấy biểu tượng ở dưới systemtray), load IDMan.exe vào OllyDBG, ta dừng tại EOP


Để dễ dàng theo dõi, tui xin chia ra làm 2 phần. Trước tiên, ta patch "Registration" trước để lấy thông tin (phần 1). Sau đó, dựa trên thông tin của phần 1, ta t́m cách patch để IDM hoàn toàn thuộc về mì́nh (phần 2).

Phần 1 :

Trích:

Phần 1: Registration

Như ta đă phân thấy ở /*phần 2. Information soft */, sau khi nhập fake user/code th́ IDM bắn bad nag. Vậy ta thử t́m xem trong phần referenced text strings của nó có chứa chuỗi này không?

Chuột phải vào khung "code windows", chọn "Search for >> All referenced text strings", cửa sổ [R] bật ra, ta thử t́m chuỗi "You have entered incorrect Serial Number..." ---> không t́m được nó nằm ở đâu cả. Điều này cũng phải thôi v́ code nó có dạng Overlay, nếu bạn unpack cho mất Overlay th́ sẽ thấy chuỗi này. Nhưng thôi, ta c̣n 1 chiêu khác khá hiệu quả để t́m chuỗi, đó là dùng stack. Now! Bây giờ bấm F9 1phát để run process nhé.

Khi OllyDBG run hoàn toàn, vào menu register của IDM nhập fake user/code (với serial =1234567890), sau khi IDM bắn nag ra. Quay trở lại OllyDBG, bấm F12 để tạm dừng chương tŕnh. Bấm tiếp ALT + K để mở stack, ta thấy:


tui đánh dấu 2 khung quan trọng bằng số 1 và số 2. Khung số 2 sử dụng hàm MessageBoxA quen thuộc để hiển thị box nag, nhưng trước đó, tiến tŕnh chuẩn bị cho việc bắn nag ta lại thấy ở khung số 1 (tại address 004A1441) - tại đây, ḍng chữ "You have entered incorrect Serial Number..." đă lấp ló xuất hiện. Nó load vào stack để chuẩn bị cho việc hiển thị nag.

Như vậy, ta phát cho address 004A1441 cái break point xem sao. Bấm kép vào cột "Called from", ḍng tại khung 1, ta được OllyDBG quay về cửa sổ [C], bấm phím F2 để set breakpoint tại điểm này.



Chúng ta cũng chú ư rằng, tại address này có đến 5 chỗ jump đến, tất cả là mă nhăy JMP, có nghĩa là phải có ít nhất 5 trường hợp dẫn đến sai user/code.

Để đón đầu, bây giờ chúng ta set cho mỗi address dẫn đến sai use/code 1 cái breakpoint, và nhớ đặt commnet theo thứ tự như trên để dễ phân biệt. Đồng thời lần lên phía trên vài chục ḍng, set trên đầu PUSH của nó 1 cái breakpoint nữa.



Rồi, bây giờ bấm F9 vài lần để run hoàn toàn, trở lại IDM, bấm tắt bad nag, bấm lại nút OK để đăng kí. OllyDBG ice tại đầu PUSH mà ta vừa set breakpoint phía trên. Tiếp tục bấm F8 để trace cho đến ḍng như h́nh dưới:


Chú ư tại đây nhé, bấm F8 lần nữa, nó nhảy qua 004A1441 - tức là chỗ đă Call nag. Bấm F9 để run luôn, OllyDBG không bị ice tại các chỗ mà ta đă set break point như h́nh 6 (các chỗ mà ta đặt comment- sai user/code (1)..) mà nó chỉ ice tại 004A1441. Như vậy, ta suy đoán "đường dẫn đến khung thành" bắt đầu đâu đó từ đoạn 004A1430 --> 004A1441 cho nên ta đặt breakpoint hết các điểm trong dăy này xem.



Rồi, coi như bạn đă làm theo hướng dẫn, bây giờ bấm F9 để xả nag, xong bấm lại OK để tiếp tục đăng kí, OllyDBG ice tại đầu PUSH, bấm F2 để xoá breakpoint tại điểm này đi (v́ không c̣n cần thiết nữa), tiếp tục bấm F9 cho nó RUN luôn. Ồ, nó ice rồi, ngay tại 004A143E


Địa chỉ này được nhảy đến từ 004A1B4C, mă nhảy JMP. Ta lần đến địa chỉ này xem


Ồ, lần này ta lại thấy rằng, để mă nhảy JMP này có điều kiện thực thi, th́ nó phải bắt nguồn từ 004A1B3F, địa chỉ dịch chuyển chuỗi ASCII "You have entered incorrect Serial Number. Please don't mix 0(zero) and O(ou), I and 1 while typing your S/N! CUT and PASTE your S/N!" từ 00BDADE0 vào EAX, mà tại 004A1B3F ta lại thấy dấu ">", dấu hiệu từ nơi khác jump đến. Nh́n xuống chỗ khoanh tṛn, ta biết được địa chỉ này được jump đến từ 004A153C. Set 2 cái break point như trong h́nh để làm của. Xong nhảy đến vị trí 004A153C xem!



Hờ hờ... Đây là mă nhảy JNZ - thực thi khi sự so sánh ở phía trên (CMP ECX,17) là không thoả điều kiện. tui không cần biết CMP nó so sánh cái ǵ mà chỉ cần biết rằng một khi JNZ thực thi th́ nó sẽ nhảy đến nag thông báo sái user/code!

Như vậy, để vô hiệu hoá mă nhảy này, có nghĩa là cho dù kết quả so sánh CMP như thế nào đi chăng nữa th́ cũng chỉ có 1 con đường để đi qua, th́ không ǵ hay hơn hết, chúng ta edit lệnh JNZ thành NOP (bằng cách đặt thanh sáng xẩm tại vị trí đó, ấn phím space, ghi vào NOP).

Lệnh JNZ trên có 6 byte, nên sau khi NOP ta thấy có 6 byte (hex=90) sinh ra. Sau khi NOP xong, nhớ set 1 breakpoint tại address NOP đầu tiên.

Rồi, bây giờ bấm F9 vài lần và xả nag. Bấm lại OK của IDM để đăng kí, chúng ta thấy nó ice tại chỗ vừa set breakpoint.



Bấm F9 để tiếp tục. Oh, bây giờ nó lại ice tại vị trí 004A16AB có comment "Sai user/code (1)" ở h́nh 06 trên


Lần lên phía trên, ngay vị trí 004A169A có dấu ">" nơi khác jump đến, ta cũng thấy 1 chuỗi quen thuộc. Nếu ṭ ṃ, bạn có thể chuột phải tại vị trí này, chọn "Find referenced to >> Address constant", bạn sẽ thấy có khoảng 8 chỗ chứa địa chỉ này (lúc đầu tui suy đoán có ít nhất là 5 chỗ dẫn đến sai user/code như h́nh 6, bây giờ bạn đă thấy được điều đó là đúng). OK, cái này để bạn "ngâm kíu" sau, c̣n mục đích của tui là chỉ cần "đăng kí được" để lấy thông tin làm cơ sở patch.

Trở lại tiến tŕnh, theo kinh nghiệm ứng dụng vào trường hợp này th́ chúng ta nên set 2 cái break point. 1 cái tại dấu ">" c̣n 1 cái th́ phía trên nó (bạn làm như trong h́nh nhé). Mục đích của việc này là để xem có phải IDM so sánh từ nơi khác và từ nơi khác này nhảy đến báo hịêu sai user/code, hay là nó debug thẳng !?

Rồi, bây giờ bấm F9 vài lần để xả nag. Xong bấm lại OK của IDM để tiếp tục đăng kí. OllyDBG ice tại vị trí NOP phía trên, bấm bỏ break point tại vị trí NOP này đi. Bấm tiếp F9 để run. Oh, OllyDBG ice tại vị trí 4A169A, vị trí được jump từ nơi khác đến. Theo h́nh trên, vị trí này được jump từ address 004A1683. Ta nhảy đến đó xem! Vị trí này cũng gần ở đó.



Đoạn lệnh tui bôi đen phía trên sẽ so sánh chiều dài chuỗi serial mà bạn đă nhập vào. Nếu chiều dài chuỗi <23 kí tự, lập tức lệnh JE sẽ thực thi và nhảy đến bad nag. Ngược lại th́ lệnh này không thực thi. Như vậy, ta cũng NOP lệnh này để "con đường nào cũng qui về 1 mối" luôn (hay nếu bạn không muốn NOP, th́ nên nhập serial ít nhất có 23 kí tự số). OK!, tui xem như bạn đă NOP lệnh này. Bây giờ bấm F9 vài lần để xả bad nag. Xong bấm OK của IDM để đăng kư lại.

Rồi..., OllyDBG đă ice tại 00A1698, tại lệnh nhảy JE. Nếu lệnh này thực thi th́ nó sẽ nhảy qua khỏi address 004A16AB - address chứa thông báo sai user/code. Vậy điều ǵ sẽ xảy ra nếu lệnh này không thực thi ? Cho nên để chắc ăn, chúng ta edit lại lệnh này thành JMP cho nó luôn nhảy bất kể kết quả so sánh thế nào.



Sau khi edit xong, bấm F9 run nó để xem kết quả thế nào ?



Olàla... OllyDBG lại 1 lần nữa ice tại address 004A1722 - address chứa comment "sai username (2)" của h́nh 06 - chứa string của bad nag. Lần lên vị trí 004A1711 cách vị trí ice vài ḍng, ta thấy có dấu hiệu ">" nơi khác jump đến. Cụ thể là tại 2 vị trí 004A1704, 004A1708. Ta set 2 cái breakpoint cho 2 vị trí này. Xong ấn F9 vài lần để xả bad nag và ấn OK của IDM để đăng kí lại, OllyDBG ice tại vị trí JMP mà ta vừa edit, ấn tiếp F9 ta thấy nó ice tại 004A1704 trong h́nh trên.



Tại đây, ta thấy sẽ có 3 trường hợp xảy ra đều dẫn đến sự xuất hiện của bad nag:

- 1. Nếu JNZ tại 004A1704 thực thi --> Bad nag.

- 2. Vượt qua cửa ải 1 trên, nếu JE tại 004A1708 thực thi --> Bad nag.

- 3. Vượt qua 2 cửa ải trên, nếu JE tại 004A170F không thực thi --> Bad nag.

Như vậy, nếu ta NOP lệnh JNZ tại 004A1704, NOP lệnh JE tại 004A1708, edit JE tại 004A170F thành JMP 004A1727 th́ sẽ nhảy qua address chứa bad nag. Thế nhưng, làm vậy th́ dài ḍng quá, tại sao ta không edit lệnh JNZ tại 004A1704 thành JMP 004A1727 luôn cho rồi ?!



Sau khi edit xong. Bấm F8 để trace, nó nhảy đến 004A1727, nếu trace tiếp tục th́ ta sẽ thấy nó sẽ thao tác "cái ǵ đó trong "HKEY_LOCAL_MACHINE\SOFTWARE\Internet Download Manager". Thôi nhiêu đó cũng được, bây giờ bấm F9 để tiếp tục RUN thử xem.... Hàhà... Đăng kí thành công rồi.



Nó không thông báo "Thank you..." hay ǵ ǵ đó. Nhưng ngược lại, vào giao diện của IDM bấm nút "Registration" th́ thấy nó đă mờ đi. Mở About lên th́ phần about này đă khác hẳn ở các chỗ mà tui đă khoanh tṛn trong h́nh 1.

OK, bây giờ ta save lại kết quả. Bấm chuột phải trong khung "code window", chọn "Copy to executable >> All modifications >> Copy all", cửa sổ [D] xuất hiện, tắt cửa sổ này đi, OllyDBG hỏi có lưu lại thay đổi không, bấm YES và lưu lại với tên file là IDMan_Patch.exe nằm trong cùng thư mục cài đặt IDM.

Sau khi lưu xong, bấm CTRL +F2 để restart lại. Mở thư mục cài IDM lên, chạy file IDMan_Patch.exe thử xem! Vẫn là chưa đăng kí. Như vậy ta có cái nh́n sơ bộ về IDM. Nó kiểm tra xem soft đă được đăng kí hay chưa khi start.

Tóm lại, trong phần đăng kí này ta patch 4 điểm:

004A153C 0F85 FD050000 JNZ IDMan.004A1B3F

---> Nop 6byte

004A1683 74 15 JE SHORT IDMan.004A169A

---> Nop 2byte

004A1698 74 16 JE SHORT IDMan.004A16B0

---->004A1698 EB 16 JMP SHORT IDMan.004A16B0

004A1704 75 0B JNZ SHORT IDMan.004A1711

---> 004A1704 EB 21 JMP SHORT IDMan.004A1727

Phần 2 :

Trích:

Phần 2: Patch with information registration

Theo thông tin nhận được từ phần 1, ở h́nh 19. Khi ta đăng kí xong th́ IDM "làm cái ǵ đó" trong "HKEY_LOCAL_MACHINE\SOFTWARE\Internet Download Manager". Vậy bây giờ ta thử mở registry theo nhánh đó lên xem.



Oh, th́ ra nó lưu trữ thông tin đăng kí trong đây. Thế th́ tại sao chúng ta không lần theo dấu vết này để patch? Có thể đây chính là tử huyệt của IDM lắm chứ.

OK! Tắt Regedit đi, trở lại OllyDBG, bấm CTRL + F2 để restart IDM. Chuột phải vào code window, chọn "Search for >> All referenced text strings", cửa sổ [R] bật ra, ta thử t́m chuỗi "HKEY_LOCAL_MACHINE\SOFTWARE\Internet Download Manager" xem nó có xuất hiện đâu không. Sau đó set BreakPoint tại tất cả các chỗ vừa t́m được (tui t́m được khoảng 10 chỗ có chuỗi này).

Bấm 1 phát phím F9 để RUN. Lập tức OllyDBG ice tại 00423B2F:



tui đặt comment cho nó là +1. Bấm F9 1 phát nữa, IDM run hoàn toàn! Quái lạ, vậy c̣n khoảng 9 chỗ chứa chuỗi trên nó sử dụng vào đâu ? Sau khi xem xét, tui thấy có 2 chỗ dùng để sử dụng cho phần About và Registration. Như vậy, ít ra th́ c̣n 7 chỗ nữa.

Thôi, bây giờ chịu khó bấm CTRL + F2 để restart lại, bấm F9 để run cho nó ice tại 00423B2F trên. Ta sẽ xem xét đường đi nước bước của nó. Trace vài ḍng, ta xuống tới đây (điều kiện để xuống tới đây: Bạn phải đăng kí thành công trong phần 1. Tức là trong registry của bạn xuất hiện nhánh như h́nh registry editor trên).



Bạn tự phân tích đoạn code trên nhé, những chỗ mà tui set BreakPoint, tui sẽ edit chúng lại thành NOP để cho nó không thực thi nữa.

Tiếp tục:



Tiếp tục trace thêm 1 đoạn nữa, bạn sẽ tới đây


Tại BreakPoint h́nh trên, lệnh JNZ sẽ kiểm tra xem thời hạn sử dụng miễn phí đă hết chưa, nếu chưa hết th́ bỏ qua. C̣n đă hết rồi th́ sẽ nhảy đến nag trial. Như vậy, ta NOP luôn lệnh này cho chắc ăn.

Tới đây, xem xét trước sau không thấy đoạn mă nào quan trọng nữa. Thôi th́ ấn F9 1phát để xem sao... Wao!... Nó ice tại string "SOFTWARE\Internet Download Manager" rồi. tui đặt comment tại điểm này là +2 nhé.



Ấn F8 để trace xuống 1 đoạn. Ta cũng bắt gặp các đoạn mă quen thuộc


Nhớ làm theo comment tại mỗi breakpoint nhé. NOP mấy chỗ đó.


Cuối cùng ta cũng bắt gặp đoạn lệnh kiểm tra thời hạn sử dụng. NOP luôn chỗ này.

Sau khi edit xong các chỗ, xem xét tới lui thấy không c̣n ǵ quan trọng nữa. Ấn F9 1 phát. OllyDBG lại ice thêm vài chỗ tại các string "SOFTWARE\Internet Download Manager". Các điểm này cũng không thấy ǵ khả nghi nên tui tiếp tục ấn F9 để thử lướt qua luôn. Cuối cùng là ... Hàhà... bạn cứ thử xem.

Tóm lại, phần này ta patch các điểm:

----------> Từ address 00423B2F: ASCII "SOFTWARE\Internet Download Manager" <-------------

00423C2E 75 28 JNZ SHORT IDMan.00423C58

--> Nop 2byte

00423C62 75 24 JNZ SHORT IDMan.00423C88

--> Nop 2byte

00423C8D 75 24 JNZ SHORT IDMan.00423CB3

--> Nop 2 byte

00423CB8 75 27 JNZ SHORT IDMan.00423CE1

--> Nop 2 byte

00423D02 75 1C JNZ SHORT IDMan.00423D20

--> 00423D02 EB 12 JMP SHORT 00423D16

00423D3F 0F85 AD010000 JNZ IDMan.00423EF2

---> Nop 6 byte

00423D6F 0F84 81000000 JE IDMan.00423DF6

--> Nop 6byte

00423E23 . 0F85 DF010000 JNZ IDMan.00424008

--->Nop 6byte

-----------> Từ address 0042AC7B: ASCII "SOFTWARE\Internet Download <---------------

0042ACFC 75 29 JNZ SHORT IDMan.0042AD27

--> Nop 2byte

0042AD25 75 17 JNZ SHORT IDMan.0042AD3E

--> Nop 2byte

0042AD43 75 30 JNZ SHORT IDMan.0042AD75

--> Nop 2byte

0042AD71 75 22 JNZ SHORT IDMan.0042AD95 ; l2

---> Nop 2byte

0042AD9C 0F85 4A020000 JNZ IDMan.0042AFEC

--> Nop 6byte

0042ADD8 0F84 81000000 JE IDMan.0042AE5F

--> Nop 6byte

0042AE99 . 0F85 15010000 JNZ IDMan.0042AFB4

Sau khi patch xong, bạn save lại file patch. Cách thức save giống như phần 1. Sau đó xóa bỏ file IDMan.exe, đổi tên file IDMan_Patch.exe thành IDMan.exe, vậy coi như IDM đă thuộc về bạn.

Tổng kết bài viết:

Để viết file crark, bạn nên chú ư tích hợp phần add registry theo như h́nh đầu tiên trong phần này, hay giả bạn bạn cũng có thể sọan 1 file reg trước (dùng notepad), nội dung file reg như sau (theo mẫu):

REGEDIT4


[HKEY_LOCAL_MACHINE\SOFTWARE\Internet Download Manager]

"FName"="Cr-ack by LovePascal"

"LName"="([email protected])"

"Email"="[email protected]"

"Serial"="1234567890"


Sau đó lưu file reg này với tên IDMan.reg. Cr-ack xong, bấm đúp vào file reg này để add infomations cho IDM.

Nếu muốn share Cr-ack. Bạn có thể dùng DUP để tạo file patch, hay dùng 1 tŕnh ứng dụng nào đó để viết code. tui đă sử dụng Pascal để built cái Cr-ack cho phiên bản này, nó patch file IDMan.exe và add registry luôn. Đồng thời lo xa hơn 1 chút, để file Cr-ack này vẫn sử dụng được cho các phiên bản sau đó (điều kiện: vẫn code bằng Microsoft Visual C++ 6.0 [Overlay]) nên tui đă built thêm phần tích hợp tự ḍ mă.

C̣n 1 số điểm khác, nhưng qua sự kiểm tra file các code. tui thấy không cần thiết phải patch chỗ nào nữa. Vậy tut đến đây có thể xem là tạm dừng. Thank bạn đă bỏ thời gian xem qua.
2.WinRar

Mặc dù bài viết này đã cũ , nhưng giá trị của nó vẫn còn tồn tại.

Tutorial này hướng dẫn bạn Cr-ack WinRAR phiên bản 3.70 Beta 2. Bạn hòan tòan có thể áp dụng cho các phiên bản mới hơn bằng cách làm tương tự.


I. TÓM TẮT CHIẾN LƯỢC


WinRAR là phần mềm nén file nỗi tiếng do Alexander Rohal sáng lập. Để có được bản WinRAR hoàn hảo, bạn phải tìm cách Cr-ack chúng sao cho:


1. Hộp thoại please purchase WinRAR license không còn hiển thị

2. Dòng chữ "evaluation copy" và phần "help>about - 40 days trial copy " không còn xuất hiện

3. Xử lý phần About, làm cho phần này xuất hiện tên người Cr-ack


1. Công cụ:


a. W32Dasm : Tìm địa chỉ offset (address offset) để patch dựa trên chuỗi thông tin - chuỗi được xem như chìa khoá .


b. WinHex : Chỉnh sửa byte và phần cho hiển thị tên Cr-acker trong phần About.

• Nên dùng W32Dasm phiên bản 8.93 đã được fix rồi (trong menu "Edit" có thêm tab patch), nếu bạn có trong tay bản chưa được fix, bạn phải cần thêm phần mềm WinHex để sửa byte.

• Download: W32Dasm phiên bản 8.93 đã được fix, WinHex.

• File sẽ Cr-ack: File WinRAR.exe. Bạn hãy sao 1 bản WinRAR.exe để dự phòng trường hợp làm hư file.

2. Tìm address cần Cr-ack WinRAR. Ở phần này ta có 2 công việc:

• Tìm address offset chứa thông tin về hộp thoại "please purchase WinRAR license".

• Tìm address offset chứa thông tin về "about" và "evaluation copy".

3. Chỉnh sửa byte, hiển thị tên Cr-acker trong phần about:

• Dùng WinHex để chỉnh sửa.

Ta sẽ lần lượt xử lý 3 phần trên. Chú ý, các con số dưới đây đều sử dụng dạng HEXA (ví dụ mã của JNE là hex=75, byte=117)


II. TÌM ADDRESS CODE DATA VÀ OFFSET ĐỂ Cr-ack


Ở phần này ta có 2 công việc:

• Tìm address code data & offset chứa thông tin về hộp thoại "please purchase WinRAR license".

• Tìm address code data & offset chứa thông tin về "about" và "evaluation copy".

Còn việc hiển thị tên Cr-acker trong phần about ta sẽ tính sau.


1. Tìm address code data & offset chứa thông tin về hộp thoại "please purchase WinRAR license".


WinRAR cho phép bạn sử dụng thử sản phẩm trong vòng 40 ngày sau khi cài đặt, nếu vượt quá giới hạn thời gian này thì mỗi lần sử dụng, WinRAR sẽ hiển thị hộp thoại "please purchase WinRAR license" gây cảm giác rất khó chịu. Công việc của ta là phải tìm patch tại address offset chứa thông tin về hộp thoại này để nó không còn xuất hiện nữa.


Bây giờ, bạn hãy cài đặt WinRAR. Sau khi cài đặt xong, bạn khởi động WinRAR rồi tắt nó đi. Kế tiếp là tăng đồng hồ hệ thống lên khoảng 2 tháng xong lại khởi động WinRAR lần nữa xem sao ? Nó sẽ xuất hiện hộp thoại "please purchase WinRAR license" như hình 1 thế này.


Mở W32Dasm lên, vào menu "File > Open file disassemble..." Trong hộp thoại open, bạn cho load file WinRAR.exe. Khi W32Dasm hoàn tất việc load file, bạn vào menu "PE Information" (đối với W32Dasm đã được fix), hay menu "Refs" (nếu bản W32Dasm chưa fix), chọn tab "String data references". Bạn sẽ được hộp thoại search như hình 1.1.


Nhập vào ô Search chuỗi "REMINDER", xong ấn nút search để tiến hành dò tìm. Nếu trong box search có chứa chuỗi này thì nó sẽ hiển thị với thanh màu xanh sáng trong hình 1.1.


Xong dùng chuột nhấp kép vào dòng chữ xanh sáng đó để W32Dasm nhảy đến vị trí chứa chuỗi REMINDER (hình 1_2. Nhớ nhấp kép 1 lần thôi bởi có 2 address offset chứa chuỗi REMINDER).


Tắt box search, trong nền W32Dasm bạn dịch chuyển vệt sáng lên phía trên vài chục dòng (tui patch WinRAR 3.70 beta 2 là khoảng 35 dòng). Bạn sẽ thấy như hình 1_3 sau:


Referenced by a (U)nconditional or © onditional Jump at Address:

|:0043F117 ©

|

0043F797 833D F0764C00 CMP DWORD PTR [004C76F0],00000000043F0A4

0043F79E 757D JNE 0043F81D

0043F7A0 8D95A4FAFFFF LEA EDX, DWORD PTR [EBP+FFFFFAA4]

0043F7A6 B8A85A4C00 MOV EAX, 004C5AA8

0043F7AB 33C9 XOR ECX, ECX

0043F7AD E82E7A0100 CALL 004571E0


Hãy để ý đến dòng: "0043F79E 757D JNE 0043F81D". Bạn hãy đưa vệt sáng về dòng này. JNE chính là mã kiểm tra xem WinRAR có được đăng kí chưa đấy (nếu chưa đăng ký, nó sẽ bật hộp thoại "please purchase WinRAR license" khó chịu như hình 1).


Bây giờ, đơn giản là bạn thay đổi JNE thành JE là xong (ý nghĩa của je và jne tui sẽ giải thích thêm trong phần dưới III). Bạn hãy nhìn xuống phía dưới taskbar xem address offset của nó là bao nhiêu (chú ý: phải để vệt sáng tại Jne).


Trong hình 1_4, bạn thấy 2 địa chỉ:

• CodeData: 43F79E ---> Address1a_Jne

• Offset: 3ED9E ---> Address1b_Jne

tui tạm gọi CodeData là Address1a_Jne và Offset là Address1b_Jne. Bạn hãy lấy giấy ra ghi lại 1 trong 2 địa chỉ này kẻo quên, ghi luôn mã của nó là Jne hay Je để khỏi lẫn lộn.


2. Tìm address code data & offset chứa thông tin về "about" và "evaluation copy"


Phần II.2.a/ trên bạn chỉ mới tìm được address offset làm hiển thị hộp thoại "please purchase WinRAR license", hộp thoại này sẽ xuất hiện sau 40 ngày sử dụng nếu sản phẩm chưa được đăng kí (bạn thử tăng đồng hồ hệ thống lên khoảng 2 tháng xem, nó xuất hiện liền đấy).


Bạn cũng có thể ngưng ngay tại thời điểm này để tiến hành Cr-ack, dĩ nhiên sau khi Cr-ack xong thì hộp thoại "please purchase WinRAR license" sẽ không còn xuất hiện sau 40 ngày sử dụng. Nhưng cái dòng chữ "evaluation copy" vẫn còn hiện diện trên title của nó, và cái dòng chữ "40 days trial copy" vẫn luôn ngự trị trong phần Help\About. Rất là khó chịu. Bây giờ, công việc của ta là làm sao tắt 2 cái này đi.


Bạn hãy vào menu PE information\String data references để trở lại hộp thoại search string, nhập vào ô search string: "70c2441db366d92ea7be1342b3bf629026ba92bb675f0 6"


Sau đó bấm nút search để tiến hành dò tìm. Khi đã tìm được chuỗi này rồi. Bạn bấm kép vào nó, W32Dasm sẽ đưa bạn đến vị trí có chứa chuỗi này.


Một điều cũng nên nói luôn, trong address của W32Dasm có tới khoảng 4-5 vị trí chứa chuỗi "70c2441db366d92ea7be1342b3bf629026ba92bb675f0 6". Cho nên, mỗi lần bấm đúp vào vệt sáng trong box search, bạn sẽ được W32Dasm đưa đến 1 vị trí mới. Tại vị trí mới này bạn nên đánh dấu để không bị nhầm lẫn, bạn đánh dấu bằng cách click chuột phải vào dòng có vệt sáng, chọn tab "Add Comment", sau đó ghi nội dung muốn làm dấu.


Bạn hãy cố gắn tìm các dòng có chứa đoạn code sau đây (nguyên tắc dò tìm: đưa vệt sáng dịch chuyển về phía trên).


Về cơ bản, đoạn code này như sau:


0040E9EE| 8D85D0EFFFFF LEA EAX, DWORD PTR SS:[EBP-1030]

0040E9F4| 8B95D0F3FFFF MOV EDX, DWORD PTR SS:[EBP-C30]

0040E9FA| E835D9FFFF CALL 0040C334

0040E9FF| 84C0 TEST AL, AL

0040EA01|0F85DFFEFFFF JNE 0040E8E6

0040EA07| 33C0 XOR EAX, EAX

0040EA09| 8B95D4F3FFFF MOV EDX, DWORD PTR SS:[EBP-C2C]

0040EA0F| 648915 000000 MOV DWORD PTR FS:[0],EDX


tui patch WinRAR 3.70 beta 2, chỉ bấm đúp 1 lần (beta 4, bấm đúp 3 lần) và đưa vệt sáng lên trên khoảng chục dòng là thấy ngay đoạn code đó. Còn bạn, nếu không tìm được thì bạn lập lại bước trên, bấm đúp vào dòng chữ "70c2441db366d92ea7be1342b3bf629026ba92bb675f0 6". Nếu gặp vị trí có chứa nội dung làm dấu rồi thì cho qua, còn không thì chuột phải mở Add comment, ghi nội dung làm dấu, xong tiến hành tìm đoạn code... Cứ thế tiếp tục, làm cho đến khi nào tìm được đoạn code trên.


Bạn hãy chú ý address 0040EA01. Nó chứa mã 0F85DFFEFFFF JNE 0040E8E6. Nhưng tại sao mã JNE lại là 0F85DFFEFFFF mà không phải là 75.x.x? Bạn hãy tự đi tìm câu trả lời, mã này sẽ làm cho việc patch "hơi trái khoáy" một chút. Bây giờ, bạn hãy lấy bút ra ghi lại Code Data và Offset phía dưới thanh tasbar nhé. Làm giống như phần II.2.a vậy. Đưa vệt sáng về dòng address 0040EA01 chứa mã JNE, sau đó xem và ghi lại address.


Trong hình 2.4 - Bạn thấy 2 địa chỉ, lấy giấy ra ghi lại 2 địa chỉ này nhé:

• Code Data: 40EA01 ---> Address2a_Jne

• Offset: E001 ---> Address2b_Jne

tui tạm gọi CodeData của phần này là Address2a_Jne, và Offset là Address2b_Jne.


III. Cr-ack WINRAR VỚI CÁC ĐỊA CHỈ TÌM ĐƯỢC Ở PHẦN II


Bạn hãy chú ý, bạn đã có trong tay 4 địa chỉ. tui tạm chia ra làm 2 cặp như sau:

• Cặp 1 (Address1a_Jne + Address2a_Jne): Cặp này chứa địa chỉ của "Code Data"

• Cặp 2 (Address1b_Jne + Address2b_Jne): Cặp này chứa địa chỉ của "Offset"

tui cũng chia ra 2 trường hợp để tiến hành Cr-ack:

• Trường hợp 1: W32Dasm trong tay bạn là bản đã được fix (có phần patch). Trường hợp này bạn sử dụng cặp 1 trên để Cr-ack.

• Trường hợp 2: W32Dasm chưa được fix. Trừơng hợp này bạn sử dụng cặp 2 để Cr-ack.

Trong ngôn ngữ Assembler, mã của JNE ứng với kí tự ascii là 'u' (hex =75, byte = 117), còn mã của JE ứng với kí tự 't' (hex=74, byte=116). Và ý nghĩa của nó như sau:

• JE [xxxx]: Jump equal (nhảy đến vị trí [xxxx] nếu bằng).

• JNE [xxxx]: Jump not equal (nhảy đến vị trí [xxxx] nếu không bằng).

2 lệnh này thường đi chung với lệnh:

TEST [A], ----> so sánh A và B xem có thoả điều kiện không

JE [Address1] ----> nếu thoả thì nhảy đến address 1

JNE [Address2] ----> nếu không thoả thì nhảy đến address 2

Để tiện cho việc theo dõi, tui sẽ lần lượt giới thiệu bạn Cr-ack cả 2 trường hợp này.


1. Tiến hành Cr-ack khi trong tay bạn có bản fix W32Dasm


Một chút hướng dẫn về patch: Bản W32Dasm đựơc xem là fix rồi khi trong menu Edit của nó có tab "patch" ( xem hình 3).


Khi tiến hành patch, bạn đặt thanh sáng tại address muốn patch, sau đó chuột phải rồi chọn tab patch hay cách khác là vào menu Edit, rồi chọn patch. Ví dụ sau tui muốn patch tại vị trí 40EA01, tui đưa thanh sáng về đó, chuột phải và chọn patch (hình 3.1)


Xong phần hướng dẫn sử dụng bản W32Dasm đã được fix phần patch. Bây giờ ta tiến hành Cr-ack.


a. Vô hiệu hóa phần I.1 của "tóm tắt chiến lược" trên - Cr-ack file Winrar.exe với address code data chứa thông tin về hộp thoại "please purchase WinRAR license".


Bạn hãy chỉnh lại đồng hồ hệ thống tăng thêm khoảng 2 tháng, sau đó mở WinRAR để hộp thoại "please purchase WinRAR license" xuất hiện (bước kiểm tra). Xong tắt WinRAR. Ta patch tại địa chỉ Address1a_Jne để làm tắt hộp thoại này cho dù đã sử dụng quá giới hạn.


Bạn bấm vào menu "Go to" của W32Dasm, chọn "Go to code location", nhập vào phần "code offset" địa chỉ Address1a_Jne (theo như phần II.2.a thì tui nhập vào là 43F79E), xong ấn OK. W32Dasm sẽ đưa bạn đến địa chỉ Address1a_Jne trong edit của nó (vệt sáng nằm trên dòng chứa mã JNE).


Tại đây, bạn chuột phải rồi chọn patch. Bạn sẽ được hộp thoại patch, trong hộp thoại này, bạn để thanh nháy ở cột đầu tiên (cột có chứa Hex = 75, JNE), sau đó sửa nó lại thành 74 (mã của JE, Hex =74 - như hình 3.2).


Ấn nút "Apply" để tiến hành patch, xong ấn nút "Run" để chạy thử. Nếu address1a_Jne là đúng thì hộp thoại "please purchase WinRAR license" sẽ không còn xuất hiện (ha ha... Alexander Roshal pó tay). Còn nếu sai thì bạn nên tìm lại địa chỉ này.


Bạn hãy chú ý, nếu thao tác tìm địa chỉ sai thì nên ấn nút "Reset", sau đó ấn "Apply" để file patch được trả lại nguyên vẹn. File được patch có tên là "WinRAR_BAK.exe".


b. Vô hiệu hóa phần I.2 của "tóm tắt chiến lược" trên - Cr-ack file Winrar.exe với address code data chứa thông tin về "about" và "evaluation copy"


Làm tương tự như phần a.1 trên, nhưng tại address2a_Jne này lại có sự đổi khác về mã (của tôi, tại 0040EA01 là 0F85DFFEFFFF, JNE). Vì thế, thay vì đổi mã JNE thành 74 là của JE, tui lại chuyển thành 75, của chính mã JNE ! (hình 3.3)


OK. Bây giờ bản WinRAR đã hòan tòan thuộc về bạn rồi đó nhé.


2. Tiến hành Cr-ack khi trong tay bạn chưa có bản fix W32Dasm


Cái này bạn phải nhờ tới anh WinHex thôi. Bạn chú ý, nếu dùng WinHex để sửa byte thì bạn phải dùngAddress cặp 2: Address1b_Jne và Address2b_Jne, đây là địa chỉ của Offset.


Bạn mở WinHex lên, cho nó open file WinRAR.exe, xong vào menu "Possition\Go To Offset" (hình 3.4).


a. Vô hiệu hóa phần I.1 của "tóm tắt chiến lược" trên - Cr-ack file Winrar.exe với Address Offset chứa thông tin về hộp thoại "please purchase WinRAR license".


Chú ý, bạn sử dụng địa chỉ của Offset nhé. Bạn gõ giá trị address1b_Jne vào hộp thọai "go to offset", sau đó nhấn OK. WinHex sẽ nhảy đến vị trí này. Bạn chỉ cần sửa chữ 'u' lại thành chữ 't' là xong. Sau đó bấm Save (hình 3.5).


b. Vô hiệu hóa phần I.2 của "tóm tắt chiến lược" trên - Cr-ack file Winrar.exe với Address Offset chứa thông tin về "about" và "evaluation copy"


Tương tự, bạn nhập vào goto offset giá trị Address2b_jne, sau đó sửa kí tự ascii tại địa chỉ này (chính là ascii=15) trở thành chữ 'u' (hex=75, byte =117, mã của JNE - hình 3.6).


Xong bấm Save. Bây giờ WinRAR đã là của bạn!


IV. CHỈNH SỬA THÔNG TIN (ABOUT) - HIỂN THỊ TÊN Cr-ackER


Để WinRAR được hòan thiện hơn, bạn phải làm nốt công việc thứ 3 của phần "I. Tóm tắt chiến lược". Trước đây, các thông tin này được lưu trữ trong file RarReg.key của WinRAR. Thế nhưng, tui sẽ chỉ cho các bạn cách hiển thị thông tin này mà không cần đến file RarReg.key này nữa. Tức là file RarReg.key có tồn tại hay không cũng không quan trọng.


Trước hết, bạn cho WinHex open file Winrar.exe, sau đó vào menu View, đánh dấu kiểm vào "Text Display Only" để cho nó hiển thị dạng text. Xong vào menu search, chọn "Find Text", bạn sẽ được hộp thọai find text như hình 4.a - 4.b sau:


Nhập chuỗi sẽ dò tìm là A?l?e?x?a?n?d?e?r (chữ Alexander, tên của người sáng lập, nhưng có chèn dấu chấm hỏi ở giữa các kí tự). Đánh dấu kiểm vào "Use this as a wildcard", xong bấm OK để search. Bạn được kết quả dò được nội dung chữ này như hình 4.b, bạn tuỳ ý chế biến nó lại (khối màu xanh). Khi tui sửa đổi xong, kết quả là như hình 4c và 4d:


Hướng dẫn đến đây là hết. Nếu có vấn đề khó khăn xin liên hệ với tui qua email, hay nếu có phổ biến bài viết này thì xin để lại tên tác giả. Thành thật Thank đã xem bài viết. Chúc bạn làm tốt !


Phụ lục ảnh. Kết quả so sánh sau khi patch phần thứ 2 của "I. Tóm tắt chiến lược" - Cr-ack file Winrar.exe với Address Offset chứa thông tin về "about" và "evaluation copy"


Sau đây là Code Data và Offset của một số phiên bản WinRAR


1. WinRAR phiên bản 3.70 beta 4

• CodeData 43F862, Offset 3EE62: "please purchase WinRAR license"

• CodeData 40EAB9, Offset E0B9: "Evaluation Copy" and "40 days trial copy"

2. WinRAR phiên bản 3.70 beta 5 (19 March 2007)

• CodeData 43F86A, Offset 3EE6A: "please purchase WinRAR license"

• CodeData 40EAB9, Offset 0E0B9: "evaluation copy" and "40 days trial copy"

3. WinRAR phiên bản 3.70 beta 6 (04/04/2007 - bản mới nhứt cho đến thời điểm này)

• CodeData 43F8A8, Offset 3EEA8: "please purchase WinRAR license"

• CodeData 40EAC5, Offset 0E0C5: "evaluation copy" and "40 days trial copy"

The end

(Theo Lovepascal)

Nếu thấy hay các bạn đừng quên thank mình nhé
 

candybietyeu

New Member
Nếu không có những người "rãnh" như vậy thì sau này bác ấy giải nghệ ai Cr-ack cho các chú xài?

Ủng hộ thớt
 

Randkin

New Member



Đây là game hafl life em mới dow về nhưng không chạy được bác nào biết cách cài không chỉ em
 

Các chủ đề có liên quan khác

Top