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

Cracker Handbook 1.0 part 279 pdf

6 169 1
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 đề CrackMe Hay Là Soft Cũng Đều Là Những Bài Thực Hành Vô Cùng Bổ Ích
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Kỹ Thuật Phần Mềm
Thể loại bài viết
Năm xuất bản 2023
Thành phố Hồ Chí Minh
Định dạng
Số trang 6
Dung lượng 205,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

Những kí thuật tốt hơn sẽ không bao giờ áp dụng phương pháp so sánh Serial đã tính toán được với Serial mà người sử dụng nhập vào nhưng phần chính của nó vẫn là một quá trình kiểm tra, t

Trang 1

CrackMe hay là Soft cũng đều là những bài thực hành vô cùng bổ ích Công việc tiếp theo và cũng là cuối cùng , đó là chúng ta tiến hành tạo ra Keygen cho chương trình này :D

III – Making the Kegen :

- Keygenerator thực chất là công việc tìm ra thủ tục kiểm tra Serial và sau đó Reverse nó với mục đích để tìm hiểu xem quá trình Serial của chương trình được tạo ra và kiểm tra như thế nào? Có rất nhiều phương thức khác nhau để tạo ra một Serial Protection ,có thể dựa trên User name nhập vào , hay thông số ID từ máy PC của bạn Thậm chí nó có thể được tạo ra bằng việc sử dụng Hash Table hoặc một giải thuật phức tạp nào đó Những kí thuật tốt hơn sẽ không bao giờ áp dụng

phương pháp so sánh Serial đã tính toán được với Serial mà người sử dụng nhập vào nhưng phần chính của nó vẫn là một quá trình kiểm tra, trong trường hợp soft

mà chúng ta đang crack này Right Serial không được hiển thị , mà nó được tính toán thông qua một giải thuật hết sức yếu kém và sau đó được hiện thị một cách rõ ràng trên thanh ghi Giá trị Right Serial tính toán được này sau đó sẽ được đem so sánh với Serial mà chúng ta nhập vào Trong phần cuối của bài viết này các bạn sẽ thấy được quá trình tính toán Serial và sẽ thấy được giải thuật mà chương trình đem ra sử dụng yếu kém như thế nào!

- Qúa trình tạo ra Serial được thực hiện đầu tiên và sau đó sẽ là thao tác kiểm tra,

so sánh Serial mà ta nhập vào với Serial mà chương trình tính toán được , giải thuật tính toán Serial rất đơn giản và nằm từ đoạn code có địa chỉ từ 004117D9 tới

0041177F Do trong quá trình Serial Fishing ở trên , chúng ta đã tiến hành nhập

Right Serial và chương trình đã được Registered, vậy để có thể trở lại trạng thái lúc ban đầu chúng ta phải xóa thông tin đăng kí đi Ta vào thư mục Windows và tìm file sau ripenc.ini, open file này và tìm đến đoạn chứa thông tin vể User Name & Reg code thì chúng ta xóa đi Chương trình sẽ trở về trạng thái ban đầu

- Để có thể tìm ra được đoạn code tính toán Serial chúng ta phải lần ngược từ chỗ câu lệnh check CMP EBP, EAX (tại địa chỉ 0041181D) Bạn hãy nhớ lại , khi chúng ta đặt BP tại địa chỉ này và tiến hành đăng kí chương trình , sau khi nhấn

Register chương trình sẽ Ice tại địa chỉ trên Nhìn sang cửa sổ Register (FPU) các

bạn sẽ thấy được giá trị Right Serial được lưu trong thanh ghi EBP Vậy thì quá trình tính toán chắc chắn phải nằm ở phía trên Dịch lên trên một chút các bạn sẽ bắt gặp một lệnh CALL :

Trang 2

- Chúng ta nghi ngờ rằng lệnh CALL này sẽ là lời gọi tới một hàm tính toán Serial ,kết thúc quá trình tính toán cũng giá trị trả về sẽ là Right Serial nằm trong thanh ghi EBP OKi , thử đặt một BP tại địa chỉ 0041180A (Call Function) , sau đó thực hiện lại quá trình đăng kí chúng ta sẽ Ice tại lệnh Call này Nhưng lạ thay giá trị của EBP đã là Right Serial rồi , chưa cần chúng ta phải thực hiện lệnh Call :

- Điều này cho chúng ta thấy rằng lệnh Call trên không phải như những gì chúng ta mong đơi, mà qúa trình tính toán Serial hóa ra lại nằm ở phía trên lệnh Call này Kéo lên trên để quan sát, nhưng lạ thay chúng ta chẳng thấy có một lệnh Call nào khả nghi cả, nhưng bù lại chúng ta tìm được một thứ rất quan trọng Đó là câu lệnh tại địa chỉ 004117FF : 004117FF 8DAC8A 155E01>LEA EBP, DWORD

PTR DS:[EDX+ECX*4+15E15] Đây chính là câu lệnh gán giá trị cho EBP mà

cuối cùng chính là Right Serial, nó được tạo thành với sự tham gia của các thanh ghi EDX, ECX và một giá trị mặc định là 0x15E15 Do đó dịch lên một chút,

chúng ta sẽ đặt một BP tại : 004117D9 8B07 MOV EAX, DWORD PTR

DS:[EDI] Tiến hành lại thao tác đăng kí , chúng ta Ice tại địa chỉ mà chúng ta đăt

BP Ta sẽ tìm hiểu quá trình tính toán của chương trình để cho ra Right Serial Code:

- ====== Calculation ====== -

004117D9 8B07 MOV EAX, DWORD PTR DS:[EDI] ; <==

FU

