【破解软件】Flash ScreenSaver Maker 3.356
【下载地址】http://www.onlinedown.net/soft/8294.htm
【运行环境】Win9x/Me/NT/2000/XP
【软件类别】国外软件/共享版/桌面制作
【保护方式】UPX、用户名、注册码
【作者声明】初学Crack,只是感兴趣,消遣业余时间,错误之处敬请诸位前辈不吝赐教。
【调试环境】Winxp、OllyDBD、PEiD
【软件信息】是一个非常容易使用的Flash屏幕保护制作工具,程序可以帮助你快速的将Flash动画和MP3,WAV,Mid等文件制作成专业的Windows屏幕保护程序,不需要专业的技巧,你只需要选择需要制作的Flash动画和MP3,WAV或者Mid音频文件就可以了!
一、脱壳
PEiD查壳:UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo
1.用脱壳机。
2.手脱:F8+ESP定律+F8 到达OEP,没有自效验。
脱壳后PEiD查:Borland Delphi 6.0 - 7.0
二、追码
OD 载入程序查找字串参考,找到:“register succeed, enjoy!”双击来到:004B7BB8处,向上在004B791B处下断,F9运行程序。在注册框里填用户名:wzwgpa(大于5、小于等于40) 注册码:123-4567-891(固定格式) 点“OK”
004B791B 55 PUSH EBP ; 断下
004B791C 68 3C7C4B00 PUSH tk.004B7C3C
004B7921 64:FF30 PUSH DWORD PTR FS:[EAX]
004B7924 64:8920 MOV DWORD PTR FS:[EAX],ESP
004B7927 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004B792A 8B80 2C030000 MOV EAX,DWORD PTR DS:[EAX+32C]
004B7930 33D2 XOR EDX,EDX
004B7932 E8 F1F0F7FF CALL tk.00436A28
004B7937 8B0D 301F4C00 MOV ECX,DWORD PTR DS:[4C1F30]
004B793D 8B09 MOV ECX,DWORD PTR DS:[ECX] ; 程序名Flash ScreenSaver Maker入ECX
004B793F 8B15 B41D4C00 MOV EDX,DWORD PTR DS:[4C1DB4]
004B7945 8B12 MOV EDX,DWORD PTR DS:[EDX] ; 用户名地址入EDX
004B7947 8D45 C4 LEA EAX,DWORD PTR SS:[EBP-3C]
004B794A E8 BDD1F4FF CALL tk.00404B0C ; 连接用户名与程序名
004B794F 8B45 C4 MOV EAX,DWORD PTR SS:[EBP-3C] ; 连接后的地址存入EAX
004B7952 8D55 C8 LEA EDX,DWORD PTR SS:[EBP-38]
004B7955 E8 8AEFFFFF CALL tk.004B68E4 ; MD5加密连接后的用户名与程序名
004B795A 8D45 C8 LEA EAX,DWORD PTR SS:[EBP-38]
004B795D 8D55 F8 LEA EDX,DWORD PTR SS:[EBP-8]
004B7960 E8 F3EFFFFF CALL tk.004B6958 ; 依据(0123456789abcdef)转换MD5加密结果
004B7965 E9 AD000000 JMP tk.004B7A17 ; 跳到4B7A17处(第1次向下跳)
004B796A 33C0 XOR EAX,EAX ; 4B7AA7处回跳到此
004B796C 55 PUSH EBP
004B796D 68 B0794B00 PUSH tk.004B79B0
004B7972 64:FF30 PUSH DWORD PTR FS:[EAX]
004B7975 64:8920 MOV DWORD PTR FS:[EAX],ESP
004B7978 8D45 C0 LEA EAX,DWORD PTR SS:[EBP-40]
004B797B 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C]
004B797E 8A12 MOV DL,BYTE PTR DS:[EDX] ; 假码第4位入DL
004B7980 E8 63D0F4FF CALL tk.004049E8 ; 假码第4位不是0…9将出错
004B7985 8B45 C0 MOV EAX,DWORD PTR SS:[EBP-40]
004B7988 E8 5F15F5FF CALL tk.00408EEC ; 取表(见后附表)
004B798D 8D0440 LEA EAX,DWORD PTR DS:[EAX+EAX*2] ; 假码第4位入EAX
004B7990 8B15 241B4C00 MOV EDX,DWORD PTR DS:[4C1B24] ; 表地址入EDX
004B7996 8D34C2 LEA ESI,DWORD PTR DS:[EDX+EAX*8] ; 根据假码第4位的值查表
004B7999 8D7D D8 LEA EDI,DWORD PTR SS:[EBP-28]
004B799C B9 06000000 MOV ECX,6
004B79A1 F3:A5 REP MOVS DWORD PTR ES:[EDI],DWORD PTR>; 查表得到的6个定位值串传送到堆栈
004B79A3 33C0 XOR EAX,EAX
004B79A5 5A POP EDX
004B79A6 59 POP ECX
004B79A7 59 POP ECX
004B79A8 64:8910 MOV DWORD PTR FS:[EAX],EDX
004B79AB E9 FC000000 JMP tk.004B7AAC ; 跳到4B7AAC处(第2次向下跳)
004B79B0 ^ E9 F7C4F4FF JMP tk.00403EAC
004B79B5 6A 10 PUSH 10
004B79B7 68 4C7C4B00 PUSH tk.004B7C4C ; error
004B79BC 68 547C4B00 PUSH tk.004B7C54 ; register failed, please check user name and serial number.
004B79C1 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004B79C4 E8 7704FBFF CALL tk.00467E40
004B79C9 50 PUSH EAX
004B79CA E8 45FAF4FF CALL <JMP.&USER32.MessageBoxA>
004B79CF A1 B41D4C00 MOV EAX,DWORD PTR DS:[4C1DB4]
004B79D4 E8 27CEF4FF CALL tk.00404800
004B79D9 A1 3C1D4C00 MOV EAX,DWORD PTR DS:[4C1D3C]
004B79DE E8 1DCEF4FF CALL tk.00404800
004B79E3 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004B79E6 8B80 FC020000 MOV EAX,DWORD PTR DS:[EAX+2FC]
004B79EC 66:BE B5FF MOV SI,0FFB5
004B79F0 E8 D3C1F4FF CALL tk.00403BC8
004B79F5 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004B79F8 8B80 FC020000 MOV EAX,DWORD PTR DS:[EAX+2FC]
004B79FE E8 F5E3F9FF CALL tk.00455DF8
004B7A03 E8 0CC8F4FF CALL tk.00404214
004B7A08 E9 07020000 JMP tk.004B7C14
004B7A0D E8 02C8F4FF CALL tk.00404214
004B7A12 E9 95000000 JMP tk.004B7AAC
004B7A17 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C] ; 4B7965处跳到此
004B7A1A BA 06000000 MOV EDX,6
004B7A1F E8 28D4F4FF CALL tk.00404E4C
004B7A24 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
004B7A27 E8 ECD2F4FF CALL tk.00404D18
004B7A2C 8B15 3C1D4C00 MOV EDX,DWORD PTR DS:[4C1D3C]
004B7A32 8B12 MOV EDX,DWORD PTR DS:[EDX] ; 假码地址入EDX
004B7A34 8A52 03 MOV DL,BYTE PTR DS:[EDX+3] ; 取4位假码
004B7A37 8810 MOV BYTE PTR DS:[EAX],DL
004B7A39 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
004B7A3C E8 D7D2F4FF CALL tk.00404D18
004B7A41 8B15 3C1D4C00 MOV EDX,DWORD PTR DS:[4C1D3C]
004B7A47 8B12 MOV EDX,DWORD PTR DS:[EDX]
004B7A49 8A52 01 MOV DL,BYTE PTR DS:[EDX+1] ; 取第2位假码
004B7A4C 8850 01 MOV BYTE PTR DS:[EAX+1],DL
004B7A4F 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
004B7A52 E8 C1D2F4FF CALL tk.00404D18
004B7A57 8B15 3C1D4C00 MOV EDX,DWORD PTR DS:[4C1D3C]
004B7A5D 8B12 MOV EDX,DWORD PTR DS:[EDX]
004B7A5F 8A52 02 MOV DL,BYTE PTR DS:[EDX+2] ; 取假码第3位
004B7A62 8850 02 MOV BYTE PTR DS:[EAX+2],DL
004B7A65 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
004B7A68 E8 ABD2F4FF CALL tk.00404D18
004B7A6D 8B15 3C1D4C00 MOV EDX,DWORD PTR DS:[4C1D3C]
004B7A73 8B12 MOV EDX,DWORD PTR DS:[EDX]
004B7A75 8A52 05 MOV DL,BYTE PTR DS:[EDX+5] ; 取假码第6位
004B7A78 8850 03 MOV BYTE PTR DS:[EAX+3],DL
004B7A7B 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
004B7A7E E8 95D2F4FF CALL tk.00404D18
004B7A83 8B15 3C1D4C00 MOV EDX,DWORD PTR DS:[4C1D3C]
004B7A89 8B12 MOV EDX,DWORD PTR DS:[EDX]
004B7A8B 8A52 06 MOV DL,BYTE PTR DS:[EDX+6] ; 取假码第7位
004B7A8E 8850 04 MOV BYTE PTR DS:[EAX+4],DL
004B7A91 8D45 F4 LEA EAX,DWORD PTR SS:[EBP-C]
004B7A94 E8 7FD2F4FF CALL tk.00404D18
004B7A99 8B15 3C1D4C00 MOV EDX,DWORD PTR DS:[4C1D3C]
004B7A9F 8B12 MOV EDX,DWORD PTR DS:[EDX]
004B7AA1 8A52 08 MOV DL,BYTE PTR DS:[EDX+8] ; 取假码第9位
004B7AA4 8850 05 MOV BYTE PTR DS:[EAX+5],DL
004B7AA7 ^ E9 BEFEFFFF JMP tk.004B796A ; 回跳到4B796A处
004B7AAC BA 02000000 MOV EDX,2 ; 4B7A12处跳到此
004B7AB1 8D45 DC LEA EAX,DWORD PTR SS:[EBP-24]
004B7AB4 8B4D F4 MOV ECX,DWORD PTR SS:[EBP-C] ; [EBP-C]=取出的6个假码地址
004B7AB7 8A4C11 FF MOV CL,BYTE PTR DS:[ECX+EDX-1] ; 逐个取选出的6个假码
004B7ABB 8B18 MOV EBX,DWORD PTR DS:[EAX] ; [EAX]=查表后的定位值
004B7ABD 8B75 F8 MOV ESI,DWORD PTR SS:[EBP-8] ; [EBP-8]=转换后的MD5加密结果
004B7AC0 3A4C1E FF CMP CL,BYTE PTR DS:[ESI+EBX-1] ; 比较假码与定位值指向的MD5加密字符
004B7AC4 75 53 JZ SHORT tk.004B7B19 ; 相等跳到4B7B19处取下一个
004B7AC6 6A 10 PUSH 10
004B7AC8 68 4C7C4B00 PUSH tk.004B7C4C ; error
004B7ACD 68 547C4B00 PUSH tk.004B7C54 ; register failed, please check user name and serial number.
004B7AD2 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004B7AD5 E8 6603FBFF CALL tk.00467E40
004B7ADA 50 PUSH EAX
004B7ADB E8 34F9F4FF CALL <JMP.&USER32.MessageBoxA>
004B7AE0 A1 B41D4C00 MOV EAX,DWORD PTR DS:[4C1DB4]
004B7AE5 E8 16CDF4FF CALL tk.00404800
004B7AEA A1 3C1D4C00 MOV EAX,DWORD PTR DS:[4C1D3C]
004B7AEF E8 0CCDF4FF CALL tk.00404800
004B7AF4 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004B7AF7 8B80 FC020000 MOV EAX,DWORD PTR DS:[EAX+2FC]
004B7AFD 66:BE B5FF MOV SI,0FFB5
004B7B01 E8 C2C0F4FF CALL tk.00403BC8
004B7B06 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
004B7B09 8B80 FC020000 MOV EAX,DWORD PTR DS:[EAX+2FC]
004B7B0F E8 E4E2F9FF CALL tk.00455DF8
004B7B14 E9 FB000000 JMP tk.004B7C14
004B7B19 42 INC EDX ; 4B7AC4处跳来 EDX=计数器
004B7B1A 83C0 04 ADD EAX,4
004B7B1D 83FA 07 CMP EDX,7 ; 取完选出的假码没有?
004B7B20 ^ 75 92 JNZ SHORT tk.004B7AB4 ; 未取完跳回去再取
004B7B22 B2 01 MOV DL,1
004B7B24 A1 A0AD4300 MOV EAX,DWORD PTR DS:[43ADA0]
004B7B29 E8 7233F8FF CALL tk.0043AEA0
004B7B2E 8945 F0 MOV DWORD PTR SS:[EBP-10],EAX
004B7B31 33C0 XOR EAX,EAX
004B7B33 55 PUSH EBP
004B7B34 68 AA7B4B00 PUSH tk.004B7BAA
004B7B39 64:FF30 PUSH DWORD PTR FS:[EAX]
004B7B3C 64:8920 MOV DWORD PTR FS:[EAX],ESP
004B7B3F BA 02000080 MOV EDX,80000002
004B7B44 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
004B7B47 E8 F433F8FF CALL tk.0043AF40
004B7B4C 8B15 6C1B4C00 MOV EDX,DWORD PTR DS:[4C1B6C]
004B7B52 8B12 MOV EDX,DWORD PTR DS:[EDX]
004B7B54 B1 01 MOV CL,1
004B7B56 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
004B7B59 E8 2235F8FF CALL tk.0043B080
004B7B5E 84C0 TEST AL,AL
004B7B60 74 32 JE SHORT tk.004B7B94
004B7B62 8B0D B41D4C00 MOV ECX,DWORD PTR DS:[4C1DB4]
004B7B68 8B09 MOV ECX,DWORD PTR DS:[ECX]
004B7B6A BA 987C4B00 MOV EDX,tk.004B7C98
004B7B6F 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
004B7B72 E8 A536F8FF CALL tk.0043B21C
004B7B77 8B0D 3C1D4C00 MOV ECX,DWORD PTR DS:[4C1D3C]
004B7B7D 8B09 MOV ECX,DWORD PTR DS:[ECX]
004B7B7F BA AC7C4B00 MOV EDX,tk.004B7CAC
004B7B84 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
004B7B87 E8 9036F8FF CALL tk.0043B21C
004B7B8C 8B45 F0 MOV EAX,DWORD PTR SS:[EBP-10]
004B7B8F E8 7C33F8FF CALL tk.0043AF10
004B7B94 33C0 XOR EAX,EAX
004B7B96 5A POP EDX
004B7B97 59 POP ECX
004B7B98 59 POP ECX
004B7B99 64:8910 MOV DWORD PTR FS:[EAX],EDX
004B7B9C 68 B17B4B00 PUSH tk.004B7BB1
004B7BA1 8D45 F0 LEA EAX,DWORD PTR SS:[EBP-10]
004B7BA4 E8 B366F5FF CALL tk.0040E25C
004B7BA9 C3 RETN ; 转到004B7BB1处
004B7BAA ^ E9 B1C5F4FF JMP tk.00404160
004B7BAF ^ EB F0 JMP SHORT tk.004B7BA1
004B7BB1 6A 40 PUSH 40
004B7BB3 68 BC7C4B00 PUSH tk.004B7CBC ; succeed
004B7BB8 68 C47C4B00 PUSH tk.004B7CC4 ; register succeed, enjoy!
定位表(想当然起的名称):
根据注册码第4位数值得到指向MD5加密字符的定位值
004B375B 8910 MOV DWORD PTR DS:[EAX],EDX <-------0
004B375D C740 04 0500000>MOV DWORD PTR DS:[EAX+4],5
004B3764 C740 08 1F00000>MOV DWORD PTR DS:[EAX+8],1F
004B376B C740 0C 1500000>MOV DWORD PTR DS:[EAX+C],15
004B3772 C740 10 1300000>MOV DWORD PTR DS:[EAX+10],13
004B3779 C740 14 0300000>MOV DWORD PTR DS:[EAX+14],3
004B3780 C740 18 0100000>MOV DWORD PTR DS:[EAX+18],1 <-------1
004B3787 C740 1C 0F00000>MOV DWORD PTR DS:[EAX+1C],0F
004B378E C740 20 0300000>MOV DWORD PTR DS:[EAX+20],3
004B3795 C740 24 0200000>MOV DWORD PTR DS:[EAX+24],2
004B379C C740 28 1300000>MOV DWORD PTR DS:[EAX+28],13
004B37A3 C740 2C 1E00000>MOV DWORD PTR DS:[EAX+2C],1E
004B37AA C740 30 0200000>MOV DWORD PTR DS:[EAX+30],2 <-------2
004B37B1 C740 34 1900000>MOV DWORD PTR DS:[EAX+34],19
004B37B8 C740 38 0300000>MOV DWORD PTR DS:[EAX+38],3
004B37BF C740 3C 1500000>MOV DWORD PTR DS:[EAX+3C],15
004B37C6 C740 40 0900000>MOV DWORD PTR DS:[EAX+40],9
004B37CD C740 44 0D00000>MOV DWORD PTR DS:[EAX+44],0D
004B37D4 C740 48 0300000>MOV DWORD PTR DS:[EAX+48],3 <-------3
004B37DB C740 4C 1600000>MOV DWORD PTR DS:[EAX+4C],16
004B37E2 C740 50 0E00000>MOV DWORD PTR DS:[EAX+50],0E
004B37E9 C740 54 1200000>MOV DWORD PTR DS:[EAX+54],12
004B37F0 C740 58 1300000>MOV DWORD PTR DS:[EAX+58],13
004B37F7 C740 5C 1700000>MOV DWORD PTR DS:[EAX+5C],17
004B37FE C740 60 0400000>MOV DWORD PTR DS:[EAX+60],4 <-------4
004B3805 C740 64 1000000>MOV DWORD PTR DS:[EAX+64],10
004B380C C740 68 0100000>MOV DWORD PTR DS:[EAX+68],1
004B3813 C740 6C 1600000>MOV DWORD PTR DS:[EAX+6C],16
004B381A C740 70 0900000>MOV DWORD PTR DS:[EAX+70],9
004B3821 C740 74 1D00000>MOV DWORD PTR DS:[EAX+74],1D
004B3828 C740 78 0500000>MOV DWORD PTR DS:[EAX+78],5 <-------5
004B382F C740 7C 1E00000>MOV DWORD PTR DS:[EAX+7C],1E
004B3836 C780 80000000 0>MOV DWORD PTR DS:[EAX+80],1
004B3840 C780 84000000 1>MOV DWORD PTR DS:[EAX+84],17
004B384A C780 88000000 0>MOV DWORD PTR DS:[EAX+88],8
004B3854 C780 8C000000 0>MOV DWORD PTR DS:[EAX+8C],6
004B385E C780 90000000 0>MOV DWORD PTR DS:[EAX+90],6 <-------6
004B3868 C780 94000000 0>MOV DWORD PTR DS:[EAX+94],7
004B3872 C780 98000000 1>MOV DWORD PTR DS:[EAX+98],18
004B387C C780 9C000000 0>MOV DWORD PTR DS:[EAX+9C],0B
004B3886 C780 A0000000 1>MOV DWORD PTR DS:[EAX+A0],1D
004B3890 C780 A4000000 1>MOV DWORD PTR DS:[EAX+A4],15
004B389A C780 A8000000 0>MOV DWORD PTR DS:[EAX+A8],7 <-------7
004B38A4 C780 AC000000 1>MOV DWORD PTR DS:[EAX+AC],18
004B38AE C780 B0000000 0>MOV DWORD PTR DS:[EAX+B0],3
004B38B8 C780 B4000000 0>MOV DWORD PTR DS:[EAX+B4],2
004B38C2 C780 B8000000 1>MOV DWORD PTR DS:[EAX+B8],10
004B38CC C780 BC000000 1>MOV DWORD PTR DS:[EAX+BC],17
004B38D6 C780 C0000000 0>MOV DWORD PTR DS:[EAX+C0],8 <-------8
004B38E0 C780 C4000000 0>MOV DWORD PTR DS:[EAX+C4],0F
004B38EA C780 C8000000 0>MOV DWORD PTR DS:[EAX+C8],0B
004B38F4 C780 CC000000 1>MOV DWORD PTR DS:[EAX+CC],15
004B38FE C780 D0000000 0>MOV DWORD PTR DS:[EAX+D0],0C
004B3908 C780 D4000000 1>MOV DWORD PTR DS:[EAX+D4],16
004B3912 C780 D8000000 0>MOV DWORD PTR DS:[EAX+D8],9 <-------9
004B391C C780 DC000000 1>MOV DWORD PTR DS:[EAX+DC],16
004B3926 C780 E0000000 0>MOV DWORD PTR DS:[EAX+E0],0B
004B3930 C780 E4000000 2>MOV DWORD PTR DS:[EAX+E4],20
004B393A C780 E8000000 0>MOV DWORD PTR DS:[EAX+E8],7
004B3944 C780 EC000000 0>MOV DWORD PTR DS:[EAX+EC],6
三、追码分析
1.用户名、注册码输入注册框时,非数字字符程序自动转成大写,用户名位数大于5、小于等于40,注册码:***-****-***(固定格式)
2.用户名与程序名连接(含2个空格),ND5加密
WZWGPA --> WZWGPAFlash ScreenSaver Maker --> MD5 --> ab88f3f20059220e0a05494a2cfb6877
3.注册码第4位必须是0…9之间的数,根据注册码第4位数值查表得到指向MD5加密字符的定位值。
1234567891 --> 4 --> 10、1、16、9、1D --> e、a、9、0、6
16、1、22、9、29
4.e、a、9、0、6 成为注册码中的第2、3、6、7、9位。
我的用户名:wzwgpa
注册码:*ea-4*90-*6* (*为任意数)
注册信息保存在注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellSaver
表达能力差,破文不能写得言简意赅,感谢你看完。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)