【文章标题】: PhotoZoomPro2 2.1.8 脱壳修复与破解(合精版)
【文章作者】: [qyc]小Q
【作者主页】: http://www.iv2.cn
【软件名称】: PhotoZoomPro2
【软件大小】: 3.35M
【下载地址】: 自己搜索下载
【加壳方式】: ASProtect 2.1x SKE -> Alexey Solodovnikov-->Version: ASProtect 1.35 build 04.25 or 06.26 Release [Extract]
【保护方式】: 加密壳
【编写语言】: VC++
【使用工具】: PEID IRE OD
【操作平台】: Win XP SP2
【软件介绍】: PhotoZoomPro2是一个图片放大软件
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【详细过程】
        原贴 : http://bbs.pediy.com/showthread.php?threadid=37499  这个贴只是修正! 让文章完整一些!
    
        PhotoZoomPro2是一个图片放大软件,小Q一直以来都是用最低版本的!知到有最新版!可以就是没有用的机会,因为没有破解! 
    自己以前脱壳技术水平又不高一直没对它下手! 直到Aspr2.XX_IATfixer_v2.2s.osc的出现,才给了偶这次动它的机会,今天
    公司叫偶放大图片就再次下PhotoZoomPro2 最新版本是: 2.1.8
      
    PEID--->ASProtect 2.1x SKE -> Alexey Solodovnikov
      
    插件--->Version: ASProtect 1.35 build 04.25 or 06.26 Release [Extract]
      
    1. 解决问题: 变态自校验
      
    OD 加载 程序 Aspr2.XX_IATfixer_v2.2s.osc 脚本完全dumped,IRE修复IAT,一个指针未修复,用插件搞定! 下面是精彩部分
      
    运行程序发现出错不能运行,一开始还以为壳偷了代码,认为10分变态,我所知ASProtect 1.35是不会偷代码的!
    
    脱壳后变态入口:
    00584FEF > $  E8 190D0100   call    00595D0D-------->F8死// F7进
    00584FF4   .^ E9 16FEFFFF   jmp     00584E0F
    00584FF9   $  6A 0C         push    0C
    00584FFB   .  68 F0D16F00   push    006FD1F0
    00585000   .  E8 DFC40000   call    005914E4
    00585005   .  8B75 08       mov     esi, [ebp+8]
    =================================================================
    来到:
    =================================================================
    00584F47   .  85C0          test    eax, eax
    00584F49   .  7D 08         jge     short 00584F53
    00584F4B   .  6A 09         push    9
    00584F4D   .  E8 90330000   call    005882E2
    00584F52   .  59            pop     ecx
    00584F53   >  53            push    ebx
    00584F54   .  E8 A5340000   call    005883FE--------------->内存异常!程序不可读! F7进
    00584F59   .  59            pop     ecx
    00584F5A   .  85C0          test    eax, eax
    00584F5C   .  74 07         je      short 00584F65
    ================================================================
    下面就是变态过程:
    ================================================================
    00588456  |. /73 0F         jnb     short 00588467
    00588458  |> |8B06          /mov     eax, [esi]
    0058845A  |. |85C0          |test    eax, eax
    0058845C  |. |74 02         |je      short 00588460
    0058845E  |. |FFD0          |call    eax    --------> 相当变态的动态地址(异常将在这里发生)!
    00588460  |> |83C6 04       |add     esi, 4
    00588463  |. |3BF7          |cmp     esi, edi
    00588465  |.^|72 F1         \jb      short 00588458------->来回不知多少次,你别用F8了!
    00588467  |> \833D BC1F7500>cmp     dword ptr [751FBC], 0
    =====================================================================================
    直接 F9 后,错误提示内存00FC0000不可读.见图! 好伽伙,这招毒啊! 
       
    =====================================================================================
    点确定后! 看堆栈: (这是由CCDebuger的提示!,错误精确定位法)
    =====================================================================================
    0012FF14   005BFC10  返回到 dumped_.005BFC10 来自 dumped_.0058CD38---->这里回车
    0012FF18   005EB69F  返回到 dumped_.005EB69F 来自 dumped_.005BFC06
    0012FF1C   00632E7C  ASCII "file" -------------------->这分明就是在检验文件吗! 
    =====================================================================================
    005BFC06  /$  B8 A3125E00   mov     eax, 005E12A3
    005BFC0B  |.  E8 28D1FCFF   call    0058CD38--------->这里一定是出错地方 (F2下断)
    005BFC10  |.  51            push    ecx-------------->找到这里
    005BFC11  |.  56            push    esi
    005BFC12  |.  8BF1          mov     esi, ecx
    =====================================================================================
    重载进入call    0058CD38 :
    =====================================================================================
    0058CD38  /$  68 0000FC00   push    0FC0000------>是不是错误提示地址啊
    0058CD3D  \.  C3            retn
    0058CD3E      AE            db      AE
    0058CD3F      2D            db      2D                               ;  CHAR '-'
    0058CD40      1B            db      1B
    0058CD41      77            db      77                               ;  CHAR 'w'
    0058CD42      BD            db      BD
    0058CD43      5E            db      5E                               ;  CHAR '^'
    0058CD44      8B            db      8B
    0058CD45      BC            db      BC
    0058CD46      19            db      19
    0058CD47      42            db      42                               ;  CHAR 'B'
    0058CD48      B5            db      B5
    0058CD49      35            db      35                               ;  CHAR '5'
    0058CD4A      E4            db      E4
    0058CD4B      AF            db      AF
    0058CD4C      57            db      57                               ;  CHAR 'W'
    0058CD4D      E7            db      E7
    0058CD4E      C6            db      C6
    0058CD4F      2C            db      2C                               ;  CHAR ','
    0058CD50      2E            db      2E                               ;  CHAR '.'
    0058CD51      22            db      22                               ;  CHAR '"'
    0058CD52      D5            db      D5
    0058CD53      0A            db      0A
    0058CD54      D9            db      D9
    0058CD55      BD            db      BD
    0058CD56      CA            db      CA
    0058CD57      CC            int3
    ======================================================================================
    执行push 0FC0000后就是空白代码,程序出错,程序被WINDOWS 关闭,所有问题连接而来(狂晕中).
      
    55555,要是偶能用程序语言写出代码就好罗,可是写不出,呵呵!
      
    以上所知!找到了问题所在,那就是出注意解决问题啦! 各位考考你们,让想到啦,请举手哈(鸡蛋青菜全向偶飞来!不要,我马上解决)
    
    解决问题很简单:跟踪原程序(哈哈!大家别扁偶啊,老大们都是这样做的)
    =====================================================================================
    以下代码是由cyto兄提供的(代码大小字节写入刚刚好) (不过用我跟到的代码也行,不过你得找空间写,详情请见原贴)
    =====================================================================================
    Emulate Standard system Functions.
    可以在原处还原.
    0058CD38     6A FF              push -1
    0058CD3A     50                 push eax
    0058CD3B     64:A1 00000000     mov eax,dword ptr fs:[0]
    0058CD41     50                 push eax
    0058CD42     8B4424 0C          mov eax,dword ptr ss:[esp+C]
    0058CD46     64:8925 00000000   mov dword ptr fs:[0],esp
    0058CD4D     896C24 0C          mov dword ptr ss:[esp+C],ebp
    0058CD51     8D6C24 0C          lea ebp,dword ptr ss:[esp+C]
    0058CD55     50                 push eax
    0058CD56     C3                 retn
    ===========================================================================================
    16进:
    
    6A FF 50 64 A1 00 00 00 00 50 8B 44 24 0C 64 89 25 00 00 00 00 89 6C 24 0C 8D 6C 24 0C 50 C3
    
    ============================================================================================
    OK ,保存后,测试运行程序(已可运行!) 
    ============================================================================================
    以下代码machenglin兄提供修改(不过,程序已可运行),得问一下machenglin兄为何要修改???
    第1处修改:
    原来是:
    00400138    0010              add byte ptr ds:[eax],dl
    0040013A    0000              add byte ptr ds:[eax],al
    0040013C    0002              add byte ptr ds:[eax],dl
    修改为:
    00400138    0010              add byte ptr ds:[eax],dl
    0040013A    0000              add byte ptr ds:[eax],al
    0040013C    0010              add byte ptr ds:[eax],dl
    ===========================================================================================
    第2处修改:
    原来是:
    00720078    0000              add byte ptr ds:[eax],al
    0072007A    0000              add byte ptr ds:[eax],al
    0072007C  ^ 70 A7             jo short un_Photo.00720025
    0072007E    E3 00             jecxz short un_Photo.00720080
    修改为:
    00720078    0000              add byte ptr ds:[eax],al
    0072007A    0000              add byte ptr ds:[eax],al
    0072007C    0000              add byte ptr ds:[eax],al
    0072007E    0000              add byte ptr ds:[eax],al
    ============================================================================================
    
    
    2.解决问题:  写代码进行破解!
    ============================================================================================
    下面是破解过程(花了小Q两天的时间,与你分享一下):
    ============================================================================================
    直接运行程序进行假码分析破解! bp MessageBoxA 断下返回如下:
    
    004C1D12   > \FFB6 C8010000 push    dword ptr [esi+1C8]
    004C1D18   .  8B86 A0010000 mov     eax, [esi+1A0]
    004C1D1E   .  8B0F          mov     ecx, [edi]
    004C1D20   .  8B13          mov     edx, [ebx]
    004C1D22   .  50            push    eax
    004C1D23   .  51            push    ecx
    004C1D24   .  52            push    edx
    004C1D25   .  FF96 B4010000 call    [esi+1B4]---------------->这里重点(等一下要重载进入) F2下断
    004C1D2B   .  83C4 10       add     esp, 10
    004C1D2E   .  84C0          test    al, al
    004C1D30   .^ 0F84 52FFFFFF je      004C1C88----------------->不跳就出现注册成功(不过没用的)
    004C1D36   .  68 884B6300   push    00634B88                         ;  ASCII "Message"
    004C1D3B   .  8D4D E4       lea     ecx, [ebp-1C]
    004C1D3E   .  E8 ADF5F3FF   call    004012F0
    004C1D43   .  68 489A6200   push    00629A48                         ;  ASCII "Unlocking successful!"
    004C1D48   .  C745 FC 07000>mov     dword ptr [ebp-4], 7
    004C1D4F   .  E8 93780100   call    004D95E7
    004C1D54   .  59            pop     ecx
    004C1D55   .  50            push    eax
    004C1D56   .  8D4D E0       lea     ecx, [ebp-20]
    
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~`~
    004C1E60   .  E8 ABF4F4FF   call    00411310
    004C1E65   .  834D FC FF    or      dword ptr [ebp-4], FFFFFFFF >>>>返回这里,看上面
    004C1E69   .  8D4D EC       lea     ecx, [ebp-14]
    004C1E6C   .  E8 DFF4F3FF   call    00401350
    004C1E71   .  32C0          xor     al, al
    ================================================================================================
    进入call   [esi+1B4] 向下看:|
    ===============================================================================================
    004023A0   .  8A4C24 10     mov     cl, [esp+10]
    004023A4   .  33C0          xor     eax, eax
    004023A6   .  F6C1 07       test    cl, 7
    004023A9   .  75 07         jnz     short 004023B2
    004023AB   .  B8 04000000   mov     eax, 4
    004023B0   .  EB 0A         jmp     short 004023BC
    004023B2   >  F6C1 01       test    cl, 1
    004023B5   .  75 05         jnz     short 004023BC
    004023B7   .  B8 02000000   mov     eax, 2
    004023BC   >  8B4C24 0C     mov     ecx, [esp+C]
    004023C0   .  8B5424 08     mov     edx, [esp+8]
    004023C4   .  51            push    ecx                              ; /Arg5
    004023C5   .  8B4C24 08     mov     ecx, [esp+8]                     ; |
    004023C9   .  52            push    edx                              ; |Arg4-->邮件地址
    004023CA   .  51            push    ecx                              ; |Arg3-->用户名
    004023CB   .  BA 06000000   mov     edx, 6                           ; |
    004023D0   .  2BD0          sub     edx, eax                         ; |
    004023D2   .  52            push    edx                              ; |Arg2 假码
    004023D3   .  68 04507000   push    00705004                         ; |Arg1 = 00705004
    004023D8   .  E8 1CCD0B00   call    004BF0F9  ------------>重点进行比较解码! F7 进
    004023DD   .  83C4 14       add     esp, 14
    004023E0   .  85C0          test    eax, eax
    004023E2   .  A3 90FF7100   mov     [71FF90], eax
    004023E7   .  0F9DC0        setge   al
    004023EA   .  C3            retn
    =============================================================================================
    004BF0F9  /$  55            push    ebp
    004BF0FA  |.  8BEC          mov     ebp, esp
    004BF0FC  |.  56            push    esi
    004BF0FD  |.  33F6          xor     esi, esi
    004BF0FF  |.  3975 0C       cmp     [ebp+C], esi
    004BF102  |.  7E 21         jle     short 004BF125
    004BF104  |>  FF75 18       /push    dword ptr [ebp+18]
    004BF107  |.  8B45 08       |mov     eax, [ebp+8]
    004BF10A  |.  FF75 14       |push    dword ptr [ebp+14]
    004BF10D  |.  FF75 10       |push    dword ptr [ebp+10]
    004BF110  |.  FF34B0        |push    dword ptr [eax+esi*4]
    004BF113  |.  E8 34FDFFFF   |call    004BEE4C-------------->比较,算法全在这里进行!(小Q跟得大多了,不进)
    004BF118  |.  83C4 10       |add     esp, 10
    004BF11B  |.  84C0          |test    al, al
    004BF11D  |.  75 0C         |jnz     short 004BF12B--->呵呵//很重要,注册比较成功,第一个将会跳! 
    004BF11F  |.  46            |inc     esi              ;要不然就再比较其它操作系统的注册码! 这里 JMP 保存
    004BF120  |.  3B75 0C       |cmp     esi, [ebp+C]
    004BF123  |.^ 7C DF         \jl      short 004BF104
    004BF125  |>  83C8 FF       or      eax, FFFFFFFF
    004BF128  |>  5E            pop     esi
    004BF129  |.  5D            pop     ebp
    004BF12A  |.  C3            retn
    004BF12B  |>  8BC6          mov     eax, esi
    004BF12D  \.^ EB F9         jmp     short 004BF128
    ============================================================================================
    保存后进行注册!说是成功了后软件被关闭了//哈哈//再运行//软件被无情关闭,软件作者毒啊! 以下代码小Q跟了一天!
    ============================================================================================
    004059AB   .  E8 B6990B00   call    004BF366---------------> 这里检验是否进行注册过
    004059B0   .  83C4 10       add     esp, 10
    004059B3   .  84C0          test    al, al
    004059B5   .  0F84 1C010000 je      00405AD7--------->没注册就跳(为什么我没注册修改上面004BF11D,不会关闭,就是这里跳了,呵呵)
    004059BB   .  8B4C24 44     mov     ecx, [esp+44]
    004059BF   .  8B5424 4C     mov     edx, [esp+4C]
    004059C3   .  8B4424 54     mov     eax, [esp+54]
    004059C7   .  51            push    ecx                              ; /Arg5
    004059C8   .  52            push    edx                              ; |Arg4
    004059C9   .  50            push    eax                              ; |Arg3
    004059CA   .  6A 06         push    6                                ; |Arg2 = 00000006
    004059CC   .  68 04507000   push    00705004                         ; |Arg1 = 00705004
    004059D1   .  E8 23970B00   call    004BF0F9 --------->这里检验注册码是正确(也是检验老注册或被放水的注册码)
    004059D6   .  83C4 14       add     esp, 14
    004059D9   .  85C0          test    eax, eax
    004059DB   .  A3 00507000   mov     [705000], eax
    004059E0   .  7C 3C         jl      short 00405A1E---->放水的,假的注册码,都会跳去告诉你此注册非法
    004059E2   .  8B4C24 54     mov     ecx, [esp+54]
    004059E6   .  51            push    ecx
    004059E7   .  8D8D AC000000 lea     ecx, [ebp+AC]
    004059ED   .  E8 3EE20200   call    00433C30
    004059F2   .  8B5424 4C     mov     edx, [esp+4C]
    004059F6   .  52            push    edx
    004059F7   .  8D8D B0000000 lea     ecx, [ebp+B0]
    004059FD   .  E8 2EE20200   call    00433C30
    00405A02   .  8B4424 44     mov     eax, [esp+44]
    00405A06   .  50            push    eax
    00405A07   .  8D8D B4000000 lea     ecx, [ebp+B4]
    00405A0D   .  E8 1EE20200   call    00433C30
    00405A12   .  C685 A9000000>mov     byte ptr [ebp+A9], 1
    00405A19   .  E9 B9000000   jmp     00405AD7
    00405A1E   .  A1 4CE27000   mov     eax, [70E24C]
    00405A23   .  85C0          test    eax, eax
    00405A25   .  75 05         jnz     short 00405A2C
    00405A27   .  B8 55F55E00   mov     eax, 005EF555
    00405A2C   >  8B0D 78D76200 mov     ecx, [62D778]
    00405A32   .  51            push    ecx
    00405A33   .  6A 00         push    0
    00405A35   .  50            push    eax
    00405A36   .  8D4C24 20     lea     ecx, [esp+20]
    00405A3A   .  E8 E1E00200   call    00433B20
    00405A3F   .  B3 21         mov     bl, 21
    00405A41   .  68 1C035F00   push    005F031C                    ;  ASCII "The unlock information you entered is invalid."
    00405A46   .  889C24 A80000>mov     [esp+A8], bl
    00405A4D   .  E8 953B0D00   call    004D95E7
    00405A52   .  83C4 04       add     esp, 4
    00405A55   .  85C0          test    eax, eax
    00405A57   .  75 05         jnz     short 00405A5E
    00405A59   .  B8 55F55E00   mov     eax, 005EF555
    00405A5E   >  8B15 78D76200 mov     edx, [62D778]
    00405A64   .  52            push    edx
    00405A65   .  6A 00         push    0
    00405A67   .  50            push    eax
    00405A68   .  8D4C24 30     lea     ecx, [esp+30]
    00405A6C   .  E8 AFE00200   call    00433B20
    00405A71   .  8D4424 14     lea     eax, [esp+14]
    00405A75   .  50            push    eax
    00405A76   .  8D4C24 28     lea     ecx, [esp+28]
    00405A7A   .  6A 00         push    0
    00405A7C   .  51            push    ecx
    00405A7D   .  C68424 B00000>mov     byte ptr [esp+B0], 22
    00405A85   .  E8 F4FA0C00   call    004D557E
    00405A8A   .  8B4C24 30     mov     ecx, [esp+30]
    00405A8E   .  8B41 F4       mov     eax, [ecx-C]
    00405A91   .  83C1 F4       add     ecx, -0C
    00405A94   .  83C4 0C       add     esp, 0C
    00405A97   .  83F8 FF       cmp     eax, -1                          ;  Switch (cases 1..1)
    00405A9A   .  889C24 A40000>mov     [esp+A4], bl
    00405AA1   .  74 0C         je      short 00405AAF
    00405AA3   .  83C0 FF       add     eax, -1
    00405AA6   .  8901          mov     [ecx], eax
    00405AA8   .  75 05         jnz     short 00405AAF
    00405AAA   .  E8 51CE0200   call    00432900                         ;  Case 1 of switch 00405A97
    00405AAF   >  8B4C24 14     mov     ecx, [esp+14]                    ;  Default case of switch 00405A97
    00405AB3   .  8B41 F4       mov     eax, [ecx-C]
    00405AB6   .  83C1 F4       add     ecx, -0C
    00405AB9   .  83F8 FF       cmp     eax, -1                          ;  Switch (cases 1..1)
    00405ABC   .  C68424 A40000>mov     byte ptr [esp+A4], 20
    00405AC4   .  74 0C         je      short 00405AD2
    00405AC6   .  83C0 FF       add     eax, -1
    00405AC9   .  8901          mov     [ecx], eax
    00405ACB   .  75 05         jnz     short 00405AD2
    00405ACD   .  E8 2ECE0200   call    00432900                         ;  Case 1 of switch 00405AB9
    00405AD2   >  E8 AE520D00   call    004DAD85                         ;  Default case of switch 00405AB9
    00405AD7   >  8B17          mov     edx, [edi]
    00405AD9   .  8B82 10020000 mov     eax, [edx+210]
    00405ADF   .  6A 0E         push    0E
    00405AE1   .  8BCF          mov     ecx, edi
    00405AE3   .  FFD0          call    eax
    00405AE5   .  8B17          mov     edx, [edi]
    00405AE7   .  8B82 88020000 mov     eax, [edx+288]
    00405AED   .  6A 01         push    1
    00405AEF   .  8BCF          mov     ecx, edi
    00405AF1   .  FFD0          call    eax
    00405AF3   .  8D4C24 28     lea     ecx, [esp+28]
    00405AF7   .  51            push    ecx                              ; /Arg1
    00405AF8   .  8BCD          mov     ecx, ebp                         ; |
    00405AFA   .  E8 21D7FFFF   call    00403220                         ; \3.00403220
    00405AFF   .  8B8D C0000000 mov     ecx, [ebp+C0]
    00405B05   .  50            push    eax
    00405B06   .  C68424 A80000>mov     byte ptr [esp+A8], 23
    00405B0E   .  E8 2DB60000   call    00411140
    00405B13   .  8B4C24 28     mov     ecx, [esp+28]
    00405B17   .  8B41 F4       mov     eax, [ecx-C]
    00405B1A   .  83C1 F4       add     ecx, -0C
    00405B1D   .  83F8 FF       cmp     eax, -1                          ;  Switch (cases 1..1)
    00405B20   .  C68424 A40000>mov     byte ptr [esp+A4], 20
    00405B28   .  74 0C         je      short 00405B36
    00405B2A   .  83C0 FF       add     eax, -1
    00405B2D   .  8901          mov     [ecx], eax
    00405B2F   .  75 05         jnz     short 00405B36
    00405B31   .  E8 CACD0200   call    00432900                         ;  Case 1 of switch 00405B1D
    00405B36   >  8B85 C0000000 mov     eax, [ebp+C0]                    ;  Default case of switch 00405B1D
    00405B3C   .  8B80 88010000 mov     eax, [eax+188]
    00405B42   .  8B50 38       mov     edx, [eax+38]
    00405B45   .  8D48 38       lea     ecx, [eax+38]
    00405B48   .  8B42 1C       mov     eax, [edx+1C]
    00405B4B   .  FFD0          call    eax
    00405B4D   .  8B17          mov     edx, [edi]
    00405B4F   .  8B82 88000000 mov     eax, [edx+88]
    00405B55   .  6A 01         push    1
    00405B57   .  8BCF          mov     ecx, edi
    00405B59   .  FFD0          call    eax
    00405B5B   .  80BD A9000000>cmp     byte ptr [ebp+A9], 0---------->主程序窗口创建!
    00405B62   .  75 07         jnz     short 00405B6B----------->此JNE,跳就不会注册窗口
    00405B64   .  8BCD          mov     ecx, ebp
    00405B66   .  E8 F5E4FFFF   call    00404060------------->注册窗口
    00405B6B   >  8BCD          mov     ecx, ebp
    00405B6D   .  E8 DEDBFFFF   call    00403750--------------->重点! 解码CALL 刚测试运行也是在这里被关闭的 (F2下断)
    00405B72   .  8D4C24 28     lea     ecx, [esp+28]
    00405B76   .  51            push    ecx
    ==============================================================================================
    上面 004BF11D  jnz   short 004BF12B 修改成:004BF11D  JMP   short 004BF12B 
    
    都会胜利运行到 00405B6D   .  E8 DEDBFFFF   call    00403750
    ==============================================================================================
    进入 : call    00403750 向下看:|
    ==============================================================================================
    00403750   $  83EC 2C       sub     esp, 2C
    00403753   .  57            push    edi
    00403754   .  8BF9          mov     edi, ecx
    00403756   .  80BF A9000000>cmp     byte ptr [edi+A9], 0
    0040375D   .  0F84 AD010000 je      00403910
    00403763   .  803D E4FF7100>cmp     byte ptr [71FFE4], 0
    0040376A   .  0F85 A0010000 jnz     00403910
    00403770   .  55            push    ebp
    00403771   .  B8 007D7869   mov     eax, 69787D00
    00403776   .  56            push    esi
    00403777   .  A3 D8FF7100   mov     [71FFD8], eax
    0040377C   .  A3 DCFF7100   mov     [71FFDC], eax
    00403781   .  A3 E0FF7100   mov     [71FFE0], eax
    00403786   .  C705 CCFF7100>mov     dword ptr [71FFCC], 0
    00403790   .  C705 D0FF7100>mov     dword ptr [71FFD0], 17D00
    0040379A   .  C705 D4FF7100>mov     dword ptr [71FFD4], 4787D00
    004037A4   .  8B87 B4000000 mov     eax, [edi+B4]
    004037AA   .  8B8F B0000000 mov     ecx, [edi+B0]
    004037B0   .  8B97 AC000000 mov     edx, [edi+AC]
    004037B6   .  50            push    eax
    004037B7   .  A1 00507000   mov     eax, [705000]
    004037BC   .  51            push    ecx
    004037BD   .  8B0C85 045070>mov     ecx, [eax*4+705004]
    004037C4   .  52            push    edx
    004037C5   .  51            push    ecx
    004037C6   .  6A 06         push    6
    004037C8   .  68 CCFF7100   push    0071FFCC
    004037CD   .  C605 E4FF7100>mov     byte ptr [71FFE4], 1
    004037D4   .  E8 EBC30B00   call    004BFBC4
    004037D9   .  8D5424 24     lea     edx, [esp+24]
    004037DD   .  52            push    edx
    004037DE   .  6A 04         push    4
    004037E0   .  68 CCFF7100   push    0071FFCC
    004037E5   .  E8 E6750C00   call    004CADD0
    004037EA   .  A1 00507000   mov     eax, [705000]
    004037EF   .  8B3485 1C5070>mov     esi, [eax*4+70501C]
    004037F6   .  8BEE          mov     ebp, esi
    004037F8   .  8D5424 30     lea     edx, [esp+30]
    004037FC   .  83C4 24       add     esp, 24
    004037FF   .  33C9          xor     ecx, ecx
    00403801   .  2BEA          sub     ebp, edx
    00403803   >  8D440C 0C     lea     eax, [esp+ecx+C]
    00403807   .  0FB61428      movzx   edx, byte ptr [eax+ebp]
    0040380B   .  3010          xor     [eax], dl
    0040380D   .  0FB6540E 01   movzx   edx, byte ptr [esi+ecx+1]
    00403812   .  3050 01       xor     [eax+1], dl
    00403815   .  0FB6540E 02   movzx   edx, byte ptr [esi+ecx+2]
    0040381A   .  3050 02       xor     [eax+2], dl
    0040381D   .  0FB6540E 03   movzx   edx, byte ptr [esi+ecx+3]
    00403822   .  3050 03       xor     [eax+3], dl
    00403825   .  83C1 04       add     ecx, 4
    00403828   .  83F9 10       cmp     ecx, 10
    0040382B   .^ 7C D6         jl      short 00403803
    0040382D   .  6A 10         push    10
    0040382F   .  8D4424 10     lea     eax, [esp+10]
    00403833   .  50            push    eax
    00403834   .  FF15 7C007200 call    [72007C]----------->注意这里!程序运行到这里就先出错了! 原因是抽掉的GetProcAddress
    0040383A   .  EB 04         jmp     short 00403840     ;得重新指定 (因为脱壳时用插件修复的) 为:call [5EE354]
    0040383C      EB            db      EB
    0040383D      05            db      05
    0040383E   .  8901          mov     [ecx], eax
    00403840   >  6A 68         push    68
    00403842   .  68 20FB5E00   push    005EFB20
    00403847   .  68 28FF7100   push    0071FF28
    0040384C   .  E8 4FCB1200   call    005303A0
    00403851   .  8B8F B4000000 mov     ecx, [edi+B4]
    00403857   .  8B97 B0000000 mov     edx, [edi+B0]
    0040385D   .  8B87 AC000000 mov     eax, [edi+AC]
    00403863   .  51            push    ecx
    00403864   .  8B0D 00507000 mov     ecx, [705000]
    0040386A   .  52            push    edx
    0040386B   .  8B148D 045070>mov     edx, [ecx*4+705004]
    00403872   .  50            push    eax
    00403873   .  52            push    edx
    00403874   .  6A 1A         push    1A
    00403876   .  68 28FF7100   push    0071FF28
    0040387B   .  E8 44C30B00   call    004BFBC4
    00403880   .  83C4 24       add     esp, 24
    00403883   .  68 DC5B500E   push    0E505BDC
    00403888   .  8D4C24 20     lea     ecx, [esp+20]
    0040388C   .  E8 EF3E0C00   call    004C7780
    00403891   .  8D4C24 1C     lea     ecx, [esp+1C]
    00403895   .  E8 B63D0C00   call    004C7650------------->注意这个CALL(跟出解除水印重要数据!)
    0040389A   .  8B0D 00507000 mov     ecx, [705000]
    004038A0   .  8B0C8D B0F85E>mov     ecx, [ecx*4+5EF8B0]
    004038A7   .  330C85 30FF71>xor     ecx, [eax*4+71FF30]
    004038AE   .  83C0 02       add     eax, 2
    004038B1   .  81C1 A01F4000 add     ecx, 00401FA0
    004038B7   .  81E9 A01F4000 sub     ecx, 00401FA0
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~注意以下代码~~~~~~~`
    004038BD   .  E9 47000000   jmp     00403909                                        |
    004038C2      27            db      27                               ;  CHAR '''
    004038C3      77            db      77                               ;  CHAR 'w'
    004038C4   .  64:C3         retn
    004038C6      7E            db      7E                               ;  CHAR '~'
    004038C7      B9            db      B9
    004038C8   .  CB            retf
    004038C9      C1            db      C1
    004038CA      3E            db      3E                               ;  CHAR '>'
    004038CB      71            db      71                               ;  CHAR 'q'
    004038CC      B2            db      B2
    004038CD      84            db      84
    004038CE      77            db      77                               ;  CHAR 'w'
    004038CF      4D            db      4D                               ;  CHAR 'M'
    004038D0      11            db      11
    004038D1      41            db      41                               ;  CHAR 'A'
    004038D2      96            db      96
    004038D3      13            db      13
    004038D4      AB            db      AB
    004038D5      67            db      67                               ;  CHAR 'g'
    004038D6      C0            db      C0
    004038D7      81            db      81
    004038D8   .  5D            pop     ebp
    004038D9   .  C2 74A7       retn    0A774
    004038DC      48            db      48                               ;  CHAR 'H'
    004038DD      AF            db      AF
    004038DE      90            nop
    004038DF      B0            db      B0
    004038E0      D2            db      D2
    004038E1      7B            db      7B                               ;  CHAR '{'
    004038E2      0F            db      0F
    004038E3      33            db      33                               ;  CHAR '3'
    004038E4   .  B5 A7         mov     ch, 0A7
    004038E6   .  5A            pop     edx
    004038E7   .  CB            retf
    004038E8      87            db      87
    004038E9      FC            db      FC
    004038EA      18            db      18
    004038EB      73            db      73                               ;  CHAR 's'
    004038EC      63            db      63                               ;  CHAR 'c'
    004038ED      B4            db      B4
    004038EE      6F            db      6F                               ;  CHAR 'o'
    004038EF      D7            db      D7
    004038F0      7D            db      7D                               ;  CHAR '}'
    004038F1      78            db      78                               ;  CHAR 'x'
    004038F2      04            db      04
    004038F3      80            db      80
    004038F4      13            db      13
    004038F5      AB            db      AB
    004038F6      BB            db      BB
    004038F7      27            db      27                               ;  CHAR '''
    004038F8      6E            db      6E                               ;  CHAR 'n'
    004038F9      E8            db      E8
    004038FA      91            db      91
    004038FB      CC            int3
    004038FC      17            db      17
    004038FD      F4            db      F4
    004038FE      6F            db      6F                               ;  CHAR 'o'
    004038FF      36            db      36                               ;  CHAR '6'
    00403900      92            db      92
    00403901      9C            db      9C
    00403902      35            db      35                               ;  CHAR '5'
    00403903      AA            db      AA
    00403904      C0            db      C0
    00403905      6A            db      6A                               ;  CHAR 'j'
    00403906   .  DF51 B1       fist    word ptr [ecx-4F]
    00403909   >  8BCF          mov     ecx, edi
    0040390B   .  E8 B0FDFFFF   call    004036C0------------->这里你跟进会发现可以跳过未注册字样!
    00403910   >  5F            pop     edi
    00403911   .  83C4 2C       add     esp, 2C
    00403914   .  C3            retn
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~到这里结束~~~~~~~~~~~~~~
    ==========================================================================================
    注意以上虚线部分,多数代码已作过处理(这又是一天的分析),与放水的注册码的1.2.8版对比后,发现这里本来是要进行解锁的! 
   (依据是: 0040390B 处)
    
    下面进行写代码进行解锁 (有很多问题,我不可能在这里说得很清楚,以后代码是我分析了一天的结果写出来的)
    
    =========================================================================================
    16进代码如下:
    
    E8 4E EA FF FF 90 90 90 EB 04 4C 41 45 52 8B 8F C0 00 00 00 8B 11 8B 82 D8 02 00 00 FF D0 85 C0
    5E 5D 74 22 8B 10 6A 00 8B C8 8B 82 AC 02 00 00 68 9C 18 00 00 FF D0 85 C0 74 0B 8B 10 8B C8 8B
    42 18 6A 00 FF D0 EB 04 90 90 90 90 8B CF E8 B0 FD FF FF 5F 83 C4 2C C3
    
    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
    简单说一下找解除水印地址方法: 查找所有命令: call   004C7650
    找到的命令
    地址       反汇编                注释
    00403895   call    004C7650----->第一个找到也是我们第一个看到的!
    004C544C   call    004C7650
    004C5584   call    004C7650
    004C7709   call    004C7650----->发现此地黄金10俩(很重要),点击进入
    004C7734   call    004C7650
    004C7754   call    004C7650
    ----------------------------------------------------------------------------------------
    004C7700  /$  56            push    esi               ;  点这里,看动态数据区,本地调用!
    004C7701  |.  8B7424 08     mov     esi, [esp+8]
    004C7705  |.  85F6          test    esi, esi
    004C7707  |.  74 0F         je      short 004C7718
    004C7709  |.  E8 42FFFFFF   call    004C7650
    004C770E  |.  33D2          xor     edx, edx
    004C7710  |.  F7F6          div     esi
    004C7712  |.  5E            pop     esi
    004C7713  |.  8BC2          mov     eax, edx
    004C7715  |.  C2 0400       retn    4
    004C7718  |>  33C0          xor     eax, eax
    004C771A  |.  5E            pop     esi
    004C771B  \.  C2 0400       retn    4
    本地调用来自 00402373, 004BEF32, 004BF1A3, 004BFC8C, 004BFF19, 004C556D, 004C55C7, 004C5618, 004C564F, ...........    
    呵呵!第一个就是要去的地址!
    -----------------------------------------------------------------------------------
    00402310  /$  64:A1 0000000>mov     eax, fs:[0]       ;  开始解除水印
    00402316  |.  6A FF         push    -1
    00402318  |.  68 EE1C5C00   push    005C1CEE
    0040231D  |.  50            push    eax
    0040231E  |.  64:8925 00000>mov     fs:[0], esp
    00402325  |.  B8 01000000   mov     eax, 1
    0040232A  |.  8405 BCFF7100 test    [71FFBC], al
    00402330  |.  56            push    esi
    00402331  |.  57            push    edi
    00402332  |.  75 20         jnz     short 00402354
    00402334  |.  0905 BCFF7100 or      [71FFBC], eax
    0040233A  |.  B9 A0FF7100   mov     ecx, 0071FFA0
    0040233F  |.  C74424 10 000>mov     dword ptr [esp+10>
    00402347  |.  E8 84540C00   call    004C77D0
    0040234C  |.  C74424 10 FFF>mov     dword ptr [esp+10>
    00402354  |>  BF 2CE27000   mov     edi, 0070E22C
    00402359  |.  8DA424 000000>lea     esp, [esp]
    00402360  |>  8B37          /mov     esi, [edi]
    00402362  |.  81EE 3C3C3D3E |sub     esi, 3E3D3C3C
    00402368  |.  8BC6          |mov     eax, esi
    0040236A  |.  C1E8 10       |shr     eax, 10
    0040236D  |.  50            |push    eax
    0040236E  |.  B9 A0FF7100   |mov     ecx, 0071FFA0
    00402373  |.  E8 88530C00   |call    004C7700         ;  查看到这里
    00402378  |.  03C6          |add     eax, esi
    0040237A  |.  8907          |mov     [edi], eax
    0040237C  |.  83C7 04       |add     edi, 4
    0040237F  |.  81FF 4CE27000 |cmp     edi, 0070E24C
    00402385  |.^ 7C D9         \jl      short 00402360
    00402387  |.  8B4C24 08     mov     ecx, [esp+8]
    0040238B  |.  5F            pop     edi
    0040238C  |.  64:890D 00000>mov     fs:[0], ecx
    00402393  |.  5E            pop     esi
    00402394  |.  83C4 0C       add     esp, 0C
    00402397  \.  C3            retn
    <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    =========================================================================================
    从004038BD写到00403908 如下:
    =========================================================================================
    004038BD      E8 4EEAFFFF   call    00402310 ;  进行解除水印! 也许你会问这地址怎得到的?(呵呵,远在天边,近在眼前),上面讲的就是
    004038C2      90            nop              ;  NOP占位|  呵呵,就是00403895处的 call 004C7650 入手的
    004038C3      90            nop              ;  NOP占位|
    004038C4      90            nop              ;  NOP占位|
    004038C5      EB 04         jmp     short 004038CB
    004038C7      4C            dec     esp
    004038C8      41            inc     ecx
    004038C9      45            inc     ebp
    004038CA      52            push    edx
    004038CB      8B8F C0000000 mov     ecx, [edi+C0]
    004038D1      8B11          mov     edx, [ecx]
    004038D3      8B82 D8020000 mov     eax, [edx+2D8]
    004038D9      FFD0          call    eax             
    004038DB      85C0          test    eax, eax
    004038DD      5E            pop     esi
    004038DE      5D            pop     ebp
    004038DF      74 22         je      short 00403903
    004038E1      8B10          mov     edx, [eax]
    004038E3      6A 00         push    0
    004038E5      8BC8          mov     ecx, eax
    004038E7      8B82 AC020000 mov     eax, [edx+2AC]
    004038ED      68 9C180000   push    189C
    004038F2      FFD0          call    eax               ---->设置注册标致
    004038F4      85C0          test    eax, eax
    004038F6      74 0B         je      short 00403903
    004038F8      8B10          mov     edx, [eax]
    004038FA      8BC8          mov     ecx, eax
    004038FC      8B42 18       mov     eax, [edx+18]
    004038FF      6A 00         push    0
    00403901      FFD0          call    eax                   ;  灰化菜单"解码"
    00403903      EB 04         jmp     short 00403909
    00403905      90            nop                           ;  NOP占位|
    00403906      90            nop
    00403907      90            nop
    00403908      90            nop                           ;  NOP占位|
    00403909      8BCF          mov     ecx, edi              ;  原来的
    0040390B      E8 B0FDFFFF   call    004036C0              ;  解除"未注册"字样等
    00403910      5F            pop     edi
    00403911      83C4 2C       add     esp, 2C
    00403914      C3            retn
    =======================================================================================
1. PhotoZoomPro2 2.2.4 Photoshop插件成功破解!

要把扩展名改为DLL ,用 Aspr2.XX_unpacker_v1.0 进行脱壳 (感谢 VolX ,你的脚本大强啦!)

破解过程跟破解主程序方法都差不多 

以下数据可以帮你快速定位修改:
一处:
83 C4 10 84 C0 75 0C 46 3B 75 0C
二处:
83 C4 10 84 C0


2.目的:去掉PhotoZoomPro2 2.2.4 Photoshop插件Unlock注册按钮



看看软件,再与看看正式注册版,Unlock注册按钮,在注册后是会被移除的!




由于是PS插件,我们一般要中断PS加载了插件即可!

OD加载PS >> 运行 >> 打开一张图片

我先选 bp EnableWindow 下断

文件>> 导出 >> PhotoZoom Pro 2..

中断后取消断点,然后打开模块窗口,先择加载了的插件,进行插件领空!

bpx GetWindowTextA

315次F9后 (总共317次,也就是倒数第二次,你不得不按^_^),记得看着堆栈

0012DE88   00011276  |hWnd = 00011276 ('Unlock',class='Button',parent=00170D88)
0012DE8C   2360CEB4  |Buffer = 2360CEB4
0012DE90   00000007  \Count = 7
0012DE94   2360CC48
===============================================================================
232BDF84    FF15 D8253823   CALL DWORD PTR DS:[<&user32.GetWindowTex>; USER32.GetWindowTextA 这里开始F8
232BDF8A    8B4D E8         MOV ECX,DWORD PTR SS:[EBP-18]
232BDF8D    E8 3E1DFDFF     CALL 3.2328FCD0
232BDF92    5E              POP ESI
232BDF93    8B4D F4         MOV ECX,DWORD PTR SS:[EBP-C]
232BDF96    8BC7            MOV EAX,EDI
232BDF98    5F              POP EDI
232BDF99    64:890D 0000000>MOV DWORD PTR FS:[0],ECX
232BDFA0    C9              LEAVE
232BDFA1    C3              RETN--------->返回 

一直F8到232D8D55:
===============================================================================
232D8CA4    5F              POP EDI
232D8CA5    5E              POP ESI
232D8CA6    8AC3            MOV AL,BL
232D8CA8    5B              POP EBX
232D8CA9    64:890D 0000000>MOV DWORD PTR FS:[0],ECX----------->; 在这里下个断
232D8CB0    C9              LEAVE
232D8CB1    C2 2000         RETN 20                 ----------->; 注意: 这里是最近一次退出,最后也是在这返回
232D8CB4    8B06            MOV EAX,DWORD PTR DS:[ESI]
232D8CB6    8D4D EC         LEA ECX,DWORD PTR SS:[EBP-14]
232D8CB9    51              PUSH ECX
232D8CBA    FF75 1C         PUSH DWORD PTR SS:[EBP+1C]
232D8CBD    8BCE            MOV ECX,ESI
232D8CBF    FF90 38020000   CALL DWORD PTR DS:[EAX+238]
232D8CC5    53              PUSH EBX
232D8CC6    6A 0A           PUSH 0A
232D8CC8    8D4D 10         LEA ECX,DWORD PTR SS:[EBP+10]
232D8CCB    8BF8            MOV EDI,EAX
232D8CCD    E8 EE6CFBFF     CALL 3.2328F9C0
232D8CD2    3B05 3C5A4123   CMP EAX,DWORD PTR DS:[23415A3C]
232D8CD8    74 06           JE SHORT 3.232D8CE0
232D8CDA    81CF 00200000   OR EDI,2000
232D8CE0    FF75 EC         PUSH DWORD PTR SS:[EBP-14]
232D8CE3    8D45 10         LEA EAX,DWORD PTR SS:[EBP+10]
232D8CE6    50              PUSH EAX
232D8CE7    FF75 18         PUSH DWORD PTR SS:[EBP+18]
232D8CEA    8BCE            MOV ECX,ESI
232D8CEC    FF75 14         PUSH DWORD PTR SS:[EBP+14]
232D8CEF    57              PUSH EDI
232D8CF0    68 ACED4123     PUSH 3.2341EDAC                     ; ASCII "BUTTON"
232D8CF5    E8 7C9CFFFF     CALL 3.232D2976
232D8CFA    8AD8            MOV BL,AL
232D8CFC  ^ EB 97           JMP SHORT 3.232D8C95
232D8CFE    B8 4B263723     MOV EAX,3.2337264B
232D8D03    E8 C8890500     CALL 3.233316D0
232D8D08    81EC 0C010000   SUB ESP,10C
232D8D0E    53              PUSH EBX
232D8D0F    56              PUSH ESI
232D8D10    8BF1            MOV ESI,ECX
232D8D12    57              PUSH EDI
232D8D13    56              PUSH ESI
232D8D14    8D8D E8FEFFFF   LEA ECX,DWORD PTR SS:[EBP-118]
232D8D1A    E8 3B1D0100     CALL 3.232EAA5A
232D8D1F    8D45 E4         LEA EAX,DWORD PTR SS:[EBP-1C]
232D8D22    33DB            XOR EBX,EBX
232D8D24    50              PUSH EAX
232D8D25    8BCE            MOV ECX,ESI
232D8D27    895D FC         MOV DWORD PTR SS:[EBP-4],EBX
232D8D2A    E8 21EAFEFF     CALL 3.232C7750
232D8D2F    50              PUSH EAX
232D8D30    8D8D E8FEFFFF   LEA ECX,DWORD PTR SS:[EBP-118]
232D8D36    C645 FC 01      MOV BYTE PTR SS:[EBP-4],1
232D8D3A    E8 7C090100     CALL 3.232E96BB
232D8D3F    8D4D E4         LEA ECX,DWORD PTR SS:[EBP-1C]
232D8D42    885D FC         MOV BYTE PTR SS:[EBP-4],BL
232D8D45    E8 315BFFFF     CALL 3.232CE87B
232D8D4A    8B06            MOV EAX,DWORD PTR DS:[ESI]
232D8D4C    8D4D E8         LEA ECX,DWORD PTR SS:[EBP-18]
232D8D4F    51              PUSH ECX
232D8D50    8BCE            MOV ECX,ESI
232D8D52    FF50 40         CALL DWORD PTR DS:[EAX+40]
232D8D55    50              PUSH EAX              -----------> ; 返回这里,不想再按F8,就在上面下个断吧
232D8D56    8D45 E0         LEA EAX,DWORD PTR SS:[EBP-20]
232D8D59    50              PUSH EAX              -----------> ; 这是我第一次,我当然是F8向下走啦...
232D8D5A    C645 FC 02      MOV BYTE PTR SS:[EBP-4],2
232D8D5E    E8 CBC4FEFF     CALL 3.232C522E
232D8D63    59              POP ECX
232D8D64    59              POP ECX
下面略.....
............

===============================================
232D8CB1    C2 2000         RETN 20 返回再F8: 6次后
===============================================
231DAB3B    85F6            TEST ESI,ESI
231DAB3D    C64424 40 13    MOV BYTE PTR SS:[ESP+40],13
231DAB42    0F84 82000000   JE 3.231DABCA        ----------->; 呵呵.重要一跳,我们JMP保存
231DAB48    8B15 3C5A4123   MOV EDX,DWORD PTR DS:[23415A3C]
231DAB4E    52              PUSH EDX
231DAB4F    6A 00           PUSH 0
231DAB51    68 94CE4123     PUSH 3.2341CE94                   ; ASCII "button"
231DAB56    8D4C24 58       LEA ECX,DWORD PTR SS:[ESP+58]
231DAB5A    E8 21560B00     CALL 3.23290180
231DAB5F    83CB 20         OR EBX,20
231DAB62    68 CC6A3823     PUSH 3.23386ACC                   ; ASCII "Unlock"
231DAB67    C64424 44 14    MOV BYTE PTR SS:[ESP+44],14
231DAB6C    895C24 14       MOV DWORD PTR SS:[ESP+14],EBX
231DAB70    E8 EA920900     CALL 3.23273E5F
231DAB75    83C4 04         ADD ESP,4
231DAB78    85C0            TEST EAX,EAX
231DAB7A    75 05           JNZ SHORT 3.231DAB81
231DAB7C    B8 F8323823     MOV EAX,3.233832F8
231DAB81    8B0D 3C5A4123   MOV ECX,DWORD PTR DS:[23415A3C]
231DAB87    51              PUSH ECX
231DAB88    6A 00           PUSH 0
231DAB8A    50              PUSH EAX
231DAB8B    8D4C24 54       LEA ECX,DWORD PTR SS:[ESP+54]
231DAB8F    E8 EC550B00     CALL 3.23290180
231DAB94    8D5424 4C       LEA EDX,DWORD PTR SS:[ESP+4C]
231DAB98    52              PUSH EDX
231DAB99    68 54E04B23     PUSH 3.234BE054
231DAB9E    6A 00           PUSH 0
231DABA0    68 08BF4823     PUSH 3.2348BF08
231DABA5    68 10BF4823     PUSH 3.2348BF10
231DABAA    8D4424 5C       LEA EAX,DWORD PTR SS:[ESP+5C]
231DABAE    50              PUSH EAX
231DABAF    6A FF           PUSH -1
231DABB1    83CB 40         OR EBX,40
231DABB4    55              PUSH EBP
231DABB5    8BCE            MOV ECX,ESI
231DABB7    C74424 60 15000>MOV DWORD PTR SS:[ESP+60],15
231DABBF    895C24 30       MOV DWORD PTR SS:[ESP+30],EBX
231DABC3    E8 B8F4FFFF     CALL 3.231DA080
231DABC8    EB 02           JMP SHORT 3.231DABCC  ----------->; 最终返回在这里(目的地到啦)
231DABCA    33C0            XOR EAX,EAX
=================================================================================
OD 单独加载地址: 1000AB62  |.  68 CC6A1B10   PUSH 3.101B6ACC        ;  ASCII "Unlock"
=================================================================================
    以上代码,你们自己理解一下哈,小Q就不多说了! 保存后,软件就是完全版了,哈哈! 最好的文章与你分享 ! 2.1.8原创破解权小Q保留!
   (不提供破解文件)
    
    历经3天的分析//终于有了一个结果! 心里有说不出的高兴啊! 我希望大家有时间跟贴谈一下水印的解除有多少相关函数?
    
    感谢VolX的Aspr2.XX_IATfixer_v2.2s.osc脚本!没有你脚本,就没有这文章!    
    感谢看雪 cyto兄提供的(脱壳后的校验)在原处还原经典代码 和 machenglin兄的两处修改! 与 CCDebuger的提示!
    
    谢谢你看到这里! 有空来偶的小站玩玩  http://www.iv2.cn (艾微儿)
    
                                                                   By [qyc]小Q  iv2.cn 2007/1/9/12:50
  
    --------------------------------------------------------------------------------
   【经验总结】
   [理解财富][创造财富]其实财富就在你身边,关键是你要去发现它!每一天的时间总是是你的!没有timerstop.com
  
    坚持就是胜利!
  
    --------------------------------------------------------------------------------
   【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!