Cracking part 12

Chia sẻ: Dqwdasdasd Qwdasdasdasd | Ngày: | Loại File: PDF | Số trang:6

0
46
lượt xem
4
download

Cracking part 12

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ
Lưu

Nội dung Text: Cracking part 12

  1. + SoftICE 4.0 : 5419-00009D-DF + SoftICE 4.05 : 5109-0122DF-FF Sau đó các bác típ tục cài đặt cho đến khi hiện bảng thông báo các bác có muốn restart lại máy không , các bác khoan hãy ấn Yes mà hãy dùng Notepad ( hay chương trình soạn thảo nào cũng được ) để mở file winice.dat trong thư mục vừa cài đặt SoftICE. Các bác tìm dòng INIT=”WR;X;” ( hoặc có thể là INIT=”X;” ) ở gần đầu file và sửa thành INIT=”WD;WR; WL;CODE ON;X;”. Sau đó các bác kéo xuống gần cuối file tìm các dòng sau : ; ***** Examples of export symbols that can be inluded for Windows 9x ***** ; Change the path to the appropriate drive and directory ;EXP=c:\windows\system\kernel32.dll ;EXP=c:\windows\system\user32.dll ;EXP=c:\windows\system\gdi32.dll ;EXP=c:\windows\system\comdlg32.dll ;EXP=c:\windows\system\shell32.dll ;EXP=c:\windows\system\advapi32.dll ;EXP=c:\windows\system\shell232.dll ;EXP=c:\windows\system\comctl32.dll ;EXP=c:\windows\system\crtdll.dll ;EXP=c:\windows\system\version.dll ;EXP=c:\windows\system\netlib32.dll ;EXP=c:\windows\system\msshrui.dll ;EXP=c:\windows\system\msnet32.dll ;EXP=c:\windows\system\mspwl32.dll ;EXP=c:\windows\system\mpr.dll Và các bác hãy xóa hết các dấu ; ở các dòng này. Xong các bác save flie lại rùi restart lại máy. ------------------------------------------------------------------------------------------------ Để vào SoftICE, các bác ấn Ctrl-D. Và để sử dụng SoftICE có hiệu quả, các bác nên để các khung như thế này : |---------------------------| |_____Registers____| Để chỉnh sửa khung này, các bác đánh R |---------------------------| |___Data Window___| Các bác đánh D để xem address , đánh E để chỉnh sửa |---------------------------| |___Code Window___| Đánh U để xem address , đánh A để chèn asm code |---------------------------| |_Command Window_| Khung này để đánh lệnh và đọc kết quả |---------------------------| Những phím quan trọng khác ( theo mặc định ) : H/F1 : Online Help F5/Ctrl-5 : Run
  2. F8 : “bước” vào functions F10 : “bước” qua functions F11 : “bước” ra khỏi functions 3. Tìm đoạn code registration =================== Chắc chắn đây là “con đường” dễ nhất để thực hành, để “có” 1 chương trình shareware và đăng kí nó. 3.1 Phần mềm thực hành : Task Lock 3.00 ------------------------------------------------------ Đây là 1 chương trình mà sự bảo vệ tương đối đơn giản, đó chỉ là 1 đoạn code mà không bao giờ thay đổi. 3.1.1 Tìm hiểu về chương trình ---------------------------------------- Trước khi bước vào crack chương trình , các bác hãy trả lời 3 câu hỏi này nha : 1 - Đó là chương trình 16 hay 32 bit ? 2 - Làm thế nào để nhập số đăng kí ? 3 - Phần help có thể giúp gì chúng ta để tìm ra cách làm việc của registration không ? Các bác hãy tự tìm câu trả lời cho các câu hỏi trên trước khi chúng ta típ tục nha. Em chờ các bác đấy… Xong chưa các bác ? OK, và sau đây là câu trả lời, các bác xem thử coi có đúng với câu trả lời của các bác không nha ;) 1 – Đây là 1 chương trình 32 bit 2 – Các bác có thể nhập số đăng kí bằng cách gõ vào khung dialog khi các bác chọn menu “Register!Register…” 3 – Và qua phần Help, các bác có thể biết được chương trình có 2 cách đăng kí : Individual (đăng kí cá nhân) và Site License (đăng kí tại site). Thế nào, câu trả lời của các bác có đúng không ;) Nếu bác nào trả lời đúng hết thì em xin chúc mừng vì “ các bác có mùi cracker rùi đấy “ ( sorry bác benina nha vì sử dụng câu của bác mà chưa xin phép ;). Đọc đến đây em nghĩ chắc sẽ có bác thắc mắc rằng tại sao phải trả lời câu hỏi 1 làm gì. Đúng là em thấy các tuts về SoftICE khác đều không nói về vấn đề này. Vì sao ? Vì các tác giả viết sai? Không đâu. Thực ra việc trả lời câu hỏi 1 sẽ giúp cho việc crack của các bác đơn giản hơn nhiều. Lý do ư , xin mời các bác đọc típ sẽ rõ. Hehehe… 3.1.2 “Bẫy” (breakpoint) các chuỗi code -------------------------------------------------- Những đoạn code thường được nhập vào những box Windows Edit. Và để dừng các đoạn code, SoftICE phải “đọc” được nội dung của các box Windows Edit này với “sự giúp sức” của 1 trong các function (lệnh) sau : - Đối với chương trình 16 bit : GetWindowText , GetDlgItemText
  3. - Đối với chương trình 32 bit : GetWindowTextA , GetWIndowTextW , GetDlgItemTextA , GetDlgItemTextW Giờ thì chắc các bác đã hiểu vì sao em bảo các bác trả lời câu hỏi 1 ở trên. Okie, giờ chúng ta típ tục nha. À quên, em còn điều này chưa nói, các bác có thấy cái chữ cái A và W trong các function của chương trình 32 bit không, no’ cho chung’ ta biết nếu function sử dụng one-byte hay double-byte. Double-byte code là RARE. Đến đây chắc các bác đã hỉu ý em: “If i only could break on GetWindowText” (cái này em xin để nguyên văn câu của tác giả vì em chả bít dịch thế nào cả ;) Để đặt breakpoint trong SoftICE , các bác vào SoftICE bằng cách ấn Ctrl-D, sau đó dùng lệnh BPX cộng với tên của function hoặc memory address. Vì TaskLock là chương trình 32-bit nên sẽ đặt breakpoint ở hàm GetWindowTextA. Nếu nó không làm việc, chúng ta có thể thử hàm khác. Trong khung Command Window của SoftICE chúng ta đánh BPX GetWindowTextA. Nếu các bác gặp lỗi “No LDT”, các bác hãy coi xem các bác có đang chạy chương trình nào không ( tốt nhất là không nên chạy chương trình nào khi các bác dùng mở SoftICE ). Đặc biệt nếu các bác dùng Norton Commander/Dos thì nó sẽ disturb function này. Các bác có thể kiểm tra nếu các bác có bất kì breakpoint nào trong list breakpoint bằng lệnh : bl Nó sẽ hiện ra như thế này : 00) BPX USER32!GetWindowTextA C=01 Để ra khỏi SoftICE, các bác ấn Ctrl-D hoặc F5 hoặc dùng lệnh X. Okey, các bác đã bẫy bất kì lệnh gọi GetWindowTextA. Bây giờ các bác hãy nhập số nào đó (ta gọi là FS nha) và ấn OK… chuyện gì sẽ xảy ra? Còn gì nữa, 1 cái nag văng ra nói rằng bác nhập sai registration number. Nhưng như dzậy có nghĩa là sao, nghĩa là nó không gọi hàm GetWindowTextA, vậy thì chúng ta sẽ thử với GetDlgItemTextA. Nhưng trước hết chúng ta phải xóa cái breakpoint đã đặt đi đã. Vào SoftICE đánh : bc 0 , xong chúng ta set breakpoint mới : BPX GetDlgItemTextA Chúng ta hãy thử lại nha 3.1.3 Làm việc với SoftICE ---------------------------------- Oh, nó đã làm việc! Bây giờ chúng ta…... uống ly nước đã, em khát nước quá rùi ;)) OK, bây giờ chúng ta đang ở trong SoftICE , tại cái nơi mà function GetDlgItemTextA bắt đầu. Để “nhảy” đến nơi mà nó được gọi, các bác hãy nhấn F11. Rùi, chúng ta đang ở trong SGLSET.EXE , nếu các bác không biết thì các bác hãy nhìn vào dòng nằm giữa khung code window và comand window, các bác sẽ thấy như thế này: -----------SGLSET!.text+1B13-------------- Bây giờ các bác có thể disable breakpoint bằng lệnh : bd 0 Nếu các bác muốn enable nó lại thì các bác dùng lệnh : be 0 Các bác nhìn vào dòng đầu tiên trong code window : CALL [USER32!GetDlgItemTextA] Để thấy những lệnh ở trên, các bác nhấn Ctrl-Up. Nếu các bác không bít gì về Assembler
  4. thì các bác hãy nhìn xuống đây : RET Kết thúc function PUSH EBP___________________________Bắt đầu function MOV EBP,ESP SUB ESP,0000009C PUSH ESI LEA EAX,[EBP-34] ___________________ EAX=EBP-34 PUSH EDI MOVE ESI,ECX PUSH 32 _____________________________Lưu chiều dài của FS PUSH EAX___________________________ Lưu địa chỉ của text buffer PUSH 000003F4_______________________Lưu Identifier của control PUSH DWORD PTR [ESI+1C]______________Lưu handle của dialog CALL [USER32!GetDlgItemTextA] _________Chúng ta đang ở đây Em xin giải thích chút xíu : lệnh PUSH có nhiệm vụ lưu lại giá trị cho lần sử dụng sau. Các bác chú ý vào 2 dòng màu đỏ. Nhìn vào đoạn lệnh trên chúng ta bít được địa chỉ của text buffer đã được cất giữ trong EAX, và EAX đó là EBP-34. Bây giờ chúng ta hãy nhìn vào EBP-34, nó sẽ như thế này : d ebp-3 Chúng ta nhấn F10 đến khi thấy cái gì liên quan đến EBP-34, và nó đây (không bít có giống của các bác không) : LEA EAX, [EBP+FFFFFF64]_______________EAX=EBP-9C LEA ECX, [EBP-34]_____________________ECX=EBP-34 PUSH EAX____________________________ Lưu EAX PUSH ECX_____________________________Lưu ECX CALL 00403DD0______________________Gọi function ADD ESP, 08__________________________Xóa thông tin đã lưu TEST EAX, EAX_________________________Kiểm tra function lần nữa JNZ 00402BC0________________________Nhảy nếu không bằng 0 Theo em thì đây là 1 đoạn code so sánh, nó làm việc như thế này : Nhập vào 2 giá trị , trở về 0 nếu 2 giá trị bằng nhau, còn không bằng nhau thì khác 0. Okey, cái gì nằm phía sau [EBP+FFFFFF64], do SoftICE không thể tự negative number, nên để tìm giá trị thật của nó các bác làm phép tính như thế này: 100000000 – FFFFFF64 = 9C Trong SoftICE , các bác cũng có thể thực hiện phép tính ấy bằng lệnh : ? 0 – FFFFFF64 Tại sao là 0 mà không phải 100000000 ( không lẽ 0=100000000 => điều này trái với các quy tắt toán học ) ? Đó là số 100000000 qua lớn đối với SoftICE, nhưng khi ta thay 100000000 bằng 0 thì nó cũng cho kết quả như vậy. Và bây giờ là lúc xem cái gì nằm phía sau EBP-9C ( hồi hộp quá ) , các bác làm như sau : d ebp-9c Ah, data window hiện ra cho chúng ta 1 dãy số - registration number đây ư ? không đâu (
  5. mà sao cái số này giống cái số mà hồi nãy ta nhập vào quá hen ) . Các bác có nhớ đoạn code ở trên không, nó so sánh 2 số : 1 là số ta nhập vào , còn số thứ 2 chính là registration number. Do vậy chúng ta tiếp tục “nhảy” với F10 nha ;) ( cố lên các bác , thằng TaskLock sắp là của các bác rùi đấy) . Và chúng ta sẽ đến đoạn code này đây ( nó giống đoạn code ở trên đấy các bác ạ ) : LEA EAX, [EBP-68] ____________________EAX=EBP-68 LEA ECX, [EBP-34]_____________________ECX=EBP-34 PUSH EAX____________________________Lưu EAX PUSH ECX____________________________ Lưu ECX CALL 00403DD0________________________Gọi function ADD ESP, 08_________________________Xóa thông tin đã lưu TEST EAX, EAX________________________Kiểm tra function lần nữa JNZ 00402BFF _______________________Nhảy nếu không bằng 0 Và các bác hãy chú ý đến dòng LEA EAX, [EBP-68] , nó dấu cái gì vậy ? Thui thắc mắc làm cái gì, ta dùng lệnh d là biết nó dấu gì thui mà. Nào, các bác đánh cùng em nha : d ebp-68 Hehehe, đây rùi, cuối cùng thì cái registration number nó cũng vác mặt ra !!! 3.2 Phần mềm thực hành : Command Line 95 ------------------------------------------------------- Đây là 1 chương trình khá dể, nó chỉ dùng 1 đoạn code đơn giản để tính số serial, do đó chúng ta sẽ dùng nó để làm ví dụ. 3.2.1 Tìm hiểu về chương trình ---------------------------------------- Sau khi kiểm tra (cách kiểm tra xem ở phần trước), các bác bít đây là 1 chương trình 32bit, và nó yêu cầu chúng ta nhập tên đăng kí và registration trong 1 hộp thoại. Okie, sau khi bít những thông tin “quý báu” trên, chúng ta sẽ đến bắt đầu “bẫy” nó. Hehehe....dzui qua’ ;)) 3.2.2 “Bẫy” các chuỗi code ---------------------------------- Giống như với TaskLock “xấu số”, chúng ta sẽ đặt breakpoint. Chúng ta có thể set breakpoint cho cả 2 function : GetWindowTextA và GetDlgItemTextA. Vào SoftICE (đừng nói là các bác không bít vào nha, đọc đến đây rùi mà nỡ nói 2 chữ không bít là buồn em lắm đó), rùi đánh : BPX GetWindowTextA BPX GetDlgItemTextA Bây giờ chúng ta mở hộp thoại đăng ký ra, nhập tên ( gọi là FN – Fake Name ) và nhập
  6. số nào đó ( em nhập là 12345 và ta hãy gọi số này là FS – Fake Serial ), sau đó nhấn OK… Và… BÙM, SoftICE nhảy ra giữa màn hình tại function GetDlgItemTextA. Cũng như 
Đồng bộ tài khoản