Js逆向教程作用域和自執(zhí)行函數(shù)介紹
Js逆向教程24-作用域和自執(zhí)行函數(shù)

變量作用域
局部變量
function jb()
{
var a="我是局部變量"
return a;
}全局變量
var a="我是全局變量"
function jb()
{
console.log(a)
}
console.log(a)自執(zhí)行函數(shù)
在加載的時(shí)候 這個(gè)自執(zhí)行函數(shù)就能自己運(yùn)行
!(function()
{
console.log(2)
}
)()!表示運(yùn)行成功
![[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-OsYCquRS-1673098150122)(02 - 副本.assets/image-20230107205816596.png)]](http://img.jbzj.com/file_images/article/202301/2023011910194327.png)
拆解只執(zhí)行函數(shù)的過(guò)程
對(duì)于這樣一個(gè)函數(shù) 直接運(yùn)行:
function()
{
console.log(2)
}除非前面有個(gè)var 否則會(huì)報(bào)錯(cuò)
![[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-zFkXXpEe-1673098150123)(02 - 副本.assets/image-20230107210015165.png)]](http://img.jbzj.com/file_images/article/202301/2023011910194428.png)
var a =function()
{
console.log(2)
}![[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-SdIiQnNj-1673098150123)(02 - 副本.assets/image-20230107210128558.png)]](http://img.jbzj.com/file_images/article/202301/2023011910194429.png)
用括號(hào)括起來(lái) 也不會(huì)報(bào)錯(cuò),因?yàn)槔ㄆ饋?lái)之后就是一個(gè)整體,你可以將它理解為一個(gè)沒(méi)有方法名稱(chēng)的方法、也就是閉包。
![[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-wx4vlDez-1673098150124)(02 - 副本.assets/image-20230107210241014.png)]](http://img.jbzj.com/file_images/article/202301/2023011910194430.png)
在括號(hào)后面再加一個(gè)括號(hào)就表示執(zhí)行這個(gè)函數(shù)
(function()
{
console.log(2)
}
)()![[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-Kvp8w9tF-1673098150124)(02 - 副本.assets/image-20230107210352958.png)]](http://img.jbzj.com/file_images/article/202301/2023011910194431.png)
再js逆向中,通過(guò)這種方式 可以將一個(gè)函數(shù)的執(zhí)行傳給另一個(gè)函數(shù)執(zhí)行 從而實(shí)現(xiàn)逆向。
內(nèi)部函數(shù)如何外部調(diào)用
!(function()
{
function jm()
{
console.log(2)
}
jm()
}
)()可以看到內(nèi)部函數(shù)也可以被掉喲個(gè)
![[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-QrkXOLMa-1673098150125)(02 - 副本.assets/image-20230107210628006.png)]](http://img.jbzj.com/file_images/article/202301/2023011910194432.png)
如果將內(nèi)部函數(shù)放到外部調(diào)用:
!(function()
{
function jm()
{
console.log(2)
}
}
)()
jm()就會(huì)報(bào)錯(cuò)
![[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-hy3eddco-1673098150126)(02 - 副本.assets/image-20230107210759134.png)]](http://img.jbzj.com/file_images/article/202301/2023011910194433.png)
要解決這個(gè)問(wèn)題 可以在外部定義一個(gè)變量,然后將內(nèi)部的jm賦值給這個(gè)變量
var jm_;
!(function()
{
function jm()
{
console.log(2)
}
jm_ = jm;
}
)()
jm_()![[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(img-EfhXfnNC-1673098150126)(02 - 副本.assets/image-20230107211022534.png)]](http://img.jbzj.com/file_images/article/202301/2023011910194434.png)
這里就非常方便我們進(jìn)行js逆向
因?yàn)橐粋€(gè)網(wǎng)站的加密就1個(gè)或者幾個(gè)函數(shù),
大概流程是這樣
用戶輸入明文的數(shù)據(jù) -> 方法1 -》 發(fā)包函數(shù) 。。。 -》 加密函數(shù)
我們只需要將加密函數(shù)拿出來(lái),用python或者易語(yǔ)言去模擬發(fā)包,執(zhí)行這個(gè)js的加密函數(shù),
這個(gè)加密函數(shù)可能嵌套再里面 這個(gè)時(shí)候 就可以用全局變量的方式 將它拿到外面。
變量類(lèi)型的轉(zhuǎn)換
所有類(lèi)型的變量 加上字符串 就會(huì)變成字符串
變量+字符串=字符串
比如一個(gè)方法 加上字符串,就會(huì)變成字符串
var jm_;
!(function()
{
function jm()
{
console.log(2)
}
jm_ = jm;
}
)()
jm_+""![[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來(lái)直接上傳(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
它是一種瀏覽器環(huán)境,脫離了瀏覽器在外部不能直接調(diào)用的就是BOM
到此這篇關(guān)于Js逆向教程作用域和自執(zhí)行函數(shù)介紹的文章就介紹到這了,更多相關(guān)作用域和自執(zhí)行函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ES6下javascript解構(gòu)賦值常見(jiàn)用法總結(jié)
這篇文章主要介紹了在ES6下javascript賦值常見(jiàn)用法總結(jié),需要的朋友可以參考下2022-01-01
JavaScript字符串對(duì)象replace方法實(shí)例(用于字符串替換或正則替換)
這篇文章主要介紹了JavaScript字符串對(duì)象replace方法實(shí)例,replace方法用于字符串替換,同時(shí)支持正則表達(dá)式替換,需要的朋友可以參考下2014-10-10
Websocket協(xié)議詳解及簡(jiǎn)單實(shí)例代碼
這篇文章主要介紹了Websocket協(xié)議詳解及簡(jiǎn)單實(shí)例代碼的相關(guān)資料,這里對(duì)websocket 協(xié)議進(jìn)行詳細(xì)介紹,并附簡(jiǎn)單實(shí)例代碼,需要的朋友可以參考下2016-12-12
一起來(lái)看看js對(duì)象和事件的學(xué)習(xí)筆記
這篇文章主要為大家詳細(xì)介紹了js對(duì)象和事件學(xué)習(xí)筆記,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-02-02
Javascript 復(fù)制數(shù)組實(shí)現(xiàn)代碼
Javascript 復(fù)制數(shù)組實(shí)現(xiàn)代碼,需要的朋友可以參考下。2009-11-11

