VS终结者原理及思路简要说明
終于三個工具都出了正式版而來,興奮!不過也好累,有程序啃得時候一點都不覺得累,兩餐不吃飯都不覺得餓,今天下午跟同學去打桌球放松了一下,頓然感到體力透支,瞄著球就想睡覺(不過還是連虐他五局,嘻嘻),真累呀~
?
真沒時間了,必須潛水去,只要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
?
本來想簡要說明的,卻說了這么多,希望能給新手一點啟示...
?
此去經年,應是良辰美景...
轉載于:https://www.cnblogs.com/javabluesky/archive/2010/08/10/2211419.html
總結
以上是生活随笔為你收集整理的VS终结者原理及思路简要说明的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 搭建Gitbook+Gitee电子书管理
- 下一篇: 《壹百度—百度十年千倍的29条法则》,互