信息小管家算法分析+Delphi注册机
【破解作者】 小子贼野【作者主页】 http://mayday.unpack.cn/
【使用工具】 OD
【破解平台】 Win9x/NT/2000/XP
【软件名称】 信息小管家
【下载地址】 http://www.onlinedown.net/soft/41319.htm
【软件简介】 信息小管家是一款集理财,资料记载,通讯录,客户记载的四合一信息管理软件.
不求功能最强大,但求最好用、实用。三九科技,品质生活。
1 个人理财:适合个人、家庭或企业理财,操作简单,且功能强大,是专为个人及家庭设置的理财软件。
收入支出中支持多种类型,且可以自由设置,方便您对各类费用分类汇总统计。
多种统计方式,使您对各种收入、支出更加明朗。
2 资料记载:一款极富个性,并且功能强大的工具,具有资料,信息,文件的分类,记录,查询的管理功能.
俗话说说好记性不如烂笔头!勤记载,到时候用到就可以及时查找。
3 通 讯 录:自定义无限级分类功能,强大的关键字查找功能,能在短时间查找到您要的联系人!
4 客户记载:简单实用的客户资料管理功能!
【加壳方式】 ASPack 2.12 -> Alexey Solodovnikov
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------
那个MM说密码有东西管理了,其他的东西呢?总不能都用一个记事本来记录吧?唉,都是MM惹的祸
-------------------------------------------------------------------------------
既然人家开口了,我也没有办法拒绝,下面就是我的分析过程了:
--------------------------------------------------------------------------------
找关键字符串:
超级字串参考, 项目 546
地址=004E0C31
反汇编=PUSH UnPacK.004E0DD4
文本字串=注册码错误!请重新输入!
找到为:
--------------------------------------------------------------------------------
004E09F9|.55 PUSH EBP ;在此下断
004E09FA|.68 EF0C4E00 PUSH UnPacK.004E0CEF
004E09FF|.64:FF30 PUSH DWORD PTR FS:
004E0A02|.64:8920 MOV DWORD PTR FS:,ESP
004E0A05|.8D55 FC LEA EDX,DWORD PTR SS:
004E0A08|.8B83 14030000 MOV EAX,DWORD PTR DS:
004E0A0E|.E8 F9E5F6FF CALL UnPacK.0044F00C
004E0A13|.837D FC 00 CMP DWORD PTR SS:,0
004E0A17|.75 2C JNZ SHORT UnPacK.004E0A45 ;比较有没有填东西,不填就Game Over
004E0A19|.6A 00 PUSH 0
004E0A1B|.68 000D4E00 PUSH UnPacK.004E0D00
004E0A20|.68 0C0D4E00 PUSH UnPacK.004E0D0C
004E0A25|.8BC3 MOV EAX,EBX
004E0A27|.E8 D04DF7FF CALL UnPacK.004557FC
004E0A2C|.50 PUSH EAX ; |hOwner
004E0A2D|.E8 BA74F2FF CALL <JMP.&user32.MessageBoxA> ; \MessageBoxA
004E0A32|.8B83 14030000 MOV EAX,DWORD PTR DS:
004E0A38|.8B10 MOV EDX,DWORD PTR DS:
004E0A3A|.FF92 C0000000 CALL DWORD PTR DS:
004E0A40|.E9 0C020000 JMP UnPacK.004E0C51
004E0A45|>8D55 F4 LEA EDX,DWORD PTR SS:
004E0A48|.8B83 14030000 MOV EAX,DWORD PTR DS:
004E0A4E|.E8 B9E5F6FF CALL UnPacK.0044F00C
004E0A53|.8B45 F4 MOV EAX,DWORD PTR SS:
004E0A56|.8D55 F8 LEA EDX,DWORD PTR SS:
004E0A59|.E8 928BF2FF CALL UnPacK.004095F0
004E0A5E|.8B45 F8 MOV EAX,DWORD PTR SS:
004E0A61|.50 PUSH EAX
004E0A62|.8D55 EC LEA EDX,DWORD PTR SS:
004E0A65|.8B83 0C030000 MOV EAX,DWORD PTR DS:
004E0A6B|.E8 9CE5F6FF CALL UnPacK.0044F00C
004E0A70|.8B45 EC MOV EAX,DWORD PTR SS:
004E0A73|.8D55 F0 LEA EDX,DWORD PTR SS:
004E0A76|.E8 758BF2FF CALL UnPacK.004095F0
004E0A7B|.8B45 F0 MOV EAX,DWORD PTR SS:
004E0A7E|.50 PUSH EAX
004E0A7F|.8D55 E4 LEA EDX,DWORD PTR SS:
004E0A82|.8B83 08030000 MOV EAX,DWORD PTR DS:
004E0A88|.E8 7FE5F6FF CALL UnPacK.0044F00C
004E0A8D|.8B45 E4 MOV EAX,DWORD PTR SS:
004E0A90|.8D55 E8 LEA EDX,DWORD PTR SS:
004E0A93|.E8 588BF2FF CALL UnPacK.004095F0
004E0A98|.8B45 E8 MOV EAX,DWORD PTR SS:
004E0A9B|.5A POP EDX
004E0A9C|.59 POP ECX
004E0A9D|.E8 0A070000 CALL UnPacK.004E11AC ;算法call
004E0AA2|.3C 01 CMP AL,1 ;标志位比较
004E0AA4|.0F85 80010000 JNZ UnPacK.004E0C2A
004E0AAA|.8D55 DC LEA EDX,DWORD PTR SS:
004E0AAD|.8B83 0C030000 MOV EAX,DWORD PTR DS:
004E0AB3|.E8 54E5F6FF CALL UnPacK.0044F00C
004E0AB8|.8B45 DC MOV EAX,DWORD PTR SS:
004E0ABB|.8D55 E0 LEA EDX,DWORD PTR SS:
004E0ABE|.E8 2D8BF2FF CALL UnPacK.004095F0
004E0AC3|.8B55 E0 MOV EDX,DWORD PTR SS:
004E0AC6|.A1 A0665700 MOV EAX,DWORD PTR DS:
004E0ACB|.8B00 MOV EAX,DWORD PTR DS:
004E0ACD|.83C0 0C ADD EAX,0C
004E0AD0|.E8 DB40F2FF CALL UnPacK.00404BB0
004E0AD5|.8D55 D4 LEA EDX,DWORD PTR SS:
004E0AD8|.8B83 14030000 MOV EAX,DWORD PTR DS:
004E0ADE|.E8 29E5F6FF CALL UnPacK.0044F00C
004E0AE3|.8B45 D4 MOV EAX,DWORD PTR SS:
004E0AE6|.8D55 D8 LEA EDX,DWORD PTR SS:
004E0AE9|.E8 028BF2FF CALL UnPacK.004095F0
004E0AEE|.8B55 D8 MOV EDX,DWORD PTR SS:
004E0AF1|.A1 A0665700 MOV EAX,DWORD PTR DS:
004E0AF6|.8B00 MOV EAX,DWORD PTR DS:
004E0AF8|.83C0 10 ADD EAX,10
004E0AFB|.E8 B040F2FF CALL UnPacK.00404BB0
004E0B00|.A1 A0665700 MOV EAX,DWORD PTR DS:
004E0B05|.8B00 MOV EAX,DWORD PTR DS:
004E0B07|.33D2 XOR EDX,EDX
004E0B09|.8950 14 MOV DWORD PTR DS:,EDX
004E0B0C|.6A 00 PUSH 0
004E0B0E|.68 240D4E00 PUSH UnPacK.004E0D24
004E0B13|.68 2C0D4E00 PUSH UnPacK.004E0D2C
004E0B18|.8BC3 MOV EAX,EBX
004E0B1A|.E8 DD4CF7FF CALL UnPacK.004557FC
004E0B1F|.50 PUSH EAX ; |hOwner
004E0B20|.E8 C773F2FF CALL <JMP.&user32.MessageBoxA> ; \MessageBoxA
004E0B25|.8D55 CC LEA EDX,DWORD PTR SS:
004E0B28|.8B83 08030000 MOV EAX,DWORD PTR DS:
004E0B2E|.E8 D9E4F6FF CALL UnPacK.0044F00C
004E0B33|.8B45 CC MOV EAX,DWORD PTR SS:
004E0B36|.8D55 D0 LEA EDX,DWORD PTR SS:
004E0B39|.E8 B28AF2FF CALL UnPacK.004095F0
004E0B3E|.8B45 D0 MOV EAX,DWORD PTR SS:
004E0B41|.50 PUSH EAX
004E0B42|.A1 70675700 MOV EAX,DWORD PTR DS:
004E0B47|.8B00 MOV EAX,DWORD PTR DS:
004E0B49|.B9 5C0D4E00 MOV ECX,UnPacK.004E0D5C ;ASCII "SerialNO"
004E0B4E|.BA 700D4E00 MOV EDX,UnPacK.004E0D70 ;ASCII "Reg"
004E0B53|.8B30 MOV ESI,DWORD PTR DS:
004E0B55|.FF56 04 CALL DWORD PTR DS:
004E0B58|.8D55 C4 LEA EDX,DWORD PTR SS:
004E0B5B|.8B83 0C030000 MOV EAX,DWORD PTR DS:
004E0B61|.E8 A6E4F6FF CALL UnPacK.0044F00C
004E0B66|.8B45 C4 MOV EAX,DWORD PTR SS:
004E0B69|.8D55 C8 LEA EDX,DWORD PTR SS:
004E0B6C|.E8 7F8AF2FF CALL UnPacK.004095F0
004E0B71|.8B45 C8 MOV EAX,DWORD PTR SS:
004E0B74|.50 PUSH EAX
004E0B75|.A1 70675700 MOV EAX,DWORD PTR DS:
004E0B7A|.8B00 MOV EAX,DWORD PTR DS:
004E0B7C|.B9 7C0D4E00 MOV ECX,UnPacK.004E0D7C ;ASCII "RegNOFir"
004E0B81|.BA 700D4E00 MOV EDX,UnPacK.004E0D70 ;ASCII "Reg"
004E0B86|.8B30 MOV ESI,DWORD PTR DS:
004E0B88|.FF56 04 CALL DWORD PTR DS:
004E0B8B|.8D55 BC LEA EDX,DWORD PTR SS:
004E0B8E|.8B83 14030000 MOV EAX,DWORD PTR DS:
004E0B94|.E8 73E4F6FF CALL UnPacK.0044F00C
004E0B99|.8B45 BC MOV EAX,DWORD PTR SS:
004E0B9C|.8D55 C0 LEA EDX,DWORD PTR SS:
004E0B9F|.E8 4C8AF2FF CALL UnPacK.004095F0
004E0BA4|.8B45 C0 MOV EAX,DWORD PTR SS:
004E0BA7|.50 PUSH EAX
004E0BA8|.A1 70675700 MOV EAX,DWORD PTR DS:
004E0BAD|.8B00 MOV EAX,DWORD PTR DS:
004E0BAF|.B9 900D4E00 MOV ECX,UnPacK.004E0D90 ;regnosec
004E0BB4|.BA 700D4E00 MOV EDX,UnPacK.004E0D70 ;reg
004E0BB9|.8B30 MOV ESI,DWORD PTR DS:
004E0BBB|.FF56 04 CALL DWORD PTR DS:
004E0BBE|.6A 00 PUSH 0
004E0BC0|.8B15 F8685700 MOV EDX,DWORD PTR DS: ;UnPacK.00579694
004E0BC6|.8B12 MOV EDX,DWORD PTR DS:
004E0BC8|.8D45 B8 LEA EAX,DWORD PTR SS:
004E0BCB|.B9 A40D4E00 MOV ECX,UnPacK.004E0DA4 ;infodb\xxklist.edo
004E0BD0|.E8 8B42F2FF CALL UnPacK.00404E60
004E0BD5|.8B55 B8 MOV EDX,DWORD PTR SS:
004E0BD8|.A1 EC6C5700 MOV EAX,DWORD PTR DS:
004E0BDD|.8B00 MOV EAX,DWORD PTR DS:
004E0BDF|.B9 10270000 MOV ECX,2710
004E0BE4|.E8 079CFCFF CALL UnPacK.004AA7F0
004E0BE9|.A1 586D5700 MOV EAX,DWORD PTR DS:
004E0BEE|.8338 00 CMP DWORD PTR DS:,0
004E0BF1|.74 0C JE SHORT UnPacK.004E0BFF
004E0BF3|.A1 586D5700 MOV EAX,DWORD PTR DS:
004E0BF8|.8B00 MOV EAX,DWORD PTR DS:
004E0BFA|.E8 75BAF8FF CALL UnPacK.0046C674
004E0BFF|>A1 FC6A5700 MOV EAX,DWORD PTR DS:
004E0C04|.8B00 MOV EAX,DWORD PTR DS:
004E0C06|.E8 01F2F8FF CALL UnPacK.0046FE0C
004E0C0B|.6A 01 PUSH 1
004E0C0D|.6A 00 PUSH 0
004E0C0F|.6A 00 PUSH 0
004E0C11|.68 B80D4E00 PUSH UnPacK.004E0DB8 ;endo.exe
004E0C16|.68 C40D4E00 PUSH UnPacK.004E0DC4 ;open
004E0C1B|.8BC3 MOV EAX,EBX
004E0C1D|.E8 DA4BF7FF CALL UnPacK.004557FC
004E0C22|.50 PUSH EAX ; |hWnd
004E0C23|.E8 68BAF5FF CALL <JMP.&shell32.ShellExecuteA> ; \ShellExecuteA
004E0C28|.EB 27 JMP SHORT UnPacK.004E0C51
004E0C2A|>6A 00 PUSH 0
004E0C2C|.68 CC0D4E00 PUSH UnPacK.004E0DCC ;警告
004E0C31|.68 D40D4E00 PUSH UnPacK.004E0DD4 ;注册码错误!请重新输入!
004E0C36|.8BC3 MOV EAX,EBX
--------------------------------------------------------------------------------
004E11AC/$55 PUSH EBP ;跟进算法call到此
004E11AD|.8BEC MOV EBP,ESP
004E11AF|.81C4 1CFFFFFF ADD ESP,-0E4
004E11B5|.53 PUSH EBX
004E11B6|.56 PUSH ESI
004E11B7|.33DB XOR EBX,EBX
004E11B9|.899D 1CFFFFFF MOV DWORD PTR SS:,EBX
004E11BF|.899D 20FFFFFF MOV DWORD PTR SS:,EBX
004E11C5|.894D F4 MOV DWORD PTR SS:,ECX ;第三个框的内容
004E11C8|.8955 F8 MOV DWORD PTR SS:,EDX ;第二个框的内容
004E11CB|.8945 FC MOV DWORD PTR SS:,EAX ;机器码
004E11CE|.8B45 FC MOV EAX,DWORD PTR SS: ;机器码
004E11D1|.E8 263EF2FF CALL UnPacK.00404FFC
004E11D6|.8B45 F8 MOV EAX,DWORD PTR SS:
004E11D9|.E8 1E3EF2FF CALL UnPacK.00404FFC
004E11DE|.8B45 F4 MOV EAX,DWORD PTR SS:
004E11E1|.E8 163EF2FF CALL UnPacK.00404FFC
004E11E6|.33C0 XOR EAX,EAX ;EAX清零
004E11E8|.55 PUSH EBP
004E11E9|.68 DD124E00 PUSH UnPacK.004E12DD
004E11EE|.64:FF30 PUSH DWORD PTR FS:
004E11F1|.64:8920 MOV DWORD PTR FS:,ESP
004E11F4|.C645 F3 00 MOV BYTE PTR SS:,0
004E11F8|.33F6 XOR ESI,ESI
004E11FA|.8B45 FC MOV EAX,DWORD PTR SS:
004E11FD|.E8 123CF2FF CALL UnPacK.00404E14
004E1202|.8BD0 MOV EDX,EAX
004E1204|.85D2 TEST EDX,EDX
004E1206|.7E 2A JLE SHORT UnPacK.004E1232
004E1208|.B9 01000000 MOV ECX,1
004E120D|.8D85 24FFFFFF LEA EAX,DWORD PTR SS:
004E1213|>8B5D FC /MOV EBX,DWORD PTR SS:
004E1216|.0FB65C0B FF |MOVZX EBX,BYTE PTR DS:
004E121B|.8918 |MOV DWORD PTR DS:,EBX
004E121D|.6918 39590500 |IMUL EBX,DWORD PTR DS:,55939 ;机器码的Ascii乘以55939
004E1223|.03F3 |ADD ESI,EBX
004E1225|.81C6 5BE40600 |ADD ESI,6E45B ;再加上6E45B
004E122B|.41 |INC ECX
004E122C|.83C0 04 |ADD EAX,4
004E122F|.4A |DEC EDX
004E1230|.^ 75 E1 \JNZ SHORT UnPacK.004E1213 ;通过循环来计算,为第一个框的内容
004E1232|>33C0 XOR EAX,EAX ;EAX=0
004E1234|.8945 EC MOV DWORD PTR SS:,EAX
004E1237|.8B45 FC MOV EAX,DWORD PTR SS:
004E123A|.E8 D53BF2FF CALL UnPacK.00404E14
004E123F|.8BD0 MOV EDX,EAX
004E1241|.85D2 TEST EDX,EDX
004E1243|.7E 2E JLE SHORT UnPacK.004E1273
004E1245|.B9 01000000 MOV ECX,1
004E124A|.8D85 24FFFFFF LEA EAX,DWORD PTR SS:
004E1250|>8B5D FC /MOV EBX,DWORD PTR SS:
004E1253|.0FB65C0B FF |MOVZX EBX,BYTE PTR DS:
004E1258|.8918 |MOV DWORD PTR DS:,EBX
004E125A|.6918 49860C00 |IMUL EBX,DWORD PTR DS:,0C8649 ;机器码的Ascii乘以C8649
004E1260|.035D EC |ADD EBX,DWORD PTR SS:
004E1263|.81C3 5BE40600 |ADD EBX,6E45B ;再加上6E45B
004E1269|.895D EC |MOV DWORD PTR SS:,EBX
004E126C|.41 |INC ECX
004E126D|.83C0 04 |ADD EAX,4
004E1270|.4A |DEC EDX
004E1271|.^ 75 DD \JNZ SHORT UnPacK.004E1250 ;通过循环来计算,为第二个框的内容
004E1273|>8D95 20FFFFFF LEA EDX,DWORD PTR SS:
004E1279|.8BC6 MOV EAX,ESI
004E127B|.E8 B087F2FF CALL UnPacK.00409A30
004E1280|.8B95 20FFFFFF MOV EDX,DWORD PTR SS: ;应该是第一个框的内容
004E1286|.8B45 F8 MOV EAX,DWORD PTR SS: ;我在第一个框输入的内容
004E1289|.E8 CA3CF2FF CALL UnPacK.00404F58 ;比较
004E128E|.75 22 JNZ SHORT UnPacK.004E12B2 ;不等就Game Over
004E1290|.8D95 1CFFFFFF LEA EDX,DWORD PTR SS:
004E1296|.8B45 EC MOV EAX,DWORD PTR SS:
004E1299|.E8 9287F2FF CALL UnPacK.00409A30
004E129E|.8B95 1CFFFFFF MOV EDX,DWORD PTR SS:
004E12A4|.8B45 F4 MOV EAX,DWORD PTR SS:
004E12A7|.E8 AC3CF2FF CALL UnPacK.00404F58
004E12AC|.75 04 JNZ SHORT UnPacK.004E12B2
004E12AE|.C645 F3 01 MOV BYTE PTR SS:,1
004E12B2|>33C0 XOR EAX,EAX
004E12B4|.5A POP EDX
004E12B5|.59 POP ECX
004E12B6|.59 POP ECX
004E12B7|.64:8910 MOV DWORD PTR FS:,EDX
004E12BA|.68 E4124E00 PUSH UnPacK.004E12E4
004E12BF|>8D85 1CFFFFFF LEA EAX,DWORD PTR SS:
004E12C5|.BA 02000000 MOV EDX,2
004E12CA|.E8 B138F2FF CALL UnPacK.00404B80
004E12CF|.8D45 F4 LEA EAX,DWORD PTR SS:
004E12D2|.BA 03000000 MOV EDX,3
004E12D7|.E8 A438F2FF CALL UnPacK.00404B80
004E12DC\.C3 RETN
--------------------------------------------------------------------------------
【算法总结】
第一个注册框:取机器码的ASCII乘0X55939,放到ESI,ESI+0X6E45B,然后循环机器码的长度
第二个注册框:取机器码的ASCII乘0XC8649,放到EBX,EBX+0X6E45B,然后循环机器码的长度
--------------------------------------------------------------------------------
【Delphi算法注册机源码】
procedure TForm1.Button1Click(Sender: TObject);
var
a:string;
b,c,i:integer;
begin
b:=0;
c:=0;
a:=edit1.Text;
for i:=1 to length(a) do
b:=b+ord(a)*$55939+$6E45B;
for i:=1 to length(a) do
c:=c+ord(a)*$C8649+$6E45B;
edit2.text:=inttostr(b);
edit3.Text:=inttostr(c);
end;
[ 本帖最后由 小子贼野 于 2007-8-11 16:53 编辑 ] /:001 /:001 /:001
支持一下!
不错!~`````````` 继续努力,有进步~~ 支持一下,学习了 又一精华 支持顶楼
[ 本帖最后由 啊CR 于 2007-8-11 17:04 编辑 ] 分析不错,支持! 高手,崇拜,学习,算法我晕,不过这应该是很早的了吧!呵,望小子能把最新版的算法分析出来,
大概是PB的,呵呵,:loveliness:,发个图上来,望小子能把最新版的算法分析出来!
[ 本帖最后由 yingfeng 于 2007-8-11 18:42 编辑 ] 小子不错,支持下,希望有更大的发展 http://www.onlinedown.net/soft/41319.htm
信息小管家版本虽然是4.2的,但好像小子跟我的不一样,呵呵,我的是无壳
PB语言的,算法也就不一样的,搞不定PB算法,也许是作者更新了,呵呵/:017 支持,请再继续!/:good
页:
[1]
2