您的位置:首页 > 其它

《俪影2046》v2.09 完美破解

2014-06-20 12:22 113 查看
【文章标题】: 《俪影2046》v2.09 完美破解
【文章作者】: ccrack
【作者邮箱】: ccrack@126.com
【作者主页】: http://blog.163.com/ccrack@126/
【作者QQ号】: 627697523
【软件名称】: 《俪影2046》v2.09
【下载地址】: 自己搜索下载
【加壳方式】: 无
【保护方式】: 无
【编写语言】: vc2005
【使用工具】: OD,PEID
【操作平台】: WinXP
【软件介绍】: 一款不错的图片***软件
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
该软件对于没有图像***经验的人,绝对是好帮手。很多精美漂亮的模板只要往上一拖即可。
软件的未注册版限制了保存图像和打印图像功能。 其他功能没有限制。

JackyChou已详细介绍了这款软件的破解过程,参考文章
http://www.unpack.cn/viewthread.php?tid=23789

下面我们参考JackyChou的破文进行破解,PEID查壳,无壳,入口地址0006F82B
OD载入,应该停在0046F82B,如不在0046F82B,可直接Ctrl+G直接前往该地址
往下看看,可以看到MFC8.0的类库,确认VC2005编写的程序。
0046F82B > $ E8 13070000 call 0046FF43
0046F830 .^ E9 36FDFFFF jmp 0046F56B
0046F835 . 53 push ebx
0046F836 . 8A5C24 08 mov bl, byte ptr [esp+8]
0046F83A . F6C3 02 test bl, 2
0046F83D . 56 push esi
0046F83E . 8BF1 mov esi, ecx
0046F840 . 74 24 je short 0046F866
0046F842 . 57 push edi
0046F843 . 68 F8014700 push <jmp.&MSVCR80.type_info::_type_i>; 入口地址
0046F848 . 8D7E FC lea edi, dword ptr [esi-4]
0046F84B . FF37 push dword ptr [edi]
0046F84D . 6A 0C push 0C
0046F84F . 56 push esi
0046F850 . E8 8D000000 call 0046F8E2
0046F855 . F6C3 01 test bl, 1
0046F858 . 74 07 je short 0046F861
0046F85A . 57 push edi ; /block
0046F85B . E8 90EAFFFF call <jmp.&MFC80U.#764> ; \free
0046F860 . 59 pop ecx
0046F861 > 8BC7 mov eax, edi
0046F863 . 5F pop edi
0046F864 . EB 13 jmp short 0046F879
0046F866 > E8 8D090000 call <jmp.&MSVCR80.type_info::_type_i>
0046F86B . F6C3 01 test bl, 1
0046F86E . 74 07 je short 0046F877
0046F870 . 56 push esi ; /block
0046F871 . E8 7AEAFFFF call <jmp.&MFC80U.#764> ; \free
0046F876 . 59 pop ecx
0046F877 > 8BC6 mov eax, esi
0046F879 > 5E pop esi
0046F87A . 5B pop ebx
0046F87B . C2 0400 retn 4
0046F87E .- FF25 F8D04700 jmp dword ptr [<&MSVCR80._purecall>] ; MSVCR80._purecall
0046F884 $ 6A 14 push 14


软件启动时,在未注册的情况下,会显示一个欢迎窗口,并有注册按钮,必须点了确定按钮后才能进行其他操作。
现在我们开始查找去除注册限制。
说明该对话框为模态对话框,这样就找到跟踪入口了,下断API DestroyWindow函数。
点了确定按钮后,在OD中断下了,ALT + K,看看主程序那个Call调用了DestroyWindow函数。

0040F92D > \57 push edi
0040F92E . 8BCE mov ecx, esi
0040F930 . E8 38F9FFFF call 0040F26D ; 关键CALL
0040F935 . 85C0 test eax, eax
0040F937 . 75 2A jnz short 0040F963 ; 关键跳转
0040F939 . 57 push edi
0040F93A . 8D8D 48FFFFFF lea ecx, dword ptr [ebp-B8]
0040F940 . E8 02E00500 call 0046D947
0040F945 . 8D8D 48FFFFFF lea ecx, dword ptr [ebp-B8]
0040F94B . C645 FC 07 mov byte ptr [ebp-4], 7
0040F94F . E8 6AEB0500 call <jmp.&MFC80U.#2011> ; 调用模态对话框,欢迎窗口
0040F954 . 8D8D 48FFFFFF lea ecx, dword ptr [ebp-B8]

