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)行成功
拆解只執(zhí)行函數(shù)的過程
對(duì)于這樣一個(gè)函數(shù) 直接運(yùn)行:
function() { console.log(2) }
除非前面有個(gè)var 否則會(huì)報(bào)錯(cuò)
var a =function() { console.log(2) }
用括號(hào)括起來 也不會(huì)報(bào)錯(cuò),因?yàn)槔ㄆ饋碇缶褪且粋€(gè)整體,你可以將它理解為一個(gè)沒有方法名稱的方法、也就是閉包。
在括號(hào)后面再加一個(gè)括號(hào)就表示執(zhí)行這個(gè)函數(shù)
(function() { console.log(2) } )()
再js逆向中,通過這種方式 可以將一個(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è)
如果將內(nèi)部函數(shù)放到外部調(diào)用:
!(function() { function jm() { console.log(2) } } )() jm()
就會(huì)報(bào)錯(cuò)
要解決這個(gè)問題 可以在外部定義一個(gè)變量,然后將內(nèi)部的jm賦值給這個(gè)變量
var jm_; !(function() { function jm() { console.log(2) } jm_ = jm; } )() jm_()
這里就非常方便我們進(jìn)行js逆向
因?yàn)橐粋€(gè)網(wǎng)站的加密就1個(gè)或者幾個(gè)函數(shù),
大概流程是這樣
用戶輸入明文的數(shù)據(jù) -> 方法1 -》 發(fā)包函數(shù) 。。。 -》 加密函數(shù)
我們只需要將加密函數(shù)拿出來,用python或者易語言去模擬發(fā)包,執(zhí)行這個(gè)js的加密函數(shù),
這個(gè)加密函數(shù)可能嵌套再里面 這個(gè)時(shí)候 就可以用全局變量的方式 將它拿到外面。
變量類型的轉(zhuǎn)換
所有類型的變量 加上字符串 就會(huì)變成字符串
變量+字符串=字符串
比如一個(gè)方法 加上字符串,就會(huì)變成字符串
var jm_; !(function() { function jm() { console.log(2) } jm_ = jm; } )() jm_+""
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é)
這篇文章主要介紹了在ES6下javascript賦值常見用法總結(jié),需要的朋友可以參考下2022-01-01JavaScript字符串對(duì)象replace方法實(shí)例(用于字符串替換或正則替換)
這篇文章主要介紹了JavaScript字符串對(duì)象replace方法實(shí)例,replace方法用于字符串替換,同時(shí)支持正則表達(dá)式替換,需要的朋友可以參考下2014-10-10Websocket協(xié)議詳解及簡(jiǎn)單實(shí)例代碼
這篇文章主要介紹了Websocket協(xié)議詳解及簡(jiǎn)單實(shí)例代碼的相關(guān)資料,這里對(duì)websocket 協(xié)議進(jìn)行詳細(xì)介紹,并附簡(jiǎn)單實(shí)例代碼,需要的朋友可以參考下2016-12-12一起來看看js對(duì)象和事件的學(xué)習(xí)筆記
這篇文章主要為大家詳細(xì)介紹了js對(duì)象和事件學(xué)習(xí)筆記,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-02-02Javascript 復(fù)制數(shù)組實(shí)現(xiàn)代碼
Javascript 復(fù)制數(shù)組實(shí)現(xiàn)代碼,需要的朋友可以參考下。2009-11-11