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

 更新时间:2023年01月19日 10:36:08   作者:虚坏叔叔  
这篇文章主要介绍了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)]

拆解只执行函数的过程

对于这样一个函数 直接运行:

function()
{
	console.log(2)
}

除非前面有个var 否则会报错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zFkXXpEe-1673098150123)(02 - 副本.assets/image-20230107210015165.png)]

var a =function()
{
	console.log(2)
}

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SdIiQnNj-1673098150123)(02 - 副本.assets/image-20230107210128558.png)]

用括号括起来 也不会报错,因为括起来之后就是一个整体,你可以将它理解为一个没有方法名称的方法、也就是闭包。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wx4vlDez-1673098150124)(02 - 副本.assets/image-20230107210241014.png)]

在括号后面再加一个括号就表示执行这个函数

(function()
{
	console.log(2)
}
)()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kvp8w9tF-1673098150124)(02 - 副本.assets/image-20230107210352958.png)]

再js逆向中,通过这种方式 可以将一个函数的执行传给另一个函数执行 从而实现逆向。

内部函数如何外部调用

!(function()
{
    function jm()
    {
        console.log(2)
    }
    jm()
}
)()

可以看到内部函数也可以被掉哟个

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QrkXOLMa-1673098150125)(02 - 副本.assets/image-20230107210628006.png)]

如果将内部函数放到外部调用:

!(function()
{
    function jm()
    {
        console.log(2)
    }
}
)()
jm()

就会报错

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hy3eddco-1673098150126)(02 - 副本.assets/image-20230107210759134.png)]

要解决这个问题 可以在外部定义一个变量,然后将内部的jm赋值给这个变量

var jm_;
!(function()
{
    function jm()
    {
        console.log(2)
    }
    jm_ = jm;
}
)()
jm_()

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EfhXfnNC-1673098150126)(02 - 副本.assets/image-20230107211022534.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)]

JS BOM

https://www.runoob.com/js/js-window.html

它是一种浏览器环境,脱离了浏览器在外部不能直接调用的就是BOM

到此这篇关于Js逆向教程作用域和自执行函数介绍的文章就介绍到这了,更多相关作用域和自执行函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • js 操作符汇总

    js 操作符汇总

    本文并没有详细的介绍js所有的操作符,只是就js在操作符上与其它常用语言不一样的独特之处列举一二,了解了这些,至少不会让我们在读一些开源框架js代码时一头雾水,并且可以让我们的js代码更简洁、更安全(少出bug)。
    2014-11-11
  • ES6下javascript解构赋值常见用法总结

    ES6下javascript解构赋值常见用法总结

    这篇文章主要介绍了在ES6下javascript赋值常见用法总结,需要的朋友可以参考下
    2022-01-01
  • js之onload事件的一点使用心得

    js之onload事件的一点使用心得

    window.load和window.onload的意思并不只是页面加载完就执行,那要看你怎么用了,下面做了示例为大家介绍下,感兴趣的朋友可以参考下
    2013-08-08
  • 用正则表达式替换图片地址img标签

    用正则表达式替换图片地址img标签

    如何替换一段HTML字符串中包含的所有img标签的src值?下面我们用正则解决这个问题
    2013-11-11
  • EsLint入门学习教程

    EsLint入门学习教程

    ESLint是一个代码规范和错误检查工具,下面这篇文章主要介绍了EsLint的相关资料,需要的朋友可以参考学习,下面来一起看看吧。
    2017-02-02
  • JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)

    JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)

    这篇文章主要介绍了JavaScript字符串对象replace方法实例,replace方法用于字符串替换,同时支持正则表达式替换,需要的朋友可以参考下
    2014-10-10
  • Websocket协议详解及简单实例代码

    Websocket协议详解及简单实例代码

    这篇文章主要介绍了Websocket协议详解及简单实例代码的相关资料,这里对websocket 协议进行详细介绍,并附简单实例代码,需要的朋友可以参考下
    2016-12-12
  • 一起来看看js对象和事件的学习笔记

    一起来看看js对象和事件的学习笔记

    这篇文章主要为大家详细介绍了js对象和事件学习笔记,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • JS方法调用括号的问题探讨

    JS方法调用括号的问题探讨

    JS方法调用括号的问题很是令人头疼,下面有个不错的示例,感兴趣的朋友可以参考下
    2014-01-01
  • Javascript 复制数组实现代码

    Javascript 复制数组实现代码

    Javascript 复制数组实现代码,需要的朋友可以参考下。
    2009-11-11

最新评论