反爬虫AST原理与还原混淆实战 | PDF下载|ePub下载
类别: 计算机
作者:[美] Gayle Laakmann McDowell
出版社: 人民邮电出版社
原作名: Cracking the coding interview:150 programming questions and solutions,fifth edition
译者:李琳骁/漆犇
出版年: 2013-11
页数: 372
定价: 59.00元
装帧: 平装
ISBN: 9787115332912
出版社: 人民邮电出版社
原作名: Cracking the coding interview:150 programming questions and solutions,fifth edition
译者:李琳骁/漆犇
出版年: 2013-11
页数: 372
定价: 59.00元
装帧: 平装
ISBN: 9787115332912
内容简介 · · · · · ·
AST是目前爬虫领域的热点。本书从AST这一个知识点出发,由浅入深,带领读者掌握反爬虫AST的原理,并帮助读者培养解决实际问题的能力。
本书共11章,分为四部分。第一部分(第1~4章)介绍开发环境的搭建方法、Web调试的必备技巧以及爬虫与反爬虫的基本知识;第二部分(第5~6章)讲解混淆JavaScript代码的手工逆向方法与JavaScript代码安全防护的原理;第三部分(第7~8章)讲解AST的原理与API的使用方法;第四部分(第9~11章)以AST为基础,讲解自动化的JavaScript代码防护与还原方案,并带领读者进行实战训练。
本书适合作为计算机培训的教材,也可供安全开发人员、爬虫初学者以及想要在爬虫领域进阶的人员学习。
作者简介 · · · · · ·
李岳阳
毕业于北京大学,资深爬虫工程师,执着于技术提升和知识传播。是一名语言无关论者,不过偏重使用Python和Erlang。
卓斌
资深安全开发工程师,花名“小肩膀”,热爱逆向技术,有十余年安全开发培训经验。多年来研发多门Web和Android端逆向课程,深受学员好评。
目录 · · · · · ·
第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.4Ajaxhook
2.4.1Ajaxhook源码分析
2.4.2Ajaxhook拦截
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习题
· · · · · ·
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.4Ajaxhook
2.4.1Ajaxhook源码分析
2.4.2Ajaxhook拦截
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习题
· · · · · ·
发表回复
要发表评论,您必须先登录。