PDA

View Full Version : Không ngờ CRAK softs dễ đến vậy <by hacnho>



freewarez
08-06-2004, 00:26
DL tools www.ctools.net
Phần IV: Làm sao để ***** được một soft…

Chào các bạn, chúng ta lạI gặp lạI nhau…;) Trong phần IV này chúng ta sẽ bàn đề vấn đề chính đó là làm sao để ***** được một phần mềm bằng WDASM và Hacker Views ??? (không dùng SoftIce).
He he he câu hỏI thật dễ nhưng mà trả lờI không dễ chút nào…!!! Tôi cũng như các bạn khi tập tễnh bước vào làng ***** cũng phảI toát mồ hôi mớI ***** được một phần mềm. Sau đây là một số kinh nghiệm bản thân tôi khi muốn ***** một phần mềm bằng WDASM và Hacker Views .

Chú ý: Trong bài này tôi có tham khảo bài viết của anh HOAVELU—Thanx for support

I. Tổng Quát:

Trên thị trường phần mềm hiện nay có rất nhiều phần mềm, chủng loạI thật đa dạng và phong phú…MỗI ngày lạI có nhiều phần mềm mớI ra đờI, bản thân những phần mềm đã xuất hiện cũng luôn luôn nâng cấp lên version mới…Do đó cách ***** luôn luôn phảI linh động , không được lấy y chang cái cũ mà áp dụng cho cái mới…Sẽ thất bạI ngay!!!

Ví dụ: VớI phần mềm Winzip ver 8.0 bạn có thể dùng SoftIce tìm đến dòng 00407AA3 LEA EAX,[EBP-0140] , sau đó đánh vào D EBP-0140 là tìm được số ****** tương ứng vớI user name nhập vào…Nhưng vớI Winzip 8.1 , nếu bạn áp dụng y chang như cách đốI vớI Winzip 8.0 sẽ chẳng được gì…Do đó bạn hãy dùng chính cái đầu của mình hơn là áp dụng một cách máy móc như con vẹt nhưng cái đã học

II. Cài Đặt

Hầu hết (khoảng 70%) phần mềm đều cài đặt xong rồI ta mớI *****…(Tuy nhiên có những phần mềm bắt nhập license khi setup như Window, Photoshop Visual Studio…thì ta sẽ bàn sau). Sau khi cài đặt xong bạn hãy chạy soft cần ***** sau đó ghi nhớ thông báo bắt đăng ký hay nhập license code, user code v.v.

III. Unpack

Một số soft được tác giả nén lạI, vì sợ *****…ke ke ke, đơn cử như Vietkey 2000 . Bạn phải xem coi chương trình có được nén(pack) lại hay không. Nén ở đây không có nghĩa là được nén bằng WinZip hay WinRAR mà file .EXE được nén nhỏ lại mà vẫn có thể chạy được bình thường không cần giải nén. Để biết file có bị nén hay không, bạn phải xem mở file .EXE đó ra để xem đoạn mã của nó. Ở đây tôi dùng WinNC, chọn file cần xem và nhấn F3. Thông thường, nếu file đã bị nén thì nó sẽ có 1 dòng đặc trưng trong file bị nén ở đầu file. Chẳng hạn như được nén bằng ASPack thì (thường) trong file sẽ có chuỗi "aspack". Nén bằng UPX thì sẽ có dòng "UPX...". Còn đối với shrink thì có chữ "shrink". Tuy nhiên, cũng có một vài công cụ giúp ta giải nén (unpack) mà không cần biết file được nén theo dạng nào, đó là nó tự động nhận dạng. Tuy nhiên, nếu dạng được nén không được hỗ trợ thì nó cũng đành bó tay. Tiêu biểu cho loại này là ProcDump32, nó hỗ trợ khá nhiều dạng phổ biến như ASPack, Code Safe 3.X, PC Guard 2.10, PE Compact, PKLITE... bạn có thể chọn "*unknown*" để chương trình tự động nhận dạng.
Ngoài ra, có thể chương trình còn được bảo vệ bởi 1 đoạn mã bảo vệ (Security Code). Đây là một đoạn mã dùng để bảo vệ chương trình tránh bị debug (anti-debug) hay thay đổi kích thước. Đối với loại này, chúng ta cũng có một số chương trình để bỏ phần Security Code đó, có thể kể ra là : Anti Crypt, UnCode Crypt, tEunlock...

IV. Bắt tay vào *****

*.Bước 1: sau khi chạy chương trình bạn hãy ghi nhận lạI những thông báo bắt đăng ký đạI loạI như “Enter Registration Code”, Register, evalution copy, unregistered version…v.v và v.v

*.Bước 2: Nhấn vào và nhập vào đạI một số ******/Unlock Code/Registration Code bất kỳ…Sau đó nó sẽ hiện lên một nag báo rằng chúng ta đã nhập sai, yêu cầu nhập lại…Không sao, hãy ghi lạI dòng thông báo mà bạn nhận được khi nhập sai như : “Incorrect Password...", "Wrong ******...", "Re-enter password ... "

*.Bước 3:

Chạy W32Dasm, chọn "Open file to Disassembler..." hay nhấn trên thanh công cụ cũng được.
_ Chọn file cần *****.
_ Trên menu Refs, chọn String Data References. Tại sao ta phải làm như vậy, bạn hãy xem đoạn mã sau :

Nếu "****** bạn gõ vào" = "****** chương trình" thì <---- Ta sẽ Patch chỗ này
Nhảy đến đăng ký bản quyền
Còn không
Nhảy đến bảng thông báo "Incorrect password..." <------- Bạn cần ở đây trong W32Dasm

Bây giờ, nếu nó kêu là sai thì mình cho nó thành đúng :
Nếu "****** bạn gõ vào" <> "****** chương trình" thì <----- Chỗ đã được patch
Nhảy đến đăng ký bản quyền
Còn không
Nhảy đến bảng thông báo "Incorrect password..." <-------- Bạn cần ở đây trong W32Dasm

Còn bây giờ bạn cần biết một chút về assembler (vì chương trình sẽ được W32Dasm dịch ra assembler mà :)
Viết lại trong assembler đoạn code trên sẽ tương tự như :
cmp eax, eax <----- So sánh số ******/unlock code...
jne [Địa chỉ 1] <----- Nhảy đến thông báo số đăng ký đúng hoặc sai
call [Địa chỉ 2] <----- Nhảy đến thông báo ngược lại

Bây giờ, giả sử [Địa chỉ 1] là nhảy đến thông báo đã được đăng ký và [Địa chỉ 2] nhảy đến thông báo "Incorrect password..." thì ta sẽ phải sửa lại đoạn code như sau :
cmp eax, eax
je [Địa chỉ 1] <------ Chỗ đã được Patch
call [Địa chỉ 2]

Trong assembler, câu lệnh nhảy được biết đến là :
je = Jump if equal : Nhảy nếu bằng
jne = Jump if not equal : Nhảy nếu không bằng

Vì vậy, thông thường "je" được đổi thành "jne" và ngược lại.
Trở lại với chương trình của chúng ta, đi tìm chuỗi "Incorrect password..." là chúng ta đã đến bảng thông báo "Incorrect password...". Kiếm bằng cách vào menu Refs/String data references của W32Dasm, tìm chuỗi "Incorrect password..." và nhấn kép vào nó (hy vọng là có 8-). Lúc này, W32Dasm đưa chúng ta đến bảng thông báo chưa đăng ký rồi, nhiệm vụ của chúng ta là phải kiếm được nơi có chứa lệnh nhảy đến bảng thông báo này. Hãy dời con trỏ lên cho tới khi nào kiếm thấy dòng "je ..." hay "jne..." thì dừng lại ở đó. Còn nếu thấy dòng :

* Reference ....
:000... <---- để ý địa chỉ này

