VS竞技平台2.1版优化

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
    1. 4.去除一开始登陆vs时弹出的Shell_NotifyIcon
      bp Shell_NotifyIconA断下,当参数为NNIM_MODIFY=0x1时出现一个信息框

    2. 0042D936    50              push    eax
    3. 0042D937    57              push    edi
    4. 0042D938    FF15 6C855400   call    dword ptr [<&shell32.Shell_Notif>; shell32.Shell_NotifyIconA
    5. 0042D93E    83FF 02         cmp     edi, 2
    6. 0042D941    74 04           je      short 0042D947
    7. 0042D943    3BC3            cmp     eax, ebx
    8. 0042D945    75 03           jnz     short 0042D94A
    9. 0042D947    895E 34         mov     dword ptr [esi+34], ebx
    10. 0042D94A    5F              pop     edi
    11. 0042D94B    5E              pop     esi
    12. 0042D94C    5B              pop     ebx
    13. 0042D94D    C2 0800         retn    8
    14. 0042D950    CC              int3
    15. 0042D951    CC              int3
    16. 0042D952    CC              int3
    17. 0042D953    CC              int3
    18. 0042D954    CC              int3
    19. 0042D955    CC              int3
    20. 0042D956    CC              int3
    21. 0042D957    CC              int3
    22. 0042D958    CC              int3
    23. 0042D959    CC              int3
    24. 0042D95A    CC              int3
    25. 0042D95B    CC              int3
    26. 修改为:
    27. 0042D936    50              push    eax
    28. 0042D937    57              push    edi
    29. 0042D938    EB 16           jmp     short 0042D950
    30. 0042D93A    90              nop
    31. 0042D93B    90              nop
    32. 0042D93C    90              nop
    33. 0042D93D    90              nop
    34. 0042D93E    83FF 02         cmp     edi, 2
    35. 0042D941    74 04           je      short 0042D947
    36. 0042D943    3BC3            cmp     eax, ebx
    37. 0042D945    75 03           jnz     short 0042D94A
    38. 0042D947    895E 34         mov     dword ptr [esi+34], ebx
    39. 0042D94A    5F              pop     edi
    40. 0042D94B    5E              pop     esi
    41. 0042D94C    5B              pop     ebx
    42. 0042D94D    C2 0800         retn    8
    43. 0042D950    50              push    eax                 ;此处原来为空数据
    44. 0042D951    8B4424 04       mov     eax, dword ptr [esp+4]
    45. 0042D955    83F8 01         cmp     eax, 1
    46. 0042D958    58              pop     eax
    47. 0042D959    74 0A           je      short 0042D965
    48. 0042D95B    68 3ED94200     push    0042D93E
    49. 0042D960  - E9 3C331C7D     jmp     shell32.Shell_NotifyIconA
    50. 0042D965    83C4 08         add     esp, 8
    51. 0042D968  ^ EB E0           jmp     short 0042D94A
    52. 5.MessageBox的去除
      查找字符串 ASCII "请稍后再试"

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

      2. 004B0B2A    B8 F4584C00     mov     eax, 004C58F4
      3. 004B0B2F    E8 7C920000     call    004B9DB0
      4. 004B0B34    81EC 88050000   sub     esp, 588
      5. 004B0B3A    53              push    ebx
      6. 004B0B3B    56              push    esi
      7. 004B0B3C    8B35 A89E4E00   mov     esi, dword ptr [4E9EA8]
      8. 004B0B42    57              push    edi
      9. 004B0B43    33FF            xor     edi, edi
      10. 004B0B45    894D F0         mov     dword ptr [ebp-10], ecx
      11. 004B0B48    39BE 5C050000   cmp     dword ptr [esi+55C], edi
      12. 004B0B4E    74 5A           je      short 004B0BAA
        1. 怀疑这个函数就是处理鼠标左键单击进出的,在此处下断,看看返回的函数是什么
          但通过多次返回发现发起鼠标左键消息的代码可能是在[返回到 MFC42.73D31FF8]这里面。
          这里是处理鼠标左键消息的代码。。。(不知道是否完全正确^_^)

        2. 004AFD22    A1 A89E4E00     mov     eax, dword ptr [4E9EA8]
        3. 004AFD27    56              push    esi
        4. 004AFD28    6A 00           push    0
        5. 004AFD2A    8BF1            mov     esi, ecx
        6. 004AFD2C    FFB0 C4040000   push    dword ptr [eax+4C4]
        7. 004AFD32    B9 E0A04E00     mov     ecx, 004EA0E0
        8. 004AFD37    E8 E924F5FF     call    00402225
        9. 004AFD3C    6A 02           push    2
        10. 004AFD3E    6A FF           push    -1
        11. 004AFD40    68 0C100000     push    100C
        12. 004AFD45    FF76 20         push    dword ptr [esi+20]
        13. 004AFD48    FF15 5C865400   call    dword ptr [<&user32.SendMessageA>]    ; USER32.SendMessageA
        14. 004AFD4E    85C0            test    eax, eax
        15. 004AFD50    7C 12           jl      short 004AFD64
        16. 004AFD52    50              push    eax
        17. 004AFD53    8BCE            mov     ecx, esi
        18. 004AFD55    E8 44A00000     call    004B9D9E                              ; jmp 到 MFC42.#3286_CListCtrl::GetItemData
        19. 004AFD5A    FF70 0C         push    dword ptr [eax+C]
        20. 004AFD5D    8BCE            mov     ecx, esi
        21. 004AFD5F    E8 1828F5FF     call    0040257C
        22. 004AFD64    5E              pop     esi
        23. 004AFD65    C2 0C00         retn    0C
          1. 我们没有必要完全弄明白上面的代码到底是什么功能,但是可以知道的是下面的为关键代码:

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

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

          54. 004370A7    68 542C4E00     push    004E2C54                                     ; ASCII "APPBCB"
          55. 004370AC    6A 04           push    4
          56. 004370AE    53              push    ebx
          57. 004370AF    6A 04           push    4
          58. 004370B1    53              push    ebx
          59. 004370B2    6A FF           push    -1
          60. 004370B4    FF15 48815400   call    dword ptr [<&kernel32.CreateFileMappingA>]   ; kernel32.CreateFileMappingA
          61. 004370BA    3BC3            cmp     eax, ebx
          62. 004370BC    A3 18A54E00     mov     dword ptr [<hFileMap>], eax
          63. 004370C1    74 1B           je      short 004370DE
          64. 004370C3    FF15 30815400   call    dword ptr [<&kernel32.GetLastError>]         ; ntdll.RtlGetLastWin32Error
          65. 004370C9    3BC6            cmp     eax, esi
          66. 004370CB    75 11           jnz     short 004370DE
          67. 004370CD    53              push    ebx
          68. 004370CE    53              push    ebx
          69. 004370CF    68 442C4E00     push    004E2C44
          70. 004370D4    E8 C7270800     call    004B98A0                                     ; jmp 到 MFC42.#1200_AfxMessageBox
          71. 004370D9    E9 8B070000     jmp     00437869                                     ; 居然用CreateFileMap来检测是否内存中是否有程序运行
          72. 0038CF03    FF15 5C313900   call    dword ptr [<&MSVCRT.fprintf>]           ; MSVCRT.fprintf
          73. 0038CF09    83C4 10         add     esp, 10
          74. 0038CF0C    8B4D F0         mov     ecx, dword ptr [ebp-10]
          75. 0038CF0F    51              push    ecx
          76. 0038CF10    FF15 60313900   call    dword ptr [<&MSVCRT.fclose>]            ; MSVCRT.fclose
          77. 0038CF16    83C4 04         add     esp, 4
            1. 这里为W C D A VSClient.exe check failed的返回处,即这里有可能是检测文件是否有效的地方,在段首下断

            2. 0038CE60    55              push    ebp
            3. 0038CE61    8BEC            mov     ebp, esp
            4. 0038CE63    6A FF           push    -1
            5. 0038CE65    68 F2263900     push    003926F2                                ; 溉a9
            6. 0038CE6A    64:A1 00000000  mov     eax, dword ptr fs:[0]
            7. 0038CE70    50              push    eax
            8. 0038CE71    64:8925 0000000>mov     dword ptr fs:[0], esp
            9. 0038CE78    83EC 1C         sub     esp, 1C
            10. 0038CE7B    68 F86B3900     push    00396BF8                                ; a+
              1. 这里是在WYClient模块中

              2. 0046ADFB    50              push    eax
              3. 0046ADFC    57              push    edi
              4. 0046ADFD    8945 E4         mov     dword ptr [ebp-1C], eax
              5. 0046AE00    FF15 04885400   call    dword ptr [<&wyclientdataapi.CP>]       ; WYClient.CP
              6. 0046AE06    59              pop     ecx
              7. 0046AE07    FEC0            inc     al
              8. 0046AE09    59              pop     ecx
              9. 0046AE0A    75 36           jnz     short 0046AE42                          ; 修改这里可以登陆
                1. 这里就是调用检测模块的

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

                2. 00383016    68 10533900     push    00395310                         ; developmentfilename
                3. 0038301B    8D8D A8F7FFFF   lea     ecx, dword ptr [ebp-858]
                4. 00383021    E8 BA9D0000     call    <_strcmp??>                      ; 是否为developmenfilename
                5. 00383026    85C0            test    eax, eax
                6. 00383028    75 45           jnz      short 0038306F
                7. 改为:
                8. 00383016    68 10533900     push    00395310                         ; developmentfilename
                9. 0038301B    8D8D A8F7FFFF   lea     ecx, dword ptr [ebp-858]
                10. 00383021    E8 BA9D0000     call    <_strcmp??>                      ; 是否为developmenfilename
                11. 00383026    85C0            test    eax, eax
                12. 00383028    74 45           je      short 0038306F
                13. 这里还有一处:
                14. 0045AA50    68 DC3A4E00     push    004E3ADC                         ; development
                15. 0045AA55    FF75 E0         push    dword ptr [ebp-20]
                16. 0045AA58    FF15 94845400   call    dword ptr [<&msvcrt._mbscmp>]    ; (initial cpu selection)
                17. 0045AA5E    59              pop     ecx
                18. 0045AA5F    85C0            test    eax, eax
                19. 0045AA61    59              pop     ecx
                20. 0045AA62    75 0E           jnz      short 0045AA72                   ; 难道改这里可以变成developmode?不是吧,嘿嘿
                21. 改为:
                22. 0045AA50    68 DC3A4E00     push    004E3ADC                         ; development
                23. 0045AA55    FF75 E0         push    dword ptr [ebp-20]
                24. 0045AA58    FF15 94845400   call    dword ptr [<&msvcrt._mbscmp>]    ; (initial cpu selection)
                25. 0045AA5E    59              pop     ecx
                26. 0045AA5F    85C0            test    eax, eax
                27. 0045AA61    59              pop     ecx
                28. 0045AA62    74 0E           je      short 0045AA72                   ; 难道改这里可以变成developmode?不是吧,嘿嘿
                29. 在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 [email protected]
                  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 [email protected]
                  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)

                  你可能感兴趣的:(c,优化,service,mfc,Build,平台)