004117DB BA 01000000 MOV EDX, 1 ; <== Temp = 1 004117E0 8B48 F8 MOV ECX, DWORD PTR DS:[EAX-8] ;

<== Length (FU)

004117E3 33C0 XOR EAX, EAX

004117E5 85C9 TEST ECX, ECX

004117E7 7E 0C JLE SHORT cdrip.004117F5

004117E9 > 0FBE6C04 38 MOVSX EBP, BYTE PTR SS:[ESP+EAX+38]

; <== FU[i]

Trang 3

004117EE 03D5 ADD EDX, EBP ; <== Temp = Temp + FU[i]

004117F0 40 INC EAX ; <== i ++

004117F1 3BC1 CMP EAX, ECX ; <== While (i < Length(FU))

004117F3 .^ 7C F4 JL SHORT cdrip.004117E9 ; <==

Continue

004117F5 > 8BC2 MOV EAX, EDX ; <== Value = Temp

004117F7 C1E0 06 SHL EAX, 6 ; <== Value = Value

* 64

004117FA 03C2 ADD EAX, EDX ; <== Value = Value + Temp

004117FC 8D0CC0 LEA ECX, DWORD PTR DS:[EAX+EAX*8] ;

<== Value1 = Value + Value * 8

004117FF 8DAC8A 155E01>LEA EBP, DWORD PTR

DS:[EDX+ECX*4+15E15] ; <== RightSerial = Temp + Value1 * 4 + 0x15E15

00411806 8D4C24 1C LEA ECX, DWORD PTR SS:[ESP+1C]

- ====== Calculation ====== -

- Qua đoạn Code trên ta có thể tóm tắt lại quá trình tính toán Serial như sau :

1- EAX trỏ tới chuỗi Fake User, thanh ghi EDX được khởi gán bằng 1 (Temp = 1),

ECX chứa chiều dài của chuỗi Fake User Có một vòng lặp tính toán từ địa chỉ 004117E9 > 004117F3 Đây là vòng lặp tính toán với từng kí tự của chuỗi Fake User nhập vào, mà cụ thể là quá trình cộng từng kí tự (Ascii Code) lại với nhau , lặp lại tới khi hết chuỗi , kết quả sẽ được lưu tại thanh ghi EDX (Temp)

2- Giá trị của thanh ghi EDX (Temp) này sau khi kết thúc vòng lặp sẽ được gán

cho thanh ghi EAX (Value) Sau đó giá trị của thanh ghi EAX sẽ được tính toán lại thông qua câu lệnh SHL EAX, 6 tức là Value = Value * 64

3- Tiếp theo EAX sẽ được cộng với EDX, kết quả có được được gán lại cho EAX

(Value = Value + Temp)

4- Thanh ghi ECX (Value1) sẽ được tính toán dựa trên EAX thông qua ECX =

EAX + EAX * 8 (Value1 = Value + Value * 8)

5- Và cuối cùng thanh ghi EBP (Right Serial) sẽ được tính toán EBP = EDX +

ECX * 4 + 0x15E15 (RightSerial = Temp + Value1*4 + 0x15E15)

- Quá trình phân tích đã xong , công việc còn lại bây giờ là dùng VB 6.0 để Code Keygen dựa trên những gì chúng ta đã phân tích Open VB6.0 lên , chọn Project là

Standard.exe, nhấn Open Tiến hành thiết kế Form như hình minh họa dưới đây :

Trang 4

- Sau đó ta vào cửa sổ Code Window, ta tiến hành coding : Code:

Private Sub cmdREA_Click()

Form2.Show 1

End Sub

Private Sub Form_Load()

txtSerial.Text = ""

txtUserName.Text = ""

End Sub

Private Sub txtUserName_Change()

' -

' Serial Generator from UserName

' -

EAX = 0

ECX = 0

EDX = 0

Trang 5

' -

' Serial Generation routine

' -

UserName = txtUserName.Text

If Len(Name) > 0 Then

EDX = 1

For Index = 1 To Len(UserName)

EDX = EDX + Asc(Mid$(UserName, Index, 1))

Next Index

EAX = EDX

EAX = EAX * 64

EAX = EAX + EDX

ECX = EAX + EAX * 8

EBP = EDX + ECX * 4 + 89621 '0x15E15

txtSerial.Text = EBP

End If

If txtUserName.Text = "" Then txtSerial.Text = ""

End Sub

- Sau khi Test và run thử , Keygen của chúng ta đã hoạt động rất tốt Vậy là chúng

ta vừa hoàn thành xong việc Cracking cũng như viết một Keygen hết sức đơn giản cho chương trình Hẹn gặp lại các bạn ở tut sau : )

III – End of Tut :

- Finished – June 6, 2005

++ ==[ Greatz Thanks To ]== ++

- Thank to my family, Computer_Angel, Moonbaby , Zombie_Deathman,

Littleboy, Benina, QHQCrker, the_Lighthouse, Hoadongnoi, Nini all REA‘s members, HacNho,RongChauA,Deux, tlandn, dqtln , ARTEAM all my friend,

Trang 6

and YOU :jerry:

>>>> If you have any suggestions, comments or corrections email me:

kienbigmummy[at]gmail.com

REVERSE ENGINEERING ASSOCIATION

http://www.reaonline.net [Serial Fishing] RunViewer 1.2

Mấy bữa nay bận thật, trình cho các pác tut mới nhất của em nè

REVERS ENGINEERING ASSOCCIATION

Target: RunViewer 1.2

Homepage: www.softvers.com/RunViewer

Protect: Serial

Pack: Not use (Microsoft Visual C++ 6.0)

Ngày đăng: 03/07/2014, 18:20

TỪ KHÓA LIÊN QUAN