做游戏加速的那些事

一开始以为只要hook一个  gettimeofday就可以了 但是发现 在到他传奇里居然不行的  按钮点不进去了  但是效果是有的

而后发现需要同时hook  gettimeofday和clock_time两个函数才行的

原理就是 】

一个起始的时间值   ,假设1000开始

  1000 

   1100      1100 - 1000然后乘以倍数2  就变成了   200  加上起始值  此时的时间为1200  就是加速了   本来过了100ms  现在变成了200毫秒

 之后因为SO已经被注入到进程了  相当于独立了已经  那么此时需要在这个SO文件中设置一个变量来修改速度

 用了mmap发现需要不停的分配虚拟内存很快就挂掉了    之所以不用其他的read fread是考虑到了效率  

一开始放在微妙的hook函数里来读取时间文件  这样就变成了毫秒级的修改文件,肯定会死掉 

之后用了延迟从文件定时读取   这样子就可以了 

但是不稳定 没多久就挂了  之后发现是mmap读取一阵子文件就不能读取了

最后换成了简单的read 和write来修改 

脱脱的

   

 最开始是在一个 activity中的animation来做测试的

发现只能加速不能减速,并且用了注入dex的方式来加载,因为考虑到想chaczhushou那样子  启动游戏则显示 其他时候不显示

但是发现只可以加速不可以减速  蛋疼   后来猜想应该是animation采用的不是gettimeofday  clocktime  而游戏是opengl来绘制的

 

 

strncpy效率低于sprintf低于memcpy

posted @ 2016-03-02 12:37  xadxxx  阅读(716)  评论(0编辑  收藏  举报