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

Cracker Handbook 1.0 part 286 pptx

7 91 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

Định dạng
Số trang 7
Dung lượng 85,93 KB

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

Nội dung

FreshDiagnose 6.70 FRESH DIAGNOSE is an utility designed to analyze and benchmark your computer system.. It can analyze and benchmark many kinds of hardware, such as CPU performance, ha

Trang 1

0048DBC6 | C645 F0 00 MOV BYTE PTR SS:[EBP-10],0

0048DBCA | 8D53 10 LEA EDX,DWORD PTR DS:[EBX+10]

0048DBCD | 8D45 DC LEA EAX,[LOCAL.9]

0048DBD0 | B9 08000000 MOV ECX,8 ; <== 8 charts

0048DBD5 | E8 ECFCFFFF CALL DUMeter.0048D8C6 ; <== SecIII

0048DBDA | C645 E4 00 MOV BYTE PTR SS:[EBP-1C],0

0048DBDE | 8D45 C8 LEA EAX,[LOCAL.14]

0048DBE1 | B9 10000000 MOV ECX,10 ; <== 16 charts

0048DBE6 | 8BD3 MOV EDX,EBX

0048DBE8 | E8 D9FCFFFF CALL DUMeter.0048D8C6 ; <== SecIV

- Đầu tiên chương trình sẽ mã hoá chuỗi U nhập Tuy nhiên, trước khi tiến hành quá trình mã hoá chương trình sẽ chuyển đổi các ký tự của chuỗi U nhập sang dạng UpperCase và loại bỏ các ký tự đặc biệt :

0048DBFF | E8 81FDFFFF CALL DUMeter.0048D985 ; <== Encrypt U : ValueU

-=== Encrypt U === -

0048D98C |> /C1E2 04 /SHL EDX,4 ; <== ValueU = ValueU * 0x10

0048D98F | |0FBE08 |MOVSX ECX,BYTE PTR DS:[EAX] ; <== U[i] 0048D992 | |03D1 |ADD EDX,ECX ; <== ValueU = ValueU + U[i]

0048D994 | |8BCA |MOV ECX,EDX ; <== Temp = ValueU

0048D996 | |81E1 000000F0 |AND ECX,F0000000 ; <== Temp

= Temp and 0xF0000000

0048D99C | |85C9 |TEST ECX,ECX ; <== if ( ECX != 0x0 )

0048D99E | |74 0B |JE SHORT DUMeter.0048D9AB ; <== then 0048D9A0 | |C1E9 18 |SHR ECX,18 ; <== Temp = Temp / 0x1000000

0048D9A3 | |33D1 |XOR EDX,ECX ; <== Value = Value xor Temp

0048D9A5 | |81E2 FFFFFF0F |AND EDX,0FFFFFFF ; <==

ValueU = ValueU & 0xFFFFFFF

0048D9AB |> |40 |INC EAX ; <== i++

Trang 2

0048D9AC |> |8038 00 CMP BYTE PTR DS:[EAX],0 ; <== while ( i < LenU )

0048D9AF |.^\75 DB \JNZ SHORT DUMeter.0048D98C ; <==

continue Loop

-=== Encrypt U === -

- Kế đó là mã hoá SecI Đoạn mã hoá này cho ta biết được rằng các ký tự của SecI phải là một trong các ký tự của chuỗi mặc định

"ABCDEFGHIJKLMNOPQRSTUVWXYZ987654" :

0048DC06 | 8D45 F4 LEA EAX,[LOCAL.3] ; <== SecI

0048DC09 | E8 01FEFFFF CALL DUMeter.0048DA0F ; <== Encrypt SecI : ValueI

-=== Encrypt SecI === -

0048DA19 | E8 7EFEFFFF CALL DUMeter.0048D89C ; <== LenSecI

0048DA1E | 83F8 03 CMP EAX,3 ; <== Must

be 3 charts

0048DA21 | 73 04 JNB SHORT DUMeter.0048DA27

0048DA23 | 33C0 XOR EAX,EAX

0048DA25 | EB 39 JMP SHORT DUMeter.0048DA60

0048DA27 |> BA 0C174F00 MOV EDX,DUMeter.004F170C

; ASCII "ABCDEFGHIJKLMNOPQRSTUVWXYZ987654"

0048DA2C | 8A03 MOV AL,BYTE PTR DS:[EBX] ; <== SecI[0]

0048DA2E | E8 82FFFFFF CALL DUMeter.0048D9B5 ; <== Location in DefaultString

0048DA33 | 8BF0 MOV ESI,EAX ; <== LocI 0048DA35 | 4E DEC ESI ; <==

