1. Trang chủ
  2. » Công Nghệ Thông Tin

Cracking part 12 ppt

6 114 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Cracking Part 12 Ppt
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Công Nghệ Thông Tin
Thể loại Tài Liệu Hướng Dẫn
Định dạng
Số trang 6
Dung lượng 113,27 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 kh

Trang 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

Trang 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

Trang 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

Trang 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 (

Trang 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

Trang 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ày đăng: 01/07/2014, 13:20

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm