小子贼野 发表于 2007-8-11 16:39:11

信息小管家算法分析+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 编辑 ]

壹只老虎 发表于 2007-8-11 16:40:13

/:001 /:001 /:001
支持一下!
不错!~``````````

Nisy 发表于 2007-8-11 16:55:45

继续努力,有进步~~

laccer 发表于 2007-8-11 16:58:08

支持一下,学习了

啊CR 发表于 2007-8-11 17:01:44

又一精华 支持顶楼

[ 本帖最后由 啊CR 于 2007-8-11 17:04 编辑 ]

水中花 发表于 2007-8-11 17:18:21

分析不错,支持!

yingfeng 发表于 2007-8-11 18:02:56

高手,崇拜,学习,算法我晕,不过这应该是很早的了吧!呵,望小子能把最新版的算法分析出来,


大概是PB的,呵呵,:loveliness:,发个图上来,望小子能把最新版的算法分析出来!

[ 本帖最后由 yingfeng 于 2007-8-11 18:42 编辑 ]

yosen2001 发表于 2007-8-11 18:31:38

小子不错,支持下,希望有更大的发展

yingfeng 发表于 2007-8-11 18:51:27

http://www.onlinedown.net/soft/41319.htm
信息小管家版本虽然是4.2的,但好像小子跟我的不一样,呵呵,我的是无壳
PB语言的,算法也就不一样的,搞不定PB算法,也许是作者更新了,呵呵/:017

小小子 发表于 2007-8-21 21:15:21

支持,请再继续!/:good
页: [1] 2
查看完整版本: 信息小管家算法分析+Delphi注册机