BR TH 11/20
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 |
入口处JMP走 改为:
0045F640 ^\E9 B3FCFFFF jmp 0045F2F8 0045F2F6 CC int3 |