图书目录

目录

第1章搭建开发环境

1.1Node.js环境搭建

1.1.1Node.js安装配置

1.1.2Babel安装

1.1.3Visual Studio Code安装配置

1.2Python环境配置

1.2.1Python 3.7安装

1.2.2requests请求库安装

1.2.3bs4解析库安装

1.3Fiddler抓包工具

1.4AST Explorer网站在线生成抽象语法树

1.5小结

1.6习题

第2章Web网站的调试与抓包分析

2.1Chrome开发者工具

2.1.1Elements面板

2.1.2Console面板

2.1.3Sources面板

2.1.4Network面板

2.1.5Application面板

2.2JS逆向调试技巧

2.2.1善用搜索

2.2.2查看请求调用堆栈

2.2.3XHR请求断点

2.2.4Console插桩

2.2.5堆内存函数调用

2.2.6复制Console面板输出

2.3本地覆盖

2.3.1Chrome local override

2.3.2Fiddler自动响应

2.4Ajaxhook

2.4.1Ajaxhook源码分析

2.4.2Ajaxhook拦截

2.5网易易盾滑块验证码调试分析

2.6小结

2.7习题

第3章爬虫与反爬虫

3.1网络爬虫

3.1.1网络爬虫原理

3.1.2网络爬虫分类

3.1.3网络爬虫与搜索引擎

3.2编写网络爬虫

3.2.1requests请求库的使用

3.2.2bs4解析库的使用

3.2.3编写简单网络爬虫

3.3爬虫与反爬虫的博弈

3.4小结

3.5习题

第4章常规反爬虫技术

4.1Headers头部校验

4.2IP地址记录

4.3Ajax异步加载

4.4字体反爬虫

4.5验证码反爬虫

4.6JS参数加密

4.7JS反调试

4.8AST混淆反爬虫

4.9小结

4.10习题

第5章混淆JS手动逆向方法

5.1混淆脚本分析

5.1.1定位加密入口

5.1.2混淆特征分析

5.1.3加密函数还原

5.2小结

5.3习题

第6章JS代码安全防护原理

6.1常量的混淆原理

6.1.1对象属性的两种访问方式 

6.1.2十六进制字符串 

6.1.3unicode字符串

6.1.4字符串的ASCII码混淆

6.1.5字符串常量加密 

6.1.6数值常量加密

6.2增加JS逆向者的工作量

6.2.1数组混淆 

6.2.2数组乱序 

6.2.3花指令

6.2.4jsfuck

6.3代码执行流程的防护原理

6.3.1流程平坦化

6.3.2逗号表达式混淆

6.4其他代码防护方案

6.4.1eval加密

6.4.2内存爆破

6.4.3检测代码是否格式化

6.5小结

6.6习题

第7章AST抽象语法树的原理与实现

7.1理解AST抽象语法树

7.1.1AST基本概念

7.1.2AST在编译中的位置

7.1.3AST程序开发

7.2词法分析

7.2.1词法分析基本原理

7.2.2Python编写词法分析器

7.3语法分析

7.3.1语法分析基本原理

7.3.2Python编写语法分析器

7.4Babel编译步骤

7.4.1Babel的解析

7.4.2Babel的转化

7.4.3Babel的生成

7.5小结

7.6习题

第8章AST的API详解

8.1AST入门

8.1.1AST的基本结构

8.1.2代码的基本结构

8.2Babel中的组件

8.2.1parser与generator

8.2.2traverse与visitor

8.2.3types组件

8.3Path对象详解

8.3.1Path与Node的区别

8.3.2Path中的方法

8.3.3父级Path

8.3.4同级Path

8.4scope详解

8.4.1获取标识符作用域

8.4.2scope.getBinding

8.4.3scope.getOwnBinding

8.4.4referencePaths与constantViolations

8.4.5遍历作用域

8.4.6标识符重命名

8.4.7scope的其他方法

8.5小结

8.6习题

第9章AST自动化JS防护方案

9.1混淆前的代码处理

9.1.1改变对象属性访问方式

9.1.2JS标准内置对象的处理

9.2常量与标识符的混淆

9.2.1实现数值常量加密

9.2.2实现字符串常量加密

9.2.3实现数组混淆

9.2.4实现数组乱序

9.2.5实现十六进制字符串

9.2.6实现标识符混淆

9.2.7标识符的随机生成

9.3代码块的混淆

9.3.1二项式转函数花指令

9.3.2代码的逐行加密

9.3.3代码的逐行ASCII码混淆

9.4完整的代码与处理后的效果

9.5代码执行逻辑的混淆

9.5.1实现流程平坦化

9.5.2实现逗号表达式混淆

9.5小结

9.6习题

第10章AST自动化JavaScript还原方案

10.1常用还原方案

10.1.1还原数值常量加密

10.1.2还原代码加密与ASCII码混淆

10.1.3还原unicode与十六进制字符串

10.1.4还原逗号表达式混淆

10.2Chrome拓展开发入门

10.2.1Chrome拓展程序

10.2.2Chrome拓展开发之去除广告插件

10.3JS Hook

10.3.1JS Hook原理与作用

10.3.2JS Hook对象属性

10.3.3JS自动注入Hook

10.4DOM对象的Hook

10.4.1Script自动加载

10.4.2Hook DOM

10.4.3JS Proxy

10.5原型链

10.6XHR Hook

10.7JS Hook的检测

10.8小结

10.9习题

第11章AST还原JS实战

11.1分析网站使用的混淆手段

11.1.1协议分析

11.1.2数组乱序

11.1.3字符串加密

11.1.4花指令

11.1.5流程平坦化

11.2还原代码中的常量

11.2.1整体代码结构

11.2.2字符串解密与去除数组混淆

11.3剔除花指令

11.3.1花指令剔除思路

11.3.2字符串花指令的剔除

11.3.3函数花指令的剔除

11.4还原流程平坦化

11.4.1获取分发器

11.4.2解析switch结构

11.4.3复原语句顺序

11.4.4协议逆向

11.5小结

11.6习题