VS终结者原理及思路简要说明

来源:互联网 发布:远程医疗软件 编辑:程序博客网 时间:2024/04/28 06:16


终于三个工具都出了正式版而来,兴奋!不过也好累,有程序啃得时候一点都不觉得累,两餐不吃饭都不觉得饿,今天下午跟同学去打桌球放松了一下,顿然感到体力透支,瞄着球就想睡觉(不过还是连虐他五局,嘻嘻),真累呀~

 

真没时间了,必须潜水去,只要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

 

本来想简要说明的,却说了这么多,希望能给新手一点启示...

 

此去经年,应是良辰美景...

原创粉丝点击