| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> JavaScript知识库 -> JavaScript奇淫技巧:变速齿轮 -> 正文阅读 |
|
[JavaScript知识库]JavaScript奇淫技巧:变速齿轮 |
在PC时代,曾有个名为“变速齿轮”的神奇软件,可以加快或减慢系统时间,常用于修改游戏速度,实现外挂一般的效果,很不可思议。 本文,将用JavaScript复刻这一功能,实现一个用于网页的变速齿轮。 效果展示首先看实现后的效果演示,如下图,网页中有一个循环滚动的小球。“加速”、“减速”两个按钮,可以侵入并控制它的速度。 注:变速操作,并未修改小球滚动的程序逻辑,而是变相地改变了网页的时间流速,使小球滚动的速度发生了改变。 ? 技术原理如图所示,该功能是用API Hook技术实现,接管setTimeout函数(滚动小球是用setTimeout实现),然后获取第2个参数,即原函数timeout参数,给此值增加或减少一定量值,以实现加速或减速,然后再用apply方式调用原始的setTimeout函数。 源码解析UI部分: 页面UI 中,两个按钮、一个CSS实现的小球。 小球移动逻辑代码: 从源码可知,是用setTimeout控制小球在一定范围内循环滚动,接下来是重点。 setTimeout的Hook操作: 如图中代码所示,核心代码并不复杂,而是十分简单明了:定义有一个公共变量speed,加速或减速就是控制此值。然后在setTimeout的替代函数中,对argument[1]参数增加此变量值。 完整代码:
以上即是此变速功能的完整测试代码,保存为html文件即可使用。 代码保护JavaScript是明文代码。很多时候,我们不希望自己写的代码泄露,比如本文所介绍的变速功能,初闻感觉十分神奇,但代码公开后可知竟如此简单。很多技术、功能都是如此,因此,可以对JavaScript代码进行混淆加密处理。以上面代码为例,如果使用JShaman加密其中的JavaScript代码,加密后代码将变成如下密文形式。 此举可用于保护JavaScript代码,防止功能逻辑被窥探、代码被盗用等等。 功能扩展到此,介绍了对setTimeout的Hook,可用于对setTimeout实现的H5游戏进行变速。而除此之外,有的游戏还可能使用setInterval、requestAnimationFrame实现游戏动画刷新。那么,也可以用同样的方法对这两个函数进行Hook,道理相通。 原创文章,不限转载,感谢支持。 |
|
JavaScript知识库 最新文章 |
ES6的相关知识点 |
react 函数式组件 & react其他一些总结 |
Vue基础超详细 |
前端JS也可以连点成线(Vue中运用 AntVG6) |
Vue事件处理的基本使用 |
Vue后台项目的记录 (一) |
前后端分离vue跨域,devServer配置proxy代理 |
TypeScript |
初识vuex |
vue项目安装包指令收集 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 2:44:29- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |