变速齿轮改变速度的原理
日期:2013-02-23  浏览:98

  很多人都玩过游戏,一般如果游戏中有要求加速的时候我们可能反应操作不过来,所以要想办法让其减慢速度。因此小虫系统小编推荐变速齿轮这个工具。那么为什么变速齿轮会变速呢?原理很简单,主要是根据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进行跟踪)

  所以呢,我们在使用变速齿轮的时候就可以实现速度增加和减慢的变换操作。

展开全部  
 猜你喜欢: