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

Cracker Handbook 1.0 part 158 pps

5 104 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 đề Cracker Handbook 1.0 Part 158 Pps
Trường học Trường Đại Học Công Nghệ Thông Tin
Thể loại bài viết
Năm xuất bản 2025
Thành phố Hà Nội
Định dạng
Số trang 5
Dung lượng 83,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

thằng này nó code bằng Microsoft Visual C++ 6.0 , đoạn mã hóa khá dài và lung tung , đáng lý tớ cho nó cái patch nhưng thấy nó so sánh nhiều chỗ và phương châm là tìm real serial nên sẽ

Trang 1

Victim : DVD TO DIVX VCD RIPPER 3.0.0.2

Download : http://www.dvd222.com

Tools : OllyDbg v1.09d

Crack file : DVD2DIVXVCD.exe

Cracked by : dqtln

trên trang chủ của nó hiện có 2 softwares 39$ một em thằng này nó code bằng Microsoft Visual C++ 6.0 , đoạn mã hóa khá dài và lung tung , đáng lý tớ cho nó cái patch nhưng thấy nó so sánh nhiều chỗ và phương châm là tìm real serial nên sẽ phân tích đoạn mã hóa của nó vậy

dùng OllyDbg tìm đến thông báo lỗi "Registration failed!" , dịch chuyển lên một đoạn khá dài và ta đặt breakpoint như sau

CODE

00412720 57 PUSH EDI =>đặt breakpoint

ở đây có một số dòng

00412732 8B46 5C MOV EAX,DWORD PTR DS:[ESI+5C] =>đưa chuỗi name vào eax

00412735 8B68 F8 MOV EBP,DWORD PTR DS:[EAX-8] =>đưa chiều dài chuỗi name vào ebp

00412738 83FD 02 CMP EBP,2 =>so sánh với 2

0041273B 7D 16 JGE SHORT DVD2DIVX.00412753 =>nếu nhỏ hơn 2 thì bắn nag "Please input correct User Name!"

0041273D 33C0 XOR EAX,EAX

ở đây có một số dòng

00412752 C3 RETN

00412753 > 8B5E 60 MOV EBX,DWORD PTR DS:[ESI+60] =>đưa chuỗi serial vào ebx

00412756 8B53 F8 MOV EDX,DWORD PTR DS:[EBX-8] =>đưa chiều dài chuỗi serial vào edx

Trang 2

00412759 83FA 08 CMP EDX,8 =>so sánh với 8

0041275C 7D 16 JGE SHORT DVD2DIVX.00412774 =>nếu nhỏ hơn 8 thì bắn nag "Please input correct Registration Code!"

0041275E 33C0 XOR EAX,EAX

ở đây có một số dòng

00412773 C3 RETN

thằng này nó mã hóa 2 ký tự đầu tiên của chuỗi name 4 lần tính tổng hex của chuỗi name rồi mã hóa tiếp sau đó so sánh với 5 ký tự đầu tiên của chuỗi serial nhập vào nếu đúng thì bắn nag "Registration has succeeded!"

IMUL Signed integer multiply : thực hiện một phép nhân số nguyên có dấu trên

AL hoặc AX Nếu số nhân là 8 bit , số bị nhân là AL và tích là AX Nếu số nhân

là 16 bit , số bị nhân là AX và tích là DXAX Nếu số nhân là 32 bit , số bị nhân là EAX và tích là EDX:EAX Các cờ Carry và Overflow được ấn định nếu một tích

16 bit mở rộng vào AH , hoặc một tích 32 bit mở rộng vào DX , hoặc một tích 64 bit mở rộng vào EDX

các dạng thức chỉ lệnh : IMUL reg IMUL mem

chúng ta người vn nên toàn bị lý thuyết chi phối không có nhiều đkiện để thực hành , lý thuyết này áp dụng vào đây khá đơn giản

mov edx,65h

mov eax,66666667h

imul edx

ta giải thích thế này 65h*66666667h=28666666A3h , khi đó eax=666666A3h và edx=28h

ok vậy là được rồi , bi giờ ta tiếp tục phân tích đoạn mã hóa của chương trình giai đoạn mã hóa thứ nhất

Trang 3

CODE

00412773 C3 RETN

00412774 > 0FB608 MOVZX ECX,BYTE PTR DS:[EAX] =>đưa ký tự đầu tiên của chuỗi name vào ecx , ta đặt kt1

00412777 897424 2C MOV DWORD PTR SS:[ESP+2C],ESI

0041277B 895C24 10 MOV DWORD PTR SS:[ESP+10],EBX =>đưa chuỗi serial vào ss:[esp+10]

0041277F 0FB658 01 MOVZX EBX,BYTE PTR DS:[EAX+1] =>đưa ký tự thứ 2 của chuỗi name vào ebx , ta đặt kt2

00412783 894424 18 MOV DWORD PTR SS:[ESP+18],EAX =>đưa chuỗi name vào ss:[esp+18]

00412787 8BC1 MOV EAX,ECX =>eax=kt1

00412789 83C8 41 OR EAX,41 =>eax = kt1 or 41

0041278C 894424 28 MOV DWORD PTR SS:[ESP+28],EAX

=>ss:[esp+28] = kt1 or 41

00412790 8BC3 MOV EAX,EBX =>eax=kt2

00412792 83C8 42 OR EAX,42 =>eax = kt2 or 42

00412795 8B5424 28 MOV EDX,DWORD PTR SS:[ESP+28] =>edx = kt1

or 41

00412799 894424 20 MOV DWORD PTR SS:[ESP+20],EAX =>ss:[esp+20]

= kt2 or 42

0041279D B8 67666666 MOV EAX,66666667 =>eax=66666667h

004127A2 83C9 43 OR ECX,43 =>ecx = kt1 or 43

004127A5 83CB 44 OR EBX,44 =>ebx = kt2 or 44

004127A8 F7EA IMUL EDX =>(kt1 or 41) * 66666667 = H1xxxxxxxx , edx=H1

004127AA 8B4424 28 MOV EAX,DWORD PTR SS:[ESP+28] =>eax = kt1

or 41

004127AE C1FA 02 SAR EDX,2 =>edx = H1/4

004127B1 C1F8 1F SAR EAX,1F =>eax = (kt1 or 41)/(2 mũ 1f) , eax=0 là cái chắc

004127B4 2BD0 SUB EDX,EAX =>edx = H1/4 - (a or 41)/(2 mũ 1f) = H1/4 004127B6 6BD2 0A IMUL EDX,EDX,0A =>edx=H1/4*0a

Trang 4

004127B9 8B4424 28 MOV EAX,DWORD PTR SS:[ESP+28] =>eax = kt1

or 41

004127BD 2BC2 SUB EAX,EDX =>eax = (kt1 or 41) - H1/4*0a

004127BF 8B5424 20 MOV EDX,DWORD PTR SS:[ESP+20] =>edx = kt2

or 42

004127C3 0FB6C0 MOVZX EAX,AL =>eax = (kt1 or 41) - H1/4*0a

004127C6 894424 24 MOV DWORD PTR SS:[ESP+24],EAX

=>ss:[esp+24] = (kt1 or 41) - H1/4*0a

nếu ký tự đầu tiên của ta là chữ d thì sau loạt tính toán ss:[esp+24] = 1 (64

or 41)*66666667=28666666A3 , khi đó edx=28 ss:[esp+24] = (64 or 41) - 28/4*a = 1

giai đoạn mã hóa thứ hai

CODE

004127CA B8 67666666 MOV EAX,66666667 =>eax=66666667h

004127CF F7EA IMUL EDX =>(kt2 or 42) * 66666667 = H2xxxxxxxx , edx=H2

004127D1 8B4424 20 MOV EAX,DWORD PTR SS:[ESP+20] =>eax = kt2

or 42

004127D5 C1FA 02 SAR EDX,2 =>edx=H2/4

004127D8 C1F8 1F SAR EAX,1F =>eax = (kt2 or 42)/(2 mũ 1f) , eax=0 là cái chắc

004127DB 2BD0 SUB EDX,EAX =>edx = H2/4 - (kt2 or 42)/(2 mũ 1f) = H2/4

004127DD 6BD2 0A IMUL EDX,EDX,0A =>edx=H2/4*0a

004127E0 8B4424 20 MOV EAX,DWORD PTR SS:[ESP+20] =>eax = kt2

or 42

004127E4 2BC2 SUB EAX,EDX =>eax = (kt2 or 42) - H2/4*0a

Trang 5

004127E6 0FB6C0 MOVZX EAX,AL =>eax = (kt2 or 42) - H2/4*0a

004127E9 894424 28 MOV DWORD PTR SS:[ESP+28],EAX =>ss:[esp+28]

= (kt2 or 42) - H2/4*0a

nếu ký tự thứ 2 của ta là chữ q thì sau loạt tính toán (71 or

42)*66666667=2E00000045 , khi đó edx=2E ss:[esp+28] = (71 or 42) - 2E/4*a = 5

giai đoạn mã hóa thứ ba

CODE

004127ED B8 67666666 MOV EAX,66666667 =>eax=66666667h

004127F2 F7E9 IMUL ECX

004127F4 8BC1 MOV EAX,ECX

004127F6 C1F8 1F SAR EAX,1F

004127F9 C1FA 02 SAR EDX,2

004127FC 2BD0 SUB EDX,EAX

004127FE 6BC2 0A IMUL EAX,EDX,0A

00412801 2BC8 SUB ECX,EAX

00412803 0FB6C1 MOVZX EAX,CL

00412806 894424 20 MOV DWORD PTR SS:[ESP+20],EAX =>ss:[esp+20]

= (kt1 or 43) - H3/4*0a

(64 or 43)*66666667=2933333371 , khi đó edx=29 ss:[esp+20] = (64 or 43)

- 29/4*a = 3

giai đoạn mã hóa thứ tư

Ngày đăng: 03/07/2014, 17:21

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN