- UID
- 2
注册时间2004-12-1
阅读权限255
最后登录1970-1-1
总坛主
TA的每日心情 | 开心 2024-12-1 11:04 |
---|
签到天数: 12 天 [LV.3]偶尔看看II
|
【破文标题】[PYG]算法分析入门第六课
【破文作者】飘云[PYG]
【作者主页】https://www.chinapyg.com
【破解平台】winxp
【破解工具】PEiD0.93、AspackDie、w32dasm、OD二哥修改版
【作者邮箱】[email protected]
【软件名称】Office小管家 1.0
【软件大小】1500 KB
【原版下载】http://www.uu007.com/Soft_Show.asp?SoftID=5
【软件简介】 收集整 理 Word 和 Excel ,文档交流方便快捷,直接进行可视编辑。
这就是Office小管家,它帮助您收藏Word 和 Excel 。通过下面几个部分的介绍,相信您一定会喜欢上它。:)
Office小管家将帮助您:
1.将你感兴趣的Word 和 Excel收藏到Office小管家中。
2.将您众多杂乱的Word 和 Excel 信息,一起收藏到Office小管家中,按树3状进行分类管理,同时可进行浏览,编辑。形成了自己的信息库之后,再4也不用担心找不到旧有的资料,再也不会有重复的劳动。
3.在Office小管家中可建立一个个的文档,对文档可进行编辑,你的Word 和 Excel文档 都可以存放到里面了。
Office小管家的功能特点:
1.导入方式非常灵活:
仅需在信息库管理中点击批量导入文档,就可以原汁原味的导入进一个或多个文档。
2.文档交流管理非常方便:
你可以使用Office小管家建立一个个xxk 的文件,导入的众多文档的所有属性内容就一起储存在这个文件中,你的同事朋友们也可以使用Office小管家打开这个文件,就可以浏览它里面的所有信息。当然,如果你收集的信息不想让别人看到,可以加上密码保护。
3.树状的分类目录整理:
那么多的文档导入到一个xxk 文件中,肯定需要分类整理。在Office小管家中,你可以建立一层层的目录,可以随意拖动目录或文档,随意进行排序。
Office小管家的特长:
相比其它同类软件,Office小管家有它独有的特性,这些可能正在您最需要的:
1.自定义建立信息库。
2.对文档、目录随意拖动排序。
3. 可以将文档A的某些页面或目录复制到文档B中。
4.简单易用,一看即了。
【分析过程】先用PEiD探测一下:ASPack 2.12 -> Alexey Solodovnikov 用AspackDie解决,当然用手动也很
快的 再查为Borland Delphi 6.0 - 7.0编写,用W32DASM找到以下关键(为了方便,我用OD看的代码):
004CD440 /. 55 push ebp
004CD441 |. 8BEC mov ebp,esp
004CD443 |. B9 09000000 mov ecx,9
004CD448 |> 6A 00 /push 0
004CD44A |. 6A 00 |push 0
004CD44C |. 49 |dec ecx
004CD44D |.^ 75 F9 \jnz short Unpacked.004CD448
004CD44F |. 53 push ebx
004CD450 |. 56 push esi
004CD451 |. 8BD8 mov ebx,eax
004CD453 |. 33C0 xor eax,eax
004CD455 |. 55 push ebp
004CD456 |. 68 35D74C00 push Unpacked.004CD735
004CD45B |. 64:FF30 push dword ptr fs:[eax]
004CD45E |. 64:8920 mov dword ptr fs:[eax],esp
004CD461 |. 8D55 FC lea edx,dword ptr ss:[ebp-4]
004CD464 |. 8B83 14030000 mov eax,dword ptr ds:[ebx+314]
004CD46A |. E8 0D14F8FF call Unpacked.0044E87C
004CD46F |. 837D FC 00 cmp dword ptr ss:[ebp-4],0 ;是否输入了注册码?
004CD473 |. 75 2C jnz short Unpacked.004CD4A1 ;没有就没得玩了~~
004CD475 |. 6A 00 push 0
004CD477 |. 68 48D74C00 push Unpacked.004CD748
004CD47C |. 68 54D74C00 push Unpacked.004CD754
004CD481 |. 8BC3 mov eax,ebx
004CD483 |. E8 E47BF8FF call Unpacked.0045506C
004CD488 |. 50 push eax ; |hOwner
004CD489 |. E8 BEA8F3FF call <jmp.&user32.MessageBoxA> ; \MessageBoxA
004CD48E |. 8B83 14030000 mov eax,dword ptr ds:[ebx+314]
004CD494 |. 8B10 mov edx,dword ptr ds:[eax]
004CD496 |. FF92 C0000000 call dword ptr ds:[edx+C0]
004CD49C |. E9 F6010000 jmp Unpacked.004CD697
004CD4A1 |> 8D55 F4 lea edx,dword ptr ss:[ebp-C]
004CD4A4 |. 8B83 14030000 mov eax,dword ptr ds:[ebx+314]
004CD4AA |. E8 CD13F8FF call Unpacked.0044E87C
004CD4AF |. 8B45 F4 mov eax,dword ptr ss:[ebp-C]
004CD4B2 |. 8D55 F8 lea edx,dword ptr ss:[ebp-8]
004CD4B5 |. E8 7EBFF3FF call Unpacked.00409438
004CD4BA |. 8B45 F8 mov eax,dword ptr ss:[ebp-8]
004CD4BD |. 50 push eax
004CD4BE |. 8D55 EC lea edx,dword ptr ss:[ebp-14]
004CD4C1 |. 8B83 0C030000 mov eax,dword ptr ds:[ebx+30C]
004CD4C7 |. E8 B013F8FF call Unpacked.0044E87C ; 位数
004CD4CC |. 8B45 EC mov eax,dword ptr ss:[ebp-14]
004CD4CF |. 8D55 F0 lea edx,dword ptr ss:[ebp-10]
004CD4D2 |. E8 61BFF3FF call Unpacked.00409438
004CD4D7 |. 8B45 F0 mov eax,dword ptr ss:[ebp-10]
004CD4DA |. 50 push eax
004CD4DB |. 8D55 E4 lea edx,dword ptr ss:[ebp-1C]
004CD4DE |. 8B83 08030000 mov eax,dword ptr ds:[ebx+308]
004CD4E4 |. E8 9313F8FF call Unpacked.0044E87C
004CD4E9 |. 8B45 E4 mov eax,dword ptr ss:[ebp-1C] ; 机器码
004CD4EC |. 8D55 E8 lea edx,dword ptr ss:[ebp-18]
004CD4EF |. E8 44BFF3FF call Unpacked.00409438
004CD4F4 |. 8B45 E8 mov eax,dword ptr ss:[ebp-18] ; 机器码送到eax
004CD4F7 |. 5A pop edx ;
004CD4F8 |. 59 pop ecx ;
004CD4F9 |. E8 F2060000 call Unpacked.004CDBF0 ; 算法call,跟进
004CD4FE |. 3C 01 cmp al,1 ; 返回值是否为1
004CD500 |. 0F85 6A010000 jnz Unpacked.004CD670
004CD506 |. 8D55 DC lea edx,dword ptr ss:[ebp-24]
004CD509 |. 8B83 0C030000 mov eax,dword ptr ds:[ebx+30C]
★★以下是进入算法call:
004CDBF0 /$ 55 push ebp
004CDBF1 |. 8BEC mov ebp,esp
004CDBF3 |. 81C4 1CFFFFFF add esp,-0E4
004CDBF9 |. 53 push ebx
004CDBFA |. 56 push esi ; Unpacked.00474090
004CDBFB |. 33DB xor ebx,ebx
004CDBFD |. 899D 1CFFFFFF mov dword ptr ss:[ebp-E4],ebx
004CDC03 |. 899D 20FFFFFF mov dword ptr ss:[ebp-E0],ebx
004CDC09 |. 894D F4 mov dword ptr ss:[ebp-C],ecx
004CDC0C |. 8955 F8 mov dword ptr ss:[ebp-8],edx
004CDC0F |. 8945 FC mov dword ptr ss:[ebp-4],eax
004CDC12 |. 8B45 FC mov eax,dword ptr ss:[ebp-4]
004CDC15 |. E8 4673F3FF call Unpacked.00404F60
004CDC1A |. 8B45 F8 mov eax,dword ptr ss:[ebp-8]
004CDC1D |. E8 3E73F3FF call Unpacked.00404F60
004CDC22 |. 8B45 F4 mov eax,dword ptr ss:[ebp-C]
004CDC25 |. E8 3673F3FF call Unpacked.00404F60
004CDC2A |. 33C0 xor eax,eax
004CDC2C |. 55 push ebp
004CDC2D |. 68 21DD4C00 push Unpacked.004CDD21
004CDC32 |. 64:FF30 push dword ptr fs:[eax]
004CDC35 |. 64:8920 mov dword ptr fs:[eax],esp
004CDC38 |. C645 F3 00 mov byte ptr ss:[ebp-D],0
004CDC3C |. 33F6 xor esi,esi
004CDC3E |. 8B45 FC mov eax,dword ptr ss:[ebp-4]
004CDC41 |. E8 3271F3FF call Unpacked.00404D78 ; 机器码位数
004CDC46 |. 8BD0 mov edx,eax ; edx中存放机器码位数
004CDC48 |. 85D2 test edx,edx
004CDC4A |. 7E 2A jle short Unpacked.004CDC76
004CDC4C |. B9 01000000 mov ecx,1
004CDC51 |. 8D85 24FFFFFF lea eax,dword ptr ss:[ebp-DC]
004CDC57 |> 8B5D FC /mov ebx,dword ptr ss:[ebp-4]
004CDC5A |. 0FB65C0B FF |movzx ebx,byte ptr ds:[ebx+ecx-1] ; 逐位取机器码ascii
004CDC5F |. 8918 |mov dword ptr ds:[eax],ebx ; 送到[EAX]
004CDC61 |. 6918 39590500 |imul ebx,dword ptr ds:[eax],55939 ; *55939
004CDC67 |. 03F3 |add esi,ebx ; esi=esi+ebx
004CDC69 |. 81C6 46743305 |add esi,5337446 ; esi=esi+5337446(esi做为累加器)
004CDC6F |. 41 |inc ecx ; ecx=ecx+1
004CDC70 |. 83C0 04 |add eax,4
004CDC73 |. 4A |dec edx ; edx=edx-1
004CDC74 |.^ 75 E1 \jnz short Unpacked.004CDC57 ; 循环
004CDC76 |> 33C0 xor eax,eax
004CDC78 |. 8945 EC mov dword ptr ss:[ebp-14],eax
004CDC7B |. 8B45 FC mov eax,dword ptr ss:[ebp-4] ; 机器码送到eax
004CDC7E |. E8 F570F3FF call Unpacked.00404D78 ; 计算机器码位数
004CDC83 |. 8BD0 mov edx,eax ; edx中保存位数
004CDC85 |. 85D2 test edx,edx
004CDC87 |. 7E 2E jle short Unpacked.004CDCB7
004CDC89 |. B9 01000000 mov ecx,1
004CDC8E |. 8D85 24FFFFFF lea eax,dword ptr ss:[ebp-DC]
004CDC94 |> 8B5D FC /mov ebx,dword ptr ss:[ebp-4]
004CDC97 |. 0FB65C0B FF |movzx ebx,byte ptr ds:[ebx+ecx-1] ; 逐位取机器码ascii
004CDC9C |. 8918 |mov dword ptr ds:[eax],ebx ; 送到[EAX]
004CDC9E |. 6918 49860C00 |imul ebx,dword ptr ds:[eax],0C8649 ; *0C8649
004CDCA4 |. 035D EC |add ebx,dword ptr ss:[ebp-14] ; [EBP-14]初始值为0
004CDCA7 |. 81C3 46743305 |add ebx,5337446 ; ebx=ebx+5337446
004CDCAD |. 895D EC |mov dword ptr ss:[ebp-14],ebx ; 结果放到[EBP-14](累加)
004CDCB0 |. 41 |inc ecx ; ecx=ecx+1
004CDCB1 |. 83C0 04 |add eax,4
004CDCB4 |. 4A |dec edx ; edx=edx-1
004CDCB5 |.^ 75 DD \jnz short Unpacked.004CDC94 ; 循环
004CDCB7 |> 8D95 20FFFFFF lea edx,dword ptr ss:[ebp-E0]
004CDCBD |. 8BC6 mov eax,esi ; esi中累加的值送到eax
004CDCBF |. E8 B4BBF3FF call Unpacked.00409878 ; 转换成10进制
004CDCC4 |. 8B95 20FFFFFF mov edx,dword ptr ss:[ebp-E0] ; 真码第一组
004CDCCA |. 8B45 F8 mov eax,dword ptr ss:[ebp-8] ; 假码第一组
004CDCCD |. E8 EA71F3FF call Unpacked.00404EBC ; 比较
004CDCD2 75 22 jnz short Unpacked.004CDCF6 ; 不等则跳(爆破点1)
004CDCD4 |. 8D95 1CFFFFFF lea edx,dword ptr ss:[ebp-E4]
004CDCDA |. 8B45 EC mov eax,dword ptr ss:[ebp-14] ; [EBP-14]累加的值送到eax
004CDCDD |> E8 96BBF3FF call Unpacked.00409878 ; 转换成10进制
004CDCE2 |. 8B95 1CFFFFFF mov edx,dword ptr ss:[ebp-E4] ; 真码第二组
004CDCE8 |. 8B45 F4 mov eax,dword ptr ss:[ebp-C] ; 假码第二组
004CDCEB |. E8 CC71F3FF call Unpacked.00404EBC
004CDCF0 |. 75 04 jnz short Unpacked.004CDCF6 ; 跳了就OVER(爆破点2)
004CDCF2 |. C645 F3 01 mov byte ptr ss:[ebp-D],1 ; 1送到 [ebp-D]
004CDCF6 |> 33C0 xor eax,eax
004CDCF8 |. 5A pop edx
004CDCF9 |. 59 pop ecx
004CDCFA |. 59 pop ecx
004CDCFB |. 64:8910 mov dword ptr fs:[eax],edx
004CDCFE |. 68 28DD4C00 push Unpacked.004CDD28
004CDD03 |> 8D85 1CFFFFFF lea eax,dword ptr ss:[ebp-E4]
004CDD09 |. BA 02000000 mov edx,2
004CDD0E |. E8 D16DF3FF call Unpacked.00404AE4
004CDD13 |. 8D45 F4 lea eax,dword ptr ss:[ebp-C]
004CDD16 |. BA 03000000 mov edx,3
004CDD1B |. E8 C46DF3FF call Unpacked.00404AE4
004CDD20 \. C3 retn
004CDD21 .^ E9 0267F3FF jmp Unpacked.00404428
004CDD26 .^ EB DB jmp short Unpacked.004CDD03
004CDD28 . 8A45 F3 mov al,byte ptr ss:[ebp-D] ; al=1
004CDD2B . 5E pop esi
004CDD2C . 5B pop ebx
004CDD2D . 8BE5 mov esp,ebp
004CDD2F . 5D pop ebp
004CDD30 . C3 retn
【算法总结】
把机器码通过一番循环运算,得出两个字符串,即为注册码
计算过程,就让程序来完成吧!
注册机VB代码如下:
Private Sub Command1_Click()
Dim code As String
Dim reg1 As Long
Dim reg2 As Long
code = Text1.Text
X1 = &H55939
Y1 = &H5337446
X2 = &HC8649
Y2 = &H5337446
a = "-"
reg1 = 0
reg2 = 0
If Text1.Text <> "" Then
For i = 1 To Len(code)
reg1 = reg1 + Asc(Mid(code, i, 1)) * X1
reg1 = reg1 + Y1
Next i
For i = 1 To Len(code)
reg2 = reg2 + Asc(Mid(code, i, 1)) * X2
reg2 = reg2 + Y2
Next i
Text2.Text = reg1 & a & reg2
End If
End Sub
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢! |
|