很多人都玩过游戏,一般如果游戏中有要求加速的时候我们可能反应操作不过来,所以要想办法让其减慢速度。因此小虫系统小编推荐变速齿轮这个工具。那么为什么变速齿轮会变速呢?原理很简单,主要是根据API函数GETTICKCOUNT和TIMEGETTIME来做到的。
变速齿轮通过修改API函数GETTICKCOUNT和TIMEGETTIME骗过了游戏和程序的定时器导致游戏和程序速度看起来被改变。
下面以GETTICKCOUNT为例进行分析:原本的GETTICKCOUNT汇编:
kernel32!gettickcount mov gs,[bffcaea18]
mov eax,gs:[00000000]
sub edx,edx
mov gs,dx
ret
变速齿轮修改后的GETTICKCOUNT汇编:
kernel32!gettickcount
这里是关键--》jmp 840500d9(840500d9并不是绝对的)
add [eax],al
add [e
cx+00000000],ah
sub edx,edx
mov gs,dx
ret
可以看出变速齿轮修改了gettickcount的代码,当游戏和程序使用gettickcount时就会自动跳转到840500d9处执行。
再看看840500d9处的代码汇编:
840500d9:CLI
push ebp
mov ebp,esp
push ebx
push ecx
push edx
push esi
push edi
call 840500e7
840500e7:pop edi
xor di,di
mov esi,edi
add esi,00402051
sub esi,00401f0b
push esi
call edi
call 84050101
84050101:pop edi
xor di,di
call [edi+0000fef0]
call 84050110
84050110:sub eax,[edi+0000ff30]
mul dword,ptr[edi+0000ff30]
mov ebx,00100000
div ebx
add eax,[edi+0000fe20]
push eax
mov eax,00402072
sub eax,00401f08
add eax,edi
push eax
call edi
pop eax
pop edi
pop esi
pop edx
pop ecx
pop ebx
pop ebp
sil
ret
以上正是变速齿轮变速的核心所在。(GETTICKCOUNT返回的是EAX的值你可以对EAX进行跟踪)
所以呢,我们在使用变速齿轮的时候就可以实现速度增加和减慢的变换操作。