移动开发工程师-移动应用性能优化-代码压缩与混淆_代码压缩与混淆的安全性考量.docx

移动开发工程师-移动应用性能优化-代码压缩与混淆_代码压缩与混淆的安全性考量.docx

  1. 1、本文档共15页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

PAGE1

PAGE1

代码压缩与混淆的基础概念

1代码压缩的原理与方法

1.1原理

代码压缩主要是通过移除源代码中的空白字符(如空格、制表符、换行符)、注释以及缩短变量和函数名称来减少代码的体积。这一过程不仅提高了代码的加载速度,也使得代码更难以被阅读和理解,从而在一定程度上增加了代码的安全性。

1.2方法

移除空白字符和注释:这是最基本的压缩方式,通过算法识别并移除所有非必要的空白字符和注释,保持代码的逻辑不变。

变量和函数名称缩短:将长的变量名和函数名替换为更短的名称,如将myVariable替换为a,myFunction替换为f。

1.2.1示例代码

假设我们有以下JavaScript代码:

//原始代码

functioncalculateArea(width,height){

//计算矩形面积

vararea=width*height;

returnarea;

}

使用代码压缩工具后,代码可能变为:

//压缩后的代码

functiona(w,h){returnw*h}

在这个例子中,calculateArea被压缩为a,width和height被压缩为w和h,同时移除了注释和空白字符。

2代码混淆的原理与方法

2.1原理

代码混淆是通过改变代码的结构和外观,使其难以被理解和逆向工程。这通常涉及到变量和函数名称的随机化、代码结构的复杂化以及插入无意义的代码片段,以增加破解者分析代码的难度。

2.2方法

变量和函数名称随机化:将所有变量和函数名称替换为随机生成的字符串,使得代码的可读性大大降低。

代码结构复杂化:通过添加额外的逻辑分支、循环或嵌套结构,使得代码的逻辑更加复杂,难以追踪。

插入无意义代码:在代码中插入一些看似有意义但实际上并不影响代码执行的代码片段,以迷惑逆向工程师。

2.2.1示例代码

原始JavaScript代码:

//原始代码

functionaddNumbers(a,b){

returna+b;

}

混淆后的代码可能如下:

//混淆后的代码

var_0x1234=[addNumbers];(function(_0x123456,_0x123457){var_0x123458=_0x123456();while(!![]){try{if(-1=_0x123458[charCodeAt](0x0)||0x1ff_0x123458[charCodeAt](0x0)){_0x123458=_0x123456(0x100+0x10)}if(_0x123456[test](Stotype[charAt].call(_0x123458,0x0)||0x1ff_0x123458[charCodeAt](0x0))){break;}}catch(_0x123459){_0x123458=_0x123456(0x100+0x10)}}_0x123458=_0x123458+Stotype[charAt].call(_0x123458,0x1);_0x123458=_0x123458+Stotype[charAt].call(_0x123458,0x2);_0x123458=_0x123458+Stotype[charAt].call(_0x123458,0x3);_0x123458=_0x123458+Stotype[charAt].call(_0x123458,0x4);_0x123458=_0x123458+Stotype[charAt].call(_0x123458,0x5);_0x123458=_0x123458+Stotype[charAt].call(_0x123458,0x6);_0x123458=_0x123458+Stotype[charAt].call(_0x123458,0x7);_0x123458=_0x123458+Stotype[charAt].call(_0x123458,0x8);_0x123458=_0x123458+Stotype[charAt].call(_0x123458,0x9);_0x123458=_0x123458+Stotype[charAt].call(_0x123458,0xa);_0x123458=_0x123458+Stotype[charAt].call(_0x123458,0xb);_0x123458=_0x123458+Stotype[charAt].call(_0x123458,0xc);_0x123458=_0x123458+Stotype[charAt].call(_0x123458,0xd);_0x123458=_0x123458+Stot

您可能关注的文档

文档评论(0)

kkzhujl + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档