ScreensaverShot 3.1 算法分析
ScreensaverShot 3.1软件大小:1068KB
软件类别:国外软件/桌面制作
软件授权:共享版
软件语言:英文
运行环境:Win9x/Me/NT/2000/XP/2003
下载地址:http://www.onlinedown.net/soft/9966.htm
软件信息:
ScreensaverShot 让你无需任何编程经验,就可以制作出最具感染力的屏幕保护作品。此软件制作屏幕保护十分简单方便,共分以下三个步骤:1.选择图片,支持 bmp,jpg 和 jpeg 格式;2.选择背景颜色和音乐,音乐格式包括 mp3,mid,rmi 和 wav;3.生成屏幕保护。
软件是 UPX 压缩壳,由 DELPHI 编的,注册成功时有提示.
00483000/.55 push ebp
00483001|.8BEC mov ebp, esp
00483003|.6A 00 push 0
00483005|.6A 00 push 0
00483007|.6A 00 push 0
00483009|.53 push ebx
0048300A|.8BD8 mov ebx, eax
0048300C|.33C0 xor eax, eax
0048300E|.55 push ebp
0048300F|.68 9B304800 push 0048309B
00483014|.64:FF30 push dword ptr fs:
00483017|.64:8920 mov dword ptr fs:, esp
0048301A|.8D55 F8 lea edx,
0048301D|.8B83 04030000 mov eax, dword ptr ds:
00483023|.E8 986FFCFF call 00449FC0
00483028|.8B45 F8 mov eax,
0048302B|.8D4D FC lea ecx,
0048302E|.8B93 14030000 mov edx, dword ptr ds:
00483034|.E8 9FFBFFFF call 00482BD8 ;算法 CALL 1 ,跟进
00483039|.8B45 FC mov eax,
0048303C|.50 push eax
0048303D|.8D55 F4 lea edx,
00483040|.8B83 08030000 mov eax, dword ptr ds:
00483046|.E8 756FFCFF call 00449FC0
0048304B|.8B55 F4 mov edx,
0048304E|.58 pop eax ;00A582A4
0048304F|.E8 8413F8FF call 004043D8 ;此处可以做内存注册机
00483054|.75 22 jnz short 00483078
00483056|.6A 00 push 0
00483058|.B9 A8304800 mov ecx, 004830A8 ;ASCII "Step3"
0048305D|.BA B0304800 mov edx, 004830B0 ;ASCII "OK. Successfully registered!"
00483062|.A1 448C4800 mov eax, dword ptr ds:
00483067|.8B00 mov eax, dword ptr ds:
00483069|.E8 EA7FFEFF call 0046B058
0048306E|.C783 4C020000 0>mov dword ptr ds:, 1
00483078|>33C0 xor eax, eax
0048307A|.5A pop edx
0048307B|.59 pop ecx
0048307C|.59 pop ecx
0048307D|.64:8910 mov dword ptr fs:, edx
00483080|.68 A2304800 push 004830A2
00483085|>8D45 F4 lea eax,
00483088|.BA 02000000 mov edx, 2
0048308D|.E8 5E0FF8FF call 00403FF0
00483092|.8D45 FC lea eax,
00483095|.E8 320FF8FF call 00403FCC
0048309A\.C3 retn
0048309B .^ E9 3009F8FF jmp 004039D0
004830A0 .^ EB E3 jmp short 00483085
004830A2 .5B pop ebx
004830A3 .8BE5 mov esp, ebp
004830A5 .5D pop ebp
004830A6 .C3 retn
算法CALL 1
00482BD8/$55 push ebp
00482BD9|.8BEC mov ebp, esp
00482BDB|.83C4 EC add esp, -14
00482BDE|.53 push ebx
00482BDF|.56 push esi
00482BE0|.57 push edi
00482BE1|.33DB xor ebx, ebx
00482BE3|.895D EC mov , ebx
00482BE6|.894D F4 mov , ecx
00482BE9|.8955 F8 mov , edx ;定值:4D3
00482BEC|.8945 FC mov , eax ;注册名
00482BEF|.8B45 FC mov eax,
00482BF2|.E8 8518F8FF call 0040447C
00482BF7|.33C0 xor eax, eax
00482BF9|.55 push ebp
00482BFA|.68 B02C4800 push 00482CB0
00482BFF|.64:FF30 push dword ptr fs:
00482C02|.64:8920 mov dword ptr fs:, esp
00482C05|.8B45 FC mov eax, ;注册名
00482C08|.E8 7F16F8FF call 0040428C ;计算注册名长度
00482C0D|.8945 F0 mov , eax ;注册名长度
00482C10|.8B75 F8 mov esi, ;esi = 定值:4D3
00482C13|.8B45 F0 mov eax, ;eax = 注册名长度
00482C16|.85C0 test eax, eax
00482C18|.7E 13 jle short 00482C2D
00482C1A|.BF 01000000 mov edi, 1 ;edi = 1
00482C1F|>8B55 FC /mov edx, ;edx = 注册名 ,试炼码"ZHOU2X"
00482C22|.0FB6543A FF |movzx edx, byte ptr ds: ;edx = 注册名取代码
00482C27|.03F2 |add esi, edx ;加法,esi = esi + edx
00482C29|.47 |inc edi ;edi = edi + 1
00482C2A|.48 |dec eax ;eax = eax - 1
00482C2B|.^ 75 F2 \jnz short 00482C1F ;判断循环 ,结果 esi = 6A3
00482C2D|>8B45 F4 mov eax,
00482C30|.E8 9713F8FF call 00403FCC
00482C35|.33FF xor edi, edi
00482C37|>8BC6 /mov eax, esi ;eax = esi
00482C39|.B9 24000000 |mov ecx, 24 ;ecx = 24
00482C3E|.99 |cdq
00482C3F|.F7F9 |idiv ecx ;除法,eax = eax / ecx
00482C41|.8BC2 |mov eax, edx ;edx = 余数,eax = edx
00482C43|.E8 68FFFFFF |call 00482BB0 ;算法 CALL 2
00482C48|.8BD8 |mov ebx, eax ;ebx = eax
00482C4A|.8BC3 |mov eax, ebx ;eax = ebx
00482C4C|.04 D0 |add al, 0D0 ;al = al + 0D0
00482C4E|.2C 02 |sub al, 2 ;al = al - 2
00482C50|.72 21 |jb short 00482C73 ;小于 则 跳转
00482C52|.2C 17 |sub al, 17 ;al = al - 17
00482C54|.74 1D |je short 00482C73 ;等于 则 跳转
00482C56|.2C 06 |sub al, 6 ;al = al - 6
00482C58|.74 19 |je short 00482C73 ;等于 则 跳转
00482C5A|.8D45 EC |lea eax,
00482C5D|.8BD3 |mov edx, ebx
00482C5F|.E8 5015F8FF |call 004041B4
00482C64|.8B55 EC |mov edx,
00482C67|.8B45 F4 |mov eax,
00482C6A|.E8 2516F8FF |call 00404294 ;将算法 2 算出的注册码连接
00482C6F|.8B45 F4 |mov eax,
00482C72|.47 |inc edi ;edi = edi + 1
00482C73|>8BC7 |mov eax, edi ;eax = edi
00482C75|.99 |cdq
00482C76|.F77D F0 |idiv ;除以 注册名长度
00482C79|.8BC2 |mov eax, edx ;edx = 余数,eax = edx
00482C7B|.40 |inc eax ;eax = eax + 1
00482C7C|.8B55 FC |mov edx, ;edx = 注册名
00482C7F|.0FB64402 FF |movzx eax, byte ptr ds: ;eax = edx 取代码
00482C84|.2BF0 |sub esi, eax ;esi = esi - eax
00482C86|.85F6 |test esi, esi
00482C88|.7D 03 |jge short 00482C8D ;esi 大于等于 eax 则跳转
00482C8A|.0375 F8 |add esi, ;否则 esi = esi + 4D3
00482C8D|>83FF 0A |cmp edi, 0A ;edi 与 0A 比较
00482C90|.^ 7C A5 \jl short 00482C37 ;小于 则 循环
00482C92|.33C0 xor eax, eax
00482C94|.5A pop edx
00482C95|.59 pop ecx
00482C96|.59 pop ecx
00482C97|.64:8910 mov dword ptr fs:, edx
00482C9A|.68 B72C4800 push 00482CB7
00482C9F|>8D45 EC lea eax,
00482CA2|.E8 2513F8FF call 00403FCC
00482CA7|.8D45 FC lea eax,
00482CAA|.E8 1D13F8FF call 00403FCC
00482CAF\.C3 retn
00482CB0 .^ E9 1B0DF8FF jmp 004039D0
00482CB5 .^ EB E8 jmp short 00482C9F
00482CB7 .5F pop edi
00482CB8 .5E pop esi
00482CB9 .5B pop ebx
00482CBA .8BE5 mov esp, ebp
00482CBC .5D pop ebp
00482CBD .C3 retn
算法CALL 2
00482BB0/$B2 20 mov dl, 20 ;dl = 20
00482BB2|.8BC8 mov ecx, eax ;ecx = eax
00482BB4|.83E9 3E sub ecx, 3E ;ecx = ecx - 3E
00482BB7|.73 19 jnb short 00482BD2 ;多余,除以 24 余数怎么可能大于 3E
00482BB9|.8BC8 mov ecx, eax ;ecx = eax
00482BBB|.83E9 0A sub ecx, 0A ;ecx = ecx - 0A
00482BBE|.72 07 jb short 00482BC7 ;ecx是否小于 0A
00482BC0|.83E9 1A sub ecx, 1A ;ecx = ecx - 1A
00482BC3|.72 07 jb short 00482BCC ;ecx是否小于 1A
00482BC5|.EB 0B jmp short 00482BD2
00482BC7|>8D50 30 lea edx, dword ptr ds: ;ecx 小于 0A ,则 edx = eax + 30
00482BCA|.EB 06 jmp short 00482BD2
00482BCC|>8D50 41 lea edx, dword ptr ds: ;ecx 小于 1A ,则 edx = eax + 41
00482BCF|.83EA 0A sub edx, 0A ;edx = edx - 0A
00482BD2|>8BC2 mov eax, edx ;eax = edx
00482BD4\.C3 retn
注册机源码
.版本 2
.子程序 _按钮1_被单击, , , 算法CALL1
.局部变量 local2, 整数型
.局部变量 local1, 文本型
.局部变量 local4, 整数型
.局部变量 esi, 整数型
.局部变量 SN, 文本型
local2 = 1235
local1 = 编辑框1.内容
local4 = 取文本长度 (local1)
esi = local2
eax = local4
.如果 (eax = 0)
编辑框2.内容 = “请填写注册名”
返回 ()
.否则
.如果结束
edi = 1
.循环判断首 ()
edx = 取代码 (local1, edi)
esi = esi + edx
edi = edi + 1
eax = eax - 1
.循环判断尾 (eax ≠ 0)
edi = 0
.循环判断首 ()
' eax = esi
ecx = 36
eax = esi % ecx
eax = 算法CALL2 (eax)
ebx = eax
eax = eax + 208
.如果 (eax < 2)
.否则
eax = eax - 2
.如果 (eax = 23)
.否则
eax = eax - 23
.如果 (eax = 6)
.否则
SN = SN + 字符 (ebx)
edi = edi + 1
.如果结束
.如果结束
.如果结束
eax = edi
eax = eax % local4
eax = eax + 1
eax = 取代码 (local1, eax)
esi = esi - eax
.如果 (esi ≥ 0)
.否则
esi = esi + 1235
.如果结束
.循环判断尾 (edi < 10)
编辑框2.内容 = SN
.子程序 算法CALL2, 整数型
.参数 参数1, 整数型
edx = 32
ecx = 参数1
.如果 (ecx < 10)
edx = 参数1 + 48
.否则
ecx = ecx - 10
.如果 (ecx < 26)
edx = 参数1 + 65
edx = edx - 10
.否则
.如果结束
.如果结束
返回 (edx)
注册机成品
https://www.chinapyg.com/viewthread.php?tid=41232&extra=page%3D1 分析的太详细.不错学习了!!! 为什么注册机用E语言写呢?/:011 希望能用vb 写算法机.努力学习中 分析的很好,收获很多,谢谢分享 易语言看起来还真是不习关/:good 好文章,学习一下分析算法。 分析得好详细啊 好好学习中....
页:
[1]