5.4.12. 其他

5.4.12.1. 命令执行

Node.js中child_process.exec命令调用的是 /bin/sh ,故可以直接使用该命令执行shell

5.4.12.2. 反调试技巧

  • 函数重定义 console.log = function(a){}

  • 定时断点 setInterval(function(){debugger}, 1000);

5.4.12.3. 对象拷贝

JavaScript中的对象拷贝分为浅拷贝和深拷贝。

浅拷贝对一个对象进行拷贝时,仅仅拷贝对象的引用进行拷贝,但是拷贝对象和源对象还是引用同一份实体。其中一个对象的改变都会影响到另一个对象。

深拷贝拷贝一个对象时,不仅仅把对象的引用进行复制,还把该对象引用的值也一起拷贝。源对象与拷贝对象互相独立,其中任何一个对象的改动都不会对另外一个对象造成影响。

深拷贝可以基于 for-in / object.assign() / 拓展运算符 ... / JSON.parse(JSON.stringify()) 等方式实现。其中前三种方式只对第一层做深拷贝,若对象结构较为复杂,则需要用递归的方式对更深的层次进行拷贝。

5.4.12.4. 常见Sink

  • child_process

  • eval

  • exec

  • execSync