【破解软件】FamilyTree 8.0
【下载地址】http://www.onlinedown.net/soft/51071.htm
【软件类别】国外软件/共享版/记事管理
【运行环境】Win9x/Me/NT/2000/XP/2003
【保护方式】UPX、Long(E-Mail)、Password
【调试工具】OllyDBD、PEiD
【作者声明】初学Crack,只是感兴趣,消遣业余时间,错误之处敬请诸位前辈不吝赐教。
【软件信息】是一个用于建立家谱的软件。你可以建立详细的家族谱系,可以增加照片和自传,本软件界面简洁美观。
一、准备工作
PEiD检查:UPX 0.89.6 - 1.02 / 1.05 - 1.24 (Delphi) stub -> Markus & Laszlo
脱壳略过,脱壳后PEiD再查:Borland Delphi 6.0 - 7.0
输入 Login(E-Mail): wzwgp@163.com Password: 12345678
DEDE定位注册按钮地址:005357B4
二、算法跟踪
005357B4 55 PUSH EBP
005357B5 8BEC MOV EBP,ESP
005357B7 B9 0D000000 MOV ECX,0D
005357BC 6A 00 PUSH 0
005357BE 6A 00 PUSH 0
005357C0 49 DEC ECX
005357C1 ^ 75 F9 JNZ SHORT tk.005357BC
005357C3 53 PUSH EBX
005357C4 56 PUSH ESI
005357C5 57 PUSH EDI
005357C6 8BF8 MOV EDI,EAX
005357C8 33C0 XOR EAX,EAX
005357CA 55 PUSH EBP
005357CB 68 955C5300 PUSH tk.00535C95
005357D0 64:FF30 PUSH DWORD PTR FS:[EAX]
005357D3 64:8920 MOV DWORD PTR FS:[EAX],ESP
005357D6 8D55 D0 LEA EDX,DWORD PTR SS:[EBP-30]
005357D9 8B87 F0020000 MOV EAX,DWORD PTR DS:[EDI+2F0]
005357DF E8 1464F1FF CALL tk.0044BBF8 ; 取出E-mail设为E
005357E4 8B45 D0 MOV EAX,DWORD PTR SS:[EBP-30] ; [EBP-30]=E
005357E7 8D55 D4 LEA EDX,DWORD PTR SS:[EBP-2C]
005357EA E8 513FEDFF CALL tk.00409740
005357EF 837D D4 00 CMP DWORD PTR SS:[EBP-2C],0
005357F3 75 2E JNZ SHORT tk.00535823 ; Login(E-Mail)已输入就跳走
005357F5 8B15 EC035700 MOV EDX,DWORD PTR DS:[5703EC] ; tk.00575A38
005357FB 8B12 MOV EDX,DWORD PTR DS:[EDX]
005357FD A1 D4035700 MOV EAX,DWORD PTR DS:[5703D4]
00535802 8B00 MOV EAX,DWORD PTR DS:[EAX]
00535804 8B80 F4020000 MOV EAX,DWORD PTR DS:[EAX+2F4]
0053580A E8 1964F1FF CALL tk.0044BC28
0053580F A1 D4035700 MOV EAX,DWORD PTR DS:[5703D4]
00535814 8B00 MOV EAX,DWORD PTR DS:[EAX]
00535816 8B10 MOV EDX,DWORD PTR DS:[EAX]
00535818 FF92 E8000000 CALL NEAR DWORD PTR DS:[EDX+E8]
0053581E E9 1D040000 JMP tk.00535C40
00535823 8D55 C8 LEA EDX,DWORD PTR SS:[EBP-38]
00535826 8B87 F4020000 MOV EAX,DWORD PTR DS:[EDI+2F4]
0053582C E8 572BF5FF CALL tk.00488388
00535831 8B45 C8 MOV EAX,DWORD PTR SS:[EBP-38]
00535834 8D55 CC LEA EDX,DWORD PTR SS:[EBP-34]
00535837 E8 043FEDFF CALL tk.00409740
0053583C 837D CC 00 CMP DWORD PTR SS:[EBP-34],0
00535840 75 2E JNZ SHORT tk.00535870 ; Password已输入就跳走
00535842 8B15 EC035700 MOV EDX,DWORD PTR DS:[5703EC] ; tk.00575A38
00535848 8B12 MOV EDX,DWORD PTR DS:[EDX]
0053584A A1 D4035700 MOV EAX,DWORD PTR DS:[5703D4]
0053584F 8B00 MOV EAX,DWORD PTR DS:[EAX]
00535851 8B80 F4020000 MOV EAX,DWORD PTR DS:[EAX+2F4]
00535857 E8 CC63F1FF CALL tk.0044BC28
0053585C A1 D4035700 MOV EAX,DWORD PTR DS:[5703D4]
00535861 8B00 MOV EAX,DWORD PTR DS:[EAX]
00535863 8B10 MOV EDX,DWORD PTR DS:[EAX]
00535865 FF92 E8000000 CALL NEAR DWORD PTR DS:[EDX+E8]
0053586B E9 D0030000 JMP tk.00535C40
00535870 8D55 C4 LEA EDX,DWORD PTR SS:[EBP-3C]
00535873 8B87 F0020000 MOV EAX,DWORD PTR DS:[EDI+2F0]
00535879 E8 7A63F1FF CALL tk.0044BBF8
0053587E 8B55 C4 MOV EDX,DWORD PTR SS:[EBP-3C] ; [EBP-3C]E地址
00535881 B8 AC5C5300 MOV EAX,tk.00535CAC ; EAX=40 ( @ )
00535886 E8 79FAECFF CALL tk.00405304 ; 得到E[@]前的长度(含@)
0053588B 8945 EC MOV DWORD PTR SS:[EBP-14],EAX ; 保存得到的长度
0053588E 837D EC 00 CMP DWORD PTR SS:[EBP-14],0
00535892 75 2E JNZ SHORT tk.005358C2 ; 跳
00535894 8B15 80045700 MOV EDX,DWORD PTR DS:[570480] ; tk.00575A3C
0053589A 8B12 MOV EDX,DWORD PTR DS:[EDX]
0053589C A1 D4035700 MOV EAX,DWORD PTR DS:[5703D4]
005358A1 8B00 MOV EAX,DWORD PTR DS:[EAX]
005358A3 8B80 F4020000 MOV EAX,DWORD PTR DS:[EAX+2F4]
005358A9 E8 7A63F1FF CALL tk.0044BC28
005358AE A1 D4035700 MOV EAX,DWORD PTR DS:[5703D4]
005358B3 8B00 MOV EAX,DWORD PTR DS:[EAX]
005358B5 8B10 MOV EDX,DWORD PTR DS:[EAX]
005358B7 FF92 E8000000 CALL NEAR DWORD PTR DS:[EDX+E8]
005358BD E9 7E030000 JMP tk.00535C40
005358C2 C745 E4 7A0D0000 MOV DWORD PTR SS:[EBP-1C],0D7A ; 常数 s1=D7A
005358C9 8B75 EC MOV ESI,DWORD PTR SS:[EBP-14] ; [EBP-14]=E[@]前的长度
005358CC 85F6 TEST ESI,ESI
005358CE 7E 24 JLE SHORT tk.005358F4
005358D0 BB 01000000 MOV EBX,1 ; EBX赋初值=1
005358D5 8D55 C0 LEA EDX,DWORD PTR SS:[EBP-40] ; [EBP-40]=0
005358D8 8B87 F0020000 MOV EAX,DWORD PTR DS:[EDI+2F0]
005358DE E8 1563F1FF CALL tk.0044BBF8
005358E3 8B45 C0 MOV EAX,DWORD PTR SS:[EBP-40] ; [EBP-40]E地址
005358E6 0FB64418 FF MOVZX EAX,BYTE PTR DS:[EAX+EBX-1] ; 取E字符的16进制值
005358EB F7EB IMUL EBX
005358ED 0145 E4 ADD DWORD PTR SS:[EBP-1C],EAX ; 乘积与s1相加
005358F0 43 INC EBX ; EBX+1
005358F1 4E DEC ESI ; ESI-1
005358F2 ^ 75 E1 JNZ SHORT tk.005358D5 ; E[@]前的长度是循环次数
005358F4 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
005358F7 8B45 E4 MOV EAX,DWORD PTR SS:[EBP-1C] ; [EBP-1C]=1596(计算结果)
005358FA E8 5D41EDFF CALL tk.00409A5C ; [EAX]=5526(转成10进制)
005358FF 8D55 BC LEA EDX,DWORD PTR SS:[EBP-44]
00535902 8B87 F0020000 MOV EAX,DWORD PTR DS:[EDI+2F0]
00535908 E8 EB62F1FF CALL tk.0044BBF8
0053590D 8B45 BC MOV EAX,DWORD PTR SS:[EBP-44]
00535910 E8 B3F6ECFF CALL tk.00404FC8
00535915 83F8 00 CMP EAX,0 ; EAX=E长度
00535918 7C 27 JL SHORT tk.00535941
0053591A 8945 E8 MOV DWORD PTR SS:[EBP-18],EAX
0053591D 8D55 B8 LEA EDX,DWORD PTR SS:[EBP-48]
00535920 8B87 F0020000 MOV EAX,DWORD PTR DS:[EDI+2F0]
00535926 E8 CD62F1FF CALL tk.0044BBF8
0053592B 8B45 B8 MOV EAX,DWORD PTR SS:[EBP-48] ; [EBP-48]E地址
0053592E 8B55 E8 MOV EDX,DWORD PTR SS:[EBP-18] ; [EBP-18]=E长度
00535931 807C10 FF 2E CMP BYTE PTR DS:[EAX+EDX-1],2E ; [EAX+EDX-1]=E字符串中有2E(.)吗?
00535936 74 09 JE SHORT tk.00535941 ; E字符串中有2E(.)跳走
00535938 FF4D E8 DEC DWORD PTR SS:[EBP-18] ; -1
0053593B 837D E8 FF CMP DWORD PTR SS:[EBP-18],-1
0053593F ^ 75 DC JNZ SHORT tk.0053591D ; 循环检查有"."吗
00535941 837D E8 00 CMP DWORD PTR SS:[EBP-18],0 ; “.”前有字符吗?
00535945 75 2E JNZ SHORT tk.00535975 ; 有就跳
00535947 8B15 80045700 MOV EDX,DWORD PTR DS:[570480] ; tk.00575A3C
0053594D 8B12 MOV EDX,DWORD PTR DS:[EDX]
0053594F A1 D4035700 MOV EAX,DWORD PTR DS:[5703D4]
00535954 8B00 MOV EAX,DWORD PTR DS:[EAX]
00535956 8B80 F4020000 MOV EAX,DWORD PTR DS:[EAX+2F4]
0053595C E8 C762F1FF CALL tk.0044BC28
00535961 A1 D4035700 MOV EAX,DWORD PTR DS:[5703D4]
00535966 8B00 MOV EAX,DWORD PTR DS:[EAX]
00535968 8B10 MOV EDX,DWORD PTR DS:[EAX]
0053596A FF92 E8000000 CALL NEAR DWORD PTR DS:[EDX+E8]
00535970 E9 CB020000 JMP tk.00535C40
00535975 C745 E0 B41C0000 MOV DWORD PTR SS:[EBP-20],1CB4 ; 常数 s2=1CB4
0053597C 8B5D EC MOV EBX,DWORD PTR SS:[EBP-14] ; [EBP-14]=@前的长度(含@)
0053597F 8B75 E8 MOV ESI,DWORD PTR SS:[EBP-18] ; [EBP-18]"."前的长度(含.)
00535982 83EE 02 SUB ESI,2
00535985 2BF3 SUB ESI,EBX
00535987 7C 20 JL SHORT tk.005359A9 ; @与"."之间字符小于2跳
00535989 46 INC ESI ; ESI+1(还原@与"."之间的字符长度)
0053598A 8D55 B4 LEA EDX,DWORD PTR SS:[EBP-4C]
0053598D 8B87 F0020000 MOV EAX,DWORD PTR DS:[EDI+2F0]
00535993 E8 6062F1FF CALL tk.0044BBF8
00535998 8B45 B4 MOV EAX,DWORD PTR SS:[EBP-4C] ; [EBP-4C]E地址
0053599B 0FB64418 FF MOVZX EAX,BYTE PTR DS:[EAX+EBX-1] ; [EAX+EBX-1]=@ 1 6
005359A0 F7EB IMUL EBX ; EBX=6 (@前的长度)
005359A2 0145 E0 ADD DWORD PTR SS:[EBP-20],EAX ; [EBP-20]=s2加乘积
005359A5 43 INC EBX ; +1
005359A6 4E DEC ESI ; ESI=3
005359A7 ^ 75 E1 JNZ SHORT tk.0053598A
005359A9 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
005359AC 8B45 E0 MOV EAX,DWORD PTR SS:[EBP-20] ; [EBP-20]=213B (计算结果)
005359AF E8 A840EDFF CALL tk.00409A5C ; [EAX]=8507 (转成10进制)
005359B4 C745 DC E9100000 MOV DWORD PTR SS:[EBP-24],10E9 ; 常数 s3=10E9
005359BB 8B5D E8 MOV EBX,DWORD PTR SS:[EBP-18] ; [EBP-18]"."前的长度(含.)
005359BE 83EB 02 SUB EBX,2 ; -2
005359C1 8D55 B0 LEA EDX,DWORD PTR SS:[EBP-50]
005359C4 8B87 F0020000 MOV EAX,DWORD PTR DS:[EDI+2F0]
005359CA E8 2962F1FF CALL tk.0044BBF8
005359CF 8B45 B0 MOV EAX,DWORD PTR SS:[EBP-50] ; [EBP-50]E地址
005359D2 E8 F1F5ECFF CALL tk.00404FC8
005359D7 8BF0 MOV ESI,EAX ; EAX=E字符串长度
005359D9 2BF3 SUB ESI,EBX ; D-8=5 ("."后的字符长度加2)
005359DB 7C 20 JL SHORT tk.005359FD
005359DD 46 INC ESI ; ESI再加1
005359DE 8D55 AC LEA EDX,DWORD PTR SS:[EBP-54]
005359E1 8B87 F0020000 MOV EAX,DWORD PTR DS:[EDI+2F0]
005359E7 E8 0C62F1FF CALL tk.0044BBF8
005359EC 8B45 AC MOV EAX,DWORD PTR SS:[EBP-54] ; [EBP-54]E-mail地址
005359EF 0FB64418 FF MOVZX EAX,BYTE PTR DS:[EAX+EBX-1] ; E[8,9,10…]
005359F4 F7EB IMUL EBX ; EBX=8
005359F6 0145 DC ADD DWORD PTR SS:[EBP-24],EAX ; 常数s3加乘积
005359F9 43 INC EBX
005359FA 4E DEC ESI
005359FB ^ 75 E1 JNZ SHORT tk.005359DE
005359FD 8D55 F0 LEA EDX,DWORD PTR SS:[EBP-10]
00535A00 8B45 DC MOV EAX,DWORD PTR SS:[EBP-24] ; [EBP-24]=252E
00535A03 E8 5440EDFF CALL tk.00409A5C ; 转成10进制 EAX=9518
00535A08 8D55 FC LEA EDX,DWORD PTR SS:[EBP-4]
00535A0B 8B87 F4020000 MOV EAX,DWORD PTR DS:[EDI+2F4]
00535A11 E8 7229F5FF CALL tk.00488388
00535A16 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4] ; [EBP-4]假码地址设为P1-P2-P3
00535A19 B8 B85C5300 MOV EAX,tk.00535CB8 ; "-"
00535A1E E8 E1F8ECFF CALL tk.00405304 ; 扫描假码中的"-"
00535A23 8BD8 MOV EBX,EAX ; EAX=P1
00535A25 85DB TEST EBX,EBX
00535A27 75 04 JNZ SHORT tk.00535A2D
00535A29 33F6 XOR ESI,ESI
00535A2B EB 32 JMP SHORT tk.00535A5F
00535A2D 8D45 A8 LEA EAX,DWORD PTR SS:[EBP-58]
00535A30 50 PUSH EAX
00535A31 8BCB MOV ECX,EBX
00535A33 49 DEC ECX
00535A34 BA 01000000 MOV EDX,1
00535A39 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00535A3C E8 DFF7ECFF CALL tk.00405220
00535A41 8B45 A8 MOV EAX,DWORD PTR SS:[EBP-58] ; [EBP-58]=P1
00535A44 E8 7740EDFF CALL tk.00409AC0 ; 转成16进制
00535A49 8BF0 MOV ESI,EAX
00535A4B 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
00535A4E 50 PUSH EAX
00535A4F 8D53 01 LEA EDX,DWORD PTR DS:[EBX+1] ; P2开始的位置
00535A52 B9 FF000000 MOV ECX,0FF
00535A57 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00535A5A E8 C1F7ECFF CALL tk.00405220
00535A5F 8B55 FC MOV EDX,DWORD PTR SS:[EBP-4]
00535A62 B8 B85C5300 MOV EAX,tk.00535CB8 ; -
00535A67 E8 98F8ECFF CALL tk.00405304
00535A6C 8BD8 MOV EBX,EAX
00535A6E 85DB TEST EBX,EBX
00535A70 75 09 JNZ SHORT tk.00535A7B
00535A72 33C0 XOR EAX,EAX
00535A74 8945 D8 MOV DWORD PTR SS:[EBP-28],EAX
00535A77 33C0 XOR EAX,EAX
00535A79 EB 3B JMP SHORT tk.00535AB6
00535A7B 8D45 A4 LEA EAX,DWORD PTR SS:[EBP-5C]
00535A7E 50 PUSH EAX
00535A7F 8BCB MOV ECX,EBX
00535A81 49 DEC ECX
00535A82 BA 01000000 MOV EDX,1
00535A87 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00535A8A E8 91F7ECFF CALL tk.00405220
00535A8F 8B45 A4 MOV EAX,DWORD PTR SS:[EBP-5C] ; [EBP-5C]=P2
00535A92 E8 2940EDFF CALL tk.00409AC0 ; 转成16进制
00535A97 8945 D8 MOV DWORD PTR SS:[EBP-28],EAX
00535A9A 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
00535A9D 50 PUSH EAX
00535A9E 8D53 01 LEA EDX,DWORD PTR DS:[EBX+1]
00535AA1 B9 FF000000 MOV ECX,0FF
00535AA6 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
00535AA9 E8 72F7ECFF CALL tk.00405220
00535AAE 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; [EBP-4]=P3
00535AB1 E8 0A40EDFF CALL tk.00409AC0 ; 转成16进制
00535AB6 3B75 E4 CMP ESI,DWORD PTR SS:[EBP-1C] ; ESI=P1 [EBP-1C]=1596
00535AB9 0F85 53010000 JNZ tk.00535C12
00535ABF 8B55 D8 MOV EDX,DWORD PTR SS:[EBP-28]
00535AC2 3B55 E0 CMP EDX,DWORD PTR SS:[EBP-20] ; EDX=P2 [EBP-20]=213B
00535AC5 0F85 47010000 JNZ tk.00535C12
00535ACB 3B45 DC CMP EAX,DWORD PTR SS:[EBP-24] ; EAX=P3 [EBP-24]=252E
00535ACE 0F85 3E010000 JNZ tk.00535C12
00535AD4 B2 01 MOV DL,1
00535AD6 A1 442B4700 MOV EAX,DWORD PTR DS:[472B44]
00535ADB E8 64D1F3FF CALL tk.00472C44
00535AE0 A3 645A5700 MOV DWORD PTR DS:[575A64],EAX
三、算法小结
1.注册码形式:****-****-**** (P1-P2-P3)
2.Login(E-Mail):wzwgp@163.com (0X 777A776770403136332E636F6D)
计算方法是常数加上字符的16进制值与下标乘积之和
P1计算E-Mail的第一个字符到"@"(含@)
s1=D7A(常数)
P1=s1+(77*1)+(7A*2)+(77*3)+(67*4)+(70*5)+(40*6)=1596
转成10进制:P1=5526
P2计算E-Mail从字符"@"(含@)开始,计算字符个数是"@"和"."之间的字符个数值
s2=1CB4(常数)
P1=s2+(40*6)+(31*7)+(36*8)=213B
转成10进制:P2=8507
P3计算E-Mail字符的开始位置是E-Mail字符个数减"."后的字符个数与2之和
s3=10E9(常数)
P3=s3+(36*8)+(33*9)+(2E*A)+(63*B)+(6F*C)+(6D*D)=252E
转成10进制:P3=9518
Password: 5526-8507-9518
注册信息保存在:HKEY_CURRENT_USER\Software\FamilyTree |