破解光盘复制专家 6.0的一点笔记
【文章标题】: 破解光盘复制专家 6.0【文章作者】: 小糊涂虫
【作者主页】: www.52pojie.cn
【软件名称】: 光盘复制专家 6.0
【软件大小】: 4.11 mb
【下载地址】: 多特下载
【保护方式】: Armadillo V6.X Minimum Protection
【使用工具】: OD,lordPE,importRCE,然后加上海风的SOD
【操作平台】: windows xp sp2
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
过程:
1.查壳
显示为:Armadillo V6.X Minimum Protection -> Silicon Realms Toolworks * Sign.By.fly * 20081227 *
先看是单进程还是双进程,运行。
确定为单进程
不管它是什么保护,OD伺候(应该不会全保护)。
004D5B22 p>E8 433D0000 call pepskyCD.004D986A
004D5B27 ^ E9 16FEFFFF jmp pepskyCD.004D5942
004D5B2C 6A 0C push 0C
004D5B2E 68 D8A24F00 push pepskyCD.004FA2D8
004D5B33 E8 641E0000 call pepskyCD.004D799C
004D5B38 8365 E4 00 and dword ptr ss:,0
004D5B3C 8B75 08 mov esi,dword ptr ss:
004D5B3F 3B35 D0D34F00 cmp esi,dword ptr ds:
004D5B45 77 22 ja short pepskyCD.004D5B69
004D5B47 6A 04 push 4
004D5B49 E8 C31A0000 call pepskyCD.004D7611
004D5B4E 59 pop ecx
用老方法脱。
断点:bp GetModuleHandleA+9
shift+F9不知多少次以后,来到。(堆栈窗口)
00129410 /0012EB6C
00129414 |01128355 返回到 01128355 来自 kernel32.GetModuleHandleA
00129418 |0115414C ASCII "kernel32.dll"
0012941C |01155D84 ASCII "VirtualAlloc"
00129420 |71E3A47D
00129424 |004F3388 pepskyCD.004F3388
然后斯文一点,再f9两下。alt+f9
来到
0110A7F4 51 push ecx
0110A7F5 FF15 88201501 call dword ptr ds: ; kernel32.LoadLibraryA
0110A7FB 8B55 F4 mov edx,dword ptr ss:
0110A7FE 8B0D 3C201601 mov ecx,dword ptr ds:
0110A804 890491 mov dword ptr ds:,eax
0110A807 8B55 F4 mov edx,dword ptr ss:
0110A80A A1 3C201601 mov eax,dword ptr ds:
0110A80F 833C90 00 cmp dword ptr ds:,0
0110A813 75 05 jnz short 0110A81A
0110A815 ^ E9 EFFEFFFF jmp 0110A709
注意那个 loadlibrarya下面,找跳转,近跳就NOP远跳就JMP (前辈们说的)
.......................
接下来就是到程序的入口了来个断点
然后alt+f9
--------------------------------------------------------------------------------------
0012F6C8 01115F4C /CALL 到 CreateThread 来自 01115F46
0012F6CC 00000000 |pSecurity = NULL
0012F6D0 00000000 |StackSize = 0
0012F6D4 01116EB0 |ThreadFunction = 01116EB0
0012F6D8 00000000 |pThreadParm = NULL
0012F6DC 00000000 |CreationFlags = 0
--------------------------------------------------------------------------------------
01115F4C 50 push eax
01115F4D FF15 90221501 call dword ptr ds: ; kernel32.CloseHandle
01115F53 5E pop esi
01115F54 5B pop ebx
01115F55 8BE5 mov esp,ebp
01115F57 5D pop ebp
01115F58 C3 retn
,然后一直F8,
看到有CALL edx那里,就F7
01132DD2 2B55 DC sub edx,dword ptr ss:
01132DD5 FFD2 call edx 传说中的.........F7
01132DD7 8945 FC mov dword ptr ss:,eax
01132DDA 8B45 FC mov eax,dword ptr ss:
0048C9C0 55 push ebp 这里????????
0048C9C1 8BEC mov ebp,esp
0048C9C3 83C4 F0 add esp,-10
0048C9C6 B8 90B84800 mov eax,pepskyCD.0048B890
0048C9CB E8 00A1F7FF call pepskyCD.00406AD0
0048C9D0 A1 F0FB4800 mov eax,dword ptr ds:
0048C9D5 8B00 mov eax,dword ptr ds:
0048C9D7 E8 6484FDFF call pepskyCD.00464E40
0048C9DC 8B0D 24FD4800 mov ecx,dword ptr ds: ; pepskyCD.004936C4
0048C9E2 A1 F0FB4800 mov eax,dword ptr ds:
打开lordPE和importRCE
脱壳修复。
脱下来的程序有7M之多,减一下肥。
用lordPE打开脱壳的程序,删除后面的那几个区段(最后那个别删,我也不知道为什么:lol )重建一下。
变成了3.54M
经测试程序可以运行
壳脱完了就是破解了。
放入OD
F9让程序运行。
注册,F12 alt+k
来到关键地方
00D3063E E8 3D98F5FF call CheckReg.00C89E80 程序注册码由5段组成
00D30643 83F8 05 cmp eax,5 每一段注册码的位数和5比较
00D30646 0F85 80000000 jnz CheckReg.00D306CC
00D3064C 8D55 D0 lea edx,dword ptr ss:
00D3064F 8B83 9C030000 mov eax,dword ptr ds:
00D30655 E8 2ADCF9FF call CheckReg.00CCE284
00D3065A 8B45 D0 mov eax,dword ptr ss:
00D3065D E8 724EF5FF call CheckReg.00C854D4
00D30662 E8 1998F5FF call CheckReg.00C89E80
00D30667 83F8 05 cmp eax,5 ......................
00D3066A 75 60 jnz short CheckReg.00D306CC
00D3066C 8D55 CC lea edx,dword ptr ss:
00D3066F 8B83 A0030000 mov eax,dword ptr ds:
00D30675 E8 0ADCF9FF call CheckReg.00CCE284
00D3067A 8B45 CC mov eax,dword ptr ss:
00D3067D E8 524EF5FF call CheckReg.00C854D4
00D30682 E8 F997F5FF call CheckReg.00C89E80
00D30687 83F8 05 cmp eax,5 ..................
00D3068A 75 40 jnz short CheckReg.00D306CC
00D3068C 8D55 C8 lea edx,dword ptr ss:
00D3068F 8B83 A4030000 mov eax,dword ptr ds:
00D30695 E8 EADBF9FF call CheckReg.00CCE284
00D3069A 8B45 C8 mov eax,dword ptr ss:
00D3069D E8 324EF5FF call CheckReg.00C854D4
00D306A2 E8 D997F5FF call CheckReg.00C89E80
00D306A7 83F8 05 cmp eax,5 .......................
00D306AA 75 20 jnz short CheckReg.00D306CC
00D306AC 8D55 C4 lea edx,dword ptr ss:
00D306AF 8B83 A8030000 mov eax,dword ptr ds:
00D306B5 E8 CADBF9FF call CheckReg.00CCE284
00D306BA 8B45 C4 mov eax,dword ptr ss:
00D306BD E8 124EF5FF call CheckReg.00C854D4
00D306C2 E8 B997F5FF call CheckReg.00C89E80
00D306C7 83F8 05 cmp eax,5 .............................
.....................................
00D30790 8B45 AC mov eax,dword ptr ss:
00D30793 E8 2491F5FF call CheckReg.00C898BC
00D30798 8BC8 mov ecx,eax
00D3079A 8BC6 mov eax,esi
00D3079C BF 10270000 mov edi,2710 ?
00D307A1 33D2 xor edx,edx
00D307A3 F7F7 div edi
00D307A5 8BF8 mov edi,eax
00D307A7 8BC1 mov eax,ecx
00D307A9 B9 10270000 mov ecx,2710
00D307AE 33D2 xor edx,edx
00D307B0 F7F1 div ecx
................................
至于算法我完全不懂,哪位仁兄愿意完成之?
00D30845 5A pop edx
00D30846 58 pop eax
00D30847 90 nop 这里NOP
00D30848 90 nop
00D30849 90 nop
00D3084A 90 nop
00D3084B 90 nop
00D3084C 90 nop
00D3084D 8D55 9C lea edx,dword ptr ss:
00D30850 8B83 A8030000 mov eax,dword ptr ds:
00D30870 3B0424 cmp eax,dword ptr ss:
00D30873 5A pop edx
00D30874 58 pop eax
00D30875 90 nop 这里Nop
00D30876 90 nop
00D30877 90 nop
00D30878 90 nop
00D30879 90 nop
00D3087A 90 nop
00D3087B 8D55 98 lea edx,dword ptr ss:
00D3087E 8B83 98030000 mov eax,dword ptr ds:
以上两处NOP后保存,覆盖原来的那个Dll(CheckReg.dll),随便运行输入5段5位数就OK。
以上本人是在今天破解这个软件的一点记录。
我今天测试了一下,复制不了DVD(难道是刻录机的问题)。 很详细啊,学习了。 厉害,高手。如果能找出算法就更完美了 可以找出注册码的。。。 学习了撒 呵呵 不错的方法 :lol来学习下 可以找出注册码的。。。
lovettww 发表于 2010-1-10 22:39 http://bbs.52pojie.cn/images/common/back.gif
看一下你的方法/。。。 我记得好像只需要改一个字节就可以完美破解了 学习了,还是不懂 很详细,跟楼主学习
页:
[1]
2