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

【文章标题】: 《俪影2046》v2.09 完美破解
【文章作者】: ccrack
【作者邮箱】: ccrack@126.com
【作者主页】: http://blog.csdn.net/ccrack
【作者QQ号】: 627697523
【软件名称】: 《俪影2046》v2.09
【下载地址】: 自己搜索下载
【加壳方式】: 无
【保护方式】: 无
【编写语言】: vc2005
【使用工具】: OD,PEID
【操作平台】: WinXP
【软件介绍】: 一款不错的图片制作软件
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
  该软件对于没有图像制作经验的人,绝对是好帮手。很多精美漂亮的模板只要往上一拖即可。
  软件的未注册版限制了保存图像和打印图像功能。 其他功能没有限制。
 
  JackyChou已详细介绍了这款软件的破解过程,参考文章
  http://www.unpack.cn/viewthread.php?tid=23789     [UnPack论坛已关闭]
 
  下面我们参考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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值