tianxj 发表于 2009-2-4 00:37

Mini Finance Calculator 2.8算法分析

【破文标题】Mini Finance Calculator 2.8算法分析
【破文作者】tianxj
【作者邮箱】tianxj_2007@126.com
【作者主页】WwW.ChiNaPYG.CoM
【破解工具】PEiD,OD
【破解平台】Windows XP
【软件名称】Mini Finance Calculator 2.8
【软件大小】1002KB
【软件类别】国外软件/财务管理
【软件授权】试用版
【软件语言】英文
【运行环境】Win9x/Me/NT/2000/XP/2003
【更新时间】2008-12-30
【原版下载】华军软件园
【保护方式】注册码
【软件简介】Mini Finance Calculator计算器是一个小,但非常有用的金融计算器。它给你的能力来计算资金的时间价值,利率,现金流量,以及折旧。此外,您也可以浏览,打印,并保存摊销时间表。
【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------
【破解内容】
--------------------------------------------------------------
**************************************************************
一、运行程序,进行注册,输入错误的注册信息进行检测,有提示信息
**************************************************************
二、用PEiD对minifc.exe查壳,为 Borland Delphi 6.0 - 7.0
**************************************************************
三、运行OD,打开minifc.exe,右键—超级字串参考—查找ASCII.
发现错误提示"Invalid Registered User or Key!",由此来到关键算法部分
==============================================================005AE0F8/$55            PUSH EBP
005AE0F9|.8BEC          MOV EBP,ESP
005AE0FB|.B9 15000000   MOV ECX,15
005AE100|>6A 00         /PUSH 0
005AE102|.6A 00         |PUSH 0
005AE104|.49            |DEC ECX
005AE105|.^ 75 F9         \JNZ SHORT minifc.005AE100
005AE107|.53            PUSH EBX
005AE108|.8955 F8       MOV DWORD PTR SS:,EDX
005AE10B|.8945 FC       MOV DWORD PTR SS:,EAX
005AE10E|.8B45 FC       MOV EAX,DWORD PTR SS:             ;//用户名
005AE111|.E8 9E72E5FF   CALL minifc.004053B4
005AE116|.8B45 F8       MOV EAX,DWORD PTR SS:             ;//试炼码
005AE119|.E8 9672E5FF   CALL minifc.004053B4
005AE11E|.33C0          XOR EAX,EAX
005AE120|.55            PUSH EBP
005AE121|.68 B3E45A00   PUSH minifc.005AE4B3
005AE126|.64:FF30       PUSH DWORD PTR FS:
005AE129|.64:8920       MOV DWORD PTR FS:,ESP
005AE12C|.33DB          XOR EBX,EBX
005AE12E|.8D45 D8       LEA EAX,DWORD PTR SS:
005AE131|.B9 CCE45A00   MOV ECX,minifc.005AE4CC                  ;mini
005AE136|.8B55 FC       MOV EDX,DWORD PTR SS:             ;//用户名
005AE139|.E8 D270E5FF   CALL minifc.00405210                     ;//将用户名与"mini"相连
005AE13E|.8B45 D8       MOV EAX,DWORD PTR SS:            ;//用户名与"mini"相连的字符串
005AE141|.8D55 DC       LEA EDX,DWORD PTR SS:
005AE144|.E8 57FEFFFF   CALL minifc.005ADFA0                     ;//标准MD5运算
005AE149|.8D45 DC       LEA EAX,DWORD PTR SS:
005AE14C|.8D55 F4       LEA EDX,DWORD PTR SS:
005AE14F|.E8 C0FEFFFF   CALL minifc.005AE014                     ;//标准MD5运算值小写输出
005AE154|.8B45 F8       MOV EAX,DWORD PTR SS:
005AE157|.E8 6870E5FF   CALL minifc.004051C4
005AE15C|.83F8 04       CMP EAX,4
005AE15F|.0F8C 23030000 JL minifc.005AE488                     ;//试炼码长度小于4则挂
005AE165|.6A 00         PUSH 0
005AE167|.8D45 D4       LEA EAX,DWORD PTR SS:
005AE16A|.8B55 F4       MOV EDX,DWORD PTR SS:
005AE16D|.8A12          MOV DL,BYTE PTR DS:
005AE16F|.E8 786FE5FF   CALL minifc.004050EC
005AE174|.FF75 D4       PUSH DWORD PTR SS:
005AE177|.8D45 D0       LEA EAX,DWORD PTR SS:
005AE17A|.8B55 F4       MOV EDX,DWORD PTR SS:
005AE17D|.8A52 01       MOV DL,BYTE PTR DS:
005AE180|.E8 676FE5FF   CALL minifc.004050EC
005AE185|.FF75 D0       PUSH DWORD PTR SS:
005AE188|.8D45 CC       LEA EAX,DWORD PTR SS:
005AE18B|.8B55 F4       MOV EDX,DWORD PTR SS:
005AE18E|.8A52 02       MOV DL,BYTE PTR DS:
005AE191|.E8 566FE5FF   CALL minifc.004050EC
005AE196|.FF75 CC       PUSH DWORD PTR SS:
005AE199|.8D45 C8       LEA EAX,DWORD PTR SS:
005AE19C|.8B55 F4       MOV EDX,DWORD PTR SS:
005AE19F|.8A52 03       MOV DL,BYTE PTR DS:
005AE1A2|.E8 456FE5FF   CALL minifc.004050EC
005AE1A7|.FF75 C8       PUSH DWORD PTR SS:
005AE1AA|.8D45 F0       LEA EAX,DWORD PTR SS:
005AE1AD|.BA 05000000   MOV EDX,5
005AE1B2|.E8 CD70E5FF   CALL minifc.00405284
005AE1B7|.6A 00         PUSH 0
005AE1B9|.8D45 C4       LEA EAX,DWORD PTR SS:
005AE1BC|.8B55 F8       MOV EDX,DWORD PTR SS:
005AE1BF|.8A12          MOV DL,BYTE PTR DS:
005AE1C1|.E8 266FE5FF   CALL minifc.004050EC
005AE1C6|.FF75 C4       PUSH DWORD PTR SS:
005AE1C9|.8D45 C0       LEA EAX,DWORD PTR SS:
005AE1CC|.8B55 F8       MOV EDX,DWORD PTR SS:
005AE1CF|.8A52 01       MOV DL,BYTE PTR DS:
005AE1D2|.E8 156FE5FF   CALL minifc.004050EC
005AE1D7|.FF75 C0       PUSH DWORD PTR SS:
005AE1DA|.8D45 BC       LEA EAX,DWORD PTR SS:
005AE1DD|.8B55 F8       MOV EDX,DWORD PTR SS:
005AE1E0|.8A52 02       MOV DL,BYTE PTR DS:
005AE1E3|.E8 046FE5FF   CALL minifc.004050EC
005AE1E8|.FF75 BC       PUSH DWORD PTR SS:
005AE1EB|.8D45 B8       LEA EAX,DWORD PTR SS:
005AE1EE|.8B55 F8       MOV EDX,DWORD PTR SS:
005AE1F1|.8A52 03       MOV DL,BYTE PTR DS:
005AE1F4|.E8 F36EE5FF   CALL minifc.004050EC
005AE1F9|.FF75 B8       PUSH DWORD PTR SS:
005AE1FC|.8D45 EC       LEA EAX,DWORD PTR SS:
005AE1FF|.BA 05000000   MOV EDX,5
005AE204|.E8 7B70E5FF   CALL minifc.00405284
005AE209|.8D55 B4       LEA EDX,DWORD PTR SS:
005AE20C|.8B45 F0       MOV EAX,DWORD PTR SS:            ;//用户名与"mini"相连的字符串MD5值小写1-4位
005AE20F|.E8 9CB5E5FF   CALL minifc.004097B0                     ;//将小写转为大写
005AE214|.8B45 B4       MOV EAX,DWORD PTR SS:            ;//用户名与"mini"相连的字符串MD5值大写1-4位
005AE217|.50            PUSH EAX
005AE218|.8D55 B0       LEA EDX,DWORD PTR SS:
005AE21B|.8B45 EC       MOV EAX,DWORD PTR SS:            ;//试炼码1-4位
005AE21E|.E8 8DB5E5FF   CALL minifc.004097B0                     ;//将小写转为大写
005AE223|.8B55 B0       MOV EDX,DWORD PTR SS:            ;//试炼码大写1-4位
005AE226|.58            POP EAX                                  ;//用户名与"mini"相连的字符串MD5值大写1-4位
005AE227|.E8 E470E5FF   CALL minifc.00405310                     ;//比较CALL
005AE22C|.75 04         JNZ SHORT minifc.005AE232                ;//不同则挂
005AE22E|.B3 01         MOV BL,1
005AE230|.EB 07         JMP SHORT minifc.005AE239
005AE232|>33DB          XOR EBX,EBX
005AE234|.E9 4F020000   JMP minifc.005AE488
005AE239|>8D45 AC       LEA EAX,DWORD PTR SS:
005AE23C|.B9 DCE45A00   MOV ECX,minifc.005AE4DC                  ;my
005AE241|.8B55 FC       MOV EDX,DWORD PTR SS:             ;//用户名
005AE244|.E8 C76FE5FF   CALL minifc.00405210                     ;//将用户名与"my"相连
005AE249|.8B45 AC       MOV EAX,DWORD PTR SS:            ;//用户名与"my"相连的字符串
005AE24C|.8D55 DC       LEA EDX,DWORD PTR SS:
005AE24F|.E8 4CFDFFFF   CALL minifc.005ADFA0                     ;//标准MD5运算
005AE254|.8D45 DC       LEA EAX,DWORD PTR SS:
005AE257|.8D55 F4       LEA EDX,DWORD PTR SS:
005AE25A|.E8 B5FDFFFF   CALL minifc.005AE014                     ;//标准MD5运算值小写输出
005AE25F|.8B45 F8       MOV EAX,DWORD PTR SS:
005AE262|.E8 5D6FE5FF   CALL minifc.004051C4
005AE267|.83F8 04       CMP EAX,4
005AE26A|.0F8C 18020000 JL minifc.005AE488                     ;//试炼码长度小于4则挂
005AE270|.6A 00         PUSH 0
005AE272|.8D45 A8       LEA EAX,DWORD PTR SS:
005AE275|.8B55 F4       MOV EDX,DWORD PTR SS:
005AE278|.8A12          MOV DL,BYTE PTR DS:
005AE27A|.E8 6D6EE5FF   CALL minifc.004050EC
005AE27F|.FF75 A8       PUSH DWORD PTR SS:
005AE282|.8D45 A4       LEA EAX,DWORD PTR SS:
005AE285|.8B55 F4       MOV EDX,DWORD PTR SS:
005AE288|.8A52 01       MOV DL,BYTE PTR DS:
005AE28B|.E8 5C6EE5FF   CALL minifc.004050EC
005AE290|.FF75 A4       PUSH DWORD PTR SS:
005AE293|.8D45 A0       LEA EAX,DWORD PTR SS:
005AE296|.8B55 F4       MOV EDX,DWORD PTR SS:
005AE299|.8A52 02       MOV DL,BYTE PTR DS:
005AE29C|.E8 4B6EE5FF   CALL minifc.004050EC
005AE2A1|.FF75 A0       PUSH DWORD PTR SS:
005AE2A4|.8D45 9C       LEA EAX,DWORD PTR SS:
005AE2A7|.8B55 F4       MOV EDX,DWORD PTR SS:
005AE2AA|.8A52 03       MOV DL,BYTE PTR DS:
005AE2AD|.E8 3A6EE5FF   CALL minifc.004050EC
005AE2B2|.FF75 9C       PUSH DWORD PTR SS:
005AE2B5|.8D45 F0       LEA EAX,DWORD PTR SS:
005AE2B8|.BA 05000000   MOV EDX,5
005AE2BD|.E8 C26FE5FF   CALL minifc.00405284
005AE2C2|.6A 00         PUSH 0
005AE2C4|.8D45 98       LEA EAX,DWORD PTR SS:
005AE2C7|.8B55 F8       MOV EDX,DWORD PTR SS:
005AE2CA|.8A52 04       MOV DL,BYTE PTR DS:
005AE2CD|.E8 1A6EE5FF   CALL minifc.004050EC
005AE2D2|.FF75 98       PUSH DWORD PTR SS:
005AE2D5|.8D45 94       LEA EAX,DWORD PTR SS:
005AE2D8|.8B55 F8       MOV EDX,DWORD PTR SS:
005AE2DB|.8A52 05       MOV DL,BYTE PTR DS:
005AE2DE|.E8 096EE5FF   CALL minifc.004050EC
005AE2E3|.FF75 94       PUSH DWORD PTR SS:
005AE2E6|.8D45 90       LEA EAX,DWORD PTR SS:
005AE2E9|.8B55 F8       MOV EDX,DWORD PTR SS:
005AE2EC|.8A52 06       MOV DL,BYTE PTR DS:
005AE2EF|.E8 F86DE5FF   CALL minifc.004050EC
005AE2F4|.FF75 90       PUSH DWORD PTR SS:
005AE2F7|.8D45 8C       LEA EAX,DWORD PTR SS:
005AE2FA|.8B55 F8       MOV EDX,DWORD PTR SS:
005AE2FD|.8A52 07       MOV DL,BYTE PTR DS:
005AE300|.E8 E76DE5FF   CALL minifc.004050EC
005AE305|.FF75 8C       PUSH DWORD PTR SS:
005AE308|.8D45 EC       LEA EAX,DWORD PTR SS:
005AE30B|.BA 05000000   MOV EDX,5
005AE310|.E8 6F6FE5FF   CALL minifc.00405284
005AE315|.8D55 88       LEA EDX,DWORD PTR SS:
005AE318|.8B45 F0       MOV EAX,DWORD PTR SS:            ;//用户名与"my"相连的字符串MD5值小写1-4位
005AE31B|.E8 90B4E5FF   CALL minifc.004097B0                     ;//将小写转为大写
005AE320|.8B45 88       MOV EAX,DWORD PTR SS:            ;//用户名与"my"相连的字符串MD5值大写1-4位
005AE323|.50            PUSH EAX
005AE324|.8D55 84       LEA EDX,DWORD PTR SS:
005AE327|.8B45 EC       MOV EAX,DWORD PTR SS:            ;//试炼码5-8位
005AE32A|.E8 81B4E5FF   CALL minifc.004097B0                     ;//将小写转为大写
005AE32F|.8B55 84       MOV EDX,DWORD PTR SS:            ;//试炼码大写5-8位
005AE332|.58            POP EAX                                  ;//用户名与"my"相连的字符串MD5值大写1-4位
005AE333|.E8 D86FE5FF   CALL minifc.00405310                     ;//比较CALL
005AE338|.75 04         JNZ SHORT minifc.005AE33E                ;//不同则挂
005AE33A|.B3 01         MOV BL,1
005AE33C|.EB 07         JMP SHORT minifc.005AE345
005AE33E|>33DB          XOR EBX,EBX
005AE340|.E9 43010000   JMP minifc.005AE488
005AE345|>8D45 80       LEA EAX,DWORD PTR SS:
005AE348|.B9 E8E45A00   MOV ECX,minifc.005AE4E8                  ;fc
005AE34D|.8B55 FC       MOV EDX,DWORD PTR SS:             ;//用户名
005AE350|.E8 BB6EE5FF   CALL minifc.00405210                     ;//将用户名与"fc"相连
005AE355|.8B45 80       MOV EAX,DWORD PTR SS:            ;//用户名与"fc"相连的字符串
005AE358|.8D55 DC       LEA EDX,DWORD PTR SS:
005AE35B|.E8 40FCFFFF   CALL minifc.005ADFA0                     ;//标准MD5运算
005AE360|.8D45 DC       LEA EAX,DWORD PTR SS:
005AE363|.8D55 F4       LEA EDX,DWORD PTR SS:
005AE366|.E8 A9FCFFFF   CALL minifc.005AE014                     ;//标准MD5运算值小写输出
005AE36B|.8B45 F8       MOV EAX,DWORD PTR SS:
005AE36E|.E8 516EE5FF   CALL minifc.004051C4
005AE373|.83F8 04       CMP EAX,4
005AE376|.0F8C 0C010000 JL minifc.005AE488                     ;//试炼码长度小于4则挂
005AE37C|.6A 00         PUSH 0
005AE37E|.8D85 7CFFFFFF LEA EAX,DWORD PTR SS:
005AE384|.8B55 F4       MOV EDX,DWORD PTR SS:
005AE387|.8A12          MOV DL,BYTE PTR DS:
005AE389|.E8 5E6DE5FF   CALL minifc.004050EC
005AE38E|.FFB5 7CFFFFFF PUSH DWORD PTR SS:
005AE394|.8D85 78FFFFFF LEA EAX,DWORD PTR SS:
005AE39A|.8B55 F4       MOV EDX,DWORD PTR SS:
005AE39D|.8A52 01       MOV DL,BYTE PTR DS:
005AE3A0|.E8 476DE5FF   CALL minifc.004050EC
005AE3A5|.FFB5 78FFFFFF PUSH DWORD PTR SS:
005AE3AB|.8D85 74FFFFFF LEA EAX,DWORD PTR SS:
005AE3B1|.8B55 F4       MOV EDX,DWORD PTR SS:
005AE3B4|.8A52 02       MOV DL,BYTE PTR DS:
005AE3B7|.E8 306DE5FF   CALL minifc.004050EC
005AE3BC|.FFB5 74FFFFFF PUSH DWORD PTR SS:
005AE3C2|.8D85 70FFFFFF LEA EAX,DWORD PTR SS:
005AE3C8|.8B55 F4       MOV EDX,DWORD PTR SS:
005AE3CB|.8A52 03       MOV DL,BYTE PTR DS:
005AE3CE|.E8 196DE5FF   CALL minifc.004050EC
005AE3D3|.FFB5 70FFFFFF PUSH DWORD PTR SS:
005AE3D9|.8D45 F0       LEA EAX,DWORD PTR SS:
005AE3DC|.BA 05000000   MOV EDX,5
005AE3E1|.E8 9E6EE5FF   CALL minifc.00405284
005AE3E6|.6A 00         PUSH 0
005AE3E8|.8D85 6CFFFFFF LEA EAX,DWORD PTR SS:
005AE3EE|.8B55 F8       MOV EDX,DWORD PTR SS:
005AE3F1|.8A52 08       MOV DL,BYTE PTR DS:
005AE3F4|.E8 F36CE5FF   CALL minifc.004050EC
005AE3F9|.FFB5 6CFFFFFF PUSH DWORD PTR SS:
005AE3FF|.8D85 68FFFFFF LEA EAX,DWORD PTR SS:
005AE405|.8B55 F8       MOV EDX,DWORD PTR SS:
005AE408|.8A52 09       MOV DL,BYTE PTR DS:
005AE40B|.E8 DC6CE5FF   CALL minifc.004050EC
005AE410|.FFB5 68FFFFFF PUSH DWORD PTR SS:
005AE416|.8D85 64FFFFFF LEA EAX,DWORD PTR SS:
005AE41C|.8B55 F8       MOV EDX,DWORD PTR SS:
005AE41F|.8A52 0A       MOV DL,BYTE PTR DS:
005AE422|.E8 C56CE5FF   CALL minifc.004050EC
005AE427|.FFB5 64FFFFFF PUSH DWORD PTR SS:
005AE42D|.8D85 60FFFFFF LEA EAX,DWORD PTR SS:
005AE433|.8B55 F8       MOV EDX,DWORD PTR SS:
005AE436|.8A52 0B       MOV DL,BYTE PTR DS:
005AE439|.E8 AE6CE5FF   CALL minifc.004050EC
005AE43E|.FFB5 60FFFFFF PUSH DWORD PTR SS:
005AE444|.8D45 EC       LEA EAX,DWORD PTR SS:
005AE447|.BA 05000000   MOV EDX,5
005AE44C|.E8 336EE5FF   CALL minifc.00405284
005AE451|.8D95 5CFFFFFF LEA EDX,DWORD PTR SS:
005AE457|.8B45 F0       MOV EAX,DWORD PTR SS:            ;//用户名与"fc"相连的字符串MD5值小写1-4位
005AE45A|.E8 51B3E5FF   CALL minifc.004097B0                     ;//将小写转为大写
005AE45F|.8B85 5CFFFFFF MOV EAX,DWORD PTR SS:            ;//用户名与"fc"相连的字符串MD5值大写1-4位
005AE465|.50            PUSH EAX
005AE466|.8D95 58FFFFFF LEA EDX,DWORD PTR SS:
005AE46C|.8B45 EC       MOV EAX,DWORD PTR SS:            ;//试炼码9-12位
005AE46F|.E8 3CB3E5FF   CALL minifc.004097B0                     ;//将小写转为大写
005AE474|.8B95 58FFFFFF MOV EDX,DWORD PTR SS:            ;//试炼码大写9-12位
005AE47A|.58            POP EAX                                  ;//用户名与"fc"相连的字符串MD5值大写1-4位
005AE47B|.E8 906EE5FF   CALL minifc.00405310                     ;//比较CALL
005AE480|.75 04         JNZ SHORT minifc.005AE486                ;//不同则挂
005AE482|.B3 01         MOV BL,1
005AE484|.EB 02         JMP SHORT minifc.005AE488
005AE486|>33DB          XOR EBX,EBX
005AE488|>33C0          XOR EAX,EAX
005AE48A|.5A            POP EDX
005AE48B|.59            POP ECX
005AE48C|.59            POP ECX
005AE48D|.64:8910       MOV DWORD PTR FS:,EDX
005AE490|.68 BAE45A00   PUSH minifc.005AE4BA
005AE495|>8D85 58FFFFFF LEA EAX,DWORD PTR SS:
005AE49B|.BA 21000000   MOV EDX,21
005AE4A0|.E8 836AE5FF   CALL minifc.00404F28
005AE4A5|.8D45 EC       LEA EAX,DWORD PTR SS:
005AE4A8|.BA 05000000   MOV EDX,5
005AE4AD|.E8 766AE5FF   CALL minifc.00404F28
005AE4B2\.C3            RETN
005AE4B3   .^ E9 A463E5FF   JMP minifc.0040485C
005AE4B8   .^ EB DB         JMP SHORT minifc.005AE495
005AE4BA   .8BC3          MOV EAX,EBX
005AE4BC   .5B            POP EBX
005AE4BD   .8BE5          MOV ESP,EBP
005AE4BF   .5D            POP EBP
005AE4C0   .C3            RETN**************************************************************
【破解总结】
--------------------------------------------------------------
【算法总结】
使用了3次MD5运算,将注册码分成3部分来比较
--------------------------------------------------------------
【算法注册机】
〖易语言代码〗
.版本 2
.支持库 dp1

.子程序 _按钮1_被单击

.如果 (取文本长度 (编辑框1.内容) = 0)
    编辑框2.内容 = “请输入用户名!”
.否则

    编辑框2.内容 = 取文本左边 (取数据摘要 (到字节集 (编辑框1.内容 + “mini”)), 4) + 取文本左边 (取数据摘要 (到字节集 (编
辑框1.内容 + “my”)), 4) + 取文本左边 (取数据摘要 (到字节集 (编辑框1.内容 + “fc”)), 4)
.如果结束
--------------------------------------------------------------
【注册信息】
用户名:tianxj
注册码:72c99e451bbe
保存在

--------------------------------------------------------------
感谢飘云老大、猫老大、Nisy老大以及很多前辈们的学习教程以及王者之剑等所有帮助过我的论坛兄弟姐妹们!谢谢
--------------------------------------------------------------
【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

zapline 发表于 2009-2-4 01:10

算法学习了
T大 你怎么退了这么多群啊?

tianxj 发表于 2009-2-4 09:14

谢谢,Z大关心.:lol 近来很苦恼,所以把所有的Q群给退了

wgz001 发表于 2009-2-4 12:50

膜拜楼主   学习算法
一直没入门 :'(

a2213572 发表于 2009-2-6 23:50

下載研究!
感謝您無私的分享.

dety 发表于 2009-2-7 18:31

精品破文 顶一个 好好学习一下 谢谢共享

zammm 发表于 2009-2-7 23:44

很详细的教程啊!
可惜写不出注册机!

否则我的易语言无法显示

[ 本帖最后由 zammm 于 2009-2-8 01:06 编辑 ]
页: [1]
查看完整版本: Mini Finance Calculator 2.8算法分析