Posted by: moonbaby
Jan 7 2004, 01:59 AM
QUOTE
Homepage :
CrackMe : bengaly-crkme.zip (Crackme1.exe)
Coder : bengaly (MASM32 / TASM32)
Type : Name / Serial
Packed : N / A
Crack Tool : OllyDbg 1.09d
Unpack Tool : N / A
Request : Correct Serial
Rule : N/A
Note : N/A
>>>>>>>> Đặt BreakPoint :
QUOTE
Trace tiếp ta đến đây
004011E4 |. E8 62000000 CALL
CRACKME1.0040124B ; \CRACKME1.0040124B
Trace thẳng vào trong ta đến đây :
0040124B /$ 55 PUSH EBP
Trace tiếp ta đến đoạn mã hoá chuỗi :
Chuẩn bị EDX để lưu kết quả tính toán
00401254 |. 33D2 XOR EDX,EDX
ESI lưu chuỗi U nhập vào
00401256 |. 8B75 08 MOV ESI,DWORD PTR SS:[EBP+8]
ECX chứ chiều dài chuỗi U nhập
00401259 |. 8B4D 0C MOV ECX,DWORD PTR SS:[EBP+C]
Bắt đầu quá trình tính chuỗi . ECX = ECX - 1
0040125C |. 49 DEC ECX
Đưa từng ký tự của chuỗi U nhập được lưu ở ESI vào EAX
0040125D |> 0FBE06 MOVSX EAX,BYTE PTR DS:[ESI]
EAX trừ cho giá trị được lưu ở địa chỉ 403000 ( mặc định là 02Ah ) <
=== Lưu kết quả ở EAX
00401260 |. 2B05 00304000 SUB EAX,DWORD PTR DS:[403000]
Đưa ký tự kế của chuỗi U nhập vào EBX
00401266 |. 0FBE5E 01 MOVSX EBX,BYTE PTR DS:[ESI+1]
EBX trừ đi giá trị đươc lưu ở địa chỉ 403004 ( mặc định là 041h ) <
=== Lưu kết quả ở EBX
0040126A |. 2B1D 04304000 SUB EBX,DWORD PTR
DS:[403004]
EAX = EAX * EBX
00401270 |. 0FAFC3 IMUL EAX,EBX
EDX = EDX + EAX ( đầu tiên EDX = 00h )
00401273 |. 03D0 ADD EDX,EAX
Con trỏ chuyển đến ký tự kế tiếp của chuỗi U nhập vào.
00401275 |. 46 INC ESI
Lập lại quá trình cho đến khi ECX = 00h
00401276 |.^ E2 E5 LOOPD SHORT CRACKME1.0040125D
>>>>>>>> Vậy :
QUOTE
1- Quá trình mã hoá chuỗi được viết gọn lại : C.0i – ký tự thứ i của
chuỗi U nhập i = 0
EDX = {(C.00 – 02Ah ) * ( C.01 – 041h )} + {(C.01 – 02Ah ) * (
C.02 – 041h )} +
2- Giá trị của chuỗi được chuyển sang dạng số thập phân
3- Và đây chính là số Serial thực tương ứng với chuỗi U nhập.
>>>>>>>> Vậy :
QUOTE
User : Moonbaby Serial : 16876
User : HVA-CrAcKeRtEaM Serial : 8804
Posted by: moonbaby
Jan 7 2004, 02:03 AM
QUOTE
Homepage :
CrackMe : orion_crackme2.zip (CrackMe2.exe)
Coder : Diablo (Borland C++)
Type : Name / Serial
Packed : N / A
Crack Tool : OllyDbg 1.09d
Unpack Tool : N / A
Request : Correct Serial
Rule : N/A
Note : N/A
>>>>>>>> Đặt BreakPoint :
QUOTE
00401710
|.
E8 43B40600
CALL CRACKME2.0046CB58
>>>>>>>> Qúa trình xử lý chuỗi :
QUOTE
>>>> Lấy giá trị được lưu ở địa chỉ SS:[EBP-54] nhân với 0B7h và
lưu kết quả ở ECX . Giá trị ở SS:[EBP-54] chính là chiều dài của
chuỗi U nhập.
0040171B |. 694D AC B7000>IMUL ECX,DWORD PTR SS:[EBP-
54],0B7
>>>> ECX = ECX + 07594h
00401722 |. 81C1 94750000 ADD ECX,7594
>>>> Trace tiếp ta đến :
00401756 |. E8 B9B30600 CALL CRACKME2.0046CB14
>>>> Trace thẳng vào trong ta đến :
0046CB14 /$ 55 PUSH EBP
>>>>>>>> Trace tiếp ta đến :
>>>> Giá trị của chỗi sau khi được tính toán
0046CB37 |. 53 PUSH EBX ; /Arg3 =
00007B4C
>>>> Chuyển sang dạng số thập phân. Số này chính là số Serial của
ta.
0046CB38 |. 68 632D4700 PUSH
CRACKME2.00472D63 ; |Arg2 = 00472D63 ASCII "%i"
>>>>>>>> Vậy :
QUOTE
1- Quá trình mã hoá chuỗi rất đơn giản :
( Chiều dài chuỗi * 0B7h ) + 07594h
2- Giá trị này ở dạng thập phân chính là số Serial thực.
3- Cái khó của chương trình này là tìm ra đoạn mã này nằm ở đâu và
đặt đúng BreakPoint.
>>>>>>>> Vậy :
QUOTE
User : Moonbaby Serial : 31564
User : HVA-CrAcKeRtEaM Serial : 32845