我玩游戏很多年了。虽然不是什么黑客。但是一些基本的知识还是知道的。
WPE封包我想大家都知道吧。我的思路就是买训练。抓封包。
没有经过测试。但是我有时间的话。我自己还是会测试的。
这个希望大家能等待好消息。。
另外还有茶的三分的原理。
mov eax, dword ptr [BF3358]
imul eax, eax, 343FD
add eax, 269EC3
nop
nop
sar eax, 10
and eax, 7FFF
mov dword ptr [BF3358], eax
retn
大概思路是某一全局变量(随机值)的值乘以0x343fd加0x269ec3再右移10位,再加上0x7fff,然后把值给予这个全局变量。
可以看到不再是以前那个泛滥版本的以函数返回值为随机值。还多了2处NOP,说明这里的代码是被重点关照过的。
那么我们的某什么什么是怎么改的呢?
这里可以看到整个随机数的算法(他的初始随机值是通过gettickconut函数获得的),想修改那里都可以了对吗。
那么我们单拿某XXX神作来说。他是修改了and eax,7fff的数据,这里的机器码是25 ff 7f 00 00 。我们只要修改成25 00 00 00 00就可以实现BF3358值的低16位置0(0=命中100%)。它正是控制你们运气的数值。
然而这个函数的并不仅仅参与命中计算,所以大家就看到了很多通过修改它而获得的“额外功能”。
加速过HS反加速的代码。也不一定完全正确。
一类是通过HOOK计算机时间有关函数做到的...恩,我们先拿变速齿轮来说明
变速齿轮的工作原理是,拦截createprocessW/A监控指定进程创建,当创建初始就注入自己功能DLL,用来拦截settimer
getmessagetime,gettickconut,gettheadlocale
具体函数说明不写了,会的不要查,不会的说了也看不明白
就是这个gettheadlocale不明白勾他干什么.......反正不是重点,不说了
把问题就是出来了哦~~现在怎么检测呢?
这些API齿轮使用的INLINE HOOK和SEH HOOK...这2个HOOK一个要改写程序调用的系统DLL一个要改积存器...都操作了进程内的数据,尤其INLINE HOOK...特别容易被检测....所以很多游戏都可以可以反变速齿轮
当然大多数用的不是HOOK检测,应该很多正常软件也会HOOK,
还有个方法就是利用驱动程序直接进入RONG0层,调用低层计算机计时频率函数(具体函数名 -保密,不好意思),再把一定时间差结果和RING3的函数得出的差对比,检测机器速度是否正常...
那么知道了原理就很简单了...
我们可以制作一个在驱动层的HOOK程序修改如kEUSERSETTIMER函数参数,达到加速的目的,而目前却没有几个反加速程序会检测它之类的函数的HOOK,以及自身HOOK的
貌似街球加速不行啊。...不知道他怎么检测计算机正确频率的....55555555~~~~~~泪奔~~KeUpdateSystemTime,KEQUERYSYSTEMTIME,KESETTIMEEX.我都HOOK了啊~~~~怎么还被检测~~~~~~~~5555
就差改_KUSER_SHARED_DATA了...(直接改也改不了,时时更新的...曰)
贴一个HS我觉得是反加速的代码[启发下各位哦~~别说在说我来显摆之类的JJWW的]
TimeFields= TIME_FIELDS ptr -24h
var_14= dword ptr -14h
Time= LARGE_INTEGER ptr -10h
push ebp
mov ebp, esp
sub esp, 28h
lea eax, [ebp+Time]
push eax ; CurrentTime
call dword ptr ds:KeQuerySystemTime :---获得当前计算机时间[原点时间开始(就是几百年前的时间)]
lea ecx, [ebp+TimeFields] :---设置TimeFields
push ecx ; TimeFields
lea edx, [ebp+Time]
push edx ; Time
call ds:RtlTimeToTimeFields :---将获得的当前时间转化成分:秒形式
movsx eax, [ebp+TimeFields.Minute]
imul eax, 3Ch :---把分再算成秒
movsx ecx, [ebp+TimeFields.Second] :---把本来的秒数读到积存器
add eax, ecx :---把分变的秒和本来的秒加起来得到一个当前计算机时间(秒为单位)
mov [ebp+var_14], eax
mov eax, [ebp+var_14] :---把这个最后时间设置为返回值.
mov esp, ebp
pop ebp
retn
其返回值是秒为单位的
最后在小说下为什么我怀疑这个是反加速函数~~
因为KEQUERYSYSTEMTIME函数返回的是计算机时间,单位是纳秒.
但是如果HS是单纯的为了获得电脑时间的话,为什么没有把返回的时间先转化成本地时间(直接获得返回值不是我们用的东8的区时哦),再有为什么还要把获得的时间转化成秒为单位的整数呢?