[PYG]算法分析入门第三课
【破文标题】算法分析入门第三课【破文作者】飘云
【破解平台】winxp
【作者邮箱】[email protected]
【软件名称】网页特效梦工厂 XP V2.3
【软件大小】1436 KB
【下载地址】http://www3.skycn.com/soft/8556.html
【软件说明】你在做网页嘛,如果是的话,这是你不可多得的超Cool工具。这是可以自动生成网页特效的软件,
每个特效都可以有您进行参数设置,100%傻瓜性。收集了包括时间特效,文字特效,图像处理,鼠标特效,页面
特效,菜单特效,在线游戏,其它特效在内的八类上百个精彩特效。这些特效都是使用率比较高的JavaScript
代码,您可以直接使用。软件内置浏览器,您可以随时预览特效效果;特效制作好之后,您可以把它复制到剪
贴板,或者保存到文件中;软件的界面美观新颖,操作简单明了,极易上手。轻轻点几下鼠标,又炫又酷的网页
任你选!
【破解工具】PEiD 0.92中文版、W32Dasm10.0汉化版、OD二哥修改版
【保护方式】机器码+序列号
【破解目的】学习破解。熟练应用各种工具。
【破解声明】我乃小菜鸟一只,偶得一点心得,愿与大家分享:)
【破解步骤】先用PEiD 0.92侦测,发现为ASPack 2.12 -> Alexey Solodovnikov 用脱壳机搞定之后再侦测为
Borland Delphi 6.0 - 7.0编写;试着运行软件:我的机器码为:65288649 输入伪码:78946123,点“确定注
册”出现“错误,网页特效梦工厂 注册认证失败”的错误窗口,呵呵!这是关键!
接下来W32DASM出场,在“串式参考”中找到:
* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:0050C794(C)★★★从这里跳来的,跟过去★★★
|
* Possible StringData Ref from Code Obj ->"错误,网页特效梦工厂 注册认证失败"
**********************************************************************************************
:0050C76D 8D55F0 lea edx, dword ptr
:0050C770 8B86FC020000 mov eax, dword ptr
:0050C776 E8355FF3FF call 004426B0
:0050C77B 8B45F0 mov eax, dword ptr 机器码送eax
:0050C77E E859CDEFFF call 004094DC 把机器码转换成十六进制
:0050C783 E8EC260000 call 0050EE74 算法call,跟进去
:0050C788 8BD8 mov ebx, eax
:0050C78A 8B45FC mov eax, dword ptr
:0050C78D E84ACDEFFF call 004094DC
:0050C792 3BD8 cmp ebx, eax 这里ebx的十六进制是真码
:0050C794 0F8581000000 jne 0050C81B ★★★这里跳向死亡★★★
:0050C79A B201 mov dl, 01
:0050C79C A17CBE4600 mov eax, dword ptr
:0050C7A1 E8D6F7F5FF call 0046BF7C
:0050C7A6 8BD8 mov ebx, eax
:0050C7A8 BA02000080 mov edx, 80000002
:0050C7AD 8BC3 mov eax, ebx
:0050C7AF E868F8F5FF call 0046C01C
:0050C7B4 33C9 xor ecx, ecx
进入call 0050EE74:
0050EE74 /$55 push ebp
0050EE75 |.8BEC mov ebp,esp
0050EE77 |.6A 00 push 0
0050EE79 |.53 push ebx
0050EE7A |.56 push esi
0050EE7B |.8BF0 mov esi,eax ;机器码十六进制03E439C9送到esi
0050EE7D |.33C0 xor eax,eax ;清零
0050EE7F |.55 push ebp
0050EE80 |.68 42EF5000push Unpacked.0050EF42
0050EE85 |.64:FF30 push dword ptr fs:
0050EE88 |.64:8920 mov dword ptr fs:,esp
0050EE8B |.BB D9D10E00mov ebx,0ED1D9 ;初始化ebx=0ED1D9(即十进制971225)
0050EE90 |.8D45 FC lea eax,dword ptr ss:
0050EE93 |.BA 58EF5000mov edx,Unpacked.0050EF58 ;ASCII "wangshuang"
0050EE98 |.E8 8B5EEFFFcall Unpacked.00404D28
0050EE9D |.8B45 FC mov eax,dword ptr ss:
0050EEA0 |.E8 A360EFFFcall Unpacked.00404F48 ;计算字符的长度,并放到eax
0050EEA5 |.85C0 test eax,eax
0050EEA7 |.7E 1B jle short Unpacked.0050EEC4
0050EEA9 |.BA 01000000mov edx,1
0050EEAE |>8B4D FC /mov ecx,dword ptr ss:
0050EEB1 |.0FB64C11 FF|movzx ecx,byte ptr ds:;逐位取"wangshuang"的每位ascii送到ecx
0050EEB6 |.8D0C89 |lea ecx,dword ptr ds: ;ecx=ecx+4*ecx
0050EEB9 |.8D0C89 |lea ecx,dword ptr ds: ;ecx=ecx+4*ecx
0050EEBC |.03D9 |add ebx,ecx ;ebx=ebx+ecx(即等于971225+ecx)
0050EEBE |.03DE |add ebx,esi ;上面的值加上机器码(前面分析了esi中放的是机器码的十六进制)
0050EEC0 |.42 |inc edx ;指向下一位字符(edx=edx+1)
0050EEC1 |.48 |dec eax ;字符长度减一(eax=eax-1)
0050EEC2 |.^ 75 EA \jnz short Unpacked.0050EEAE ;循环取
0050EEC4 |>8D45 FC lea eax,dword ptr ss:
0050EEC7 |.BA 6CEF5000mov edx,Unpacked.0050EF6C ;字符"yaoyuan"
0050EECC |.E8 575EEFFFcall Unpacked.00404D28 ;这里和上面调用同一call
0050EED1 |.8B45 FC mov eax,dword ptr ss:
0050EED4 |.E8 6F60EFFFcall Unpacked.00404F48 ;这里和上面调用同一call,
所以功能相同
0050EED9 |.85C0 test eax,eax
0050EEDB |.7E 1B jle short Unpacked.0050EEF8
0050EEDD |.BA 01000000mov edx,1
0050EEE2 |>8B4D FC /mov ecx,dword ptr ss:
0050EEE5 |.0FB64C11 FF|movzx ecx,byte ptr ds:
0050EEEA |.8D0C89 |lea ecx,dword ptr ds:
0050EEED |.8D0C89 |lea ecx,dword ptr ds:
0050EEF0 |.03D9 |add ebx,ecx
0050EEF2 |.03DE |add ebx,esi
0050EEF4 |.42 |inc edx
0050EEF5 |.48 |dec eax
0050EEF6 |.^ 75 EA \jnz short Unpacked.0050EEE2
0050EEF8 |>8D45 FC lea eax,dword ptr ss:
0050EEFB |.BA 7CEF5000mov edx,Unpacked.0050EF7C ;字符"JSBuilder"
0050EF00 |.E8 235EEFFFcall Unpacked.00404D28
0050EF05 |.8B45 FC mov eax,dword ptr ss:
0050EF08 |.E8 3B60EFFFcall Unpacked.00404F48 ;这里和上面调用同一call
0050EF0D |.85C0 test eax,eax
0050EF0F |.7E 1B jle short Unpacked.0050EF2C
0050EF11 |.BA 01000000mov edx,1
0050EF16 |>8B4D FC /mov ecx,dword ptr ss:
0050EF19 |.0FB64C11 FF|movzx ecx,byte ptr ds:
0050EF1E |.8D0C89 |lea ecx,dword ptr ds:
0050EF21 |.8D0C89 |lea ecx,dword ptr ds:
0050EF24 |.03D9 |add ebx,ecx
0050EF26 |.03DE |add ebx,esi
0050EF28 |.42 |inc edx
0050EF29 |.48 |dec eax
0050EF2A |.^ 75 EA \jnz short Unpacked.0050EF16
0050EF2C |>33C0 xor eax,eax
0050EF2E |.5A pop edx
0050EF2F |.59 pop ecx
0050EF30 |.59 pop ecx
0050EF31 |.64:8910 mov dword ptr fs:,edx
0050EF34 |.68 49EF5000push Unpacked.0050EF49
0050EF39 |>8D45 FC lea eax,dword ptr ss:
0050EF3C |.E8 4F5DEFFFcall Unpacked.00404C90
0050EF41 \.C3 retn
0050EF42 .^ E9 ED56EFFFjmp Unpacked.00404634
0050EF47 .^ EB F0 jmp short Unpacked.0050EF39
0050EF49 .8BC3 mov eax,ebx
0050EF4B .5E pop esi
0050EF4C .5B pop ebx
0050EF4D .59 pop ecx
0050EF4E .5D pop ebp
0050EF4F .C3 retn
我的注册信息:
机器码:65288649
注册码:1698544024
下面给出注册机VB源码
Private Sub command1_Click()
X = Val(Text1.Text)
A = &HED1D9
B = 0
C = 0
D = 0
ZF1 = "wangshuang"
ZF2 = "yaoyuan"
ZF3 = "JSBuilder"
If Text1.Text = "" Then
MsgBox "机器码没有输入吧!", 64, "注意"
Else
For i = 1 To Len(ZF1)
B = Asc(Mid(ZF1, i))
B = B + B * 4
B = B + B * 4
A = B + A + X
Next i
For i = 1 To Len(ZF2)
C = Asc(Mid(ZF2, i))
C = C + C * 4
C = C + C * 4
A = A + C + X
Next i
For i = 1 To Len(ZF3)
D = Asc(Mid(ZF3, i))
D = D + D * 4
D = D + D * 4
A = A + D + X
Next i
Text2.Text = A
End If
End Sub 这个顶一下~~~~~ 顶~~~~~~~~~~~~ 学习~~~~~~~~~` 学习中。。。。 学习中 。。。
支持中
感谢中。。 谢谢了老大.正在学算法中..呵呵 学习学习啦! 出去玩了好几天.该认真学习了.哈哈谢谢楼主. 这个软件的注册码写在注册表里,在这里: "System\CurrentControlSet\Services\Class\knightsoft\JSBuilder"
。没有启动验证,一字节破解即可:
0050B1CD E8 0AE3EFFF call JSBuilde.004094DC
0050B1D2 3BD8 cmp ebx,eax ;修改为cmp eax,eax
【这里ebx的十六进制是真码,其ASCII就是注册码,eax的十六进制是我们输入的测试码。】
0050B1D4 0F85 81000000 jnz JSBuilde.0050B25B ;或者修改为 je JSBuilde.0050B25B
0050B1DA B2 01 mov dl,1
注册码可以随便输入就可以注册。适合菜鸟爆破!
[ Last edited by xingbing on 2005-10-30 at 04:41 PM ]