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

Cracking part 22 potx

6 266 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 22
Trường học Unknown
Chuyên ngành Computer Science
Thể loại Bài luận
Năm xuất bản 2023
Thành phố Unknown
Định dạng
Số trang 6
Dung lượng 153,86 KB

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

Nội dung

Khi chúng ta đặt breakpoint ở HMEMCPY, chúng ta hãy nhấn F10 khoảng 17-25 lần và chúng ta sẽ thấy 1 đoạn code tương tự như sau : Code: PUSH ECX SHR ECX, 2 ; số từ copy REPZ MOVSD ; copy

Trang 1

Serial CrackingỞ phần này, em sẽ không dùng các hàm API chính (như

GetDlgItemTextA hay GetWindowText…) mà sẽ dùng HMEMCPY

Khi chúng ta đặt breakpoint ở HMEMCPY, chúng ta hãy nhấn F10 khoảng 17-25 lần và chúng ta sẽ thấy 1 đoạn code tương tự như sau :

Code:

PUSH ECX

SHR ECX, 2 ; số từ copy

REPZ MOVSD ; copy từ DS:ESI vào ES:EDI

POP ECX

AND ECX, 3

REPZ MOVSB ; tương tự REPZ MOVSD , nhưng chỉ copy 1 byte

XOR DX

XOR AX

Nhìn thì đoạn code trên có vẻ rắc rối, nhưng các bác đừng lo Các bác sẽ dễ dàng tìm ra ở

đó phương pháp set break trên serial hoặc name của các bác

Tại REPZ MOVSD, trong SoftICE các bác đánh “D DS:EDI” (nếu là 32bit) hoặc “D DS:DI” (nếu là 16bit) Các bác sẽ thấy fake name hoặc fake serial Bây giờ hãy đánh “D ES:EDI” (32bit) hoặc đánh “D ES:DI” (16bit) Nó sẽ hiện ra vị trí mà thông tin bạn nhập vào được copy tới (ví dụ như 22BF:00000000) Hãy chú ý tới segment (ở đây là 22BF) Nếu các bác set BPR trên range của memory, các bác sẽ không thể break lại lần nữa Bây giờ hãy ấn F10 cho đến khi các thông tin các bác nhập vào được copy xong (nghĩa là vượt qua REPZ MOVSD) Tại đây các bác hãy đánh “PAGE 22BF:00000000” Các bác

sẽ thấy tương tự như sau :

Code:

Linear | Physical | Attributes | Type

80284960 | 01603960 | PD A AU RW | System

Bây giờ công việc của chúng ta là đặt BPR (breakpoint trên range) tại địa chỉ ở trong cột Linear Để làm được các bác cần biết số byte có trong range, và các bác buộc phải dùng SELECTOR 30 :

Ví dụ : BPR 30:80284960 30:80284969 RW

Nó sẽ set break trên 9 byte trên range trong suốt quá trình RW (đọc/viết) Nếu các bác muốn biết điểm khác nhau giữa các địa chỉ, các bác có thể đánh :

D 30:80284960

Nhớ là các bác phải luôn dùng bộ lọc 30, bởi nó luôn luôn tồn tại

Tiếp theo chúng ta ấn F12 rồi tìm name/serial Xong các bác nhấn F5 rồi đánh BD

<HMEMCPY> và các bác sẽ break khi fake name/serial của các bác được chương trình đọc Tiếp theo là công việc của các bác :))

Serial # Cracking sử dụng HMEMCPY

1 hàm API khá thú vị dùng để crack serial là HMEMCPY Nó sẽ được gọi mỗi khi chuỗi được copy và memory Để sử dụng HMEMCPY, trước hết các bác đánh đại cái gì đó và registration dialog, sau đó load SoftICE và đánh BPX HMEMCPY Trở lại chương trình

Trang 2

và nhấn nút OK/Register… SoftICE sẽ nhảy ra và hãy ấn F11 để trở về nơi gọi nag Nếu

có nhiều hộp thoại edit box, nhấn Ctrl-D 1 và F11 cho đến khi các bác biết chắc rằng toàn

bộ thông tin mà các bác đã được copy Bây giờ các bác sẽ thấy như sau :

Code:

PUSH DWORD PTR [DI]

CALL KERNEL!LOCALUNLOCK

Hầu hết các code đều được kiểm tra từ 1 file executable, bây giờ hãy ấn F10 sau khi các bác đã disable các breakpoint Các bác sẽ “nhảy” qua rất nhiều instruction (có thể là 50 hoặc nhiều hơn), và chắc chắn các bác sẽ nhày qua Kernel32!_freqasm trước khi trở về đoạn code của chương trình Khi các bác đã trở về được đoạn code của chương trình , hãy

“nhảy” với F10 nhưng phải thật chậm Nếu các bác tìm thấy 2 serial được đặt trong stack

và sau đó lệnh CALL được thực hiện > đánh D để xem chúng

Visual Basic Serial Cracking

Trước khi set BPX rtcMsgBox trong SoftICE, các bác cần phải có file

MSVBVM50.DLL Sau đó hãy nhập bất kì cái gì đó trong Registration Box và nhấn Enter SoftICE sẽ break tại rtcMsgBox Bây giờ hãy disassemble chương trình ra , đi đến đoạn code gọi message box Set breakpoint trước đoạn code so sánh, các bác nên biết rằng các function của Visual Basic không khác lắm với API của WIN32, nên họ vẫn sẽ đặt 1 vài thông số nào đó trong stack Và “tóm” các thông số này rất dễ, các bác hãy ấn F5 và F11 vài lần > các bác sẽ thấy những đoạn code “trên cả tuyệt vời”

Những function đáng để “thử” :

vbaLenBstr (nhận chiều dài chuỗi)

vbaStrCopy

vbaStrMove

Visual Basic 6 Serial Catching

Trước hết các bác open WINICE.DAT lên mà thay đổi 1 chút :

Code:

F5=”^x;^dd eax;”

EXP=C:\WINDOWS\SYSTEM\MSVBVM60.DLL

Trong hộp thoại registration hãy nhập bất kì cái gì mà các bác thích Xong hãy vào

SoftICE và đánh “BPX MSVBVM60!_vbaStrCat” Thoát khỏi SoftICE và nhấn nút OK trong hộp thoại registration > SICE nhảy ra :

Code:

:66060B5F PUSH EBP

:66060B60 MOV EBP,ESP

:66060B60 MOV EBP,ESP

:66060B62 PUSH EBP

:66060B65 PUSH EAX

:66060B66 PUSH DWORD PTR [EBP+08]

:66060B69 PUSH DWORD PTR [EBP+0C]

:66060B6C CALL [661106E8]

Trang 3

:66060B72 TEST EAX,EAX

:66060B7A MOV EAX,[EBP+08]

:66060B7D POP EBP

:66060B7E RET 0008

Bây giờ hãy đánh những lệnh sau :

Code:

BC * [Enter]

BPX 66060B7D [Enter]

X [Enter]

Tại đây chúng ta nhấn F5 cho đến khi thấy real serial (là những kí tự) trong Data

Window

06.9 Time Limits

==========

30-Day-Time-Limit

Rất nhiều chương trình shareware chỉ cho phép chúng ta sử dụng trong 1 thời gian ( thường là 30 ngày) Vạy nhiệm vụ của chúng ta là tìm ra đoạn code so sánh số ngày sử dụng , và thay đổi nó Đây là đoạn code đó :

Code:

mov ecx, 1E ; đặt 1E (1Eh=30d) vào ecx

mov eax, [esp+10] ; đặt số ngày đã dùng vào eax

cmp eax, ecx ; so sánh eax và ecx

jl … ; nhảy nếu nhỏ hơn (nghĩa là tiếp tục được dùng chương trình)

Cách đơn giản nhất trong trường hợp này là đổi “mov eax, [esp+10]” thành “mov eax, 1” Làm như vậy chương trình sẽ luôn luôn nghĩ là chúng ta đang chạy chương trình vào ngày đầu tiên

Hết hạn sử dụng

Nếu chương trình mà các bác cần crack đã hết hạn dùng , các bác có thể tìm trong

Registry khóa CURRENT_USER và LOCAL_MACHINE các khóa có liên quan đến chương trình đó và xóa nó đi Sau đó cài lại chương trình ( các bác nên nhớ là cũng phải xóa sạch các file có liên quan đến chương trình đó nhá !!! )

Lazy Programmer’s Trial Check

Chương trình của các bác chỉ cho phép chạy thử trong 30 ngày ??? Hãy xem làm cách nào để 1 programmer lười biếng kiểm tra số ngày dùng đó :

Code:

CMP DWORD PTR register,1E

JLE/JGE …

Các bác hãy xem các thông số sau : 83 là CMP, 1E là 30 ngày, 7E là JLE hoặc 7D là JGE Bây giờ mở 1 chương trình HEX editor và tìm các thông số trên Các bác sẽ tìm thấy chúng trong 1 hoặc nhiều vị trí khác nhau - điều đó không quan trọng Các bác hãy

cứ đổi JLE (7E 33) thành JMP (EB 33) Chắc chắn chương trình sẽ không bao giờ hết hạn

Trang 4

nữa !!!

Crack Time Limit sử dụng W32DASM

Hãy chỉnh đồng hồ hệ thống sang 1 năm -> chương trình của các bác chắc chắn sẽ hết hạn ngay Khơi động chương trình, 1 message sẽ hiện ra, hãy nhớ nội dung của nó nhé (tốt nhất là ghi ra giấy) Dùng W32DASM để load file vào và tìm nội dung của cái

message ban nãy Tìm ra rồi -> đến đoạn code cần tìm -> phân tích đoạn code -> crack

06.10 Visual Basic Programs

=================

Các phương pháp so sánh serial

Trong Visual Basic có 8 cách thường được các programmer sử dụng để kiểm tra fake/real serial Và mỗi cách lại có 1 điểm mạnh/ yếu khác nhau Em sẽ post lần lượt từng cách lên

để các bác thấy rõ hơn nhé ;)

Trước hết em xin đưa ra 3 cách tiêu biểu nhất là :

1 So sánh String

Trong phương pháp này, real code sẽ được so sánh với fake serial mà các bác nhập vào Quote:

String data type consists of a sequence of contiguous characters that represent the

characters themselves rather than their numeric values A String can include letters, numbers, spaces, and punctuation The String data type can store fixed-length strings ranging in length from 0 to approximately 63K characters and dynamic strings ranging

in length from 0 to approximately 2 billion characters.

Và trong Visual Basic phép so sánh này được code như sau :

Code:

If “real serial” = “fake serial” Then | So sánh fake và real serial

GoTo Correct Message

Else

GoTo Wrong Message

End if

Về cơ bản, đoạn code trên đây có thể được coi là ví dụ đơn giản nhất dùng để so sánh serial Và vì vậy break nó trong SoftICE không phải là khó

Các breakpoint để crack phương pháp này :

vbastrcomp hoặc vbastrcmp ( string compare )

*** Nếu các bác sử dụng các breakpoint em nói trong bài này để crack 1 chương trình

VB thì các bác phải thêm “msvbvm60!” vào trước các breakpoint đó (ví dụ : bpx

msvbvm60! vbastrcomp hoặc bpx msvbvm60! vbastarcmp …)

2 So sánh Variant

Trong phương pháp này, 2 biến số của Variant Data được dùng so sánh với nhau

Quote:

Trang 5

Variant data type is a special data type that can contain numeric, string, or date data as well as user-defined types and the special values Empty and Null The Variant data type has a numeric storage size of 16 bytes and can contain data up to the range of a Decimal,

or a character storage size of 22 bytes (plus string length), and can store any character text

Em xin đưa ra 1 đoạn code đơn giản về phương pháp này :

Code:

Dim real As Variant, fake As Variant | Định nghĩa “real” và “fake” là Variant

real = Correct Password | Đặt “real” là “ Correct Pasword”

fake = Text1.Text | Đặt “fake” là serial chúng ta nhập vào

If correct = entered Then | So sánh sử dụng phương pháp Variant

GoTo Correct Message

Else

GoTo Wrong Message

End If

Nếu như chúng ta sử dụng các breakpoint ở phương pháp trên áp dụng vào đây sẽ hoàn toàn thất bại bởi chương trình không sử dụng vbastrcomp …

Các breakpoint để crack phương pháp này :

vbavartsteq ( variant test equal )

3 So sánh Long

Đây là phương pháp rất thường được dùng 2 biến số của Long Data được dùng để so sánh với 1 số khác

Quote:

Long data type is a 4-byte integer ranging in value from -2,147,483,648 to

2,147,483,647

Do đó, sự hạn chế duy nhất của phương pháp này là giá trị được so sánh chỉ được bao gồm số

Đây là đoạn code của phương pháp này :

Code:

Dim real As Long, fake As Long | Định nghĩa “real” và “fake” là Long

real = 12345 | Đặt “real” là correct serial

fake = Text1.Text | Đặt “fake” là số chúng ta nhập vào

If fake = real Then | So sánh sử dụng phương pháp Long

GoTo Correct Message

Else

GoTo Wrong Message

End If

Ở phương pháp này chúng ta không có breakpoint thích hợp vì đoạn code so sánh của phương pháp Long nằm chính trong chương trình ( chứ không nằm trong file dll như 2

Trang 6

phương pháp trên )

 

Ngày đăng: 01/07/2014, 13:20

TỪ KHÓA LIÊN QUAN

w