国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

js逆向技巧

這篇具有很好參考價(jià)值的文章主要介紹了js逆向技巧。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、總結(jié)

  1. 搜索:全局搜索、代碼內(nèi)搜索
  2. debug:常規(guī)debug、XHR debug、行為debug
  3. 查看請(qǐng)求調(diào)用的堆棧
  4. 執(zhí)行堆內(nèi)存中的函數(shù)
  5. 修改堆棧中的參數(shù)值
  6. 寫js代碼
  7. 打印windows對(duì)象的值
  8. 勾子:cookie鉤子、請(qǐng)求鉤子、header鉤子

二、js逆向技巧

博客對(duì)應(yīng)課程的視頻位置:

當(dāng)我們抓取網(wǎng)頁(yè)端數(shù)據(jù)時(shí),經(jīng)常被加密參數(shù)、加密數(shù)據(jù)所困擾,如何快速定位這些加解密函數(shù),尤為重要。本片文章是我逆向js時(shí)一些技巧的總結(jié),如有遺漏,歡迎補(bǔ)充。

所需環(huán)境:Chrome瀏覽器

1. 搜索

1.1 全局搜索
適用于根據(jù)關(guān)鍵詞快速定位關(guān)鍵文件及代碼

當(dāng)前頁(yè)面右鍵->檢查,彈出檢查工具js逆向技巧

搜索支持 關(guān)鍵詞、正則表達(dá)式

1.2 代碼內(nèi)搜索
適用于根據(jù)關(guān)鍵詞快速定位關(guān)鍵代碼

點(diǎn)擊代碼,然后按ctrl+f 或 command+f 調(diào)出搜索框。搜索支持 關(guān)鍵詞、css表達(dá)式、xpathjs逆向技巧

2. debug

2.1 常規(guī)debug
適用于分析關(guān)鍵函數(shù)代碼邏輯

a、埋下斷點(diǎn)js逆向技巧

b、調(diào)試

js逆向技巧

如圖所示,我標(biāo)記了1到6,下面分別介紹其含義

1.執(zhí)行到下一個(gè)端點(diǎn)
2.執(zhí)行下一步,不會(huì)進(jìn)入所調(diào)用的函數(shù)內(nèi)部
3.進(jìn)入所調(diào)用的函數(shù)內(nèi)部
4.跳出函數(shù)內(nèi)部
5.一步步執(zhí)行代碼,遇到有函數(shù)調(diào)用,則進(jìn)入函數(shù)
6.Call Stack 為代碼調(diào)用的堆棧信息,代碼執(zhí)行順序?yàn)橛上轮辽希@對(duì)于著關(guān)鍵函數(shù)前后調(diào)用關(guān)系很有幫助

2.2 XHR debug
匹配url中關(guān)鍵詞,匹配到則跳轉(zhuǎn)到參數(shù)生成處,適用于url中的加密參數(shù)全局搜索搜不到,可采用這種方式攔截js逆向技巧

2.3 行為debug
適用于點(diǎn)擊按鈕時(shí),分析代碼執(zhí)行邏輯js逆向技巧

如圖所示,可快速定位點(diǎn)擊探索按鈕后,所執(zhí)行的js。

3 查看請(qǐng)求調(diào)用的堆棧

可以在 Network 選項(xiàng)卡下,該請(qǐng)求的 Initiator 列里看到它的調(diào)用棧,調(diào)用順序由上而下:js逆向技巧

4. 執(zhí)行堆內(nèi)存中的函數(shù)

當(dāng)debug到某一個(gè)函數(shù)時(shí),我們想主動(dòng)調(diào)用,比如傳遞下自定義的參數(shù),這時(shí)可以在檢查工具里的console里調(diào)用js逆向技巧

此處要注意,只有debug打這個(gè)函數(shù)時(shí),控制臺(tái)里才可以調(diào)用。如果想保留這個(gè)函數(shù),可使用this.xxx=xxx 的方式。之后調(diào)用時(shí)無需debug到xxx函數(shù),直接使用this.xxx 即可。

5. 修改堆棧中的參數(shù)值

js逆向技巧

6. 寫js代碼

js逆向技巧

7. 打印windows對(duì)象的值

在console中輸入如下代碼,如只打印_$開頭的變量值

for (var p in window) {
if (p.substr(0, 2) !== "_$")
continue;
console.log(p + " >>> " + eval(p))
}

8. 勾子

以chrome插件的方式,在匹配到關(guān)鍵詞處插入斷點(diǎn)

8.1 cookie鉤子
用于定位cookie中關(guān)鍵參數(shù)生成位置

var code = function(){
var org = document.cookie.lookupSetter('cookie');
document.defineSetter("cookie",function(cookie){
if(cookie.indexOf('TSdc75a61a')>-1){
debugger;
}
org = cookie;
});
document.defineGetter("cookie",function(){return org;});
}
var script = document.createElement('script');
script.textContent = '(' + code + ')()';
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);
當(dāng)cookie中匹配到了 TSdc75a61a, 則插入斷點(diǎn)。

8.2 請(qǐng)求鉤子
用于定位請(qǐng)求中關(guān)鍵參數(shù)生成位置

var code = function(){
var open = window.XMLHttpRequest.prototype.open;
window.XMLHttpRequest.prototype.open = function (method, url, async){
if (url.indexOf("MmEwMD")>-1){
debugger;
}
return open.apply(this, arguments);
};
}
var script = document.createElement('script');
script.textContent = '(' + code + ')()';
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);
當(dāng)請(qǐng)求的url里包含MmEwMD時(shí),則插入斷點(diǎn)

8.3 header鉤子
用于定位header中關(guān)鍵參數(shù)生成位置

var code = function(){
var org = window.XMLHttpRequest.prototype.setRequestHeader;
window.XMLHttpRequest.prototype.setRequestHeader = function(key,value){
if(key=='Authorization'){
debugger;
}
return org.apply(this,arguments);
}
}
var script = document.createElement('script');
script.textContent = '(' + code + ')()';
(document.head||document.documentElement).appendChild(script);
script.parentNode.removeChild(script);
當(dāng)header中包含Authorization時(shí),則插入斷點(diǎn)

8.4 manifest.json
插件的配置文件

{
"name": "Injection",
"version": "2.0",
"description": "RequestHeader鉤子",
"manifest_version": 2,
"content_scripts": [
{
"matches": [
"<all_urls>"
],
"js": [
"inject.js"
],
"all_frames": true,
"permissions": [
"tabs"
],
"run_at": "document_start"
}
]
}
使用方法
a、如圖所示,創(chuàng)建一個(gè)文件夾,文件夾中創(chuàng)建一個(gè)鉤子函數(shù)文件inject.js 及 插件的配置文件 mainfest.json 即可js逆向技巧

b、打開chrome 的擴(kuò)展程序, 加載已解壓的擴(kuò)展程序,選擇步驟1創(chuàng)建的文件夾即可js逆向技巧

c、切換回原網(wǎng)頁(yè),刷新頁(yè)面,若鉤子函數(shù)關(guān)鍵詞匹配到了,則觸發(fā)debugjs逆向技巧文章來源地址http://www.zghlxwxcb.cn/news/detail-460288.html

