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

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 [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)

發佈了18 篇原創文章 · 獲贊 4 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章