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老大以及很多前辈们的学习教程以及王者之剑等所有帮助过我的论坛兄弟姐妹们!谢谢
--------------------------------------------------------------
【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢! 算法学习了
T大 你怎么退了这么多群啊? 谢谢,Z大关心.:lol 近来很苦恼,所以把所有的Q群给退了 膜拜楼主 学习算法
一直没入门 :'( 下載研究!
感謝您無私的分享. 精品破文 顶一个 好好学习一下 谢谢共享 很详细的教程啊!
可惜写不出注册机!
否则我的易语言无法显示
[ 本帖最后由 zammm 于 2009-2-8 01:06 编辑 ]
页:
[1]