如何学习js逆向
发布时间:2025-05-22 09:40:10 发布人:远客网络
一、如何学习js逆向
1、学习JS逆向时,需了解基础概念和具体操作。
2、首先,理解null和undefined的区别。
3、接着,认识布尔值,它表示真和假,其中true为真,false为假。
4、数值在JS底层以64位浮点数形式存储,所有数值都为此形式。
5、浮点数运算时,可能会遇到精度问题,例如出现不精确的计算结果。
6、八进制、十六进制和二进制在JS内部会自动转为十进制。
7、NaN表示非数字值,通常在字符串转换为数值时出现错误。
8、Infinity表示无穷大,常见于除以零或数值溢出等情况。
9、了解JavaScript全局API,如parseInt和parseFloat方法。
10、parseInt用于将字符串转换为数值,支持进制参数。
11、parseFloat仅解析字符串中的数字部分。
12、isNaN用于判断一个值是否为NaN。
13、isFinite检查一个值是否为有限数值。
14、字符串在JavaScript中使用Unicode字符集。
15、Base64编码用于数据转换和编码。
16、对象在JavaScript中表示属性集合,可使用Object.keys查看自身属性。
17、函数作为一等公民,可与其他数据类型互换使用。
18、函数参数可省略,函数的length属性仅反映声明时的参数数量。
19、立即调用函数表达式用于匿名函数。
20、eval命令用于动态执行代码,需注意作用域。
21、数组支持空值,但遍历时不包含空值。
22、了解数组属性、循环和类型转换。
23、类数组对象在JavaScript中存在。
24、自动和强制类型转换,掌握其他类型转换规则。
25、Error对象处理异常,使用try/catch结构捕获错误。
26、Object静态方法和实例方法,深入了解对象操作。
二、为什么网上没人教js逆向
根据查询CSDN博客显示,js逆向是指通过分析JavaScript代码来了解网页或应用的工作原理,发现关键信息或漏洞的过程。常见的js逆向技巧,包含浏览器工具的使用,Hook技术,AST技术,特殊混淆技术的处理,WebAssembly技术的处理。是一项非常复杂和高级的技术,需要深入的编程和网络安全知识,这使得其相对难以学习和掌握,因此网上教的人会相对来说少一点。
三、逆向进阶,利用 AST 技术还原 JavaScript 混淆代码
1、理解抽象语法树(AST)及其在JavaScript逆向工程中的应用,是深入解析混淆代码的关键。AST是一种描述源代码抽象语法结构的树状形式,它为理解、修改以及重写代码提供了一种通用的表示方式。在本篇文章中,我们将探索AST的用途、如何使用Babel进行代码转换,以及在逆向工程中的应用实例。
2、AST在JavaScript中可以使用在线解析工具如astexplorer.net/,通过选择语言、编译器和操作选项,将代码转换为语法树,便于深入分析。
3、在编译过程的三个阶段中,词法分析、语法分析和代码生成,AST起着核心作用,它在语法分析阶段生成,为后续代码生成提供结构化表示。
4、词法分析阶段识别单词序列,生成token符号流;语法分析阶段将单词序列组合成语法短语,形成AST;代码生成阶段将AST转换为可执行代码。
5、Babel作为JavaScript编译器,具备解析、转换和生成代码的多种功能。利用Babel,可以将JavaScript代码转换为AST语法树,再进行操作后,生成新代码。
6、Babel的各个功能包,如@babel/core、@babel/parser、@babel/traverse和@babel/generator等,提供了丰富的方法,用于代码解析、遍历和生成。
7、在逆向解混淆中,主要使用Babel的@babel/parser将代码解析为AST,@babel/traverse遍历AST进行修改,@babel/generator将修改后的AST重新生成代码。
8、具体操作如修改变量名、值,增加或删除代码块等,通过遍历AST结构进行实现。例如,使用@babel/traverse遍历所有节点,根据节点类型进行修改,如数字增加100后再乘以2,字符串替换为特定值。
9、在处理相同类型的节点时,可以使用@babel/traverse的visitor对象,遍历所有节点并应用统一的处理逻辑。例如,对所有变量进行统一操作,增加或修改内容。
10、通过@babel/types构建新的AST节点,可以实现更复杂的代码操作,如在现有代码中添加新的变量声明。
11、AST的使用在逆向工程中尤为重要,它为理解混淆代码提供了直观的结构化表示,通过操作AST,可以更高效地恢复原始代码逻辑,进行代码分析与修改。
12、通过学习和实践Babel的使用,结合在线解析工具和深入理解AST的原理,可以逐步掌握逆向解混淆的技术,为深入分析和重构复杂代码奠定基础。