飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2605|回复: 8

[转贴] 【原创】彩影2008白金版分析,不完全破解(去除试用显示限制)

[复制链接]
  • TA的每日心情
    开心
    2016-11-12 16:59
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2008-7-30 09:03:04 | 显示全部楼层 |阅读模式
    【文章标题】: 彩影2008白金版不完全破解(去除试用显示限制)
    【文章作者】: JackyChou
    【作者邮箱】: jiaqicx@163.com
    【软件名称】: 彩影2008白金版
    【下载地址】: 自己搜索下载
    【加壳方式】: 无壳
    【保护方式】: 无保护
    【编写语言】: VC 6.0
    【使用工具】: OD,PEID
    【操作平台】: XP SP3正版
    【软件介绍】: 彩影是一款图像处理软件,功能比较强大。
    【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
    --------------------------------------------------------------------------------
    【详细过程】
        彩影2008白金版Demo版是真正的试用版,很多功能并没有增加,并且也是不能注册的,但是只要把未注册的图像显示限
    制去除了,那么我们可以把处理好的图像用其他好的截图软件截图即可。因为软件的保存功能并没有添加,感兴趣的朋友可
    以自行添加代码,增加其保存功能,这样应该也算Demo版的完美破解了。

        进入正题,我们主要还是将怎么去找未注册的限制,很多牛人分析软件一下子就拿关键部分来分析,但很少分析他是如
    何找到这个关键部位的,可能很多时候我们想要知道的是如何找关键位置的过程,如果直接看关键代码感觉没有什么难度,
    自己动手却发现很难找关键位置(菜鸟观点)。
        本文涉及内容:如何去除以下几个限制
        ①启动软件,提示注册对话框(NAG窗口)。
        ②软件关闭,提示注册对话框(NAG窗口)。
        ③载入图片,在图像右上角显示一个较大的【未注册版本】图案。
        ④载入图片,在图像左下角显示一个淡灰色字体较大的百分比数字。
        其他说明:在软件中如果有未注册提示的,都是功能没有添加的(如保存图片,如将系列图片保存为GIF),如果你想
    需要该功能,那么可以把相应位置的代码全部NOP掉,然后尝试添加自己所想的代码。

        下面针对上面几个限制点来分析如何进行去除。
        ①启动软件,提示注册对话框(NAG窗口)的去除。
        要去除该提示窗口,我先下断DestroyWindow比较容易找建立NAG窗口的位置,因为那个对话框应该是模态对话框。
        bp DestroyWindow F9运行,断在下面位置:
    ---------------------------------------------------------------------------------------------------
    77D2B19C >  B8 63110000     mov     eax, 1163                                         ; 断在这里
    77D2B1A1    BA 0003FE7F     mov     edx, 7FFE0300
    77D2B1A6    FF12            call    dword ptr [edx]
    77D2B1A8    C2 0400         retn    4
    ---------------------------------------------------------------------------------------------------

        可能你这个时候就要去除断点,Alt + F9返回程序领空了,但是我们再看下右下堆栈窗口
    ---------------------------------------------------------------------------------------------------
    0012ED9C   73D36C14  /CALL 到 DestroyWindow 来自 MFC42.73D36C0E
    0012EDA0   000C09C4  \hWnd = 000C09C4 (class='Afx:400000:0:10011:0:0',parent=001409D6)
    0012EDA4   005789AC  CaiYing.005789AC
    0012EDA8   77D2AEAB  USER32.UpdateWindow
    0012EDAC   00578978  CaiYing.00578978
    ---------------------------------------------------------------------------------------------------

        class='Afx:400000:0:10011:0:0'从这个可以看出来,并不是NAG窗口的销毁,一般MFC建立的窗口class=#32770。我们
    继续F9,发现刚才那个窗口并没有销毁,继续点关闭窗口按钮。断在下面位置
    ---------------------------------------------------------------------------------------------------
    77D2B19C >  B8 63110000     mov     eax, 1163           ; 程序断在这里
    77D2B1A1    BA 0003FE7F     mov     edx, 7FFE0300
    77D2B1A6    FF12            call    dword ptr [edx]
    77D2B1A8    C2 0400         retn    4
    ---------------------------------------------------------------------------------------------------

       这个时候我们看右下角的堆栈窗口:
    ---------------------------------------------------------------------------------------------------
    0012EDEC   73D36C14  /CALL 到 DestroyWindow 来自 MFC42.73D36C0E
    0012EDF0   000A0CFA  \hWnd = 000A0CFA ('欢迎使用彩影2008!',class='#32770',parent=001409D6)
    ---------------------------------------------------------------------------------------------------

       对了,这次肯定是刚才建立的对话框进行销毁了,第一次断下的可能是其他东西的销毁,我后来又试了下,发现不点关
    闭按钮也会断下的,继续F9运行,再点关闭,就断在上面位置了。好了,这个时候可以去除断点,可以Alt + F9返回程序领
    空了。返回到下面位置:
    ---------------------------------------------------------------------------------------------------
    00467BFA   .  E8 61790400   call    <jmp.&MFC42.#2514_CDialog::DoModal>        ;  这边是建立模态对话框
    00467BFF   .  53            push    ebx                                        ;  Alt+F9程序返回到这里
    00467C00   .  8BCE          mov     ecx, esi
    00467C02   .  E8 2F850400   call    <jmp.&MFC42.#1768_CWnd::CenterWindow>
    00467C07   .  6A 03         push    3
    00467C09   .  8BCE          mov     ecx, esi
    00467C0B   .  E8 CA7A0400   call    <jmp.&MFC42.#6215_CWnd::ShowWindow>
    00467C10   .  8D8C24 7C0100>lea     ecx, dword ptr [esp+17C]
    00467C17   .  C78424 C40100>mov     dword ptr [esp+1C4], 3
    00467C22   .  E8 357A0400   call    <jmp.&MFC42.#609_CButton::~CButton>
    00467C27   .  8D8C24 3C0100>lea     ecx, dword ptr [esp+13C]
    00467C2E   .  C68424 C40100>mov     byte ptr [esp+1C4], 2
    00467C36   .  E8 217A0400   call    <jmp.&MFC42.#609_CButton::~CButton>
    00467C3B   .  8D4C24 70     lea     ecx, dword ptr [esp+70]
    00467C3F   .  C68424 C40100>mov     byte ptr [esp+1C4], 1
    00467C47   .  E8 C432FFFF   call    0045AF10
    00467C4C   .  8D4C24 10     lea     ecx, dword ptr [esp+10]
    00467C50   .  C78424 C40100>mov     dword ptr [esp+1C4], -1
    00467C5B   .  E8 0E7A0400   call    <jmp.&MFC42.#641_CDialog::~CDialog>
    00467C60   .  33C0          xor     eax, eax
    00467C62   .  EB 03         jmp     short 00467C67
    00467C64   >  83C8 FF       or      eax, FFFFFFFF
    00467C67   >  8B8C24 BC0100>mov     ecx, dword ptr [esp+1BC]
    00467C6E   .  5F            pop     edi
    00467C6F   .  5E            pop     esi
    00467C70   .  5D            pop     ebp
    00467C71   .  64:890D 00000>mov     dword ptr fs:[0], ecx
    00467C78   .  5B            pop     ebx
    00467C79   .  81C4 B8010000 add     esp, 1B8
    00467C7F   .  C2 0400       retn    4
    ---------------------------------------------------------------------------------------------------
    这下我们就很容易知道,00467BFA这个地址是建立那个烦人的NAG窗口(注册提示窗口),我们只要NOP掉即可。这样第一个
    问题解决,下面我们继续第二个点。

        ②软件关闭,提示注册对话框(NAG窗口)。
        由于这个和第一个限制点相似,所以这里不再仔细介绍,这里注意下断DestroyWindow函数的时候,应该在关闭程序后
    再下断,不然程序关闭你就断下了,在程序关闭后,显示NAG窗口时再下断,这样返回的位置就是建立NAG窗口的地方了。
    我这里就简单把位置说下:
    ---------------------------------------------------------------------------------------------------
    00417BB1   .  E8 AA790900   call    <jmp.&MFC42.#2514_CDialog::DoModal>                 ;  NAG窗口建立
    00417BB6   .  66:A1 5487570>mov     ax, word ptr [578754]                               ;  返回到这里
    00417BBC   .  B9 40000000   mov     ecx, 40
    00417BC1   .  66:8985 E0FEF>mov     word ptr [ebp-120], ax
    00417BC8   .  33C0          xor     eax, eax
    ---------------------------------------------------------------------------------------------------

    这样把00417BB1地址的代码NOP掉就可以了。好了,前面2点很简单,本来不想写,但是我初学的时候走了很多弯路,所以
    还是想写下来给初学者看看,少走点弯路,很多初学者都是用查找字符串的方法来找位置,但我还是推荐大家根据程序的
    运行情况来下断找位置,可以理解程序大概的思路,另外提醒喜欢破解的初学者最好更喜欢编程,这样你分析别人程序的
    时候更加能得心应手。继续正题,下面开始说第三点。

        ③载入图片,在图像右上角显示一个较大的【未注册版本】图案。
        找这个位置,其实我也花了点时间找,因为有时候即使看到那个关键点你也不一定能知道这个点就是添加
    【未注册版本】图案的。我汇编一点都不好,所以分析算法什么的就比较差了,继续和大家一起努力学习。关于这个点的
    解决,我们首先分析下程序执行过程,图片载入后会显示那个图案,那么我们可以在载入图片前,下断CreateFileA试试,
    看看程序后面的执行(这里还是想说下多学学编程就可以知道这里可以先试试这个API了,不然也没有经验啊)。
        bp CreateFileA 载入图片,断在下面位置:
    ---------------------------------------------------------------------------------------------------
    7C801A28 >  8BFF            mov     edi, edi                                      ; 断下位置
    7C801A2A    55              push    ebp
    7C801A2B    8BEC            mov     ebp, esp
    7C801A2D    FF75 08         push    dword ptr [ebp+8]
    7C801A30    E8 CFC60000     call    7C80E104
    7C801A35    85C0            test    eax, eax
    7C801A37    74 1E           je      short 7C801A57
    7C801A39    FF75 20         push    dword ptr [ebp+20]
    7C801A3C    FF75 1C         push    dword ptr [ebp+1C]
    7C801A3F    FF75 18         push    dword ptr [ebp+18]
    7C801A42    FF75 14         push    dword ptr [ebp+14]
    7C801A45    FF75 10         push    dword ptr [ebp+10]
    7C801A48    FF75 0C         push    dword ptr [ebp+C]
    7C801A4B    FF70 04         push    dword ptr [eax+4]
    7C801A4E    E8 9DED0000     call    CreateFileW
    7C801A53    5D              pop     ebp
    7C801A54    C2 1C00         retn    1C
    ---------------------------------------------------------------------------------------------------

    去除断点,Alt + F9返回程序领空。
    ---------------------------------------------------------------------------------------------------
    00499030 >/$  81EC 04010000 sub     esp, 104
    00499036  |.  53            push    ebx
    00499037  |.  55            push    ebp
    00499038  |.  56            push    esi
    00499039  |.  57            push    edi
    0049903A  |.  8BBC24 1C0100>mov     edi, dword ptr [esp+11C]
    00499041  |.  8BE9          mov     ebp, ecx
    00499043  |.  85FF          test    edi, edi
    00499045  |.  76 58         jbe     short 0049909F
    00499047  |.  83FF 10       cmp     edi, 10
    0049904A  |.  73 53         jnb     short 0049909F
    0049904C  |.  8B8424 180100>mov     eax, dword ptr [esp+118]
    00499053  |.  68 40935600   push    00569340                                      ; /rb
    00499058  |.  50            push    eax                                           ; |path
    00499059  |.  FF15 DC5E5200 call    dword ptr [<&MSVCRT.fopen>]                   ; \fopen
    0049905F  |.  8BF0          mov     esi, eax                                      ;  Alt + F9程序返回到这里
    00499061  |.  83C4 08       add     esp, 8
    00499064  |.  85F6          test    esi, esi
    00499066  |.  75 0F         jnz     short 00499077                                ;  这边是跳转的
    00499068  |.  5F            pop     edi
    00499069  |.  5E            pop     esi
    0049906A  |.  5D            pop     ebp
    0049906B  |.  32C0          xor     al, al
    0049906D  |.  5B            pop     ebx
    0049906E  |.  81C4 04010000 add     esp, 104
    00499074  |.  C2 0800       retn    8
    00499077  |>  57            push    edi
    00499078  |.  56            push    esi
    00499079  |.  8BCD          mov     ecx, ebp
    0049907B  |.  E8 B0040000   call    CxImage::Decode                               ;  这边应该是图像解析
    00499080  |.  56            push    esi                                           ; /stream
    00499081  |.  8AD8          mov     bl, al                                        ; |
    00499083  |.  FF15 E05E5200 call    dword ptr [<&MSVCRT.fclose>]                  ; \fclose
    00499089  |.  83C4 04       add     esp, 4
    0049908C  |.  84DB          test    bl, bl
    0049908E  |.  74 0F         je      short 0049909F                                ;  这边没有跳
    00499090  |.  5F            pop     edi
    00499091  |.  5E            pop     esi
    00499092  |.  8AC3          mov     al, bl
    00499094  |.  5D            pop     ebp
    00499095  |.  5B            pop     ebx
    00499096  |.  81C4 04010000 add     esp, 104
    0049909C  |.  C2 0800       retn    8                                             ;  程序返回
    ---------------------------------------------------------------------------------------------------
    下面开始进行单步走了,走着走着,进行消息循环了,死翘翘,看来需要另辟路径,水平太菜。

        这时不要灰心,更不要随便去找,我们再想想,发现左下角显示一个淡灰色字体较大的百分比数字。也就是我们要解决
    的第④点,一开始我以为一直是显示100%,所以可能是固定的,后来发现是会变化的,有时会显示94%,机会应该来了,这个
    点可以找到突破口,这里肯定是格式化字符串了,那么可以下断API sprintf来找,试了下,不是关键位置,所以代码就不贴
    了,后来一想,现在一般都是用宽字节了,所以应该下断API swprintf来找,先载入图片,下断bp swprintf,切换到显示
    窗口,断在下面位置:
    ---------------------------------------------------------------------------------------------------
    77C0F9C8 >  8BFF            mov     edi, edi                     ; 断在这里
    77C0F9CA    55              push    ebp
    77C0F9CB    8BEC            mov     ebp, esp
    77C0F9CD    83EC 20         sub     esp, 20
    77C0F9D0    8B45 08         mov     eax, dword ptr [ebp+8]
    77C0F9D3    8945 E8         mov     dword ptr [ebp-18], eax
    77C0F9D6    8945 E0         mov     dword ptr [ebp-20], eax
    77C0F9D9    56              push    esi
    77C0F9DA    8D45 10         lea     eax, dword ptr [ebp+10]
    77C0F9DD    50              push    eax
    77C0F9DE    FF75 0C         push    dword ptr [ebp+C]
    77C0F9E1    8D45 E0         lea     eax, dword ptr [ebp-20]
    77C0F9E4    50              push    eax
    77C0F9E5    C745 EC 4200000>mov     dword ptr [ebp-14], 42
    77C0F9EC    C745 E4 FFFFFF7>mov     dword ptr [ebp-1C], 7FFFFFFF
    77C0F9F3    E8 DC370000     call    77C131D4
    77C0F9F8    83C4 0C         add     esp, 0C
    77C0F9FB    FF4D E4         dec     dword ptr [ebp-1C]
    77C0F9FE    8BF0            mov     esi, eax
    77C0FA00    78 0B           js      short 77C0FA0D
    77C0FA02    8B45 E0         mov     eax, dword ptr [ebp-20]
    77C0FA05    C600 00         mov     byte ptr [eax], 0
    77C0FA08    FF45 E0         inc     dword ptr [ebp-20]
    77C0FA0B    EB 0D           jmp     short 77C0FA1A
    77C0FA0D    8D45 E0         lea     eax, dword ptr [ebp-20]
    77C0FA10    50              push    eax
    77C0FA11    6A 00           push    0
    77C0FA13    E8 45F2FFFF     call    _flsbuf
    77C0FA18    59              pop     ecx
    77C0FA19    59              pop     ecx
    77C0FA1A    FF4D E4         dec     dword ptr [ebp-1C]
    77C0FA1D    78 08           js      short 77C0FA27
    77C0FA1F    8B45 E0         mov     eax, dword ptr [ebp-20]
    77C0FA22    C600 00         mov     byte ptr [eax], 0
    77C0FA25    EB 0D           jmp     short 77C0FA34
    77C0FA27    8D45 E0         lea     eax, dword ptr [ebp-20]
    77C0FA2A    50              push    eax
    77C0FA2B    6A 00           push    0
    77C0FA2D    E8 2BF2FFFF     call    _flsbuf
    77C0FA32    59              pop     ecx
    77C0FA33    59              pop     ecx
    77C0FA34    8BC6            mov     eax, esi
    77C0FA36    5E              pop     esi
    77C0FA37    C9              leave
    77C0FA38    C3              retn
    ---------------------------------------------------------------------------------------------------

    再看下堆栈窗口:
    ---------------------------------------------------------------------------------------------------
    0012F69C   0042B509  /CALL 到 swprintf 来自 CaiYing_.0042B503
    0012F6A0   0012F98C  |wstr = 0012F98C
    0012F6A4   0056A648  |format = "%3.0f%%"
    0012F6A8   00000000  \<%3.0f> = 0.0
    0012F6AC   40590000
    0012F6B0   73D4497A  MFC42.#4874_CView::OnPaint
    ---------------------------------------------------------------------------------------------------
    应该肯定是这里了,而且是在OnPaint函数下,我对MFC比较熟悉,所以肯定就是这里了。去除断点,Alt + F9返回到下面

    ==========================================================================================
    上面还有很多代码,不贴了,感兴趣的自己下载个分析分析
    ==========================================================================================
    0042B4F3   .  8D8424 E40200>lea     eax, dword ptr [esp+2E4]                     ; |
    0042B4FA   .  DD1C24        fstp    qword ptr [esp]                              ; |
    0042B4FD   .  68 48A65600   push    0056A648                                     ; |%
    0042B502   .  50            push    eax                                          ; |wstr
    0042B503   .  FF15 905E5200 call    dword ptr [<&MSVCRT.swprintf>]               ; \swprintf
    0042B509   .  8B4C24 4C     mov     ecx, dword ptr [esp+4C]                      ;  Alt + F9程序返回在这里
    0042B50D   .  83C4 10       add     esp, 10
    0042B510      E9 E6030000   jmp     0042B8FB                                     ;  这边就可以把下面的全部跳过了。
    0042B515      90            nop
    0042B516      90            nop
    0042B517      90            nop
    0042B518   .  85C0          test    eax, eax
    0042B51A   .  74 04         je      short 0042B520
    0042B51C   .  894424 40     mov     dword ptr [esp+40], eax
    0042B520   >  8D9424 DC0200>lea     edx, dword ptr [esp+2DC]
    0042B527   .  52            push    edx                                          ; /s
    0042B528   .  FF15 945E5200 call    dword ptr [<&MSVCRT.wcslen>]  ; \计算字符长度,我们下断这个函数也是可以找到的
    0042B52E   .  D94424 30     fld     dword ptr [esp+30]
    0042B532   .  8B4C24 18     mov     ecx, dword ptr [esp+18]
    0042B536   .  83C4 04       add     esp, 4
    0042B539   .  D95C24 50     fstp    dword ptr [esp+50]
    0042B53D   .  D94424 48     fld     dword ptr [esp+48]
    0042B541   .  D95C24 54     fstp    dword ptr [esp+54]
    0042B545   .  85C9          test    ecx, ecx
    0042B547   .  C74424 58 000>mov     dword ptr [esp+58], 0
    0042B54F   .  C74424 5C 000>mov     dword ptr [esp+5C], 0
    0042B557   .  74 05         je      short 0042B55E
    0042B559   .  8B51 04       mov     edx, dword ptr [ecx+4]
    0042B55C   .  EB 02         jmp     short 0042B560
    0042B55E   >  33D2          xor     edx, edx
    0042B560   >  8D4C24 24     lea     ecx, dword ptr [esp+24]
    0042B564   .  52            push    edx
    0042B565   .  F7D9          neg     ecx
    0042B567   .  1BC9          sbb     ecx, ecx
    0042B569   .  8D5424 54     lea     edx, dword ptr [esp+54]
    0042B56D   .  234C24 38     and     ecx, dword ptr [esp+38]
    0042B571   .  6A 00         push    0
    0042B573   .  52            push    edx
    0042B574   .  51            push    ecx
    0042B575   .  8B4C24 4C     mov     ecx, dword ptr [esp+4C]
    0042B579   .  50            push    eax
    0042B57A   .  8D8424 F00200>lea     eax, dword ptr [esp+2F0]
    0042B581   .  50            push    eax
    0042B582   .  51            push    ecx
    0042B583   .  E8 463E0800   call    <jmp.&gdiplus.GdipDrawString>                ;  这边就是描绘字符串了,跳过这里即可
    0042B588   .  85C0          test    eax, eax
    0042B58A   .  74 04         je      short 0042B590
    0042B58C   .  894424 40     mov     dword ptr [esp+40], eax
    0042B590   >  8B9424 8C0000>mov     edx, dword ptr [esp+8C]
    0042B597   .  68 FFFFFF80   push    80FFFFFF
    0042B59C   .  52            push    edx
    0042B59D   .  E8 443E0800   call    <jmp.&gdiplus.GdipSetSolidFillColor>
    0042B5A2   .  85C0          test    eax, eax
    0042B5A4   .  74 07         je      short 0042B5AD
    0042B5A6   .  898424 900000>mov     dword ptr [esp+90], eax
    0042B5AD   >  8B8C24 8C0000>mov     ecx, dword ptr [esp+8C]
    0042B5B4   .  8D4424 10     lea     eax, dword ptr [esp+10]
    0042B5B8   .  50            push    eax
    0042B5B9   .  51            push    ecx
    0042B5BA   .  C74424 18 000>mov     dword ptr [esp+18], 0
    0042B5C2   .  E8 193E0800   call    <jmp.&gdiplus.GdipCloneBrush>
    0042B5C7   .  85C0          test    eax, eax
    0042B5C9   .  74 07         je      short 0042B5D2
    0042B5CB   .  898424 900000>mov     dword ptr [esp+90], eax
    0042B5D2   >  6A 0C         push    0C
    0042B5D4   .  E8 013E0800   call    <jmp.&gdiplus.GdipAlloc>
    0042B5D9   .  85C0          test    eax, eax
    0042B5DB   .  74 1D         je      short 0042B5FA
    0042B5DD   .  8B8C24 900000>mov     ecx, dword ptr [esp+90]
    0042B5E4   .  8B5424 10     mov     edx, dword ptr [esp+10]
    0042B5E8   .  C700 40AD5200 mov     dword ptr [eax], 0052AD40
    0042B5EE   .  8948 08       mov     dword ptr [eax+8], ecx
    0042B5F1   .  8950 04       mov     dword ptr [eax+4], edx
    0042B5F4   .  894424 14     mov     dword ptr [esp+14], eax
    0042B5F8   .  EB 12         jmp     short 0042B60C
    0042B5FA   >  8B5424 10     mov     edx, dword ptr [esp+10]
    0042B5FE   .  C74424 14 000>mov     dword ptr [esp+14], 0
    0042B606   .  52            push    edx
    0042B607   .  E8 C83D0800   call    <jmp.&gdiplus.GdipDeleteBrush>
    0042B60C   >  8D8424 DC0200>lea     eax, dword ptr [esp+2DC]
    0042B613   .  50            push    eax                                          ; /s
    0042B614   .  FF15 945E5200 call    dword ptr [<&MSVCRT.wcslen>]                 ; \wcslen
    0042B61A   .  D94424 74     fld     dword ptr [esp+74]
    0042B61E   .  8B4C24 18     mov     ecx, dword ptr [esp+18]
    0042B622   .  83C4 04       add     esp, 4
    0042B625   .  D95C24 50     fstp    dword ptr [esp+50]
    0042B629   .  D94424 18     fld     dword ptr [esp+18]
    0042B62D   .  D95C24 54     fstp    dword ptr [esp+54]
    0042B631   .  85C9          test    ecx, ecx
    0042B633   .  C74424 58 000>mov     dword ptr [esp+58], 0
    0042B63B   .  C74424 5C 000>mov     dword ptr [esp+5C], 0
    0042B643   .  74 05         je      short 0042B64A
    0042B645   .  8B51 04       mov     edx, dword ptr [ecx+4]
    0042B648   .  EB 02         jmp     short 0042B64C
    0042B64A   >  33D2          xor     edx, edx
    0042B64C   >  8D4C24 24     lea     ecx, dword ptr [esp+24]
    0042B650   .  52            push    edx
    0042B651   .  F7D9          neg     ecx
    0042B653   .  1BC9          sbb     ecx, ecx
    0042B655   .  8D5424 54     lea     edx, dword ptr [esp+54]
    0042B659   .  234C24 38     and     ecx, dword ptr [esp+38]
    0042B65D   .  6A 00         push    0
    0042B65F   .  52            push    edx
    0042B660   .  51            push    ecx
    0042B661   .  8B4C24 4C     mov     ecx, dword ptr [esp+4C]
    0042B665   .  50            push    eax
    0042B666   .  8D8424 F00200>lea     eax, dword ptr [esp+2F0]
    0042B66D   .  50            push    eax
    0042B66E   .  51            push    ecx
    0042B66F   .  E8 5A3D0800   call    <jmp.&gdiplus.GdipDrawString> ;  这边还是描绘,那个百分数是描绘2次,叠加的效果
    0042B674   .  85C0          test    eax, eax
    0042B676   .  74 04         je      short 0042B67C
    0042B678   .  894424 40     mov     dword ptr [esp+40], eax
    0042B67C   >  8B4C24 44     mov     ecx, dword ptr [esp+44]
    0042B680   .  8B41 0C       mov     eax, dword ptr [ecx+C]
    0042B683   .  8B49 10       mov     ecx, dword ptr [ecx+10]
    0042B686   .  3BC1          cmp     eax, ecx
    0042B688   .  8BD0          mov     edx, eax
    0042B68A   .  77 02         ja      short 0042B68E
    0042B68C   .  8BD1          mov     edx, ecx
    0042B68E   >  81FA 20030000 cmp     edx, 320
    0042B694   .  0F82 2D010000 jb      0042B7C7
    0042B69A   .  3BC1          cmp     eax, ecx
    0042B69C   .  8BD0          mov     edx, eax
    0042B69E   .  72 02         jb      short 0042B6A2
    0042B6A0   .  8BD1          mov     edx, ecx
    0042B6A2   >  81FA F4010000 cmp     edx, 1F4
    0042B6A8   .  0F82 19010000 jb      0042B7C7
    0042B6AE   .  8B85 EC110100 mov     eax, dword ptr [ebp+111EC]
    0042B6B4   .  8B48 0C       mov     ecx, dword ptr [eax+C]
    0042B6B7   .  8B50 10       mov     edx, dword ptr [eax+10]
    0042B6BA   .  8B8424 940000>mov     eax, dword ptr [esp+94]
    0042B6C1   .  894C24 70     mov     dword ptr [esp+70], ecx
    0042B6C5   .  2BF8          sub     edi, eax
    0042B6C7   .  8B8424 9C0000>mov     eax, dword ptr [esp+9C]
    0042B6CE   .  03F8          add     edi, eax
    0042B6D0   .  895424 2C     mov     dword ptr [esp+2C], edx
    0042B6D4   .  897C24 18     mov     dword ptr [esp+18], edi
    0042B6D8   .  33FF          xor     edi, edi
    0042B6DA   .  DB4424 18     fild    dword ptr [esp+18]
    0042B6DE   .  DB86 F4000000 fild    dword ptr [esi+F4]
    0042B6E4   .  894C24 18     mov     dword ptr [esp+18], ecx
    0042B6E8   .  897C24 1C     mov     dword ptr [esp+1C], edi
    0042B6EC   .  D95C24 14     fstp    dword ptr [esp+14]
    0042B6F0   .  DF6C24 18     fild    qword ptr [esp+18]
    0042B6F4   .  895424 18     mov     dword ptr [esp+18], edx
    0042B6F8   .  897C24 1C     mov     dword ptr [esp+1C], edi
    0042B6FC   .  D84C24 20     fmul    dword ptr [esp+20]
    0042B700   .  D8E9          fsubr   st, st(1)
    0042B702   .  DF6C24 18     fild    qword ptr [esp+18]
    0042B706   .  D84C24 20     fmul    dword ptr [esp+20]
    0042B70A   .  D86C24 14     fsubr   dword ptr [esp+14]
    0042B70E   .  DED9          fcompp
    0042B710   .  DFE0          fstsw   ax
    0042B712   .  F6C4 41       test    ah, 41
    0042B715   .  75 14         jnz     short 0042B72B
    0042B717   .  894C24 18     mov     dword ptr [esp+18], ecx
    0042B71B   .  897C24 1C     mov     dword ptr [esp+1C], edi
    0042B71F   .  DF6C24 18     fild    qword ptr [esp+18]
    0042B723   .  D84C24 20     fmul    dword ptr [esp+20]
    0042B727   .  DEE9          fsubp   st(1), st
    0042B729   .  EB 16         jmp     short 0042B741
    0042B72B   >  DDD8          fstp    st
    0042B72D   .  895424 18     mov     dword ptr [esp+18], edx
    0042B731   .  897C24 1C     mov     dword ptr [esp+1C], edi
    0042B735   .  DF6C24 18     fild    qword ptr [esp+18]
    0042B739   .  D84C24 20     fmul    dword ptr [esp+20]
    0042B73D   .  D86C24 14     fsubr   dword ptr [esp+14]
    0042B741   >  E8 0A4F0800   call    <jmp.&MSVCRT._ftol>
    0042B746   .  8B5424 70     mov     edx, dword ptr [esp+70]
    0042B74A   .  C74424 1C 000>mov     dword ptr [esp+1C], 0
    0042B752   .  895424 18     mov     dword ptr [esp+18], edx
    0042B756   .  894424 50     mov     dword ptr [esp+50], eax
    0042B75A   .  DF6C24 18     fild    qword ptr [esp+18]
    0042B75E   .  D84C24 20     fmul    dword ptr [esp+20]
    0042B762   .  DA4424 50     fiadd   dword ptr [esp+50]
    0042B766   .  E8 E54E0800   call    <jmp.&MSVCRT._ftol>
    0042B76B   .  8BB6 F0000000 mov     esi, dword ptr [esi+F0]
    0042B771   .  8BF8          mov     edi, eax
    0042B773   .  8B4424 7C     mov     eax, dword ptr [esp+7C]
    0042B777   .  3BC6          cmp     eax, esi
    0042B779   .  7E 02         jle     short 0042B77D
    0042B77B   .  8BF0          mov     esi, eax
    0042B77D   >  8B4424 2C     mov     eax, dword ptr [esp+2C]
    0042B781   .  C74424 1C 000>mov     dword ptr [esp+1C], 0
    0042B789   .  894424 18     mov     dword ptr [esp+18], eax
    0042B78D   .  897424 54     mov     dword ptr [esp+54], esi
    0042B791   .  DF6C24 18     fild    qword ptr [esp+18]
    0042B795   .  D84C24 20     fmul    dword ptr [esp+20]
    0042B799   .  DA4424 54     fiadd   dword ptr [esp+54]
    0042B79D   .  E8 AE4E0800   call    <jmp.&MSVCRT._ftol>
    0042B7A2   .  85DB          test    ebx, ebx
    0042B7A4   .  75 04         jnz     short 0042B7AA
    0042B7A6   .  33C9          xor     ecx, ecx
    0042B7A8   .  EB 03         jmp     short 0042B7AD
    0042B7AA   >  8B4B 04       mov     ecx, dword ptr [ebx+4]
    0042B7AD   >  2BC6          sub     eax, esi
    0042B7AF   .  6A 00         push    0
    0042B7B1   .  50            push    eax
    0042B7B2   .  8B4424 58     mov     eax, dword ptr [esp+58]
    0042B7B6   .  2BF8          sub     edi, eax
    0042B7B8   .  57            push    edi
    0042B7B9   .  56            push    esi
    0042B7BA   .  50            push    eax
    0042B7BB   .  51            push    ecx
    0042B7BC   .  8B8D EC110100 mov     ecx, dword ptr [ebp+111EC]
    0042B7C2   .  E9 2B010000   jmp     0042B8F2
    0042B7C7   >  3D C8000000   cmp     eax, 0C8
    0042B7CC   .  0F82 25010000 jb      0042B8F7
    0042B7D2   .  81F9 C8000000 cmp     ecx, 0C8
    0042B7D8   .  0F82 19010000 jb      0042B8F7
    0042B7DE   .  8B85 F0110100 mov     eax, dword ptr [ebp+111F0]
    0042B7E4   .  8B48 0C       mov     ecx, dword ptr [eax+C]
    0042B7E7   .  8B50 10       mov     edx, dword ptr [eax+10]
    0042B7EA   .  8B8424 940000>mov     eax, dword ptr [esp+94]
    0042B7F1   .  894C24 70     mov     dword ptr [esp+70], ecx
    0042B7F5   .  2BF8          sub     edi, eax
    0042B7F7   .  8B8424 9C0000>mov     eax, dword ptr [esp+9C]
    0042B7FE   .  03F8          add     edi, eax
    0042B800   .  895424 2C     mov     dword ptr [esp+2C], edx
    0042B804   .  897C24 18     mov     dword ptr [esp+18], edi
    0042B808   .  33FF          xor     edi, edi
    0042B80A   .  DB4424 18     fild    dword ptr [esp+18]
    0042B80E   .  DB86 F4000000 fild    dword ptr [esi+F4]
    0042B814   .  894C24 18     mov     dword ptr [esp+18], ecx
    0042B818   .  897C24 1C     mov     dword ptr [esp+1C], edi
    0042B81C   .  D95C24 14     fstp    dword ptr [esp+14]
    0042B820   .  DF6C24 18     fild    qword ptr [esp+18]
    0042B824   .  895424 18     mov     dword ptr [esp+18], edx
    0042B828   .  897C24 1C     mov     dword ptr [esp+1C], edi
    0042B82C   .  D84C24 20     fmul    dword ptr [esp+20]
    0042B830   .  D8E9          fsubr   st, st(1)
    0042B832   .  DF6C24 18     fild    qword ptr [esp+18]
    0042B836   .  D84C24 20     fmul    dword ptr [esp+20]
    0042B83A   .  D86C24 14     fsubr   dword ptr [esp+14]
    0042B83E   .  DED9          fcompp
    0042B840   .  DFE0          fstsw   ax
    0042B842   .  F6C4 41       test    ah, 41
    0042B845   .  75 14         jnz     short 0042B85B
    0042B847   .  894C24 18     mov     dword ptr [esp+18], ecx
    0042B84B   .  897C24 1C     mov     dword ptr [esp+1C], edi
    0042B84F   .  DF6C24 18     fild    qword ptr [esp+18]
    0042B853   .  D84C24 20     fmul    dword ptr [esp+20]
    0042B857   .  DEE9          fsubp   st(1), st
    0042B859   .  EB 16         jmp     short 0042B871
    0042B85B   >  DDD8          fstp    st
    0042B85D   .  895424 18     mov     dword ptr [esp+18], edx
    0042B861   .  897C24 1C     mov     dword ptr [esp+1C], edi
    0042B865   .  DF6C24 18     fild    qword ptr [esp+18]
    0042B869   .  D84C24 20     fmul    dword ptr [esp+20]
    0042B86D   .  D86C24 14     fsubr   dword ptr [esp+14]
    0042B871   >  E8 DA4D0800   call    <jmp.&MSVCRT._ftol>
    0042B876   .  8B4C24 70     mov     ecx, dword ptr [esp+70]
    0042B87A   .  C74424 1C 000>mov     dword ptr [esp+1C], 0
    0042B882   .  894C24 18     mov     dword ptr [esp+18], ecx
    0042B886   .  894424 50     mov     dword ptr [esp+50], eax
    0042B88A   .  DF6C24 18     fild    qword ptr [esp+18]
    0042B88E   .  D84C24 20     fmul    dword ptr [esp+20]
    0042B892   .  DA4424 50     fiadd   dword ptr [esp+50]
    0042B896   .  E8 B54D0800   call    <jmp.&MSVCRT._ftol>
    0042B89B   .  8BB6 F0000000 mov     esi, dword ptr [esi+F0]
    0042B8A1   .  8BF8          mov     edi, eax
    0042B8A3   .  8B4424 7C     mov     eax, dword ptr [esp+7C]
    0042B8A7   .  3BC6          cmp     eax, esi
    0042B8A9   .  7E 02         jle     short 0042B8AD
    0042B8AB   .  8BF0          mov     esi, eax
    0042B8AD   >  8B5424 2C     mov     edx, dword ptr [esp+2C]
    0042B8B1   .  C74424 7C 000>mov     dword ptr [esp+7C], 0
    0042B8B9   .  895424 78     mov     dword ptr [esp+78], edx
    0042B8BD   .  897424 54     mov     dword ptr [esp+54], esi
    0042B8C1   .  DF6C24 78     fild    qword ptr [esp+78]
    0042B8C5   .  D84C24 20     fmul    dword ptr [esp+20]
    0042B8C9   .  DA4424 54     fiadd   dword ptr [esp+54]
    0042B8CD   .  E8 7E4D0800   call    <jmp.&MSVCRT._ftol>
    0042B8D2   .  85DB          test    ebx, ebx
    0042B8D4   .  75 04         jnz     short 0042B8DA
    0042B8D6   .  33C9          xor     ecx, ecx
    0042B8D8   .  EB 03         jmp     short 0042B8DD
    0042B8DA   >  8B4B 04       mov     ecx, dword ptr [ebx+4]
    0042B8DD   >  2BC6          sub     eax, esi
    0042B8DF   .  6A 00         push    0
    0042B8E1   .  50            push    eax
    0042B8E2   .  8B4424 58     mov     eax, dword ptr [esp+58]
    0042B8E6   .  2BF8          sub     edi, eax
    0042B8E8   .  57            push    edi
    0042B8E9   .  56            push    esi
    0042B8EA   .  50            push    eax
    0042B8EB   .  51            push    ecx
    0042B8EC   .  8B8D F0110100 mov     ecx, dword ptr [ebp+111F0]
    0042B8F2   >  E8 396E0600   call    CxImage::Draw                                ;  这边可以肯定是未注册大图案的描绘了
    0042B8F7   >  85DB          test    ebx, ebx                                     ;  因为只有在最后画才会显示在最上面啊
    0042B8F9   .  74 09         je      short 0042B904
    0042B8FB   .  8B03          mov     eax, dword ptr [ebx]                         ;  上面的JMP到这里,一定要到这里
    0042B8FD   .  6A 01         push    1
    0042B8FF   .  8BCB          mov     ecx, ebx
    0042B901   .  FF50 04       call    dword ptr [eax+4]                            ;  这个调用可能很有用
    0042B904   >  8B85 F4110100 mov     eax, dword ptr [ebp+111F4]                   ;  不要直接跳到这里
    0042B90A   .  5B            pop     ebx
    0042B90B   .  83F8 01       cmp     eax, 1
    0042B90E   .  75 63         jnz     short 0042B973
    0042B910   .  8B8D 9C110100 mov     ecx, dword ptr [ebp+1119C]
    0042B916   .  85C9          test    ecx, ecx
    0042B918   .  75 40         jnz     short 0042B95A
    0042B91A   .  68 A8010000   push    1A8
    0042B91F   .  E8 303F0800   call    <jmp.&MFC42.#823_operator new>
    0042B924   .  83C4 04       add     esp, 4
    0042B927   .  894424 14     mov     dword ptr [esp+14], eax
    0042B92B   .  85C0          test    eax, eax
    0042B92D   .  C68424 E00400>mov     byte ptr [esp+4E0], 0D
    0042B935   .  74 19         je      short 0042B950
    0042B937   .  8B4D 54       mov     ecx, dword ptr [ebp+54]
    0042B93A   .  6A 01         push    1
    0042B93C   .  6A 01         push    1
    0042B93E   .  6A 01         push    1
    0042B940   .  51            push    ecx
    0042B941   .  8BC8          mov     ecx, eax
    0042B943   .  E8 C85F0600   call    CxImage::CxImage
    0042B948   .  8985 9C110100 mov     dword ptr [ebp+1119C], eax
    0042B94E   .  EB 19         jmp     short 0042B969
    0042B950   >  33C0          xor     eax, eax
    0042B952   .  8985 9C110100 mov     dword ptr [ebp+1119C], eax
    0042B958   .  EB 0F         jmp     short 0042B969
    0042B95A   >  8B55 54       mov     edx, dword ptr [ebp+54]
    0042B95D   .  6A 01         push    1
    0042B95F   .  6A 01         push    1
    0042B961   .  6A 01         push    1
    0042B963   .  52            push    edx
    0042B964   .  E8 E75F0600   call    CxImage::Copy
    0042B969   >  C785 F4110100>mov     dword ptr [ebp+111F4], 0
    0042B973   >  8B8424 880000>mov     eax, dword ptr [esp+88]
    0042B97A   .  C78424 840000>mov     dword ptr [esp+84], 0052AD40
    0042B985   .  50            push    eax
    0042B986   .  E8 493A0800   call    <jmp.&gdiplus.GdipDeleteBrush>               ;  下面开始就是一些GDI的画刷等的释放
    0042B98B   .  8B4C24 30     mov     ecx, dword ptr [esp+30]
    0042B98F   .  51            push    ecx
    0042B990   .  E8 333A0800   call    <jmp.&gdiplus.GdipDeleteFont>
    0042B995   .  8B9424 B00000>mov     edx, dword ptr [esp+B0]
    0042B99C   .  52            push    edx
    0042B99D   .  E8 203A0800   call    <jmp.&gdiplus.GdipDeleteFontFamily>
    0042B9A2   .  8B4424 38     mov     eax, dword ptr [esp+38]
    0042B9A6   .  50            push    eax
    0042B9A7   .  E8 103A0800   call    <jmp.&gdiplus.GdipDeleteGraphics>
    0042B9AC   >  8B8C24 D80400>mov     ecx, dword ptr [esp+4D8]
    0042B9B3   .  5F            pop     edi
    0042B9B4   .  5E            pop     esi
    0042B9B5   .  5D            pop     ebp
    0042B9B6   .  64:890D 00000>mov     dword ptr fs:[0], ecx
    0042B9BD   .  81C4 D8040000 add     esp, 4D8
    0042B9C3   .  C2 0400       retn    4
    =============================================================================================
    说下,为什么一定要跳到0042B8FB这个地址,我们可以看到在call CxImage::Draw,判断了返回值,所以调用返回真
    的画,会执行下面的一个Call,应该有用,如果跳过这几段小代码,直接到0042B904这个地址,我们会发现什么都不描
    绘了。这边可能就是检查下未注册图案是否被描绘了,否则就把显示的全部去除了。

    好了,到这里③④的限制全部去除了,虽然没有保存功能,但可以把处理好的图片用SnagIt捕获就可以了,而且效果还
    不错的。就到这里,感谢您有这个耐心把我的菜鸟文章看完!!!

    --------------------------------------------------------------------------------
    【经验总结】
      分析程序根据程序的运行情况来进行调试,不要漫无目的的进行随便搜索,虽然最后可能找到位置,但是花的时间很多,而
      且不巧的话会自信心狂受打击。
      
    --------------------------------------------------------------------------------
    【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                           2008年05月14日 19:55:52
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-11-12 16:59
  • 签到天数: 1 天

    [LV.1]初来乍到

     楼主| 发表于 2008-7-30 09:07:12 | 显示全部楼层
    要求有能力的完全破解

    确实抓图的分辨率太低,即使自动滚屏也抓不完(不能横向滚屏),而且速度很慢,完全不可取。

    我用的是另一个版本,解决Copy出现未注册提示方法如下:

    bp OpenClipboard

    返回后到如下代码:
    00419476  CALL DWORD PTR DS:[<&USER32.OpenClipboar>; \OpenClipboard
    --返回到这!!!

    向上看:
    004193E1  MOV EDX,ECX
    004193E3  CMP EDX,1F4
    004193E9  JB SHORT CaiYing.00419429
    004193EB  MOV ECX,DWORD PTR DS:[ESI+111EC]
    004193F1  JMP SHORT CaiYing.00419408
    004193F3  CMP EAX,0C8
    004193F8  JB SHORT CaiYing.00419429
    004193FA  CMP ECX,0C8
    00419400  JB SHORT CaiYing.00419429
    00419402  MOV ECX,DWORD PTR DS:[ESI+111F0]
    00419408  MOV EDI,DWORD PTR DS:[ECX+10]
    0041940B  MOV ESI,DWORD PTR DS:[ECX+C]
    0041940E  LEA EDX,DWORD PTR SS:[ESP+14]
    00419412  PUSH 0                                   ; /Arg6 = 00000000
    00419414  NEG EDX                                  ; |
    00419416  SBB EDX,EDX                              ; |
    00419418  PUSH EDI                                 ; |Arg5
    00419419  AND EDX,DWORD PTR SS:[ESP+20]            ; |
    0041941D  PUSH ESI                                 ; |Arg4
    0041941E  SUB EAX,ESI                              ; |
    00419420  PUSH 0                                   ; |Arg3 = 00000000
    00419422  PUSH EAX                                 ; |Arg2
    00419423  PUSH EDX                                 ; |Arg1
    00419424  CALL CaiYing.?Draw@CxImage@@QAEJPAUHDC__>; \?Draw@CxImage@@QAEJPAUHDC__@@JJJJPAUtagRECT@@@Z
    00419429  PUSH 0                                   ; /Arg2 = 00000000
    0041942B  PUSH EBP                                 ; |Arg1
    0041942C  MOV ECX,EBX                              ; |
    0041942E  CALL CaiYing.?CreateFromHBITMAP@CxImage@>; \?CreateFromHBITMAP@CxImage@@QAEXPAUHBITMAP__@@PAUHPALETTE__@@@Z
    00419433  LEA ECX,DWORD PTR SS:[ESP+14]
    00419437  CALL <JMP.&MFC42.#2450_?Detach@CDC@@QAEP>
    0041943C  TEST EBP,EBP
    0041943E  JE SHORT CaiYing.00419447
    00419440  PUSH EBP                                 ; /hObject
    00419441  CALL DWORD PTR DS:[<&GDI32.DeleteObject>>; \DeleteObject
    00419447  LEA ECX,DWORD PTR SS:[ESP+14]
    0041944B  MOV DWORD PTR SS:[ESP+54],-1
    00419453  CALL <JMP.&MFC42.#640_??1CDC@@UAE@XZ>
    00419458  MOV ECX,EBX
    0041945A  CALL CaiYing.?CopyToHandle@CxImage@@QAEP>
    0041945F  MOV ESI,EAX
    00419461  CALL <JMP.&MFC42.#1168_?AfxGetModuleStat>
    00419466  MOV EAX,DWORD PTR DS:[EAX+4]
    00419469  POP EDI
    0041946A  POP EBP
    0041946B  MOV EAX,DWORD PTR DS:[EAX+20]
    0041946E  TEST EAX,EAX
    00419470  JE SHORT CaiYing.00419475
    00419472  MOV EAX,DWORD PTR DS:[EAX+20]
    00419475  PUSH EAX                                 ; /hWnd
    00419476  CALL DWORD PTR DS:[<&USER32.OpenClipboar>; \OpenClipboard

    根据楼主的提示,明显这句是关键:
    00419424   CALL CaiYing.?Draw@CxImage@@QAEJPAUHDC__>; \?Draw@CxImage@@QAEJPAUHDC__@@JJJJPAUtagRECT@@@Z    --未注册提示,跳过即可

    看看在哪里可以跳过:
    004193E3  CMP EDX,1F4
    004193E9  JB SHORT CaiYing.00419429    --改jmp可跳过
    原来程序比较图像是否大于500×200像素,大于则显示未注册,小于则不显示。让判断结果总是小于就行了。^_^
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2019-8-1 20:34
  • 签到天数: 30 天

    [LV.5]常住居民I

    发表于 2008-7-30 09:47:09 | 显示全部楼层
    学习 !!/:good
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2019-11-11 10:41
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2008-7-30 10:03:23 | 显示全部楼层
    学习中,谢谢分享!~
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-7-30 21:21:48 | 显示全部楼层
    不错的想法,采用复制粘贴的方式!!!
    不错不错!!支持!
    PYG19周年生日快乐!
  • TA的每日心情
    郁闷
    2017-10-30 11:22
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2008-9-18 14:33:09 | 显示全部楼层
    学习中,谢谢分享!~
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2008-9-23 07:53:50 | 显示全部楼层
    多谢分享,谢谢了。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-3-9 11:59
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2008-9-28 20:51:32 | 显示全部楼层
    看不懂啊,晕.........
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-3-11 13:47
  • 签到天数: 23 天

    [LV.4]偶尔看看III

    发表于 2008-9-28 21:20:52 | 显示全部楼层
    学习中,谢谢分享!

    /:014
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表