thì hãy dừng lại đó vì bảng thông báo đã được gọi từ 1 địa chỉ khác, nhấn Shift-F12 (hay vào menu Goto/Goto Code Location), nhập vào dãy số000... sau dòng "* Reference..." rồi Enter.
Lặp lại các bước dò như trên cho đến khi nào thấy được dòng "je..." hay "jne..."
Cuối cùng, khi đã kiếm được rồi thì hãy nhìn xuống thanh status bar, bạn sẽ thấy 1 chuỗi số ngay sau "@Offset ...00...". Nhớ lấy chuỗi số đó, và đừng quên là bỏ chữ "h" cuối cùng đi, vì đây là chữ biểu hiện cho số HEX.

*.Bước 4:

Đóng W32Dasm lại. Mở HView ra, nhấn F4, chọn Decode, nhấn F5, đánh vào giá trị00... bạn thu được ở "@Offset...00..." lúc nãy và Enter, HView đưa bạn đến ngay đúng dòng bạn nhìn thấy trong W32Dasm và còn chờ gì nữa, patch nó đi. Nhấn F3, rồi F2 (tôi chọn cách này để giúp Newbie dễ hiểu hơn vì đôi lúc không phải lúc nào giá trị cũng là 74 và 75). Sửa "jne..." thành "je..." và "je..." thành "jne..."
_ Cuối cùng, nhấn F9 để Save chương trình và F10 để thoát, bạn chạy lại chương trình và nhập số đăng ký bất kỳ thử xem sao, nếu may mắn, bạn sẽ nhận được thông báo "Thanks for ..." 8-), hehe, và đừng quên lưu 1 bản .EXE để đề phòng sự cố trước khi Patch :).

Mẹo : Nếu không tìm thấy dòng "Incorrect password..." thì bạn thử đi ngược lại là đi từ dòng "Thanks for..." hay "Registered..." xem ;-).
Đây là cách đơn giản nhất để Patch chương trình, ngoài ra còn có thể dùng SoftICE, VBDe, DeDe, SmartCheck... cái đó để hỗ trợ ***** soft là tùy ở bạn :). Bạn có thể nâng cao "tay nghề" bằng cách viết keygen hoặc bằng 1 số thủ thuật khác như "spy memory" :).



Chú ý : Ngoài hai câu lệnh ASM cơ bản bạn nên biết một số câu lệnh khác như : Call, Popad, Test, Nop ( bạn có thể tham khảo trong phần phụ lục của tôi)

freewarez
08-06-2004, 00:27
V. Bài tập ***** đầu tiên cho bạn

Để minh hoạ cho phần lý thuyết trên chúng ta hãy tập ***** một phần mềm khá quen thuộc với người Việt Nam, đó là bộ gõ Vietkey...Trên thị trường hiện nay đã có bản Vietkey build 11220, nhưng bản đó được pack lại bằng UPX, detect Si nên tôi không hướng dẫn các bạn ***** nó, mà chúng ta hãy tập ***** phiên bản Vietkey409e...Các bản Vietkey409,409d đã được các anh NVH©, Nguyễn Mạnh Cường hướng dẫn, nhưng bây giờ trong tay tôi chỉ có bản Vietkey409e trong CD PHP software #1, và mặc dùng bác Phạm Hồng Phước có cho bản *****, nhưng khi mở Vietkey409e lên tôi thấy " License to Rockman", tò mò tôi thử xoá file VKNT.LIC thì lập tức hiện lên bảng thông báo bắt đăng ký với tác giả he he, vậy là tay Rockman này hắn chỉ tìm số ****** cho riêng mình hắn, do đó bạn không thể đăng ký license cho mình, không biết các bạn cảm giác sao chứ tôi rất bực mình khi phải xài phần mềm do người khác ***** ke ke ke...Từ đó hôm nay tôi sẽ hướng dẫn các bạn ***** Vietkey409e chấp nhận mọi ******, dù cho bạn có xoá file VKNT.LIC

Công cụ : WDASM893, HIEWS602 (mới hơn càng tốt)
Phần mềm : Vietkey409e
File cần ***** : VKNT.EXE
Cracker : hacnho


Đầu tiên các bạn chạy Vietkey409e, tức thì một loạt nag hiện ra đập liên tiếp vào mặt bạn " Vietkey chua dang ky su dung, lien he tac gia", sau một hồi bắn ra một loạt nag, nó hiện ra một dòng chữ " Unregistered Version" trên thanh tiêu đề của Vietkey409e...Sau đó bạn đánh dấu kiểm vào check box " Đăng Ký Sử Dụng" or " Registration", vào đó nhập vào User Nam, và License Code, enter, oh la la, một nag bắn ra " Invalid Number", Bạn ghi nhớ lấy nó...

Okie, sau khi tắt Vietkey409e bạn dùng WDASM mở file VKNT.EXE trong thư mục cài đặt. chờ cho WDASM disassembly xong bạn bắt đầu vào menu menu Refs, chọn String Data References, kiếm cho ra dòng có chữ " Invalid Number", double click vào nó, đóng cửa sổ String Data References lại, lúc này bạn sẽ thấy như sau :

*. Reference To: USER32. GetDlgItemTextA, Ord : 00EDh
|
:00403000 FFF15D4934000 Call dword ptr [004093D4]
:00403006 8D4DCC lea ecx, dword ptr [ebp-34]
:00403009 51 pussh ecx
:0040300A 56 push esi

*. Reference To: KERNEL32.lstrcmpA, Ord : 00269h
|
:0040300B FF15C8924000 Call dword ptr [004092C8] =>Gọi hàm kiểm tra License Code
:00403011 85C0 test eax, eax ==> kiểm tra License Code
:00403013 743D je 00403052 ==>Nếu nhập đúng, nhảy đến thông báo " License to.."
:00403015 833D1877400000 cmp dword ptr [00407718], 00000000

*. Possible StringData Ref from Data Obj ->"Go"

:0040301C B8187C4000 mov eax, 00407C18
:00403021 7505 jne 00403028 ==> Sai, nhảy đến thông báo "Invalid Number"

*. Possible StringData Ref from Data Obj ->"Invalid Number"


:00403023 B89C704000 mov eax,00407C9C

Oh yeah, chúng ta đã tìm ra chỗ cần ***** rồi phải không các bạn, chúng ta chỉ cần đổi 2 chỗ, --một là ( :00403013 743D je 00403052 ==>Nếu nhập đúng, nhảy đến thông báo License to " ) ==> Cái mà ta cần ***** ở đây là, dù cho ta nhập vào số ****** gì nó cũng chịu và hiện ra bảng Lincense to...
--hai là, chúng ta không cho hiện ra bảng " Invalid number" đồng nghĩa với chuyện bảng thông báo " Liên hệ tác giả" cũng không hiện ra luôn he he (:00403021 7505 jne 00403028 ==> Sai, nhảy đến thông báo "Invalid Number")

Ở đây chúng ta cần đổi hai bytes:

1. bytes thứ nhất chúng ta đổi câu lệnh nhảy ngược lại tức là từ je ( nhảy nếu bằng) thành jne (nhảy nếu không bằng)...các bạn di chuyển vệt sáng đến dòng :00403013 743D je 00403052, nhìn xuống dưới thanh task bar của WDASM bạn thấy một địa chỉ offset 0002413 (bỏ chữ h đi nhé), nhớ lấy nó...Mở HIEWS ra, tìm đến file VNTK.EXE (thường là ở ổ C, alt+F1 để chuyển ổ đĩa), nhấn F5, gõ vào 0002413 , nhấn F3, đổi 74 thành 75. Nhấn F9 để lưu, F10 để thoát

2. bytes thứ hai chúng ta đổi câu lệnh nhảy ngược lại tức là từ jne ( nhảy nếu không bằng) thành je (nhảy nếu bằng)...các bạn di chuyển vệt sáng đến dòng 00403021 7505 jne 00403028, nhìn xuống dưới thanh task bar của WDASM bạn thấy một địa chỉ offset 0002421 (bỏ chữ h đi nhé), nhớ lấy nó...Mở HIEWS ra, tìm đến file VNTK.EXE (thường là ở ổ C, alt+F1 để chuyển ổ đĩa), nhấn F5, gõ vào 0002421 , nhấn F3, đổi 75 thành 74. Nhấn F9 để lưu, F10 để thoát...

bây giờ mở lại Vietkey, đăng ký, hay xoá file VKNT.LIC xem, bạn sẽ thích ngay mà ha ha ha,

----------------------
thật ra tôi còn một chiêu khác là đổi je thành EB nhưng không chỉ cho các bạn vì chúng ta chỉ mới học...Nếu hứng thú bạn có thể tự nghĩ ra cách để ***** bản Viekey409e này, bằng SoftIce (dùng hàm getdlgitemtexta),
---------------------

Bài viết của hacnho from HVA (vui lòng để lại dòng này khi trích dẫn, thanx alot)----------------------------

freewarez
08-06-2004, 00:28
Như thường lệ chúng ta sẽ đi qua phần lý thuyết một chút. Bài viết này sẽ hướng dẫn các bạn một chút về các câu lệnh asm đơn giản

Chú ý : Trong bài viết này, phần lý thuyết tôi có tham khảo bài viết của một fan vicki
---------------------
I. Lý Thuyết

Tính offset của lệnh JMP, JX, JNX & CALL


I. Lý thuyết

1. Giới thiệu

Xin chào các bạn! Trong bài viết này tôi muốn giải thích với các bạn cách tính toán offset của các câu lệnh JUMPS và CALL. Bạn sẽ thường xuyên tính toán offset của các câu lệnh này trong reverse. Đặc biệt, hiểu được cách tính cũng giúp bạn tiếp cận với kĩ thuật làm mù điểm vào host trong virus (EPO - EntryPoint Obscrured) một cách dễ hơn!

2. Các loại câu lệnh JUMPS & CALL

Ở đây tôi chỉ mô tả sự khác biệt của các câu lệnh JUMPS & CALL mà bạn thường gặp!

a) Short Jumps: nhảy ngắn có hoặc không có điều kiện đều là 2 byte. Bạn chỉ có thể nhảy tới 127 byte hoặc nhảy lùi 128 byte với các short jumps

b) Long Jumps: nhảy dài, 6 byte cho có điều kiện hoặc 5 byte cho không điều kiện

c) Calls: 5 byte ở dạng short

* Đây là bảng mã máy mô tả sự khác biệt giữa các loại JUMPS & CALLS

Jump Description Short Op-Code Long Op-Code
call procedure call E8******xx N/A
jmp unconditional jump EBxx E9******xx
ja/jnbe jump if above 77xx 0F87******xx
jae/jnb/jnc jump if above or equal 73xx 0F83******xx
jb/jc/jnae jump if below 72xx 0F82******xx
jbe/jna jump if below or equal 76xx 0F86******xx
jcxz/jecxz jump if cx/ecx equals zero E3xx N/A
je/jz jump if equal/zero 74xx 0F84******xx
jne/jnz jump if not equal/zero 75xx 0F85******xx
jg/jnle jump if greater 7Fxx 0F8F******xx
jge/jnl jump if greater or equal 7Dxx 0F8D******xx
jl/jnge jump if less 7Cxx 0F8C******xx
jle/jng jump if less or equal 7Exx 0F8E******xx
jno jump if not overflow 71xx 0F81******xx
jnp/jpo jump if no parity/parity odd 7Bxx 0F8B******xx
jns jump if not signed 79xx 0F89******xx
jo jump if overflow 70xx 0F80******xx
jp/jpe jump if parity/parity even 7Axx 0F8A******xx
js jump if sign 78xx 0F88******xx

Vấn đề của chúng ta là cần tính các số xx và ******xx trong mã máy

3. Tính toán offset

* Công thức: OFFSET = địa chỉ của nơi đến - (địa chỉ nơi jumps/calls + kíck thước của câu lệnh jumps/calls)

* Ví dụ:

a) Bạn đang ở tại địa chỉ 40108E. Bạn cần đặt một lệnh nhảy đến địa chỉ 4020D0 tại địa chỉ này

:40108E JMP 4020D0

Offset = 4020D0 - [40108E + 5(E9******xx có kích thước 5 byte)] = 103D. Mã máy sẽ là E93D100000, trong đó E9 là mã máy của JMP và 3D100000 là số ******xx mà bạn vừa tính được (0000103D viết ngược lại sẽ là 3D100000)

b) Bạn cần đặt một lệnh CALL đến địa chỉ 401184 tại địa chỉ 40218B

:40218B CALL 401184

Offset = 401184 - [40218B + 5(E8******xx có kích thước 5 byte)] = FFFFEFF4. Mã máy sẽ là E8F4EFFFFF, trong đó E8 là mã máy của CALL và F4EFFFFF là số ******xx mà bạn vừa tính được (FFFFEFF4 viết ngược lại sẽ là F4EFFFFF)
II. Thực hành

Bạn đã dùng Notepad! Mỗi lần mở file có kích thước vượt quá 64KB, Notepad sẽ hiển thi một hộp thông báo "Lỗi: File có kích thước quá lớn. Bạn có muốn dùng WordPad để đọc file này không?" - Yes | No . Nhiệm vụ của chúng ta là patch file notepad.exe để mỗi khi mở file có kích thước lớn hơn 64KB nó sẽ không hiển thị hộp thông báo trên nữa và tự động mở file bằng WordPad cho bạn. Trước khi bắt đầu mọi việc, bạn hãy sao lưu file notepad.exe trước đề phòng sự cố! Thật ra thì cũng không cần thiết bởi bạn có thể dùng SFC(System File Checker) của Windows để restore lại file notepad.exe bất cứ lúc nào. Trong ví dụ này tôi dùng bản Notepad của Windows98SE.

1/ Chạy W32Dasm. Sau khi dism file xong, bạn vào menu Ref/String Data References, tìm dòng String Resource ID=00056: "wordpad.exe" và double click lên nó. Để xem chúng ta có gì nào?!

* Possible Reference to String Resource ID=00036: "&f"
|
:004033A5 6A24 push 00000024 ; rất quan trọng
:004033A7 A1B4504000 mov eax, dword ptr [004050B4]
:004033AC 56 push esi
:004033AD 50 push eax
:004033AE FF7508 push [ebp+08]

* Reference To: USER32.MessageBoxA, Ord:01ACh
|
:004033B1 FF15A8644000 Call dword ptr [004064A8] ; hiện messagebox
:004033B7 83F806 cmp eax, 00000006 ; đã chọn YES hay NO? (IDYES=6)
:004033BA 0F85A7000000 jne 00403467 ; NO -> thoát
:004033C0 6804010000 push 00000104 ; YES -> mở file bằng WordPad
:004033C5 8D858CFDFFFF lea eax, dword ptr [ebp+FFFFFD8C]
:004033CB 837D1001 cmp dword ptr [ebp+10], 00000001
:004033CF 1BFF sbb edi, edi
:004033D1 50 push eax
:004033D2 83C737 add edi, 00000037

* Possible Reference to String Resource ID=00056: "wordpad.exe"
|
:004033D5 6A38 push 00000038
:004033D7 FF3540554000 push dword ptr [00405540]
Chúng ta chỉ cần thay PUSH 00000024 tại địa chỉ 4033A5 thành lệnh nhảy ngắn đến địa chỉ 4033C5. Mã máy của short jump là EBxx. May mắn là kích thước của short jump này là 2 byte, đúng bằng kích thước của câu lệnh PUSH 00000024 tại địa chỉ 4033A5 (6A24)! Áp dụng công thức tính offset ở trên, xx = 4033C0(địa chỉ đến) - [4033C5(địa chỉ jump) + 2 (kích thước của short jump EBxx)] = 19. Okay, mã máy sẽ là EB19!

6A24 PUSH 00000024
EB19 JMP 004033C0

2/ Chạy Hiew và mở file notepad.exe. Nhấn F4, F5 và nhập vào ".4033A5". Nhấn F3 và thay đổi 6A24 thành EB19, sau đó bấm F9 và F10. Xong, thử chạy lại Notepad và mở một file có kíck thước lớn hơn 64KB xem sao!

freewarez
08-06-2004, 00:30
II. Thực hành

Vì phần lý thuyết có lẽ khá phức tạp đốI vớI các bạn newbie, nên trong phần thực hành chúng ta sẽ giảI trí vớI phần một phần mềm khá nổI tiếng của hãng EURONET đó là phần mềm Hanami…Một phần mềm trang trí cho desktop…Nó làm một cây anh đào ngay trên desktop, sao đó những cách hoa đào sẽ rơi nhè nhẹ xuống thanh taskbar…Lâu lâu lạI có một cơn gió thổI qua làm nhưng cánh hoa đào cuốn theo chiều gió bay thật đẹp…

Đẹp thì có đẹp đó…Nhưng “thằng Hanami” này bắt bạn phảI đăng ký…Nếu bạn không đăng ký thì mỗI lần bạn chạy chương trình nó sẽ đập vào mặt bạn một cái nag “ Not registered…hanami is shareware….” thật bực mình…Dĩ nhiên là bạn không muốn cái nag đó hiện ra chứ gì…Đúng vậy…Nhu cầu bức thiết là chúng ta phảI ***** nó…Ok Sau khi tảI về (từ site euronet), bạn cài đặt, copy một bản hanami.exe ra dự phòng, rủI làm bậy còn có cái mà backup lại…Okie chúng ta bắt đấu ***** nó.

Phần mềm : Hanami (http://www.euronet.nl/~rja/Hanami/
Công cụ : Windasm, Hiew
Cracker : hacnho

Đầu tiên bạn chạy hanami, một cái nag “ Not registered…hanami is shareware….” Văng ra, bạn hãy nhớ dòng “…shareware”, click ok…Sau đó bạn vào bạn click vào nút lệnh (command button) “ Register…”, một cái nag khác văng ra bắt bạn nhập vào “ your name”, “keyword”, “Registration Code”

…He he bạn đừng tưởng bở là “ cái “ keyword” không có tác dụng nhe…Tuy phần mềm rất nhỏ nhưng tác giả lạI đặt một cơ chế tạo key phức tạp nhiêu khê…Nếu dùng SoftIce để tìm số code thì hơi lâu…Nên tôi dùng phương pháp đơn giản là patch nó

hãy nhập vào tên, keyword và Registration Code. Ở đây tôi nhập vào

Your name : hacnho
Keyword :123456
Registration Code: abcdef

Enter, oh la la một nag văng ra “ Error…The registration code entered is incorect”…Ok hãy nhớ lấy nó, bạn hãy thoát hanami.

Bây giờ chúng ta mở WDASM lên, chọn file Hanami.exe…chờ WDASM disassembly xong bạn vào menu Refs, chọn String Data References, kiếm cho ra dòng “The registration code entered”, double click vào nó hai lần…Bạn trở lạI màn hình của nhìn xem chúng ta đang ở đâu…bạn sẽ thấy như thế này:

* Possible String Ref from Data Obj -->"The registration code entered"
-->"is incorect"

:0040886C 68E8424100 push 004142E8
:00408871 8B4D08 mov ecx, dword ptr [ebp+08]
:00408874 51 push ecx

* Refenrence To: USER32.MessageBoxA, Ord :01BEh


:00408875 FF1534124100 Call dword ptr [00411234]
:0040887B EB5A jmp 004088D7


Bây giờ bạn thấy vệt sáng đang ở tại
:0040886C 68E8424100 push 004142E8
hãy dịch chuyển vệt sáng lên trên vài dòng bạn sẽ thấy như sau

*. Possible String Data Ref from Data Obj --> " "
:0040884F 68B0384100 push 004142E0
:00408854 E827140000 call 00409C80
:00408859 83C408 add esp, 00000008
:0040885C E828FEFFFF call 0040869 --> gọi thông báo đăng ký
:00408861 85C0 test eax, eax -->kiểm tra số code
:00408863 7518 jne 0040887D--> nhảy nếu sai (chổ cần *****, nhớ lấy)
:00408865 6A00 push 0000000

đưa vệt sáng đến dòng :00408863 7518 jne 0040887D, nhìn xuống thanh task bar thấy offset là : 00008863 (1)

Trở lại bảng menu Refs, chọn String Data References, bạn tìm dòng " Hanami is a shareware program", double click...Chúng ta lại ra ngoài, Bạn sẽ thấy như sau


* Possible String Ref from Data Obj -->" Hanami is a shareware program"
:004014DE 68583F4100 push 00412F58 -->bạn đang ở đây
:004014E3 A1CC584100 mov eax, đwor ptr [004158CC]
:004014E8 50 push eax


* Refenrence To: USER32.MessageBoxA, Ord :01BEh

:004014E9 FF1534124100 call dword ptr [004011234]


hãy dịch chuyển lên và dòng, bạn thấy

*. Referenced by a (U)nconditional or ©onditional Jump at Address:
|:004014B4©
|
:004014CE 833DF053410000 cmp dword ptr [0040153F0], 00000000
:0040014D5 7518 jne 004014EF --> nhảy nag "Not Registered Yet", cần *****
:004014D7 6A00 push 00000000

*.* Possible String Ref from Data Obj -->"Not Registered Yet"
:004014D9 push 00413F44

bạn hãy di chuyển vệt sáng đến dòng :0040014D5 7518 jne 004014EF, nhìn xuống task bar, thấy offset là 000014D5 (2)

***từ (1) và (2) ta có hai địa chỉ offset là 00008863 , và 000014D5, do jne nghĩa là nhảy nếu không bằng, từ là bạn nhập sai thì sẽ nhảy tới thông báo sai, do đó ta cần ***** ở chổ đổi cho nó dù nhập sai thì sẽ không nhảy...vậy thì ta chỉ cần đổi jne thành je ( 75 thành 74)

Ok bây giờ bạn hãy ghi lại hai offset trên, mở Hiew, mở file hanami.exe lên

Gõ F5, nhập 00008863, gõ F3, sửa 75 thành 74, gõ F9
Gõ F5, nhập 000014D5, gõ F3, sửa 75 thành 74, gõ F9, gõ F10

Okie bây giờ bạn ở Hanami lại xem, bạn sẽ thích ngay mà ha ha ha
-----------------
bài viết của hacnho (vui lòng để lại dòng này khi bạn trích dẫn--thanx a lot

tranngocduong36
14-12-2008, 04:14
Bai cua ban hay qua, cho toi xin cac bai truoc luon nhe, xin cam on

duonghoa
14-12-2008, 09:54
bạn nào có winrar co ***** cho mình với mình không biết *****.
Email của mình là:vo_van_hoa@yahoo.com.vn.
mình thanks trước nge.

tềthiên
14-12-2008, 14:36
Chúc mừng 2 chuyên gia đào mồ.

vankhin
16-12-2008, 16:34
Trong phan Unpack ban dung WinNC thi nhan F3, con neu dung Win XP thi lam the nao chi minh voi ,minh con yeu lam...

[=========> Bổ sung bài viết <=========]

ai co link download W32dasm,Hiew ko giup minh voi..

PhuCuongSPI
22-12-2008, 09:09
Đã không giúp người lại còn hại người. Nhân gian còn bao nhiêu con sâu bọ như thế nữa vậy ?