飘云 发表于 2005-3-30 15:36:06

[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

恨浩 发表于 2005-3-30 22:07:55

这个顶一下~~~~~

yijun 发表于 2005-3-31 13:08:40

顶~~~~~~~~~~~~

pearboy 发表于 2005-4-5 15:19:30

学习~~~~~~~~~`

xbb[DFCG] 发表于 2005-4-11 21:31:10

学习中。。。。

shmily 发表于 2005-7-22 10:04:56

学习中 。。。
支持中
感谢中。。

beach 发表于 2005-7-29 21:22:42

谢谢了老大.正在学算法中..呵呵

冷血书生 发表于 2005-8-7 03:56:21

学习学习啦!

赤龙 发表于 2005-8-7 22:46:09

出去玩了好几天.该认真学习了.哈哈谢谢楼主.

xingbing 发表于 2005-10-30 15:52:46

这个软件的注册码写在注册表里,在这里: "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 ]
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: [PYG]算法分析入门第三课