LocI

0048DA36 | BA 0C174F00 MOV EDX,DUMeter.004F170C

; ASCII "ABCDEFGHIJKLMNOPQRSTUVWXYZ987654"

0048DA3B | 8A43 01 MOV AL,BYTE PTR DS:[EBX+1] ; <== SecI[1]

0048DA3E | E8 72FFFFFF CALL DUMeter.0048D9B5 ; <== Location in DefaultString

0048DA43 | 8BF8 MOV EDI,EAX ; <== LocII 0048DA45 | 4F DEC EDI ; <==

LocII

Trang 3

0048DA46 | BA 0C174F00 MOV EDX,DUMeter.004F170C

; ASCII "ABCDEFGHIJKLMNOPQRSTUVWXYZ987654"

0048DA4B | 8A43 02 MOV AL,BYTE PTR DS:[EBX+2] ; <== SecI[2]

0048DA4E | E8 62FFFFFF CALL DUMeter.0048D9B5 ; <== Location in DefaultString

0048DA53 | 48 DEC EAX ; <==

LocIII

0048DA54 | C1E7 05 SHL EDI,5 ; <== ValueI = LocII * 0x20

0048DA57 | 0BF7 OR ESI,EDI ; <== Value = Value or LocI

0048DA59 | C1E0 0A SHL EAX,0A ; <==

LocIII = LocIII * 0x400

0048DA5C | 0BF0 OR ESI,EAX ; <== Value = Value or LocIII

0048DA5E | 8BC6 MOV EAX,ESI ; <== Value -=== Encrypt SecI === -

- Tiếp đến là quá trình chuyển đổi SecII từ chuỗi sang dạng HEX Value tương ứng ( Ví dụ SecII : “123AB” được chuyển sang thành giá trị ValueII = 0x123AB ) Như vậy, các ký tự của SecII phải nằm trong khoảng các ký tự sau

“123456789ABCDEF” :

0048DC10 | 8D45 E8 LEA EAX,[LOCAL.6] ; <== SecII 0048DC13 | E8 7CFEFFFF CALL DUMeter.0048DA94 ; <==

Convert to HEX value : ValueII

- Tiếp đó là quá trình kiểm tra đầu tiên :

0048DC1A | 3BF3 CMP ESI,EBX ; <== if ( ValueU

== ValueII )

0048DC1C 74 04 JE SHORT DUMeter.0048DC22 ; <==

Continue check

- Tương tự như quá trình mã hoá SecII, SecIII cũng giống như vậy :

0048DC22 |> \8D45 DC LEA EAX,[LOCAL.9] ; <==

SecIII

0048DC25 | E8 6AFEFFFF CALL DUMeter.0048DA94 ; <==

Convert to HEX value : ValueIII

- Qúa trình mã hoá SecIV dựa trên thuật toán CRC32 :

Trang 4

0048DC2C | 8D45 C8 LEA EAX,[LOCAL.14] ; <==

SecIV

0048DC2F | E8 1EFDFFFF CALL DUMeter.0048D952 ; <==

CRC32 Encrypt

-=== CRC32 Encrypt === -

0048D95F | 83CE FF OR ESI,FFFFFFFF ; <==

CRC32Value

0048D962 | 33DB XOR EBX,EBX ; <== i = 0x0

0048D964 | EB 0D JMP SHORT DUMeter.0048D973

0048D966 |> 8A041F /MOV AL,BYTE PTR DS:[EDI+EBX] ; <== SecIV[i]

0048D969 | 8BD6 |MOV EDX,ESI ; <==

CRC32Value

-=== CRC32 === -

0048D93B | 32C2 XOR AL,DL ; <== Temp =

CRC32Value xor SecIV[i]

0048D93D | 25 FF000000 AND EAX,0FF ; <== Temp =

Temp and 0xFF

0048D942 | 8B0C85 B0504F>MOV ECX,DWORD PTR DS:[EAX*4+4F50B0]

; <== Value = CRC32Table[Temp]

0048D949 | C1EA 08 SHR EDX,8 ; <== CRC32Value = CRC32Value / 0x100

0048D94C | 33CA XOR ECX,EDX ; <== Value = Value xor CRC32Value

0048D94E | 8BC1 MOV EAX,ECX ; <== Value

-=== CRC32 === -

0048D970 | 8BF0 |MOV ESI,EAX ; <==

CRC32Value = Value

0048D972 | 43 |INC EBX ; <== i++; 0048D973 |> 8BC7 MOV EAX,EDI ; <==

SecIV

0048D975 | E8 22FFFFFF |CALL DUMeter.0048D89C ; <== LenSecIV

0048D97A | 3BD8 |CMP EBX,EAX ; <== while ( i < LenSecIV )

0048D97C |.^ 72 E8 \JB SHORT DUMeter.0048D966 ; <==

Continue Loop

0048D97E | 8BC6 MOV EAX,ESI ; <==

CRC32Value

Trang 5

-=== CRC32 Encrypt === - 0048DC34 | 33C3 XOR EAX,EBX ; <== CRC32Value = CRC32Value xor ValueU

- Quá trình kiểm tra thứ hai diễn ra như sau :

0048DC36 | 3BC6 CMP EAX,ESI ; <== if ( CRC32Value == ValueIII )

0048DC38 75 04 JNZ SHORT DUMeter.0048DC3E ; <== Congrat !!!!

/*/*/*/ - SERIAL tương ứng :

User : REA-cRaCkErTeAm Serial : D3-JD5-06FFE94D-6348F8BD

Serial : N/A

III – End of Tut :

- Finished – September 13, 2004

- Thank to my family, Computer_Angel, Zombie_Deathman, Littleboy all REA‘s members, HacNho, RongChauA, Deux, Infinity, all my friend, and YOU

REVERSE ENGINEERING ASSOCIATION

http://www.reaonline.net

Reverse Engineering Association

SoftWare

Homepage : http://www.freshdevices.com

Production : Freshdevices Corp

SoftWare : FreshDiagnose 6.70

Copyright by : Copyright © 2001-2004 Freshdevices Corp All Rights Reserved

Type : Name / Serial

Packed : ASPack 2.12 -> Alexey Solodovnikov

Language : Borland Delphi 6.0 - 7.0

Crack Tool : OllyDbg 1.09d, PEiD 0.92, kWdsm 10

Unpack : Manual

Request : Correct Serial

Trang 6

FreshDiagnose 6.70

FRESH DIAGNOSE is an utility designed to analyze and benchmark your computer system It can analyze and benchmark many kinds of hardware, such as CPU performance, hard disk performance, video system information, mainboard information, and many more!

I – Information :

- Dùng PEiD kiểm tra biết chương trình bị PACK bằng ASPack 2.12 -> Alexey Solodovnikov UnPACK và kiểm tra lại biết chương trình được viết bằng Borland Delphi 6.0 - 7.0

- Chạy thử chương trình với User và Fake Serial ta không nhận được thông báo gì Tuy nhiên trong quá trình tìm kiếm chuỗi ta tìm được thông báo :

00561F2F > \B8 74215600 MOV EAX,unpack.00562174 ; ASCII

"FreshDiagnose has been registered successfully."

- Dò ngược lên trên và đặt BreakPoint tại lệnh CALL đầu tiên của FUNCTION này :

00561EB2 E8 1176F0FF CALL unpack.004694C8 ; <== Set BreakPoint here

II – Cracking :

- Load chương trình lên, chạy chương trình với User và Fake Serial, chương trình dừng lại tại điểm đặt BP Trace xuống chút :

00561EF2 E8 A5FDFFFF CALL unpack.00561C9C ; <== Trace Into

-=== Trace Into === -

- Chuỗi Serial đầu tiên là chuỗi Serial không hợp lệ Chỉ có 1 chuỗi Serial duy nhất :

00561D34 |> /8D4D F0 /LEA ECX,[LOCAL.4]

00561D37 | |0FBFD6 |MOVSX EDX,SI

00561D3A | |8B45 FC |MOV EAX,[LOCAL.1]

00561D3D | |8B80 34030000 |MOV EAX,DWORD PTR DS:[EAX+334]

00561D43 | |8B80 20020000 |MOV EAX,DWORD PTR DS:[EAX+220]

00561D49 | |8B38 |MOV EDI,DWORD PTR DS:[EAX]

Trang 7

00561D4B | |FF57 0C |CALL DWORD PTR DS:[EDI+C] ; <== Licence of Old Version

00561D4E | |8B55 F0 |MOV EDX,[LOCAL.4] ; <== RealSerial

00561D51 | |A1 A4115800 |MOV EAX,DWORD PTR DS:[5811A4] ; <== Fake Serial

00561D56 | |E8 5D34EAFF |CALL unpack.004051B8 ; <==

Compare

00561D5B | |75 0A |JNZ SHORT unpack.00561D67

00561D5D | |C705 98115800>|MOV DWORD PTR DS:[581198],-1

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

TỪ KHÓA LIÊN QUAN