終於三個工具都出了正式版而來,興奮!不過也好累,有程式啃得時候一點都不覺得累,兩餐不吃飯都不覺得餓,今天下午跟同學去打桌球放鬆了一下,頓然感到體力透支,瞄著球就想睡覺(不過還是連虐他五局,嘻嘻),真累呀~
真沒時間了,必須潛水去,只要VS不進行大規模更新,此工具能一直有效...
==================================================================================
原理簡要說明:
VS檢測作弊肯定不會放在主線程,既然是另開線程,那就好辦的多,用procexp等工具查看一下VS的線程資訊(用HideToolz隱藏,不然會被關閉),通過觀察找到入手點,找到線程啟動地址以後,分析就好辦的多了...
Sleep掉VS反作弊模組的線程,線上程中間函數(VS 3.12 地址:0x0045f640 VS3.0
地址:0x0045f782)處HOOK,判斷傳入地址,如果為檢測反作弊的函數地址則 while(1)
Sleep(10000);,作用一看就明白了,線程不能retn ,不然VS會退出...
至於哪些函數是檢測作弊的,這個也容易找到,搜尋字串“作弊”,搜尋ReadProcessMemory,還有因為通過線程中間函數啟動的只有12個線程,先HOOK一下,得到這12個函數入口地址,縮小範圍在這12個函數裡面找...
還有說明一下:有一個線程不能簡單Sleep,不然啟動魔獸1分鐘左右就會掉線,所以只能在這個函數中nop掉調用檢測函數的代碼...
VS 3.12
0040139D
004016DB
004030F8
00401807
004031A2
004047C3
004039C2
上面7個函數Sleep掉
入口地址為0404B3D的函數,在0045B4D6處NOP五個位元組
VS3.0
004016CC
004017F3
00401389
00403125
004047DC
004031CF
004039E5
上面7個函數Sleep掉
入口地址為00404B5B的函數,在0045B618出NOP五個位元組
=======================================潛水分割線================================
把原理交待了我就可以安心潛水了,上面雖然是簡要說明,但是只要是研究過VS反作弊的朋友一眼就能看懂,只要VS小規模更新,稍微改下代碼就行了...
只是希望繼續破解之路的朋友能免費下去,也不多說了,每個人的出發點不一樣畢竟...
順便說一下,我喜歡用OD直接在記憶體上寫彙編代碼(OD的彙編功能非常強大),寫好後再拷貝出16進位數值,用程式WriteProcessMemory寫進去,這樣方便感覺很舒服... 順便貼一下我寫的彙編代碼,很簡單的幾行...
以VS3.12為例:
0045F640 /. 55 push ebp
0045F641 |. 8BEC mov ebp, esp
0045F643 |. 51 push ecx
0045F644 |. 51 push ecx
0045F645 |. 6A 08 push 8 ; /n = 8
0045F647 |. 8D45 F8 lea eax, dword ptr [ebp-8] ; |
入口處JMP走 改為:
0045F640 ^/E9 B3FCFFFF jmp 0045F2F8
0045F645 6A 08 push 8
0045F2F6 CC int3
0045F2F7 CC int3
0045F2F8 8B5C24 04 mov ebx, dword ptr [esp+4]
0045F2FC 8B03 mov eax, dword ptr [ebx]
0045F2FE 3D 9D134000 cmp eax, 0040139D ;比較函數地址 是 就 JMP到Sleep處
0045F303 74 34 je short 0045F339
0045F305 3D DB164000 cmp eax, 004016DB
0045F30A 74 2D je short 0045F339
0045F30C 3D F8304000 cmp eax, 004030F8
0045F311 74 26 je short 0045F339
0045F313 3D 07184000 cmp eax, 00401807
0045F318 74 1F je short 0045F339
0045F31A 3D C3474000 cmp eax, 004047C3
0045F31F 74 18 je short 0045F339
0045F321 3D C2394000 cmp eax, 004039C2
0045F326 74 11 je short 0045F339
0045F328 3D A2314000 cmp eax, 004031A2
0045F32D 74 0A je short 0045F339
0045F32F 55 push ebp
0045F330 8BEC mov ebp, esp
0045F332 51 push ecx
0045F333 51 push ecx
0045F334 E9 0C030000 jmp 0045F645 ;JMP 回 push 8 處
0045F339 68 10270000 push 2710 ;Sleep
0045F33E FF15 606E5600 call dword ptr [566E60] ; kernel32.Sleep
0045F344 ^ EB F3 jmp short 0045F339 ;JMP 到Sleep
本來想簡要說明的,卻說了這麼多,希望能給新手一點啟示...
此去經年,應是良辰美景...