- Sau khi kết thúc quá trình này, đại chỉ này trở thành : Code: 0012F5FC DC 4E D1 46 43 DE E0 B5 24 97 84 B4 DC 4A 65 2D ÜNÑFCÞàµ$— „´ÜJe- - Đối chiều mới MD5Hash(Moonbaby) ta thấy là hoà toàn giống nhau, như vậy quá trình mã hoá này là mã hoá MD5 nguyên bản . Từ đây ta cần trace về để xác định các Function của MD5 . - Trace ngược tiếp ta xác định được các Function : Code: 005680C5 |. E8 AEFEFFFF CALL Arial_CD.00567F78 ; <== MD5Start 005680CA |. 8B45 FC MOV EAX,[LOCAL.1] ; <== User 005680CD |. E8 AECFE9FF CALL Arial_CD.00405080 ; <== LenUser 005680D2 |. 50 PUSH EAX 005680D3 |. 8B45 FC MOV EAX,[LOCAL.1] 005680D6 |. E8 9DD1E9FF CALL Arial_CD.00405278 005680DB |. 8BD0 MOV EDX,EAX 005680DD |. 8D45 A4 LEA EAX,[LOCAL.23] ; <== User 005680E0 |. 59 POP ECX ; <== LenUser 005680E1 |. E8 C6FEFFFF CALL Arial_CD.00567FAC ; <== MD5Update 005680E6 |. 8BD3 MOV EDX,EBX 005680E8 |. 8D45 A4 LEA EAX,[LOCAL.23] 005680EB |. E8 3CFFFFFF CALL Arial_CD.0056802C ; <== MD5Finished - Và Function gốc để đến được Function này là : Code: 00584854 |. E8 4738FEFF CALL Arial_CD.005680A0 ; <== MD5Hash 00584859 |. 8D45 E4 LEA EAX,[LOCAL.7] 0058485C |. 8D55 F4 LEA EDX,[LOCAL.3] 0058485F |. E8 B038FEFF CALL Arial_CD.00568114 ; <== Convert to String 00584864 |. 8B55 F4 MOV EDX,[LOCAL.3] ; <== MD5Hash : Real Serial 00584867 |. 8B45 F8 MOV EAX,[LOCAL.2] ; <== Fake Serial 0058486A |. E8 5509E8FF CALL Arial_CD.004051C4 ; <== Compare - Trace ngược ra tiếp ta đến Function chính thức cho qua trình mã hoá này : Code: 00570CE5 . E8 323B0100 CALL Arial_CD.0058481C ; <== Encrypt 00570CEA . 84C0 TEST AL,AL 00570CEC . 74 7E JE SHORT Arial_CD.00570D6C 00570CEE . A1 70905800 MOV EAX,DWORD PTR DS:[589070] 00570CF3 . 8B00 MOV EAX,DWORD PTR DS:[EAX] 00570CF5 . 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4] 00570CF8 . E8 7B3E0100 CALL Arial_CD.00584B78 00570CFD . 6A 40 PUSH 40 00570CFF . B9 940D5700 MOV ECX,Arial_CD.00570D94 ; ASCII "Congratulations!" 00570D04 . BA A80D5700 MOV EDX,Arial_CD.00570DA8 ; ASCII "Register successfully! Thank you for your support!" /*/*/*/ - SERIAL tương ứng : User : REA-cRaCkErGrOuP Serial : b31bd8cf368020030870e5f4d48df85d moonbaby (http://www.reaonline.net) Let’s Cracking by Olly BÀI 2: LET’S PATCH THE SOFTS BY OLLDBG Ok, bây giờ chúng ta hảy bắt đầu làm quen với các chức năng của Oll nhé Softs ở đây tui chọn cái Patchme No.1 mới ra lò của bác QHQCrcker .Các bạn download ở đây: Link: http://www.reaonline.net/forum/showthread.php?t=163 I.Thu thập thông tin về chương trình cần crack: Chúng ta hảy chạy cái crackme.exe xem sau: -Nó bắn ra 1 cái Nag chào hỏi theo kiểu Tây: Hi Hello Newbiez wold Và thước yêu cầu: Rulez : 1. Patch nag (Bỏ cái Nag này) 2. Change bad text to GOODBOY text. (Thay đổi cái text trong Nag sau thành GOODBOY text) 3. Enable Exit button. (Cho nút button Exit có tác dụng) - Bấm Ok nó sẽ hiện cái Nag thứ 2: QHQ Patch me No.1 - Exit chương trình, bây giờ Patch nó thôi II Thực hành Pacth soft : Các bạn mở chương trình Oll, vào Menu File/Open : Load chương trình QHQPatchmeNo1.exe vào Oll(Hay bấm F3 cũng được) Chức năng đầu tiên tui muốn giới thiệu với các bạn là: 1.Run (F9) : Chạy chương trình trong Oll. Bấm F9 chạy thử chương trình trong Oll xem sau. Các bạn thấy sau, nó bắn Nag đầu tiên phải ko?.Bấm button OK chương trình bị crash chứ gì?. Đây cũng là 1 cách bảo vệ chương trình ko có các Cracker phá phách .Nguyên tắc của nó là khi phát hiện máy tính của bạn đang chạy chương trình debugger thì sẽ crash phá vỡ cấu trúc code của chương trình ko cho chạy tiếp , cơ chế này các cracker hay gọi là Anti-debugger gì đó Hìhì Vậy chúng ta pó tay sao?? Bình tỉnh nhé, chúng ta Load lại chương trình trong Oll xem sau. Tui muốn ghi chú các bạn ở đây 1 chút : Oll chạ y qua 1 chương trình thì coi như một đi ko trở lại. Nó chỉ để lại những “dấu chân trên cát” mà thôi. Tức là nó sẽ báo ta nhưng gì nó đã đi qua chứ ko quay lại được.Muốn làm việc lại với nó ,chúng ta phải Load nó lại vào Oll . OK, bây giờ tui sẽ giới thiệu các bạn chức năng Load lại chương trình một cách nhanh chóng mà ko cần phải bấm F3 rồi chọn lại file cho rắc rối.Đó là: 2.CTRL+F2 : Đây là chức năng ch ạy lại chương trình. Hihi , các bạn thấy ko , tòan là các phím nóng. Làm sao mà nhớ hết đây trời!. Không sao, không sao, làm nhiều sẽ tự động nhớ thôi. Hy vọng thế!!!!!! Sau khi Load lại chương trình, tui có ý tưởng như sau: Vì tui biết chương trình patchme ko bị crash ở cái Nag đầu tiên nên sau ta ko tạm ngưng chương trình khi nó bắn cái Nag đầu tiên. Rồi vào cửa số code xem code nó ở đâu để patch cái Nag đó theo yêu cầu của tác giả.Vậy chúng ta phải tìm hiểu chức năng kế tiếp là : 3. Pause ̣F12 : Tạm ngưng chương trình. OK, bây giờ các bạn bấm F9, chạy chương trình.Khi bắn cái Nag đầu tiên các bạn khoan hả bấm nút OK mà hảy trờ lại Oll bằng cách click vào cửa sổ Oll. Sau đó bấm F12. Các bạn hảy nhìn cửa sổ code cửa window CPU xem sao. Tòan là mã code trong bộ nhớ , ko phải là mã code chương trình. Vậy là phá sản sao? Tui nghĩ lại có ý kiến thử cho chương trình tự động trace over (trace ko vào hàm Call để soi mói) từng dòng lệnh 1 cách chầm chậm khi muốn ng ừng ở đâu thì ta pause ở đó để xem đọan code nó là gì. Mục đích ở đây là trong cái cửa sổ code của window CPU có đọan code của chương trình Ehèm, và thật sự Oll đã có chức năng này. Tui xin giới thiệu các bạn 4.Animate Over (CTRL+F8): Chức năng này như sau: Trace từng dòng lệnh mà ko vào hàm call ‘soi mói’ (trace over) một cách “chậm chậm “ và trong cửa sổ code của CPU hiện ra quá trình khi trace.Chức năng này tui gọi tóm tắc là TraceO động Tui hay sử dụng chức năng để đi dến các đọan code bắn Nag đó các bạn. OK, bây giờ thử xem sau: -Load lại chương trình CTRL+F2 -Bấm CTRL+F8 : traceO động. Nó bắn ra Nag đúng ko -Bây giờ trở lại Oll, đừng bấm F12 nhé. Ta thấy Oll ngừng tại đọan code sau để chờ ta bấm phím OK(chúng ta lợi dụng chức năng này để tìm ra Nag): Quote: 00401021 > 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL 00401023 68 EB304000 PUSH QHQPatch.004030EB ; |Title = "Hi" 00401028 68 56304000 PUSH QHQPatch.00403056 ; |Text = "Hello newbiez world. Try with me! Rulez : 1. Patch this nag.2. Patch the BADBOY static 3* Make Exit button is Visible. Hope you fun with me " 0040102D 6A 00 PUSH 0 ; |hOwner = NULL 0040102F E8 2E050000 CALL <JMP.&user32.MessageBoxA> ; \MessageBoxA <<<<<<<<Ta dang o day 00401034 |. E8 0B050000 CALL <JMP.&kernel32.IsDebuggerPresent> ; [IsDebuggerPresent 00401039 |. 0BC0 OR EAX,EAX 0040103B |. 74 07 JE SHORT QHQPatch.00401044 0040103D >|. C605 01304000>MOV BYTE PTR DS:[403001],1 OK rồi nhé chúng ta đã tìm ra đọan code bắn Nag. Bây giờ tui sẽ chỉ bạn cách đánh dấu mã code này , để mỗi lần ta load lại chương trình muốn goto đến đọan code này thì sẽ rất dễ dàng . Chúng ta ko cần phải viết ra giấy addr cần nhớ như SI nữa. 5.Label : Đánh dấu dòng lệnh hay “gắn 1 cái nhãn” cho dòng lệnh nào đó. Bây giờ các bạn đang đứng tại đọan code bắn Nag trong Oll, nhắc lại đừng bấm F12 nhé. Các bạ n hảy nhìn bên dưới màn hình Oll , góc tay phải hiển thị chế độ làm việc như sau: Animating đúng ko các bạn . Nếu đúng thế thì máy của bạn đang ở trạng thái như máy của tui. Các bạn hảy nhìn chổ này cho quen mắt nhé đây là nơi chúng ta biết thằng Oll đang làm gì. Tiếp theo các bạn click vào dòng dưới lệnh này: 00401034 |. E8 0B050000 CALL <JMP.&kernel32.IsDebuggerPresent> ; [IsDebuggerPresent Sau đó click phải vào nó, sẽ hiển thị 1 menu pop-up. Chọn Label. Đánh vào 1 cái tên nào đó cho dòng lệnh này.Ở đây tui đánh name: “point1”. Bấ m Ok. Vậy là chúng ta đã đặt tên cho dòng lệnh trên là ‘point1’ OK, bây giờ các bạn bấm CTRL+F2 load lại chương trình. Đừng chạy chương trình, các bạn hảy click phải trong cửa sổ CPU, chọn Goto/Expression ( hay nhấn CTRL+G). Đánh vào name: ‘point1’. Con trỏ cửa cửa sổ CPU sẽ nhảy đến dòng lệnh mà ta đặt tên. Bây giờ tui sẽ chỉ các bạn cách NOP các dòng lệnh sau để patch cái Nag đầu tiên: Quote: 00401021 > 6A 00 PUSH 0 ; /Style = MB_OK|MB_APPLMODAL 00401023 68 EB304000 PUSH QHQPatch.004030EB ; |Title = "Hi" 00401028 68 56304000 PUSH QHQPatch.00403056 ; |Text = "Hello newbiez world. Try with me! Rulez : 1. Patch this nag.2. Patch the BADBOY static 3* Make Exit button is Visible. Hope you fun with me " 0040102D 6A 00 PUSH 0 ; |hOwner = NULL 0040102F E8 2E050000 CALL <JMP.&user32.MessageBoxA> ; \MessageBoxA Vì sau chúng ta NOP các dòng này thì sẽ patch cái Nag đầu tiên , xin các bạn đọc tut “Một cách Kill Nag dùng hàm MessageBoxA” mà tui đã viết. Đầu tiên chúng ta click chọn dòng lệnh đầu tiên , bấm và giử nút Shift sau đó click vào dòng lệnh cuối cùng, Tòan bộ nhóm lệnh trên được chọn . Bây giờ chúng ta click phải vào nhóm lệnh đã chọn >> menu pop-up/Binary/ Fill with NOPs. Sau khi chọn như trên thì Oll sẽ NOP tòan bộ nhóm lệnh trên. (Rất nhẹ nhàng so với sử dụng HIEW).Các bạn hảy nhìn vào cửa sổ Code sẽ thấy được điều đó. Ở đây chúng ta ch ỉ NOP chương trình đang Load trong bộ nhớ chứ ko phải trên File chúng ta đang crack. Vậy nhiệm vụ kế tiếp là chúng ta phải “bức” cái chương trình đang nằm trong bộ nhớ lưu ra thành 1 file mới , việc này các cracker hay gọi là “dump” nó ra đó bạn. Chú ý: -Muốn làm được điều này bạn phải có Plugin OllDump , tức là cái Oll của bạn trên thanh menu có mục Plugin/OllDump. -Qui tắc Dump khi patch: Chương trình mới Load (CTRL+F2), tức là chưa trace hay run qua 1 dòng lệnh nào,kế đó là patch những dòng lệnh cần thi ết, sau đó Dump lưu ra file.(tui sẽ giải thích sau) Bây giờ thực hành nhé: Các bạn chọn menu Plugin/OllDump/Dump Debugged Process. Đừng thay đổi gì hết, bấm OK, đánh vào tên file lưu ra đĩa. Bấm OK. Bây giờ bạn kiểm tra lại file đã dump có chạy ko nhé. Tut này dài quá rồi, Hen tut sau tui sẽ giới thệiu các bạn nhiều chức năng hấp dẫn của OllDbg. Chúc các bạn thành công BÀI 3: W32DASM+HIEW+SI=OLLDBG?? Tính gác kiếm về quê cưới vợ , hôm qua vào mạng rao bán đấu giá cái nick benina để có tiền về xe. Nhưng chẳ ng thấy ma nào mua. Đành ở lại Sì gòn nghiêu ngao vài ba chuyến rồi tính sao. Cái gì nó đến chắc cũng sẽ đến. AQ của Lỗ Tấn là bạn của tui mà , nó dạy tui như thế : )) Hôm nay nghiêu ngao lên mạng, các bạn nữ nhi chi chi (BD hay “lai cái” gì cũng được) “đòi hỏi” quá ,nên để chiều lòng các “người đẹp”, tui lại bắt đầu viết Tut tiếp cho . REA-cRaCkErGrOuP Serial : b31bd8cf368020030870e5f4d48df85d moonbaby (http://www.reaonline.net) Let’s Cracking by Olly BÀI 2: LET’S PATCH THE SOFTS BY OLLDBG Ok, bây giờ chúng ta hảy bắt đầu làm