Js逆向教程作用域和自执行函数介绍
Js逆向教程24-作用域和自执行函数

变量作用域
局部变量
function jb()
{
var a="我是局部变量"
return a;
}全局变量
var a="我是全局变量"
function jb()
{
console.log(a)
}
console.log(a)自执行函数
在加载的时候 这个自执行函数就能自己运行
!(function()
{
console.log(2)
}
)()!表示运行成功
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OsYCquRS-1673098150122)(02 - 副本.assets/image-20230107205816596.png)]](http://img.jbzj.com/file_images/article/202301/2023011910194327.png)
拆解只执行函数的过程
对于这样一个函数 直接运行:
function()
{
console.log(2)
}除非前面有个var 否则会报错
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zFkXXpEe-1673098150123)(02 - 副本.assets/image-20230107210015165.png)]](http://img.jbzj.com/file_images/article/202301/2023011910194428.png)
var a =function()
{
console.log(2)
}![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SdIiQnNj-1673098150123)(02 - 副本.assets/image-20230107210128558.png)]](http://img.jbzj.com/file_images/article/202301/2023011910194429.png)
用括号括起来 也不会报错,因为括起来之后就是一个整体,你可以将它理解为一个没有方法名称的方法、也就是闭包。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wx4vlDez-1673098150124)(02 - 副本.assets/image-20230107210241014.png)]](http://img.jbzj.com/file_images/article/202301/2023011910194430.png)
在括号后面再加一个括号就表示执行这个函数
(function()
{
console.log(2)
}
)()![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kvp8w9tF-1673098150124)(02 - 副本.assets/image-20230107210352958.png)]](http://img.jbzj.com/file_images/article/202301/2023011910194431.png)
再js逆向中,通过这种方式 可以将一个函数的执行传给另一个函数执行 从而实现逆向。
内部函数如何外部调用
!(function()
{
function jm()
{
console.log(2)
}
jm()
}
)()可以看到内部函数也可以被掉哟个
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QrkXOLMa-1673098150125)(02 - 副本.assets/image-20230107210628006.png)]](http://img.jbzj.com/file_images/article/202301/2023011910194432.png)
如果将内部函数放到外部调用:
!(function()
{
function jm()
{
console.log(2)
}
}
)()
jm()就会报错
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hy3eddco-1673098150126)(02 - 副本.assets/image-20230107210759134.png)]](http://img.jbzj.com/file_images/article/202301/2023011910194433.png)
要解决这个问题 可以在外部定义一个变量,然后将内部的jm赋值给这个变量
var jm_;
!(function()
{
function jm()
{
console.log(2)
}
jm_ = jm;
}
)()
jm_()![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EfhXfnNC-1673098150126)(02 - 副本.assets/image-20230107211022534.png)]](http://img.jbzj.com/file_images/article/202301/2023011910194434.png)
这里就非常方便我们进行js逆向
因为一个网站的加密就1个或者几个函数,
大概流程是这样
用户输入明文的数据 -> 方法1 -》 发包函数 。。。 -》 加密函数
我们只需要将加密函数拿出来,用python或者易语言去模拟发包,执行这个js的加密函数,
这个加密函数可能嵌套再里面 这个时候 就可以用全局变量的方式 将它拿到外面。
变量类型的转换
所有类型的变量 加上字符串 就会变成字符串
变量+字符串=字符串
比如一个方法 加上字符串,就会变成字符串
var jm_;
!(function()
{
function jm()
{
console.log(2)
}
jm_ = jm;
}
)()
jm_+""![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Dphyt04n-1673098150127)(02 - 副本.assets/image-20230107212111686.png)]](http://img.jbzj.com/file_images/article/202301/2023011910194435.png)
JS BOM
https://www.runoob.com/js/js-window.html
它是一种浏览器环境,脱离了浏览器在外部不能直接调用的就是BOM
到此这篇关于Js逆向教程作用域和自执行函数介绍的文章就介绍到这了,更多相关作用域和自执行函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结
这篇文章主要介绍了javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结的相关资料,需要的朋友可以参考下2016-10-10
javascript 中__proto__和prototype详解
本文详细介绍了javascript的内部原型__proto__和构造器原型prototype,以及他们之间的异同,十分的详尽,有需要的小伙伴快来研究下吧。2014-11-11
Javascript基础_简单比较undefined和null 值
下面小编就为大家带来一篇Javascript基础_简单比较undefined和null 值。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧2016-06-06
javascript学习笔记(三) String 字符串类型介绍
javascript学习笔记之String 字符串类型介绍,这里介绍的是js字符串处理常用函数2012-06-06


最新评论