引用JackyChou的话:
上面00410D4E . E8 93F9FFFF call 004106E6 这个关键CALL在程序中很多对方进行了调用,推测该函数就是一个
注册验证函数,所以可以在这个函数里面可以进行完全破解。
F7跟进。

0040F26D /$ 68 44020000 push 244
0040F272 |. B8 CB1D4700 mov eax, 00471DCB
0040F277 |. E8 48070600 call 0046F9C4
0040F27C |. BE DCD44700 mov esi, 0047D4DC
0040F281 |. 56 push esi
0040F282 |. 68 48D64700 push 0047D648 ; UNICODE "PassWord"
0040F287 |. BF 5CD64700 mov edi, 0047D65C ; UNICODE "Register"
0040F28C |. 57 push edi
0040F28D |. 8D45 9C lea eax, [local.25]
0040F290 |. 50 push eax
0040F291 |. 894D 94 mov [local.27], ecx
0040F294 |. E8 67F20500 call <jmp.&MFC80U.#3104>
0040F299 |. 8365 FC 00 and [local.1], 0
0040F29D |. 6A 14 push 14
0040F29F |. 5B pop ebx
0040F2A0 |. 53 push ebx ; /n => 14 (20.)
0040F2A1 |. 8D45 A0 lea eax, [local.24] ; |
0040F2A4 |. 6A 00 push 0 ; |c = 00
0040F2A6 |. 50 push eax ; |s
0040F2A7 |. E8 92080600 call <jmp.&MSVCR80.memset> ; \memset
0040F2AC |. 83C4 0C add esp, 0C
0040F2AF |. 8D45 8C lea eax, [local.29]
0040F2B2 |. 50 push eax
0040F2B3 |. E8 BBFDFFFF call 0040F073
0040F2B8 |. 8B4D 94 mov ecx, [local.27]
0040F2BB |. 56 push esi
0040F2BC |. 68 70D64700 push 0047D670 ; UNICODE "Email"
0040F2C1 |. 57 push edi
0040F2C2 |. 8D45 98 lea eax, [local.26]
0040F2C5 |. 50 push eax
0040F2C6 |. E8 35F20500 call <jmp.&MFC80U.#3104>
0040F2CB |. 8D4D 98 lea ecx, [local.26]
0040F2CE |. C645 FC 01 mov byte ptr [ebp-4], 1
0040F2D2 |. FF15 58CE4700 call dword ptr [<&MFC80U.#3927>] ; MFC80U.78303FC6
0040F2D8 |. 84C0 test al, al
0040F2DA |. 74 27 je short 0040F303
0040F2DC |. 8B4D 94 mov ecx, [local.27]
0040F2DF |. 8D45 90 lea eax, [local.28]
0040F2E2 |. 50 push eax
0040F2E3 |. E8 5CF0FFFF call 0040E344
0040F2E8 |. 50 push eax
0040F2E9 |. 8D4D 98 lea ecx, [local.26]
0040F2EC |. C645 FC 02 mov byte ptr [ebp-4], 2
0040F2F0 |. FF15 90CE4700 call dword ptr [<&MFC80U.#774>] ; MFC80U.7830609C
0040F2F6 |. 8D4D 90 lea ecx, [local.28]
0040F2F9 |. C645 FC 01 mov byte ptr [ebp-4], 1
0040F2FD |. FF15 0CD04700 call dword ptr [<&MFC80U.#577>] ; MFC80U.78306092
0040F303 |> 8D4D 9C lea ecx, [local.25]
0040F306 |. FF15 48C34700 call dword ptr [<&MFC80U.#4074>] ; MFC80U.783067C3
0040F30C |. 68 D4FE4700 push 0047FED4 ; UNICODE "45p734p434p545p3"
0040F311 |. 8D4D 9C lea ecx, [local.25]
0040F314 |. FF15 5CC34700 call dword ptr [<&MFC80U.#1472>] ; MFC80U.7830620D
0040F31A |. 85C0 test eax, eax
0040F31C |. 74 48 je short 0040F366
0040F31E |. 68 B0FE4700 push 0047FEB0 ; UNICODE "89d699f63d56012p"
0040F323 |. 8D4D 9C lea ecx, [local.25]
0040F326 |. FF15 5CC34700 call dword ptr [<&MFC80U.#1472>] ; MFC80U.7830620D
0040F32C |. 85C0 test eax, eax
0040F32E |. 74 36 je short 0040F366
0040F330 |. 68 8CFE4700 push 0047FE8C ; UNICODE "a47c018ed385757d"
0040F335 |. 8D4D 9C lea ecx, [local.25]
0040F338 |. FF15 5CC34700 call dword ptr [<&MFC80U.#1472>] ; MFC80U.7830620D
0040F33E |. 85C0 test eax, eax
0040F340 |. 74 24 je short 0040F366
0040F342 |. 68 68FE4700 push 0047FE68 ; UNICODE "8888888888888888"
0040F347 |. 8D4D 9C lea ecx, [local.25]
0040F34A |. FF15 5CC34700 call dword ptr [<&MFC80U.#1472>] ; MFC80U.7830620D
0040F350 |. 85C0 test eax, eax
0040F352 |. 74 12 je short 0040F366
0040F354 |. 68 44FE4700 push 0047FE44 ; UNICODE "a45c01ked3457574"
0040F359 |. 8D4D 9C lea ecx, [local.25]
0040F35C |. FF15 5CC34700 call dword ptr [<&MFC80U.#1472>] ; MFC80U.7830620D
0040F362 |. 85C0 test eax, eax
0040F364 |. 75 0A jnz short 0040F370
0040F366 |> 56 push esi
0040F367 |. 8D4D 9C lea ecx, [local.25]
0040F36A |. FF15 04D04700 call dword ptr [<&MFC80U.#776>] ; MFC80U.783060AE
0040F370 |> 53 push ebx ; /n
0040F371 |. 33F6 xor esi, esi ; |
0040F373 |. 8D45 DC lea eax, [local.9] ; |
0040F376 |. 56 push esi ; |c => 00
0040F377 |. 50 push eax ; |s
0040F378 |. E8 C1070600 call <jmp.&MSVCR80.memset> ; \memset
0040F37D |. 83C4 0C add esp, 0C
0040F380 |. 53 push ebx
0040F381 |. 8D45 DC lea eax, [local.9]
0040F384 |. 50 push eax
0040F385 |. 8D4D 98 lea ecx, [local.26]
0040F388 |. FF15 B0CE4700 call dword ptr [<&MFC80U.#870>] ; MFC80U.7839502E
0040F38E |. 50 push eax
0040F38F |. FF15 A0C04700 call dword ptr [<&Convert20.ThWCharTo>; Convert2.ThWCharToMByte
0040F395 |. 53 push ebx ; /n
0040F396 |. 8D45 DC lea eax, [local.9] ; |
0040F399 |. 50 push eax ; |src
0040F39A |. 8D45 A0 lea eax, [local.24] ; |
0040F39D |. 50 push eax ; |dest
0040F39E |. E8 29080600 call <jmp.&MSVCR80.memcpy> ; \memcpy
0040F3A3 |. 53 push ebx ; /n
0040F3A4 |. 8D45 C8 lea eax, [local.14] ; |
0040F3A7 |. 56 push esi ; |c
0040F3A8 |. 50 push eax ; |s
0040F3A9 |. E8 90070600 call <jmp.&MSVCR80.memset> ; \memset
0040F3AE |. 53 push ebx ; /n
0040F3AF |. 8D45 B4 lea eax, [local.19] ; |
0040F3B2 |. 56 push esi ; |c
0040F3B3 |. 50 push eax ; |s
0040F3B4 |. E8 85070600 call <jmp.&MSVCR80.memset> ; \memset
0040F3B9 |. 83C4 30 add esp, 30
0040F3BC |. 6A 08 push 8
0040F3BE |. 8D45 C8 lea eax, [local.14]
0040F3C1 |. 50 push eax
0040F3C2 |. 51 push ecx
0040F3C3 |. 8D45 9C lea eax, [local.25]
0040F3C6 |. 8BCC mov ecx, esp
0040F3C8 |. 8965 90 mov [local.28], esp
0040F3CB |. 50 push eax
0040F3CC |. FF15 80CE4700 call dword ptr [<&MFC80U.#280>] ; MFC80U.78305C90
0040F3D2 |. E8 3A8E0400 call 00458211
0040F3D7 |. 8D45 B4 lea eax, [local.19]
0040F3DA |. 50 push eax
0040F3DB |. 8D45 C8 lea eax, [local.14]
0040F3DE |. 50 push eax
0040F3DF |. 33FF xor edi, edi
0040F3E1 |. 68 B0494A00 push 004A49B0 ; ASCII "238990123478987"
0040F3E6 |. 47 inc edi
0040F3E7 |. 57 push edi
0040F3E8 |. E8 20E1FFFF call 0040D50D
0040F3ED |. 83C4 1C add esp, 1C
0040F3F0 |. 8BCF mov ecx, edi
0040F3F2 |. 33C0 xor eax, eax
0040F3F4 |> 8A5405 A0 /mov dl, byte ptr [ebp+eax-60]
0040F3F8 |. 3A5405 B4 |cmp dl, byte ptr [ebp+eax-4C]
0040F3FC |. 74 02 |je short 0040F400
0040F3FE |. 33C9 |xor ecx, ecx
0040F400 |> 40 |inc eax
0040F401 |. 3BC3 |cmp eax, ebx
0040F403 |.^ 7C EF \jl short 0040F3F4
0040F405 |. 3BCE cmp ecx, esi
0040F407 |. /74 1C je short 0040F425 ; 关键跳转,NOP即可验证成功。
0040F409 |. 8D4D 98 lea ecx, [local.26]
0040F40C |. FF15 0CD04700 call dword ptr [<&MFC80U.#577>] ; MFC80U.78306092
0040F412 |. 8D4D 9C lea ecx, [local.25]
0040F415 |. FF15 0CD04700 call dword ptr [<&MFC80U.#577>] ; MFC80U.78306092
0040F41B |. 8BC7 mov eax, edi
0040F41D |> E8 25060600 call 0046FA47
0040F422 |. C2 0400 retn 4
0040F425 |> 8B4D 94 mov ecx, [local.27]
0040F428 |. E8 3DEDFFFF call 0040E16A
0040F42D |. 85C0 test eax, eax
0040F42F |. 74 18 je short 0040F449
0040F431 |> 8BF7 mov esi, edi
0040F433 |> 8D4D 98 lea ecx, [local.26]
0040F436 |. FF15 0CD04700 call dword ptr [<&MFC80U.#577>] ; MFC80U.78306092
0040F43C |. 8D4D 9C lea ecx, [local.25]
0040F43F |. FF15 0CD04700 call dword ptr [<&MFC80U.#577>] ; MFC80U.78306092
0040F445 |. 8BC6 mov eax, esi
0040F447 |.^ EB D4 jmp short 0040F41D
0040F449 |> 3975 08 cmp [arg.1], esi
0040F44C |.^ 74 E5 je short 0040F433
0040F44E |. 56 push esi
0040F44F |. 8D8D B0FDFFFF lea ecx, [local.148]
0040F455 |. E8 4C8C0400 call 004580A6
0040F45A |. 8D8D B0FDFFFF lea ecx, [local.148]
0040F460 |. C645 FC 03 mov byte ptr [ebp-4], 3
0040F464 |. E8 55F00500 call <jmp.&MFC80U.#2011>
0040F469 |. 3BC7 cmp eax, edi
0040F46B |. C645 FC 01 mov byte ptr [ebp-4], 1
0040F46F |. 8D8D B0FDFFFF lea ecx, [local.148]
0040F475 |. 75 07 jnz short 0040F47E
0040F477 |. E8 F1ECFFFF call 0040E16D
0040F47C |.^ EB B3 jmp short 0040F431
0040F47E |> E8 EAECFFFF call 0040E16D
0040F483 \.^ EB AE jmp short 0040F433


修改完保存软件,运行。OK,没有欢迎窗口,菜单里面点注册,提示注册成功。
不过,没有结束!JackyChou破解出现一个小问题!
如果界面中央出现一个没有标题栏的非模态窗口,并且永远桌面上程序在最顶层,上面信息写着“您使用的
软件是破解的XXXXX”的字样。说明程序在启动的地方进行了再次验证。
我把所有调用注册子程序的地址都罗列出来,大家进去直接更改就OK了!
CALL 来自 004015E9
CALL 来自 0040F542
CALL 来自 0040F55F
CALL 来自 0040F930
CALL 来自 0040FAA0
CALL 来自 00411C26
CALL 来自 00420978
CALL 来自 0042B0FE
CALL 来自 0042E44E
CALL 来自 00436A7E
CALL 来自 00436AA4
CALL 来自 00456055
CALL 来自 00456938
CALL 来自 00457120
CALL 来自 00457911
CALL 来自 00457952
CALL 来自 004584F6

未完,接下去我将分析注册算法!

--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!
2009年12月26日 17:02:30
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: