VS竞技平台2.1版优化

本文介绍了一种针对VS客户端的优化方案,包括去除不必要的提示框、调整文件完整性和内存检测等步骤,通过具体代码示例展示了如何实现这些优化。

1.脱壳加修复,主要在修复上
2.检测文件的完整性。。。暴力修改
3.去除关闭vs时弹出的对话框

  • 004A80F3    6A 00           push    0
  • 004A80F5    6A 04           push    4
  • 004A80F7    68 F45E4E00     push    004E5EF4
  • 004A80FC    E8 9F170100     call    004B98A0                         ; jmp 到 MFC42.#1200_AfxMessageBox
  • 004A8101    83F8 06         cmp     eax, 6
  • 004A8104    75 13           jnz     short 004A8119
  • 004A8106    E8 A8AEF5FF     call    00402FB3
  • 004A810B    8BCE            mov     ecx, esi
  • 004A810D    E8 1996F5FF     call    0040172B
  • 004A8112    8BCE            mov     ecx, esi
  • 004A8114    E8 9F170100     call    004B98B8                         ; jmp 到 MFC42.#4376_CDialog::OnCancel
  • 004A8119    5E              pop     esi
  • 004A811A    C3              retn
  • 修改为:
  • 004A80F3    6A 00           push    0
  • 004A80F5    6A 04           push    4
  • 004A80F7    68 F45E4E00     push    004E5EF4
  • 004A80FC    E8 9F170100     call    004B98A0                         ; jmp 到 MFC42.#1200_AfxMessageBox
  • 004A8101    83F8 06         cmp     eax, 6
  • 004A8104    75 13           jnz     short 004A8119
  • 004A8106    EB 0C           jmp     short 004A8114
  • 004A8113    90              nop
  • 004A8114    E8 9F170100     call    004B98B8                         ; jmp 到 MFC42.#4376_CDialog::OnCancel
  • 004A8119    5E              pop     esi
  • 004A811A    C3              retn

    4.去除一开始登陆vs时弹出的Shell_NotifyIcon
    bp Shell_NotifyIconA断下,当参数为NNIM_MODIFY=0x1时出现一个信息框

    • 0042D936    50              push    eax
    • 0042D937    57              push    edi
    • 0042D938    FF15 6C855400   call    dword ptr [<&shell32.Shell_Notif>; shell32.Shell_NotifyIconA
    • 0042D93E    83FF 02         cmp     edi, 2
    • 0042D941    74 04           je      short 0042D947
    • 0042D943    3BC3            cmp     eax, ebx
    • 0042D945    75 03           jnz     short 0042D94A
    • 0042D947    895E 34         mov     dword ptr [esi+34], ebx
    • 0042D94A    5F              pop     edi
    • 0042D94B    5E              pop     esi
    • 0042D94C    5B              pop     ebx
    • 0042D94D    C2 0800         retn    8
    • 0042D950    CC              int3
    • 0042D951    CC              int3
    • 0042D952    CC              int3
    • 0042D953    CC              int3
    • 0042D954    CC              int3
    • 0042D955    CC              int3
    • 0042D956    CC              int3
    • 0042D957    CC              int3
    • 0042D958    CC              int3
    • 0042D959    CC              int3
    • 0042D95A    CC              int3
    • 0042D95B    CC              int3
    • 修改为:
    • 0042D936    50              push    eax
    • 0042D937    57              push    edi
    • 0042D938    EB 16           jmp     short 0042D950
    • 0042D93A    90              nop
    • 0042D93B    90              nop
    • 0042D93C    90              nop
    • 0042D93D    90              nop
    • 0042D93E    83FF 02         cmp     edi, 2
    • 0042D941    74 04           je      short 0042D947
    • 0042D943    3BC3            cmp     eax, ebx
    • 0042D945    75 03           jnz     short 0042D94A
    • 0042D947    895E 34         mov     dword ptr [esi+34], ebx
    • 0042D94A    5F              pop     edi
    • 0042D94B    5E              pop     esi
    • 0042D94C    5B              pop     ebx
    • 0042D94D    C2 0800         retn    8
    • 0042D950    50              push    eax                 ;此处原来为空数据
    • 0042D951    8B4424 04       mov     eax, dword ptr [esp+4]
    • 0042D955    83F8 01         cmp     eax, 1
    • 0042D958    58              pop     eax
    • 0042D959    74 0A           je      short 0042D965
    • 0042D95B    68 3ED94200     push    0042D93E
    • 0042D960  - E9 3C331C7D     jmp     shell32.Shell_NotifyIconA
    • 0042D965    83C4 08         add     esp, 8
    • 0042D968  ^ EB E0           jmp     short 0042D94A

    5.MessageBox的去除
    查找字符串 ASCII "请稍后再试"

    • 004B0C8E    E8 440EF5FF     call    00401AD7                             ; 这里是检测时间的函数
    • 004B0C93    85C0            test    eax, eax
    • 004B0C95    75 11           jnz     short 004B0CA8
    • 004B0C97    57              push    edi
    • 004B0C98    57              push    edi
    • 004B0C99    68 78674E00     push    004E6778                             ; ASCII "请稍后再试"
    • 004B0C9E    E8 FD8B0000     call    004B98A0                             ; jmp 到 MFC42.#1200_AfxMessageBox

      找到这个函数的开头:

      • 004B0B2A    B8 F4584C00     mov     eax, 004C58F4
      • 004B0B2F    E8 7C920000     call    004B9DB0
      • 004B0B34    81EC 88050000   sub     esp, 588
      • 004B0B3A    53              push    ebx
      • 004B0B3B    56              push    esi
      • 004B0B3C    8B35 A89E4E00   mov     esi, dword ptr [4E9EA8]
      • 004B0B42    57              push    edi
      • 004B0B43    33FF            xor     edi, edi
      • 004B0B45    894D F0         mov     dword ptr [ebp-10], ecx
      • 004B0B48    39BE 5C050000   cmp     dword ptr [esi+55C], edi
      • 004B0B4E    74 5A           je      short 004B0BAA

        怀疑这个函数就是处理鼠标左键单击进出的,在此处下断,看看返回的函数是什么
        但通过多次返回发现发起鼠标左键消息的代码可能是在[返回到 MFC42.73D31FF8]这里面。
        这里是处理鼠标左键消息的代码。。。(不知道是否完全正确^_^)

        • 004AFD22    A1 A89E4E00     mov     eax, dword ptr [4E9EA8]
        • 004AFD27    56              push    esi
        • 004AFD28    6A 00           push    0
        • 004AFD2A    8BF1            mov     esi, ecx
        • 004AFD2C    FFB0 C4040000   push    dword ptr [eax+4C4]
        • 004AFD32    B9 E0A04E00     mov     ecx, 004EA0E0
        • 004AFD37    E8 E924F5FF     call    00402225
        • 004AFD3C    6A 02           push    2
        • 004AFD3E    6A FF           push    -1
        • 004AFD40    68 0C100000     push    100C
        • 004AFD45    FF76 20         push    dword ptr [esi+20]
        • 004AFD48    FF15 5C865400   call    dword ptr [<&user32.SendMessageA>]    ; USER32.SendMessageA
        • 004AFD4E    85C0            test    eax, eax
        • 004AFD50    7C 12           jl      short 004AFD64
        • 004AFD52    50              push    eax
        • 004AFD53    8BCE            mov     ecx, esi
        • 004AFD55    E8 44A00000     call    004B9D9E                              ; jmp 到 MFC42.#3286_CListCtrl::GetItemData
        • 004AFD5A    FF70 0C         push    dword ptr [eax+C]
        • 004AFD5D    8BCE            mov     ecx, esi
        • 004AFD5F    E8 1828F5FF     call    0040257C
        • 004AFD64    5E              pop     esi
        • 004AFD65    C2 0C00         retn    0C

          我们没有必要完全弄明白上面的代码到底是什么功能,但是可以知道的是下面的为关键代码:

          • 004B0C8D    53              push    ebx
          • 004B0C8E    E8 440EF5FF     call    00401AD7                              ; 这里是检测时间的函数
          • 004B0C93    85C0            test    eax, eax
          • 004B0C95    75 11           jnz     short 004B0CA8
          • 004B0C97    57              push    edi
          • 004B0C98    57              push    edi
          • 004B0C99    68 78674E00     push    004E6778                              ; 请稍后再试
          • 004B0C9E    E8 FD8B0000     call    004B98A0                              ; jmp 到 MFC42.#1200_AfxMessageBox
          • 004B0CA3    E9 97020000     jmp     004B0F3F
          • 004B0CA8    8D9E DC040000   lea     ebx, dword ptr [esi+4DC]
          • 004B0CAE    8BCB            mov     ecx, ebx
          • 004B0CB0    E8 171EF5FF     call    00402ACC
          • 004B0CB5    8D8E C0610000   lea     ecx, dword ptr [esi+61C0]
          • 004B0CBB    6A 01           push    1
          • 004B0CBD    E8 2F2BF5FF     call    004037F1
          • 004B0CC2    57              push    edi
          • 004B0CC3    8D8D 6CFAFFFF   lea     ecx, dword ptr [ebp-594]
          • 004B0CC9    E8 220EF5FF     call    00401AF0
          • 004B0CCE    8D8D 6CFAFFFF   lea     ecx, dword ptr [ebp-594]
          • 004B0CD4    C645 FC 06      mov     byte ptr [ebp-4], 6                   ; 数秒的对话框
          • 004B0CD8    E8 C98B0000     call    004B98A6                              ; jmp 到 MFC42.#2514_CDialog::DoModal
          • 004B0CDD    8B8D D0FAFFFF   mov     ecx, dword ptr [ebp-530]              ; [ebp-530]=0时,则进入房间?
          • 004B0CE3    B8 F8030000     mov     eax, 3F8                              ; 3F8可能为一个标志
          • 004B0CE8    3BC8            cmp     ecx, eax
          • 004B0CEA    0F8F B3010000   jg      004B0EA3
          • 004B0CF0    0F84 A4010000   je      004B0E9A
          • 004B0CF6    83F9 F6         cmp     ecx, -0A
          • 004B0CF9    0F84 1D020000   je      004B0F1C
          • 004B0CFF    3BCF            cmp     ecx, edi
          • 004B0D01    0F84 46010000   je      004B0E4D
          • 004B0D07    81F9 F2030000   cmp     ecx, 3F2
          • 004B0D0D    0F84 2E010000   je      004B0E41
          • 004B0D13    81F9 F3030000   cmp     ecx, 3F3
          • 004B0D19    0F84 AF000000   je      004B0DCE
          • 004B0D1F    81F9 F4030000   cmp     ecx, 3F4
          • 004B0D25    74 2C           je      short 004B0D53
          • 004B0D27    81F9 F6030000   cmp     ecx, 3F6
          • 004B0D2D    74 18           je      short 004B0D47
          • 004B0D2F    81F9 F7030000   cmp     ecx, 3F7
          • 004B0D35    0F85 81010000   jnz     004B0EBC
          • 修改为:
          • 004B0CD8    E8 C98B0000     call    004B98A6                         ; jmp 到 MFC42.#2514_CDialog::DoModal
          • 004B0CDD    8B8D D0FAFFFF   mov     ecx, dword ptr [ebp-530]
          • 004B0CE3  ^ E9 18FEFFFF     jmp     004B0B00
          • 004B0CE8    3BC8            cmp     ecx, eax
          • 004B0B00    83F9 F6         cmp     ecx, -0A                         ; 是否点击取消
          • 004B0B03    74 09           je      short 004B0B0E
          • 004B0B05    83F9 00         cmp     ecx, 0                           ; 是否进入
          • 004B0B08    0F85 9A010000   jnz     004B0CA8
          • 004B0B0E    B8 F8030000     mov     eax, 3F8
          • 004B0B13    E9 D0010000     jmp     004B0CE8

          好了,一个完整的优化版就这样出来了,嘿嘿

          补充:发现这个版本比不完美。。。自己的VS账号被封了,看来还有一些检测我并没有发现。在VS.txt我发现一些有用的信息:
          W C D A VSClient.exe check failed   这是一开始VSClient.exe检测失败后的写的信息
          V C i t 7月22日 13:49:30  发现了作弊软件0000正在运行 这是开启OD后发现的一些信息
          分析这两个地方,第一个很明显作了程序的完整性检查,所以我们可以从一开始的那个开始

          • 004370A7    68 542C4E00     push    004E2C54                                     ; ASCII "APPBCB"
          • 004370AC    6A 04           push    4
          • 004370AE    53              push    ebx
          • 004370AF    6A 04           push    4
          • 004370B1    53              push    ebx
          • 004370B2    6A FF           push    -1
          • 004370B4    FF15 48815400   call    dword ptr [<&kernel32.CreateFileMappingA>]   ; kernel32.CreateFileMappingA
          • 004370BA    3BC3            cmp     eax, ebx
          • 004370BC    A3 18A54E00     mov     dword ptr [<hFileMap>], eax
          • 004370C1    74 1B           je      short 004370DE
          • 004370C3    FF15 30815400   call    dword ptr [<&kernel32.GetLastError>]         ; ntdll.RtlGetLastWin32Error
          • 004370C9    3BC6            cmp     eax, esi
          • 004370CB    75 11           jnz     short 004370DE
          • 004370CD    53              push    ebx
          • 004370CE    53              push    ebx
          • 004370CF    68 442C4E00     push    004E2C44
          • 004370D4    E8 C7270800     call    004B98A0                                     ; jmp 到 MFC42.#1200_AfxMessageBox
          • 004370D9    E9 8B070000     jmp     00437869                                     ; 居然用CreateFileMap来检测是否内存中是否有程序运行
          • 0038CF03    FF15 5C313900   call    dword ptr [<&MSVCRT.fprintf>]           ; MSVCRT.fprintf
          • 0038CF09    83C4 10         add     esp, 10
          • 0038CF0C    8B4D F0         mov     ecx, dword ptr [ebp-10]
          • 0038CF0F    51              push    ecx
          • 0038CF10    FF15 60313900   call    dword ptr [<&MSVCRT.fclose>]            ; MSVCRT.fclose
          • 0038CF16    83C4 04         add     esp, 4

            这里为W C D A VSClient.exe check failed的返回处,即这里有可能是检测文件是否有效的地方,在段首下断

            • 0038CE60    55              push    ebp
            • 0038CE61    8BEC            mov     ebp, esp
            • 0038CE63    6A FF           push    -1
            • 0038CE65    68 F2263900     push    003926F2                                ; 溉a9
            • 0038CE6A    64:A1 00000000  mov     eax, dword ptr fs:[0]
            • 0038CE70    50              push    eax
            • 0038CE71    64:8925 0000000>mov     dword ptr fs:[0], esp
            • 0038CE78    83EC 1C         sub     esp, 1C
            • 0038CE7B    68 F86B3900     push    00396BF8                                ; a+

              这里是在WYClient模块中

              • 0046ADFB    50              push    eax
              • 0046ADFC    57              push    edi
              • 0046ADFD    8945 E4         mov     dword ptr [ebp-1C], eax
              • 0046AE00    FF15 04885400   call    dword ptr [<&wyclientdataapi.CP>]       ; WYClient.CP
              • 0046AE06    59              pop     ecx
              • 0046AE07    FEC0            inc     al
              • 0046AE09    59              pop     ecx
              • 0046AE0A    75 36           jnz     short 0046AE42                          ; 修改这里可以登陆

                这里就是调用检测模块的

                这里发现有关于development模式的监测,这里我们暴力修改(如果不暴力的话,需要先解密一个文件,然后从那里面读出所有文件的MD5值,然后再自己手工计算出文件的MD5值,最后利用加密函数修改这个文件,太麻烦了。。。)

                • 00383016    68 10533900     push    00395310                         ; developmentfilename
                • 0038301B    8D8D A8F7FFFF   lea     ecx, dword ptr [ebp-858]
                • 00383021    E8 BA9D0000     call    <_strcmp??>                      ; 是否为developmenfilename
                • 00383026    85C0            test    eax, eax
                • 00383028    75 45           jnz      short 0038306F
                • 改为:
                • 00383016    68 10533900     push    00395310                         ; developmentfilename
                • 0038301B    8D8D A8F7FFFF   lea     ecx, dword ptr [ebp-858]
                • 00383021    E8 BA9D0000     call    <_strcmp??>                      ; 是否为developmenfilename
                • 00383026    85C0            test    eax, eax
                • 00383028    74 45           je      short 0038306F
                • 这里还有一处:
                • 0045AA50    68 DC3A4E00     push    004E3ADC                         ; development
                • 0045AA55    FF75 E0         push    dword ptr [ebp-20]
                • 0045AA58    FF15 94845400   call    dword ptr [<&msvcrt._mbscmp>]    ; (initial cpu selection)
                • 0045AA5E    59              pop     ecx
                • 0045AA5F    85C0            test    eax, eax
                • 0045AA61    59              pop     ecx
                • 0045AA62    75 0E           jnz      short 0045AA72                   ; 难道改这里可以变成developmode?不是吧,嘿嘿
                • 改为:
                • 0045AA50    68 DC3A4E00     push    004E3ADC                         ; development
                • 0045AA55    FF75 E0         push    dword ptr [ebp-20]
                • 0045AA58    FF15 94845400   call    dword ptr [<&msvcrt._mbscmp>]    ; (initial cpu selection)
                • 0045AA5E    59              pop     ecx
                • 0045AA5F    85C0            test    eax, eax
                • 0045AA61    59              pop     ecx
                • 0045AA62    74 0E           je      short 0045AA72                   ; 难道改这里可以变成developmode?不是吧,嘿嘿

                在vs.txt中会显示如下内容,只是一次登陆的内容
                V C i t 7月23日 16:17:21  version release-2.1 mini 13 load in WinXP Professional Service Pack 2 (Build 2600)
                V C i t 7月23日 16:17:24  mudnom 20
                V C i t 7月23日 16:17:25  bare DoNull@im15.vsa.com.cn
                V C i t 7月23日 16:17:25  connect to 121.14.223.19 1117
                V C i t 7月23日 16:17:28  development mod
                一开始的破解版本显示:
                V C i t 7月23日 16:19:15  version release-2.1 mini 13 load in WinXP Professional Service Pack 2 (Build 2600)
                V C i t 7月22日 17:12:17  mudnom 20
                V C i t 7月22日 17:12:19  bare 123fuckvs@im9.vsa.com.cn
                W C D A VSClient.exe check failed
                V C i t 7月22日 17:15:56  version release-2.1 mini 13 load in WinXP Professional Service Pack 2 (Build 2600)

                评论
                成就一亿技术人!
                拼手气红包6.0元
                还能输入1000个字符
                 
                红包 添加红包
                表情包 插入表情
                 条评论被折叠 查看
                添加红包

                请填写红包祝福语或标题

                红包个数最小为10个

                红包金额最低5元

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

                抵扣说明:

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

                余额充值