【破文标题】天天理财、出差理财好帮手 3.3注册算法分析
【破文作者】XXNB
【作者邮箱】
【作者主页】
【破解工具】OD
【破解平台】xpsp2
【软件名称】天天理财、出差理财好帮手 3.3
【软件大小】3005KB
【原版下载】http://www.newhua.com/soft/52835.htm
【保护方式】
【软件简介】天天理财、出差理财好帮手是一款个人理财软件,适用于日常理财、出差理财及平常一些重要项目的理财如装修理财等适用。本软件小巧精致,简单易用。
主要功能有:收支项目设定,收入管理,支出管理,收支查询,报表生成等。理财涉及个人隐私因而本软件有密码保护功能。为了满足不同用户的喜好,本软件有四种皮肤供朋友们选择。
............
【破解声明】向大侠们学习!!!
------------------------------------------------------------------------
【破解过程】
------------------------------------------------------------------------
1、字符串查找“您输入的cdkey和当前的机器码不匹配,您不能用这个cdkey在这台机器上使用!”,可以找到下面关键代码:
00447DD4 . 55 push ebp
00447DD5 . 8BEC mov ebp, esp
00447DD7 . 83C4 B0 add esp, -50
00447DDA . 53 push ebx
00447DDB . 56 push esi
00447DDC . 57 push edi
00447DDD . 8945 B4 mov [ebp-4C], eax
00447DE0 . B8 E8925700 mov eax, 005792E8
00447DE5 . E8 82D61100 call 0056546C
00447DEA . 66:C745 C8 08>mov word ptr [ebp-38], 8
00447DF0 . 33D2 xor edx, edx
00447DF2 . 8955 F8 mov [ebp-8], edx
00447DF5 . 8D55 F8 lea edx, [ebp-8]
00447DF8 . FF45 D4 inc dword ptr [ebp-2C]
00447DFB . 8B45 B4 mov eax, [ebp-4C]
00447DFE . 8B80 FC020000 mov eax, [eax+2FC]
00447E04 . E8 239E0E00 call 00531C2C
00447E09 . 8D45 F8 lea eax, [ebp-8]
00447E0C . 33D2 xor edx, edx
00447E0E . 8955 F4 mov [ebp-C], edx
00447E11 . 8D55 F4 lea edx, [ebp-C]
00447E14 . FF45 D4 inc dword ptr [ebp-2C]
00447E17 . E8 40781200 call 0056F65C
00447E1C . 8D45 F4 lea eax, [ebp-C]
00447E1F . 8B08 mov ecx, [eax] ; 假码
00447E21 . A1 E8095800 mov eax, [5809E8]
00447E26 . 51 push ecx ; /Arg2
00447E27 . 8B10 mov edx, [eax] ; |85w
00447E29 . 52 push edx ; |Arg1
00447E2A . E8 CDA7FBFF call 004025FC ; \关键Call 《----跟进
00447E2F . 83C4 08 add esp, 8
00447E32 . BA 02000000 mov edx, 2
00447E37 . 50 push eax
00447E38 . 8D45 F4 lea eax, [ebp-C]
00447E3B . FF4D D4 dec dword ptr [ebp-2C]
00447E3E . E8 8D761200 call 0056F4D0
00447E43 . FF4D D4 dec dword ptr [ebp-2C] ; |
00447E46 . 8D45 F8 lea eax, [ebp-8] ; |
00447E49 . BA 02000000 mov edx, 2 ; |
00447E4E . E8 7D761200 call 0056F4D0 ; \A7Money.0056F4D0
00447E53 . 59 pop ecx
00447E54 . 84C9 test cl, cl
00447E56 0F84 5E010000 je 00447FBA ;关键跳转。
00447E5C . B2 01 mov dl, 1
00447E5E . A1 E4A54C00 mov eax, [4CA5E4]
00447E63 . E8 7C280800 call 004CA6E4
00447E68 . 8945 B0 mov [ebp-50], eax ;下面是注册成功时,写注册表信息的操作
00447E6B . BA 02000080 mov edx, 80000002
00447E70 . 8B45 B0 mov eax, [ebp-50]
00447E73 . E8 10751200 call 0056F388
00447E78 . 66:C745 C8 14>mov word ptr [ebp-38], 14
00447E7E . BA 57915700 mov edx, 00579157 ; \software\xcsoft\a7money
2、跟进call 004025FC 可以找到下面关键代码:
00402635 |. 53 push ebx ; /Arg2
00402636 |. 33D2 xor edx, edx ; |
00402638 |. 8955 FC mov [ebp-4], edx ; |
0040263B |. 8D4D FC lea ecx, [ebp-4] ; |
0040263E |. 51 push ecx ; |Arg1
0040263F |. FF46 1C inc dword ptr [esi+1C] ; |
00402642 |. E8 D5FDFFFF call 0040241C ; \A7Money.0040241C
00402647 |. 66:C746 10 08>mov word ptr [esi+10], 8
0040264D |. 66:C746 10 20>mov word ptr [esi+10], 20
00402653 |. 83C4 08 add esp, 8
00402656 |. 8B45 FC mov eax, [ebp-4] ; 这里会出现机器码
00402659 |. 33D2 xor edx, edx
0040265B |. 8D4D F8 lea ecx, [ebp-8]
0040265E |. 50 push eax
0040265F |. 53 push ebx
00402660 |. 8955 F8 mov [ebp-8], edx
00402663 |. 51 push ecx
00402664 |. FF46 1C inc dword ptr [esi+1C]
00402667 |. E8 04FCFFFF call 00402270 ; 上面机器码出现了,这个Call肯定要F7了。《---跟进
3、跟进call 00402270,可以找到如下关键代码:
004022CB |. 52 push edx ; /Arg3
004022CC |. 53 push ebx ; |Arg2
004022CD |. 894D F8 mov [ebp-8], ecx ; |
004022D0 |. 50 push eax ; |Arg1
004022D1 |. FF45 E8 inc dword ptr [ebp-18] ; |
004022D4 |. E8 5FFEFFFF call 00402138 ; \A7Money.《----这里时新机器码字符串生产的算法(1)
004022D9 |. 66:C745 DC 08>mov word ptr [ebp-24], 8
004022DF |. 8D83 10040000 lea eax, [ebx+410]
004022E5 |. 83C4 0C add esp, 0C
004022E8 |. 8338 00 cmp dword ptr [eax], 0
004022EB |. 74 04 je short 004022F1
004022ED |. 8B30 mov esi, [eax] ; 固定字符串“a7moneyisoneofthesoftwareofxccnoas”
004022EF |. EB 05 jmp short 004022F6
004022F1 |> BE FE125700 mov esi, 005712FE
004022F6 |> 837D F8 00 cmp dword ptr [ebp-8], 0 ; 新的机器码字符串。由上面的call 00402138生成
004022FA |. 74 05 je short 00402301
004022FC |. 8B7D F8 mov edi, [ebp-8] ; 计算后得到的新字符串。
004022FF |. EB 05 jmp short 00402306
00402301 |> BF FF125700 mov edi, 005712FF
00402306 |> 33DB xor ebx, ebx
00402308 |> 8A0E /mov cl, [esi] ; cl存放的是固定字符串的第n个字符。n=1,2,...16
0040230A |. 46 |inc esi
0040230B |. 66:C745 DC 08>|mov word ptr [ebp-24], 8
00402311 |. 8A07 |mov al, [edi] ; al存放经过计算机器码后的新字符串,取16个
00402313 |. 47 |inc edi
00402314 |. 8845 CB |mov [ebp-35], al
00402317 |. 0FBE55 CB |movsx edx, byte ptr [ebp-35]
0040231B |. 0FBEC1 |movsx eax, cl
0040231E |. 03C2 |add eax, edx ; +
00402320 |. B9 1A000000 |mov ecx, 1A ; 定值1A=26
00402325 |. 99 |cdq
00402326 |. F7F9 |idiv ecx ; 两个字符的ASCII码相加的结果 除以 1A
00402328 |. 8BC2 |mov eax, edx ; 得到的余数到eax
0040232A |. 8D55 C9 |lea edx, [ebp-37]
0040232D |. 04 41 |add al, 41 ; 余数+41
0040232F |. 8845 C9 |mov [ebp-37], al ; 这个是转成字符
00402332 |. 8D45 F4 |lea eax, [ebp-C] ; 以上得到的字符每四个连成一组。然后用“-”连接得到最后的注册码
00402335 |. C645 CA 00 |mov byte ptr [ebp-36], 0
00402339 |. 66:C745 DC 2C>|mov word ptr [ebp-24], 2C ;
0040233F |. E8 78D01600 |call 0056F3BC
00402344 |. FF45 E8 |inc dword ptr [ebp-18] ;所以最后得到的真码是16个字符的类似
00402347 |. 8D55 F4 |lea edx, [ebp-C] ;“RADI-DCOF-NGOF-TJBP”的字符串。
0040234A |. 8D45 FC |lea eax, [ebp-4]
0040234D |. E8 C2D11600 |call 0056F514
00402352 |. FF4D E8 |dec dword ptr [ebp-18]
00402355 |. 8D45 F4 |lea eax, [ebp-C]
00402358 |. BA 02000000 |mov edx, 2
0040235D |. E8 6ED11600 |call 0056F4D0
00402362 |. 8D4B 01 |lea ecx, [ebx+1]
00402365 |. 81E1 03000080 |and ecx, 80000003
0040236B |. 79 05 |jns short 00402372
0040236D |. 49 |dec ecx
0040236E |. 83C9 FC |or ecx, FFFFFFFC
00402371 |. 41 |inc ecx
00402372 |> 85C9 |test ecx, ecx
00402374 |. 75 36 |jnz short 004023AC
00402376 |. 83FB 0F |cmp ebx, 0F
00402379 |. 7D 31 |jge short 004023AC
0040237B |. 66:C745 DC 38>|mov word ptr [ebp-24], 38
00402381 |. BA 00135700 |mov edx, 00571300 ; -
00402386 |. 8D45 F0 |lea eax, [ebp-10]
00402389 |. E8 2ED01600 |call 0056F3BC
0040238E |. FF45 E8 |inc dword ptr [ebp-18]
00402391 |. 8D55 F0 |lea edx, [ebp-10]
00402394 |. 8D45 FC |lea eax, [ebp-4]
00402397 |. E8 78D11600 |call 0056F514
0040239C |. FF4D E8 |dec dword ptr [ebp-18]
0040239F |. 8D45 F0 |lea eax, [ebp-10]
004023A2 |. BA 02000000 |mov edx, 2
004023A7 |. E8 24D11600 |call 0056F4D0
004023AC |> 43 |inc ebx
004023AD |. 83FB 10 |cmp ebx, 10
004023B0 |.^ 0F8C 52FFFFFF \jl 00402308 循环回去。
004023B6 |. 66:C745 DC 44>mov word ptr [ebp-24], 44
004023BC |. 8D55 FC lea edx, [ebp-4]
004023BF |. 8B45 08 mov eax, [ebp+8]
004023C2 |. E8 39D11600 call 0056F500
004023C7 |. 8B45 08 mov eax, [ebp+8]
004023CA |. BA 02000000 mov edx, 2
004023CF |. 66:C745 DC 50>mov word ptr [ebp-24], 50
004023D5 |. 50 push eax
004023D6 |. 8D45 F8 lea eax, [ebp-8]
004023D9 |. FF4D E8 dec dword ptr [ebp-18]
004023DC |. E8 EFD01600 call 0056F4D0
004023E1 |. FF4D E8 dec dword ptr [ebp-18]
004023E4 |. 8D45 FC lea eax, [ebp-4]
004023E7 |. BA 02000000 mov edx, 2
004023EC |. E8 DFD01600 call 0056F4D0
004023F1 |. FF4D E8 dec dword ptr [ebp-18] ; 真码出现了.呼呼!!《-----------
4、跟进call 00402138。这个算法(1)将通过本电脑上的机器码重新计算出新的机器码。可以得到一个循环代码:
00402195 |> /8A0E /mov cl, [esi] ; 从机器码的第n位开始取。(n=1,2,..7)。共取7位ACII码的值。
00402197 |. |0FBEC1 |movsx eax, cl ; 放到eax
0040219A |. |66:C745 E4 08>|mov word ptr [ebp-1C], 8
004021A0 |. |8A5E 01 |mov bl, [esi+1] ; 注册码第n+1位。
004021A3 |. |B9 1A000000 |mov ecx, 1A ; 定值1A=26
004021A8 |. |0FBED3 |movsx edx, bl ;放到edx
004021AB |. |03C2 |add eax, edx ; 注册码前一位与后一位相加。ASCII码相加
004021AD |. |99 |cdq
004021AE |. |F7F9 |idiv ecx ; 除以定值
004021B0 |. |8BC2 |mov eax, edx ; 求得的余数到eax
004021B2 |. |8BD7 |mov edx, edi
004021B4 |. |04 41 |add al, 41 ; 余数+41
004021B6 |. |8807 |mov [edi], al ; 转换成字符,由于上面是取7位,所以这里将产生7个字母
004021B8 |. |8D45 F8 |lea eax, [ebp-8]
004021BB |. |C647 01 00 |mov byte ptr [edi+1], 0
004021BF |. |66:C745 E4 20>|mov word ptr [ebp-1C], 20
004021C5 |. |E8 F2D11600 |call 0056F3BC
004021CA |. |FF45 F0 |inc dword ptr [ebp-10]
004021CD |. |8D55 F8 |lea edx, [ebp-8]
004021D0 |. |8D45 FC |lea eax, [ebp-4]
004021D3 |. |E8 3CD31600 |call 0056F514
004021D8 |. |FF4D F0 |dec dword ptr [ebp-10]
004021DB |. |8D45 F8 |lea eax, [ebp-8]
004021DE |. |BA 02000000 |mov edx, 2
004021E3 |. |E8 E8D21600 |call 0056F4D0 ; 把新得到的字符与原机器码连接。得到新的机器码字符串
004021E8 |. |46 |inc esi ; 计数器自加
004021E9 |> |837D FC 00 cmp dword ptr [ebp-4], 0
004021ED |. |74 08 |je short 004021F7
004021EF |. |8B4D FC |mov ecx, [ebp-4]
004021F2 |. |8B41 FC |mov eax, [ecx-4]
004021F5 |. |EB 02 |jmp short 004021F9
004021F7 |> |33C0 |xor eax, eax
004021F9 |> |83F8 11 |cmp eax, 11
004021FC |.^\7C 97 \jl short 00402195 ; 继续循环
其实最重要的就是第3步骤里面的通过新机器码计算真注册码。
这个注册机比较难写。不过还是要试试。
【算法总结】
------------------------------------------------------------------------
1、注册码的计算完全通过机器码算出,与您输入的假码没有关系。
2、首先通过本机自动生产的机器码,通过前后字符之间的运算得到新的机器码。
3、通过新的机器码与固定字符串“a7moneyisoneofthesoftwareofxccnoas”的相应位置的字符的运算(只运算16位)。得到16个字符。
4、16个字符分4组。通过“-”连接得到真码!
【易语言注册机源码】
.版本 2
.局部变量 n, 整数型
.局部变量 jiqima, 文本型
.局部变量 len1, 整数型
.局部变量 xinjiqima, 文本型
.局部变量 LEN2, 整数型
.局部变量 a, 整数型
.局部变量 i, 整数型
.局部变量 b, 整数型
.局部变量 guding, 文本型
.局部变量 j, 整数型
.局部变量 c, 整数型
.局部变量 d, 整数型
.局部变量 code, 文本型
i = 1
j = 1
jiqima = 编辑框1.内容
len1 = 取文本长度 (jiqima)
xinjiqima = 编辑框1.内容
LEN2 = 取文本长度 (xinjiqima)
guding = “a7moneyisoneofthesoftwareofxccnoas”
.计次循环首 (7, i)
a = 取代码 (jiqima, i)
b = 取代码 (jiqima, i + 1)
a = a + b
a = a % 26
a = a + 65
xinjiqima = xinjiqima + 字符 (a)
.计次循环尾 ()
.计次循环首 (16, j)
c = 取代码 (guding, j)
d = 取代码 (xinjiqima, j)
c = c + d
c = c % 26
c = c + 65
.如果 (j = 5 或 j = 9 或 j = 13)
code = code + “-” + 字符 (c)
.否则
code = code + 字符 (c)
.如果结束
.计次循环尾 ()
编辑框2.内容 = xinjiqima
编辑框3.内容 = code
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)