You are here: Home Hacking-Security Thủ Thuật Thu Thuat How to code keygen Autorun Remover v2.3

Joomla!

How to code keygen Autorun Remover v2.3

Email In PDF.
Bài viết hướng dẫn crack phần mềm này bằng phương pháp Patch mình đã post trên forum, các bạn có thể xem tại đây:

Mã:
http://hcegroup.net/hceteam/showthread.php?t=416
và topic này sẽ hướng dẫn các bạn cùng phân tích mã tạo Serrial number của soft này

Mục tiêu: Autorun Remover v2.3
Mức độ: Dễ (1/10)
Người hướng dẫn: hongtho

Dưới đây là đoạn mã tạo serrial của phần mềm:


Còn nếu các bạn hỏi làm sao để đến được đó thì vui lòng đọc bài tại link trên ^_^

Mình sẽ cố gắng hướng dẫn đơn giản nhất để các bạn có thể hiểu

Đoạn mã

Mã:
004D0F26  |.  E8 2542F3FF   CALL AutorunR.00405150
004D0F2B |. 33C0 XOR EAX,EAX
004D0F2D |. 55 PUSH EBP
004D0F2E |. 68 D90F4D00 PUSH AutorunR.004D0FD9
004D0F33 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
004D0F36 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
004D0F39 |. 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
004D0F3C |. E8 5F3DF3FF CALL AutorunR.00404CA0
004D0F41 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004D0F44 |. E8 1740F3FF CALL AutorunR.00404F60
Có chức năng biến đổi chuỗi Username sang chữ hoa

004D0F4F |. BB 01000000 MOV EBX,1 -> Set giá trị thanh ghi EBX là 1

004D0F54 |> /8D43 1E /LEA EAX,DWORD PTR DS:[EBX+1E] -> Set giá trị thanh ghi EAX là 1F (vì 1E + EBX)

004D0F57 |. 50 |PUSH EAX -> Lưu giữ giá trị thanh ghi EAX lên ngăn xếp

004D0F58 |. 8BC3 |MOV EAX,EBX -> chuyển giá trị EAX thành 1 (vì EBX = 1)

004D0F5A |. 5A |POP EDX -> Lấy giá trị lưu cuối cùng trên ngăn xếp xuống EDX -> EDX = 1F

004D0F5B |. 8BCA |MOV ECX,EDX -> Chuyển giá trị EDX sang ECX -> ECX = 1F

004D0F5D |. 99 |CDQ -> Sao chép 4 bit cao nhất của EAX sang EDX

Vậy lúc này giá trị các thanh ghi như sau



4 bit cao nhất của EAX là 0000 -> copy sang toàn bộ EDX sẽ là 00000000

004D0F5E |. F7F9 |IDIV ECX -> Lấy EAX chia ECX, phần nguyên lưu trên EAX, phần dư lưu trên EDX

Lúc này giá trị các thanh ghi như sau:



IDIV ECX = 1 / 1F -> EAX = 0 và EDX = 1

004D0F60 |. 8BF2 |MOV ESI,EDX -> Chuyển giá trị EDX lên ESI -> ESI = 1

004D0F62 |. 8D43 14 |LEA EAX,DWORD PTR DS:[EBX+14] -> Chuyển 15 lên EAX

004D0F65 |. 50 |PUSH EAX -> Lưu EAX

004D0F66 |. 8BC3 |MOV EAX,EBX -> Sao chép nội dung EBX sang EAX -> EAX = 1

004D0F68 |. 5A |POP EDX -> Lấy nội dung lưu lên EDX -> EDX = 15

004D0F69 |. 8BCA |MOV ECX,EDX -> Sao chép EDX sang ECX -> ECX = 15

004D0F6B |. 99 |CDQ -> Như trên

004D0F6C |. F7F9 |IDIV ECX -> Như trên

Vậy lúc này EAX = 0 và EDX = 1

004D0F6E |. 03F2 |ADD ESI,EDX -> Cộng EDX vào ESI -> ESI = 2

004D0F70 |. 8B45 FC |MOV EAX,DWORD PTR SS:[EBP-4] -> Sao chép địa chỉ bộ nhớ [EBP-4] vào EAX (Và đây là địa chỉ chứa chuỗi Username)

004D0F73 |. 0FB64418 FF |MOVZX EAX,BYTE PTR DS:[EAX+EBX-1]
Lấy ký tự thứ EBX -1 vào EAX (Tức là ký tự thứ 0 trong mảng địa chỉ bộ nhớ, vì EBX lúc này là 1)

Vậy EAX lúc này là ký tự đầu tiên trong chuỗi Username

004D0F78 |. 03C6 |ADD EAX,ESI -> Cộng EAX với ESI và lưu kết quả trên EAX

Đoạn mã dưới đây:

Mã:
004D0F7A  |.  83C0 D0       |ADD EAX,-30
004D0F7D |. 83E8 0A |SUB EAX,0A
004D0F80 |. 72 08 |JB SHORT AutorunR.004D0F8A
004D0F82 |. 83C0 F9 |ADD EAX,-7
004D0F85 |. 83E8 1A |SUB EAX,1A
004D0F88 |. 73 1D |JNB SHORT AutorunR.004D0FA7
Có chức năng kiểm tra xem sau khi cộng giá trị 2 thanh ghi có vượt quá 5Ah (Chữ Z) hay nhỏ hơn 41h (A) hoặc 31h (49) và 39h (57)hay không. Nếu ngoài khoảng [41h,5Ah] và [49,57] sẽ bỏ qua và nhảy đến đoạn mã a2 , nếu không thì nhảy vào đoạn mã a1

Đoạn mã a1:

Mã:
004D0F8A  |> \8D45 F0       |LEA EAX,DWORD PTR SS:[EBP-10]
004D0F8D |. 8B55 FC |MOV EDX,DWORD PTR SS:[EBP-4]
004D0F90 |. 0FB6541A FF |MOVZX EDX,BYTE PTR DS:[EDX+EBX-1]
004D0F95 |. 03D6 |ADD EDX,ESI
004D0F97 |. E8 EC3EF3FF |CALL AutorunR.00404E88
004D0F9C |. 8B55 F0 |MOV EDX,DWORD PTR SS:[EBP-10]
004D0F9F |. 8D45 F4 |LEA EAX,DWORD PTR SS:[EBP-C]
004D0FA2 |. E8 C13FF3FF |CALL AutorunR.00404F68
Có tác dụng lưu kết quả ADD EAX,ESI vào buffer. Và đây là bộ nhớ lưu Serrial được tạo thành

Đoạn mã a2:

Mã:
004D0FA7  |> \43            |INC EBX
004D0FA8 |. 4F |DEC EDI
004D0FA9 |.^ 75 A9 \JNZ SHORT AutorunR.004D0F54
Có tác dụng tăng nội dung thanh ghi EBX lên 1, giảm giá trị EDI đi 1, và kiểm tra xem có khác không (EDI là độ dài của username), nếu khác không (Chưa kiểm tra hết các ký tự username) thì lập lại từ đầu với giá trị EBX mới

Và ta nhìn qua sơ lược trên ta thấy, giá trị ESI luôn là: 2*i, với i = 1 ...n

Thuật toán tạo Serrial:

Lấy từng ký tự, đổi sang mã Ascii rồi cộng cho 2*i và lưu vào Temp
so sánh Temp với 5Ah(90) và 41h (65) hoặc 31h (49) và 39h (57), nếu (Temp> 90 và Temp < 65) hoặc (temp < 49 và Temp > 57) thì bỏ qua, tăng i lên 1 và lam lại từ đầu. Nếu không thỏa điều kiện thì đổi Temp sang ký tự và lưu vào chuỗi Serrial.

Hết tut ...

Ai rảnh code keygen đi hi hi

Keygen:
Mã:
http://www.mediafire.com/?ndtmiyciom1
Trả lời với trích dẫn