到了這里,關(guān)于js逆向技巧的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Web攻防--JS算法逆向--斷點(diǎn)調(diào)試--反調(diào)試&&代碼混淆繞過

    Web攻防--JS算法逆向--斷點(diǎn)調(diào)試--反調(diào)試&&代碼混淆繞過

    在進(jìn)行滲透測(cè)試過程中,在一些功能點(diǎn)進(jìn)行參數(shù)注入或者枚舉爆破等過程中,會(huì)出現(xiàn)參數(shù)進(jìn)行加密的情況,但是我們輸入?yún)?shù)并不是加密狀態(tài),即便測(cè)試點(diǎn)存在漏洞也不可能測(cè)試成功,這時(shí)候便需要將所提交參數(shù)進(jìn)行加密后在進(jìn)行注入,針對(duì)JS應(yīng)用我們可以采用JS斷點(diǎn)調(diào)試的方

    2024年02月10日
    瀏覽(28)
  • 【python】webpack是什么,如何逆向出webpack打包的js代碼?

    【python】webpack是什么,如何逆向出webpack打包的js代碼?

    ?? 歡迎大家來到景天科技苑?? ???? 養(yǎng)成好習(xí)慣,先贊后看哦~???? ?? 作者簡(jiǎn)介:景天科技苑 ??《頭銜》:大廠架構(gòu)師,華為云開發(fā)者社區(qū)專家博主,阿里云開發(fā)者社區(qū)專家博主,CSDN新星創(chuàng)作者,掘金優(yōu)秀博主,51CTO博客專家等。 ??《博客》:Python全棧,前后端開

    2024年03月25日
    瀏覽(24)
  • Js:變量類型,代碼塊,++前后區(qū)別,函數(shù)聲明/表達(dá)式,debuger調(diào)試,元素/event/window大小和位置

    Js:變量類型,代碼塊,++前后區(qū)別,函數(shù)聲明/表達(dá)式,debuger調(diào)試,元素/event/window大小和位置

    語(yǔ)法: 注意: 只有在js文件才可以自動(dòng)補(bǔ)全 @param 。vue文件只會(huì)顯示 /** */ 上述注釋中 @description 和 @return 是自定義的代碼片段,快捷鍵 jsfn 作用: 在vue文件引入方法后,可以查看方法的注釋說明,規(guī)范代碼。 方法中變量快捷打印, 第一步選中方法的 變量 進(jìn)行 復(fù)制 第二步

    2023年04月08日
    瀏覽(13)
  • JS優(yōu)化技巧,解決冗余代碼

    簡(jiǎn)單的條件判斷邏輯用 if else 或者 三元運(yùn)算符, 一眼看過去還能知道說的啥,但是大量的 if else 和疊加在一起的三元運(yùn)算符就是接盤俠的噩夢(mèng)~~~ 給大家上一個(gè)三元運(yùn)算符疊加的案例,我是真實(shí)在項(xiàng)目中遇到過,cpu直接干爆~~~ 大概是這樣的,具體的項(xiàng)目代碼不好放在這里,小

    2024年02月14日
    瀏覽(13)
  • 【萬(wàn)字解析】JS逆向由淺到深,3個(gè)案例由簡(jiǎn)到難,由練手到項(xiàng)目解析(代碼都附詳細(xì)注釋)

    【萬(wàn)字解析】JS逆向由淺到深,3個(gè)案例由簡(jiǎn)到難,由練手到項(xiàng)目解析(代碼都附詳細(xì)注釋)

    大家好,我是辣條哥! 今天給大家上點(diǎn)難度,不然總覺得辣條哥太菜了!我們今天聊聊JS逆向, 首先JS逆向是指對(duì)使用JavaScript編寫的代碼進(jìn)行逆向工程,以獲取代碼的邏輯、算法或者進(jìn)行修改。 下面舉一個(gè)簡(jiǎn)單的例子來說明JS逆向的過程: 假設(shè)有一個(gè)網(wǎng)站,它使用了JavaScr

    2024年02月15日
    瀏覽(36)
  • Pycharm Debug調(diào)試技巧

    Pycharm Debug調(diào)試技巧

    Python中的Bug是指程序在執(zhí)行過程中出現(xiàn)錯(cuò)誤的情況。這些錯(cuò)誤可能會(huì)導(dǎo)致程序崩潰、輸出意外的結(jié)果或者根本不運(yùn)行。 常見的Python Bug包括: 語(yǔ)法錯(cuò)誤:例如拼寫錯(cuò)誤、缺少冒號(hào)、使用了錯(cuò)誤的縮進(jìn)等等。 邏輯錯(cuò)誤:程序可以運(yùn)行,但是它并沒有如預(yù)期那樣工作。這通常是因

    2024年02月09日
    瀏覽(17)
  • IDEA中DEBUG技巧

    IDEA中DEBUG技巧

    如上圖標(biāo)注 1 所示,表示設(shè)置 Debug 連接方式,默認(rèn)是 Socket 。 Shared memory 是 Windows 特有的一個(gè)屬性,一般在 Windows 系統(tǒng)下建議使用此設(shè)置,相對(duì)于 Socket 會(huì)快點(diǎn)。 ## Debug 常用快捷鍵 Win 快捷鍵 Mac 快捷鍵 介紹 F7 F7 進(jìn)入下一步,如果當(dāng)前行斷點(diǎn)是一個(gè)方法,則進(jìn)入當(dāng)前方法體內(nèi)

    2024年02月07日
    瀏覽(20)
  • IDEA debug 斷點(diǎn)調(diào)試技巧

    IDEA debug 斷點(diǎn)調(diào)試技巧

    1、首先看下IDEA中Debug模式下的界面: ① 以Debug模式啟動(dòng)服務(wù),左邊的一個(gè)按鈕則是以Run模式啟動(dòng)。在開發(fā)中,我一般會(huì)直接啟動(dòng)Debug模式,方便隨時(shí)調(diào)試代碼。 ② 斷點(diǎn):在左邊行號(hào)欄單擊左鍵,或者快捷鍵Ctrl+F8 打上/取消斷點(diǎn),斷點(diǎn)行的顏色可自己去設(shè)置。 ③ Debug窗口:訪

    2024年02月15日
    瀏覽(30)
  • Keil Debug 串口調(diào)試技巧

    Keil Debug 串口調(diào)試技巧

    更改對(duì)應(yīng)的bebug窗口參數(shù) 兩邊的 Dialog DLL 更改為:DARMSTM.DLL 兩邊的 Parameter (這里的根據(jù)單片機(jī)型號(hào)更改)更改為:-pSTM32F103VE 選擇左邊的 Use Simulator 選項(xiàng)。 串口打印 打開窗口 窗口位置 只要運(yùn)行就可以查看了 在命令串口鍵入:MODE COM1 115200, 0, 8, 1 回車 再輸入:ASSIGN COM1 S1I

    2024年02月06日
    瀏覽(25)
  • IDEA常用的Debug技巧

    IDEA常用的Debug技巧

    IDEA是Java程序員必備的IDE,非常強(qiáng)大的功能,搭配很多插件的時(shí)候就可以增強(qiáng)它的功能,開發(fā)出現(xiàn)異常的時(shí)候利用好Debug可以做到排查問題可以事半功倍。 斷點(diǎn):指可以讓程序中斷(暫停)的地方,方便進(jìn)行調(diào)試分析??。 在行號(hào)右邊“點(diǎn)擊”,出現(xiàn)紅色圓點(diǎn)即可打上斷點(diǎn)。

    2024年02月06日
    瀏覽(31)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包