[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:
004CD45E |.64:8920 mov dword ptr fs:,esp
004CD461 |.8D55 FC lea edx,dword ptr ss:
004CD464 |.8B83 14030000 mov eax,dword ptr ds:
004CD46A |.E8 0D14F8FF call Unpacked.0044E87C
004CD46F |.837D FC 00 cmp dword ptr ss:,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:
004CD494 |.8B10 mov edx,dword ptr ds:
004CD496 |.FF92 C0000000 call dword ptr ds:
004CD49C |.E9 F6010000 jmp Unpacked.004CD697
004CD4A1 |>8D55 F4 lea edx,dword ptr ss:
004CD4A4 |.8B83 14030000 mov eax,dword ptr ds:
004CD4AA |.E8 CD13F8FF call Unpacked.0044E87C
004CD4AF |.8B45 F4 mov eax,dword ptr ss:
004CD4B2 |.8D55 F8 lea edx,dword ptr ss:
004CD4B5 |.E8 7EBFF3FF call Unpacked.00409438
004CD4BA |.8B45 F8 mov eax,dword ptr ss:
004CD4BD |.50 push eax
004CD4BE |.8D55 EC lea edx,dword ptr ss:
004CD4C1 |.8B83 0C030000 mov eax,dword ptr ds:
004CD4C7 |.E8 B013F8FF call Unpacked.0044E87C ;位数
004CD4CC |.8B45 EC mov eax,dword ptr ss:
004CD4CF |.8D55 F0 lea edx,dword ptr ss:
004CD4D2 |.E8 61BFF3FF call Unpacked.00409438
004CD4D7 |.8B45 F0 mov eax,dword ptr ss:
004CD4DA |.50 push eax
004CD4DB |.8D55 E4 lea edx,dword ptr ss:
004CD4DE |.8B83 08030000 mov eax,dword ptr ds:
004CD4E4 |.E8 9313F8FF call Unpacked.0044E87C
004CD4E9 |.8B45 E4 mov eax,dword ptr ss: ;机器码
004CD4EC |.8D55 E8 lea edx,dword ptr ss:
004CD4EF |.E8 44BFF3FF call Unpacked.00409438
004CD4F4 |.8B45 E8 mov eax,dword ptr ss: ;机器码送到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:
004CD509 |.8B83 0C030000 mov eax,dword ptr ds:
★★以下是进入算法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:,ebx
004CDC03 |.899D 20FFFFFF mov dword ptr ss:,ebx
004CDC09 |.894D F4 mov dword ptr ss:,ecx
004CDC0C |.8955 F8 mov dword ptr ss:,edx
004CDC0F |.8945 FC mov dword ptr ss:,eax
004CDC12 |.8B45 FC mov eax,dword ptr ss:
004CDC15 |.E8 4673F3FF call Unpacked.00404F60
004CDC1A |.8B45 F8 mov eax,dword ptr ss:
004CDC1D |.E8 3E73F3FF call Unpacked.00404F60
004CDC22 |.8B45 F4 mov eax,dword ptr ss:
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:
004CDC35 |.64:8920 mov dword ptr fs:,esp
004CDC38 |.C645 F3 00 mov byte ptr ss:,0
004CDC3C |.33F6 xor esi,esi
004CDC3E |.8B45 FC mov eax,dword ptr ss:
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:
004CDC57 |>8B5D FC /mov ebx,dword ptr ss:
004CDC5A |.0FB65C0B FF |movzx ebx,byte ptr ds: ;逐位取机器码ascii
004CDC5F |.8918 |mov dword ptr ds:,ebx ;送到
004CDC61 |.6918 39590500 |imul ebx,dword ptr ds:,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:,eax
004CDC7B |.8B45 FC mov eax,dword ptr ss: ;机器码送到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:
004CDC94 |>8B5D FC /mov ebx,dword ptr ss:
004CDC97 |.0FB65C0B FF |movzx ebx,byte ptr ds: ;逐位取机器码ascii
004CDC9C |.8918 |mov dword ptr ds:,ebx ;送到
004CDC9E |.6918 49860C00 |imul ebx,dword ptr ds:,0C8649;*0C8649
004CDCA4 |.035D EC |add ebx,dword ptr ss: ;初始值为0
004CDCA7 |.81C3 46743305 |add ebx,5337446 ;ebx=ebx+5337446
004CDCAD |.895D EC |mov dword ptr ss:,ebx ;结果放到(累加)
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:
004CDCBD |.8BC6 mov eax,esi ;esi中累加的值送到eax
004CDCBF |.E8 B4BBF3FF call Unpacked.00409878 ;转换成10进制
004CDCC4 |.8B95 20FFFFFF mov edx,dword ptr ss: ;真码第一组
004CDCCA |.8B45 F8 mov eax,dword ptr ss: ;假码第一组
004CDCCD |.E8 EA71F3FF call Unpacked.00404EBC ;比较
004CDCD2 75 22 jnz short Unpacked.004CDCF6 ;不等则跳(爆破点1)
004CDCD4 |.8D95 1CFFFFFF lea edx,dword ptr ss:
004CDCDA |.8B45 EC mov eax,dword ptr ss: ;累加的值送到eax
004CDCDD |>E8 96BBF3FF call Unpacked.00409878 ;转换成10进制
004CDCE2 |.8B95 1CFFFFFF mov edx,dword ptr ss: ;真码第二组
004CDCE8 |.8B45 F4 mov eax,dword ptr ss: ;假码第二组
004CDCEB |.E8 CC71F3FF call Unpacked.00404EBC
004CDCF0 |.75 04 jnz short Unpacked.004CDCF6 ;跳了就OVER(爆破点2)
004CDCF2 |.C645 F3 01 mov byte ptr ss:,1 ;1送到
004CDCF6 |>33C0 xor eax,eax
004CDCF8 |.5A pop edx
004CDCF9 |.59 pop ecx
004CDCFA |.59 pop ecx
004CDCFB |.64:8910 mov dword ptr fs:,edx
004CDCFE |.68 28DD4C00 push Unpacked.004CDD28
004CDD03 |>8D85 1CFFFFFF lea eax,dword ptr ss:
004CDD09 |.BA 02000000 mov edx,2
004CDD0E |.E8 D16DF3FF call Unpacked.00404AE4
004CDD13 |.8D45 F4 lea eax,dword ptr ss:
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: ;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
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
hao hao
好啊,不错啊 连注册机都贴了,全! 支持下~~~~~~~ 那么多好东西使劲学习吧 好好学习。 正研究算法分析 辛苦了!好好学习下 不大懂VB语言 有点困难 谢谢前辈了。貌似我一个一个全收集了。呵呵