Js逆向教程作用域和自执行函数介绍
作者:虚坏叔叔
这篇文章主要介绍了Js逆向教程作用域和自执行函数介绍,本文章内容详细,具有很好的参考价值,希望对大家有所帮助,需要的朋友可以参考下
Js逆向教程24-作用域和自执行函数
变量作用域
局部变量
function jb() { var a="我是局部变量" return a; }
全局变量
var a="我是全局变量" function jb() { console.log(a) } console.log(a)
自执行函数
在加载的时候 这个自执行函数就能自己运行
!(function() { console.log(2) } )()
!表示运行成功
拆解只执行函数的过程
对于这样一个函数 直接运行:
function() { console.log(2) }
除非前面有个var 否则会报错
var a =function() { console.log(2) }
用括号括起来 也不会报错,因为括起来之后就是一个整体,你可以将它理解为一个没有方法名称的方法、也就是闭包。
在括号后面再加一个括号就表示执行这个函数
(function() { console.log(2) } )()
再js逆向中,通过这种方式 可以将一个函数的执行传给另一个函数执行 从而实现逆向。
内部函数如何外部调用
!(function() { function jm() { console.log(2) } jm() } )()
可以看到内部函数也可以被掉哟个
如果将内部函数放到外部调用:
!(function() { function jm() { console.log(2) } } )() jm()
就会报错
要解决这个问题 可以在外部定义一个变量,然后将内部的jm赋值给这个变量
var jm_; !(function() { function jm() { console.log(2) } jm_ = jm; } )() jm_()
这里就非常方便我们进行js逆向
因为一个网站的加密就1个或者几个函数,
大概流程是这样
用户输入明文的数据 -> 方法1 -》 发包函数 。。。 -》 加密函数
我们只需要将加密函数拿出来,用python或者易语言去模拟发包,执行这个js的加密函数,
这个加密函数可能嵌套再里面 这个时候 就可以用全局变量的方式 将它拿到外面。
变量类型的转换
所有类型的变量 加上字符串 就会变成字符串
变量+字符串=字符串
比如一个方法 加上字符串,就会变成字符串
var jm_; !(function() { function jm() { console.log(2) } jm_ = jm; } )() jm_+""
JS BOM
https://www.runoob.com/js/js-window.html
它是一种浏览器环境,脱离了浏览器在外部不能直接调用的就是BOM
到此这篇关于Js逆向教程作用域和自执行函数介绍的文章就介绍到这了,更多相关作用域和自执行函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!