小編給大家分享一下JS逆向某驗滑動加密,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名申請、網(wǎng)絡空間、營銷軟件、網(wǎng)站建設、克什克騰網(wǎng)站維護、網(wǎng)站推廣。
通過調試可以看到有大量的 unicode 格式的編碼以及數(shù)組名稱的混淆
傳統(tǒng)解決方法是在瀏覽器 console 端輸入就能看到它的廬山真面目,但是這種方法太麻煩了,接下來我們用 AST 來將其還原!
首先還原 unicode 編碼,打開 AST 在線解析網(wǎng)站(https://blogz.gitee.io/ast/[1])
將待還原的代碼放進去
可以看到只需要把 extra 屬性刪掉就能還原原來的值。遍歷代碼如下:
const parser = require("@babel/parser");const traverse = require("@babel/traverse").default;const t = require("@babel/types"); //操作節(jié)點的函數(shù),比如判斷節(jié)點類型,生成新的節(jié)點等:const generator = require("@babel/generator").default; //生成還原后的代碼const fs = require('fs');var jscode = fs.readFileSync("./slide.js", { encoding: "utf-8"});const visitor = { StringLiteral(path) { delete path.node.extra }}let ast = parser.parse(jscode);traverse(ast, visitor);let {code} = generator(ast, opts = {jsescOption: {"minimal": true}});fs.writeFile('decode_slide.js', code, (err)=>{});復制代碼
注意 jscode 就是之前扣下來的 JS 代碼, 最后將還原后的代碼寫入到 decode_slide.js 文件中
接下來是混淆數(shù)組的還原。觀察調試代碼,所有的數(shù)組都是基于 JS 文件中開頭的大數(shù)組 KBBji.$_Co,同時將該數(shù)組賦值給很多變量,這些變量名都是隨機生成的。
所以接下來我們要做的找出這些變量名稱,然后將其替換成對應的字符串值!
AST 在線解析一下
根據(jù)解析結果,編寫相應的遍歷代碼
const visitor = { VariableDeclaration(path){ const {declarations} = path.node; if(!t.isMemberExpression(declarations[0].init))return; if(declarations[0].init.property.name !== "$_Co")return; if(declarations.length !==3 || declarations[0].init.property === undefined)return; let value1 = declarations[0].id.name; let value2 = declarations[2].id.name; new_array.push(value1, value2); }};復制代碼
上面就將所有的變量名找出來了,找到之后就能將所有的這種形式 $_DFCB(66) 代碼還原了,這樣代碼就能有個直觀感受!
相信聰明的你很快就能寫出還原的代碼。經(jīng)過上面幾步整體還原后的代碼是這樣的
根據(jù)關鍵詞很快就能搜索到加密所在位置,清晰可見!如果不還原你是搜不到的.. 還原后在網(wǎng)站上我們也能很快定位到加密位置,打上斷點
同樣的代碼可讀性相差多大,相信你一眼就能看到。你以為這樣就完了?No!
既然代碼已經(jīng)還原了,但是我們在網(wǎng)站上調試的時候還是混淆的代碼,那怎么辦呢?
接下來上另一個神器 Reres, 它的作用是將請求映射到本地,即你可以用本地 JS 來代替遠程 JS 文件。
用法直接參考它的 github https://github.com/annnhan/ReRes[2]
好了有了這個東西,我們就能在網(wǎng)站上用還原后的 JS 來進行調試,太強了把!
效果如下:
tql,這下加密參數(shù)扣起來就沒壓力了吧!
后臺回復 tql獲取相關代碼!
看完了這篇文章,相信你對JS逆向某驗滑動加密有了一定的了解,想了解更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!