首页 > 编程知识 正文

h5代码混淆

时间:2023-05-03 08:46:59 阅读:247906 作者:3779

最近弄iOS的马甲包提审,总是被打回,被iOS搞的很头痛。主要原因因为还是iOS那边认为是相同的包,所以打回了。所以我们想着将资源做加密和混淆,让每个马甲包的内容都不一样。现在项目已经上线了,需要有一种方案,既不改变现有的开发方式,又能解决现在的问题。

保持现有的开发不变,现有的资源和开发都不做变化,只针对与需要做加密的渠道做处理。资源方面,可以通过脚本,将所有的文本文件内容进行aes加密保存,将所有的资源名重命名为md5加密的资源名;代码方面,写两个插件类,对资源进行解密。

加密库的选择 加密库需要支持 node 和 browser 两种方式,使用 node 对资源文件进行加密,使用 browser 对网络加载的资源进行解密。加密库最好能有对称加密和非对称加密两种方式,因为文本文件内容是需要解密,这样就需要对称加密,我选择了 aes。文件名可以采用非对称加密,因为不需要解密

伟大的开源库提供了选择:crypto-js
github提供的库的详细说明

对资源进行解密

我非常欣赏 白鹭 的资源加载管理方式,它是采用插件类的形式来对资源进行加载和解析的,比如说图片,注册一个图片处理类;文本,注册一个文本处理类。这种方式,为资源解析提供了很好的扩展。我只需要重写一图片处理类,和文本处理类,再注册到处理器中,引擎就调用我的图片处理和文本出来。

文本文件解密 新建一个文本处理类 text.js, 分析传入的url,将资源的名字解析出来,然后进行md5加密,再去网络加载这个md5加密过的资源名 function getTextRealUrl(url, xhr) {var index1 = url.lastIndexOf('/');var index2 = url.lastIndexOf('.json');if(index2 < 0)return url;var fileName = url.substring(index1 + 1, index2 + 5);xhr.name = 'json'var newFileName = md5(fileName);return url.replace(fileName, newFileName);}function md5(content){var bytes = CryptoJS.MD5(content, key);var originalText = bytes.toString();return originalText} 获取到文本后,我们在对文本进行 aes 解密,上面也说,所有的文本内容都做了 aes 加密 function decrypt(content) {var bytes = CryptoJS.AES.decrypt(content, key);var originalText = bytes.toString(CryptoJS.enc.Utf8);let firstCode = originalText.charCodeAt(0);if (firstCode < 0x20 || firstCode > 0x7f) {originalText = originalText.substring(1); // 去除第一个字符}return originalText} 对图片文件的解密

图片文件也可以安装文本文件的处理方式来处理,考虑到图片的解析会比较性能,我只做了图片名的md5加密

资源加密

资源加密的思路就很简单的,只需要对现有的资源做两个处理:

对所有的文本文件和图片文件的资源名做md5加密对所有的文本文件做 aes 加密其他资源不做修改

将原始的资源,通过脚本导出到新的资源目录,将这个资源作为对应的渠道资源。下次要打新的马甲包的时候,我们可以通过修改加密key,这样生成的文件和文件名又不一样了。

在项目中导入加密库和我们编写的两个插件库

{"initial": ["js/egret.min.js","js/egret.web.min.js","js/assetsmanager.min.js","js/tween.min.js","js/game.min.js","js/socket.min.js","js/promise.min.js","js/dragonBones.min.js","js/jszip.min.js","js/text.js","js/image.js","js/crypto-js.js"],"game": ["js/main.min.js?v=201904121852"]}

注意: js/text.js, js/image.js, 两个库需要在白鹭库后面,这样才能覆盖白鹭的方法

ssh隧道JMeter 扩展开发:自定义 Java Sampler私有云产品更新

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。