- New protocols are supported -- IMAP4rev1 for e-mail and LDAP for the address book.. You can manage thousands of e-mail at your fingertip.. - You can write HTML e-mail with Becky!.. If
Trang 1004826CD | E8 2223F8FF CALL unpack.004049F4 ; <== Cutting : SecII
- Quá trình mã hoá được tiến hành như sau :
004826E9 | 8B4D F4 MOV ECX,[LOCAL.3] ; <== SecII
004826EC | 8B55 F8 MOV EDX,[LOCAL.2] ; <== SecI
004826EF | 8BC7 MOV EAX,EDI
004826F1 | E8 1EF0FFFF CALL unpack.00481714 ; <== Encrypt
-=== Encrypt
=== -
00481769 | BB 00010000 MOV EBX,100 ; <== Default String : dStr 0048176E | 8D45 F0 LEA EAX,[LOCAL.4] 00481771 | 50 PUSH EAX ; /Arg1 00481772 | C745 E4 00010>MOV [LOCAL.7],100 ; |
00481779 | C645 E8 00 MOV BYTE PTR SS:[EBP-18],0 ; |
0048177D | 8D55 E4 LEA EDX,[LOCAL.7] ; |
00481780 | 33C9 XOR ECX,ECX ; |
00481782 | B8 5C184800 MOV EAX,unpack.0048185C ;
|ASCII "%1.2x" 00481787 | E8 C87FF8FF CALL unpack.00409754 ;
\unpack.00409754
0048178C | 8B45 FC MOV EAX,[LOCAL.1]
0048178F | E8 0830F8FF CALL unpack.0040479C ; <== Get length of SecI
00481794 | 8BF8 MOV EDI,EAX ; <==
NumberLoop = LenSecI : nL
00481796 | 85FF TEST EDI,EDI
00481798 | 7E 60 JLE SHORT unpack.004817FA
0048179A | C745 EC 01000>MOV [LOCAL.5],1 ; <==
i = 1
004817A1 |> 8B45 FC /MOV EAX,[LOCAL.1] ; <== SecI
004817A4 | 8B55 EC |MOV EDX,[LOCAL.5] ; <==
i
004817A7 | 0FB64410 FF |MOVZX EAX,BYTE PTR DS:[EAX+EDX-1]
; <== SecI[i-1]
Trang 2004817AC | 03C3 |ADD EAX,EBX ; <== Temp = Temp + SecI[i-1]
004817AE | B9 FF000000 |MOV ECX,0FF ; <== dV 004817B3 | 99 |CDQ
004817B4 | F7F9 |IDIV ECX ; <== Temp
= Temp % dV
004817B6 | 8BDA |MOV EBX,EDX ; <== Temp 004817B8 | 3B75 F4 |CMP ESI,[LOCAL.3] ; <== while ( j < LenSecII )
004817BB | 7D 03 |JGE SHORT unpack.004817C0 ; <== then
004817BD | 46 |INC ESI ; <== j++
004817BE | EB 05 |JMP SHORT unpack.004817C5 ; <== else
004817C0 |> BE 01000000 |MOV ESI,1 ; <==
j = 0x1
004817C5 |> 8B45 F8 |MOV EAX,[LOCAL.2] ; <== SecII
004817C8 | 0FB64430 FF |MOVZX EAX,BYTE PTR DS:[EAX+ESI-1]
; <== SecII[i-1] 004817CD | 33D8 |XOR EBX,EAX ; <== Temp = Temp xor SecII[i-1] 004817CF | 8D45 E0 |LEA EAX,[LOCAL.8] ; <== Convert Value to String : tStr 004817D2 | 50 |PUSH EAX ; /Arg1 004817D3 | 895D E4 |MOV [LOCAL.7],EBX ; |
004817D6 | C645 E8 00 |MOV BYTE PTR SS:[EBP-18],0 ; |
004817DA | 8D55 E4 |LEA EDX,[LOCAL.7] ; |
004817DD | 33C9 |XOR ECX,ECX ; |
004817DF | B8 5C184800 |MOV EAX,unpack.0048185C ;
|ASCII "%1.2x" 004817E4 | E8 6B7FF8FF |CALL unpack.00409754 ;
\unpack.00409754
004817E9 | 8B55 E0 |MOV EDX,[LOCAL.8] ; <== tStr
004817EC | 8D45 F0 |LEA EAX,[LOCAL.4] ; <== dStr 004817EF | E8 B02FF8FF |CALL unpack.004047A4 ; <== Concat(dStr,tStr)
Trang 3004817F4 | FF45 EC |INC [LOCAL.5] ; <== i++
004817F7 | 4F |DEC EDI ; <== while (nL > 0)
004817F8 |.^ 75 A7 \JNZ SHORT unpack.004817A1 ; <== Continue loop
-=== Encrypt === -
/*/*/*/ - SERIAL tương ứng :
User : REA-cRaCkErTeAm Serial : 10074-93E47-8D569
Serial : N/A
III – KeyGen :
/Section I /- Kết hợp với chuỗi mặc định và đảo ngược chuỗi này
/Section II /- Chia chuỗi làm hai phần và tiến hành mã hoá
IV – End of Tut :
- Finished – August 24, 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.rimarts.co.jp/becky.htm
Production : RimArts, Inc
SoftWare : Becky! Internet Mail 2.10.03
Copyright by : Copyright © 1996-2004 RimArts, Inc All Rights Reserved
Type : Name / Serial / Email
Packed : N / A
Language : Microsoft Visual C++ 6.0
Trang 4Crack Tool : OllyDbg 1.09d, PEiD 0.92, kWdsm 10
Unpack : N / A
Request : Correct Serial / KeyGen
Becky! Internet Mail 2.10.03
- You can create multiple mailboxes, of course Moreover, you can create multiple "profiles" for each mailbox This feature is especially useful if you use laptop computer You can switch between several different settings, like "LAN" and dialup, for the same mailbox
- New protocols are supported IMAP4rev1 for e-mail and LDAP for the address book
- Fast! You can manage thousands of e-mail at your fingertip
- You can write HTML e-mail with Becky! If you have Microsoft Internet
Explorer ver5 or higher installed, Becky! is a complete HTML enabled e-mail client
- Flexible template capability You can prepare standardized e-mail format for business and personal e-mail You can also create HTML template, of course
….etc
I – Information :
- Dùng PEiD kiểm tra biết CrackMe không bị PACK được viết bằng Microsoft Visual C++ 6.0
- Nhập thử User, Email và Fake Serial, ta nhận được thông báo "Wrong Reg code"
Ta không tìm thấy thông báo này trong Olly, nhưng ta tìm được đoạn CODE sau : 005315ED 68 D0695B00 PUSH B2.005B69D0 ; |Arg2 = 005B69D0 ASCII "User"
005315F2 68 EC6A5B00 PUSH B2.005B6AEC ; |Arg1 =
005B6AEC ASCII "License"
0053160B 68 C8695B00 PUSH B2.005B69C8 ; |Arg2 = 005B69C8 ASCII "Code"
00531610 68 EC6A5B00 PUSH B2.005B6AEC ; |Arg1 =
005B6AEC ASCII "License"
00531627 68 C0695B00 PUSH B2.005B69C0 ; |Arg2 = 005B69C0 ASCII "EMail"
0053162C 68 EC6A5B00 PUSH B2.005B6AEC ; |Arg1 = 005B6AEC ASCII "License"
- Dò ngược lên trên ta đặt BreakPoint tại lệnh CALL đầu tiên của FuncTion này :
Trang 5005314FF E8 69640300 CALL B2.0056796D ; <== Set BreakPoint here
II – Cracking :
- Load và chạy chương trình, chương trình dừng lại tại điểm đặt BreakPoint Trace tiếp ta sẽ thấy chương trình nối chuỗi Serial nhập vào sau chuỗi mặc định “RBK” tạo thành chuỗi “RBK-XXXX-YYYY-ZZZZ” Trace tiếp và ta đến đây :
005315D5 E8 A644EEFF CALL B2.00415A80 ;
\B2.00415A80
- Dùng F7 trace into ta đến đoạn mã hoá Đầu tiên chương trình kiểm tra chiều dài của chuỗi sau khi đã được gắn thêm chuỗi mặc định :
00415A8D | 83F9 12 CMP ECX,12 ; <== New Len.S must be 18 charts
00415A90 | 0F85 AC010000 JNZ B2.00415C42
- Như vậy ta tính được chiều dài của chuỗi S nhập phải là 14 ký tự Kế đến
chương trình kiểm tra các ký tự đặc biệt :
00415A96 | 8A50 03 MOV DL,BYTE PTR DS:[EAX+3] ; <== NewS[3]
00415A99 | B1 2D MOV CL,2D ; <==
Default char : "-"
00415A9B | 3AD1 CMP DL,CL ; <== NewS[3] ==
"-"
00415A9D | 0F85 9F010000 JNZ B2.00415C42
00415AA3 | 3848 08 CMP BYTE PTR DS:[EAX+8],CL ; <==
NewS[8] == "-"
00415AA6 | 0F85 96010000 JNZ B2.00415C42
00415AAC | 3848 0D CMP BYTE PTR DS:[EAX+D],CL ; <==
NewS[13] == "-"
00415AAF | 0F85 8D010000 JNZ B2.00415C42
- Từ đây ta xác định được dạng của số Serial : XXXX-YYYY-ZZZZ Tiếp đó chương trình sẽ phân tách số Serial mới thành 4 đoạn Trong đó đoạn đầu tiên chính là đoạn mặc định “RBK” Từng đoạn sẽ được kiểm tra Đoạn đầu tiên luôn đúng vì đó là đoạn mặc định
- Kế đó chương trình chuyển hai ký tự cuối cùng của đoạn thứ hai sang giá trị HEX tương ứng ( ví dụ : 13 được chuyển thành D ) và tiến hành so sánh :
00415B76 | 83FE 01 CMP ESI,1 ; <== Value must be greater than 1
00415B79 | 0F8C 96000000 JL B2.00415C15 ; <== but
Trang 600415B7F | 83FE 0C CMP ESI,0C ; <== must be less than 12
00415B82 | 0F8F 8D000000 JG B2.00415C15
- Đoạn thứ hai là đoạn mặc định :
00415B88 | 8B4424 14 MOV EAX,DWORD PTR SS:[ESP+14] ; <== Second Section
00415B8C | BE D8675B00 MOV ESI,B2.005B67D8 ; ASCII "3437"
00415B91 |> 8A10 /MOV DL,BYTE PTR DS:[EAX]
00415B93 | 8A1E |MOV BL,BYTE PTR DS:[ESI]
00415B95 | 8ACA |MOV CL,DL
00415B97 | 3AD3 |CMP DL,BL
00415B99 | 75 1E |JNZ SHORT B2.00415BB9
00415B9B | 84C9 |TEST CL,CL
00415B9D | 74 16 |JE SHORT B2.00415BB5
00415B9F | 8A50 01 |MOV DL,BYTE PTR DS:[EAX+1]
00415BA2 | 8A5E 01 |MOV BL,BYTE PTR DS:[ESI+1]
00415BA5 | 8ACA |MOV CL,DL
00415BA7 | 3AD3 |CMP DL,BL
00415BA9 | 75 0E |JNZ SHORT B2.00415BB9
00415BAB | 83C0 02 |ADD EAX,2
00415BAE | 83C6 02 |ADD ESI,2
00415BB1 | 84C9 |TEST CL,CL
00415BB3 |.^ 75 DC \JNZ SHORT B2.00415B91
- Quá trình so sánh đoạn thứ tư được dựa vào một bảng mặc định Và đoạn thứ tư này được chia làm hai phần Ba ký tự cuối được kiểm tra giống nhau, ký tự đầu tiên kiểm tra khác Ứng với mỗi giá trị của từng ký tự sẽ có một giá trị tương ứng Theo như bảng này thì 3 ký tự cuối phải là các ký tự trong khoảng (0-9), còn ký tự đầu tiên phải nằm trong khoảng (a-z, A-Z)
00415BC2 | 8B4424 0C MOV EAX,DWORD PTR SS:[ESP+C] ; <==
Section_III
00415BC6 | 0FBE48 01 MOVSX ECX,BYTE PTR DS:[EAX+1] ; <== Section_III[1]
00415BCA | 51 PUSH ECX
00415BCB | E8 46A41300 CALL B2.00550016 ; <== Must be (0-9)
00415BD0 | 83C4 04 ADD ESP,4
00415BD3 | 85C0 TEST EAX,EAX ; <== if correct return value = 4
00415BD5 | 74 3E JE SHORT B2.00415C15
Trang 700415BD7 | 8B5424 0C MOV EDX,DWORD PTR SS:[ESP+C] ; <== Section_III
00415BDB | 0FBE42 02 MOVSX EAX,BYTE PTR DS:[EDX+2] ; <== Section_III[2]
00415BDF | 50 PUSH EAX
00415BE0 | E8 31A41300 CALL B2.00550016 ; <== Must be (0-9)