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

Cracker Handbook 1.0 part 158 pps

5 104 1

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Nội dung

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 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 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 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 004127E6 . 0FB6C0 MOVZX EAX,AL =>eax = (kt2 or 42) - H2/4*0a 004127E9 . 894424 28 MOV DW ORD 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ư . 00 412 7F6 . C1F8 1F SAR EAX,1F 00 412 7F9 . C1FA 02 SAR EDX,2 00 412 7FC . 2BD0 SUB EDX,EAX 00 412 7FE . 6BC2 0A IMUL EAX,EDX,0A 00 412 8 01 . 2BC8 SUB ECX,EAX 00 412 803 . 0FB6C1 MOVZX EAX,CL 00 412 806 =>edx = H1/4 00 412 7B1 . C1F8 1F SAR EAX,1F =>eax = (kt1 or 41) /(2 mũ 1f) , eax =0 là cái chắc 00 412 7B4 . 2BD0 SUB EDX,EAX =>edx = H1/4 - (a or 41) /(2 mũ 1f) = H1/4 00 412 7B6 . 6BD2 0A IMUL. EDX,EDX,0A =>edx=H1/4*0a 00 412 7B9 . 8B4424 28 MOV EAX,DWORD PTR SS:[ESP+28] =>eax = kt1 or 41 00 412 7BD . 2BC2 SUB EAX,EDX =>eax = (kt1 or 41) - H1/4*0a 00 412 7BF . 8B5424 20 MOV EDX,DWORD

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

TỪ KHÓA LIÊN QUAN