吾愛破解 - LCG - LSG |安卓破解|病毒分析|破解軟件|www.dypczhxn.cn

 找回密碼
 注冊[Register]

QQ登錄

只需一步,快速開始

搜索
查看: 5701|回復: 65
上一主題 下一主題

[原創] 記錄一次還原被加密的js代碼的分析過程

[復制鏈接]
跳轉到指定樓層
樓主
15774211127 發表于 2019-8-16 14:55 回帖獎勵
本帖最后由 15774211127 于 2019-8-16 15:08 編輯

昨天在網上看到個js加密網站,感覺好玩就嘗試分析了一下;
記錄下分析過程
(分析了該網站有多種加密方式,有幾種太簡單(可以說幾乎沒有加密效果所以就不記錄了))
這次分析該網站的所謂‘最牛加密’

1.加密
加密的內容是隨便寫的不用在乎(奇葩的是我本來沒把代碼放在自運行函數里,他不讓我加密,后來這個自運行函數竟然透露了加密的主體內容,哈哈😄):
[JavaScript] 純文本查看 復制代碼
(function(w, d) { 
alert(123);
var b = 2341234;
function c(c){
console.log(c);
}
c(b);
})(window, document);

加密配置:
加密時,使用的是相對低難度的加密方式(我認為要從簡到難,逐步了解設計思路)

加密后的內容:一大段代碼,大家可以自己嘗試去加密下


2正常運行


打開控制臺,發現沒有輸出,并且自動進入了斷點模式(由于加密配置勾選了禁止控制臺輸出和調試)

3.拿到底代碼是一行,打算格式化一下

運行


死循環,導致網頁崩潰(猜測是防止格式化在起作用)
于是先打開debug模式再重新加載網頁,一段時間后內存溢出

找到代碼,發現一旦進入for就是個死循環
_0x4e35ef一直在push數據

于是往前找循環條件_0x4e35ef的來源,找到調用方法的地方,剛好只有一個地方調用來,所以一下就找到了,
發現_0x4e35ef是固定的值:['*'],也就是說一旦進入_0x3f9723['setCookie']方法就是死循環
而是否調用_0x3f9723['setCookie']是由148行的_0x525af1變量決定
所以繼續找!_0x525af1的來源
_0x525af1是由147行的updateCookie方法返回的
而updateCookie在145行被賦值為變量_0x43f445的內容
_0x43f445在141行定義,進入查看_0x43f445方法內部
發現new RegExp();正則匹配,正則內容看起來是16位編碼的,于是復制拿到控制臺輸出

還真出來了,解析下匹配規則
大概是:
一個以上非空白字符+n個空格+一對括號+左花括號+一個以上非空白字符+n個空格,加單引號或者雙引號+非換行字符+加單引號或者雙引號+分號+一個以上非空白字符+右花括號
嗯??? 這不就是函數嗎??

143行正則表達式對removeCookie.toString()返回的內容匹配
找到removeCookie定義的地方125行,發現由于我們格式化了代碼所以它換行了,而正則表達式要求不能找到換行字符,
所以這里就是它判斷我們有沒有格式化代碼的地方了

我們把它還原成一行

在另外一處還有一個類似的判斷,我就越過了,大家自己去找
運行發現棧溢出

找到代碼發現是相互調用產生的
入口是_0x1a42e3方法開始
找到_0x1a42e3調用位置
發現382行兩個判斷
第一個條件值_0x10eca9在390行定義
又是一個正則測解析了下和剛剛的一樣,
區別就是不是明文,不知道對誰做了什么操作

控制臺輸出16進制編碼

發現是測試_0x2cb896.toString()
將它還原成一行
判斷值_0x3f38e1同上

運行

發現自動debug沒法調試
在提示中看到596行調用debugger;加了斷點
我們全局搜索注釋掉它
到這他的一些調試限制就去掉了
已經可以在debug模式下正常調試
下斷點單步運行到我們的代碼位置(可以直接下在第一行代碼處)
由于立馬循環很多,加上我原來的代碼有個彈窗,所以我直接大步跳過一直定位到彈窗處

發現彈窗后它指向了520行,也就是說我的代碼在520行之前
在519行看到}(window, document));;???????
這不就是之前的自運行函數嗎
查看代碼
這個自運行函數在250-519行
閱讀代碼找到除變量、函數聲明外的第一行代碼

alert???我的第一行不就是alert(123)??
把第二個參數十六進制轉出來發現剛好是123;
所以_0x3b581c['bHMmN'](alert, 0x7b);
_0x3b581c是一個處理函數
第一個參數是調用的方法名,第二個參數是屬性(不信大家自己去看)
接著看下一行
var _0x2cb05c = 0x23b972;
我原來的代碼是var b = 2341234;
把值的十六進制轉換出來還真是2341234

繼續往下找到

而_0x1feb9定義在剛剛那兩個下面
我們有理由相信他就是我原來的
function c(c){
console.log(c);
}
c(b);
這兩句代碼;
到這我們到代碼全出來了;
有人可能會說那沒沒看到原來的代碼內容啊
那是因為變量名被混淆了
由于它還有一些其他代碼就不詳細說明了
下圖中的函數它每次加密都有我認為它是一個解密后的文字
因為他的大多數方法調用都是加密過的,全部都會通過這個函數解密

而如果我們加密了復雜的代碼被它加密后
我們可以通過它解密還原
比如:

我們直接看不知道它調用的是什么來對比
我們可以輸出它

可以看到它是調用_0x596178的vXjHy屬性

其他一些不影響還原的問題自行調試
源文件
test.zip (6.76 KB, 下載次數: 42) 解壓密碼52pojie


免費評分

參與人數 26吾愛幣 +25 熱心值 +24 收起 理由
在線小學生 + 1 + 1 [email protected]
pass101 + 1 + 1 [email protected]
yaoyao7 + 1 + 1 我很贊同!
自由之心 + 2 + 1 熱心回復!
sun2728 + 1 + 1 用心討論,共獲提升!
kljjqrcw522 + 1 + 1 看著大神們的分享也是一種享受。
手術刀 + 1 + 1 用心討論,共獲提升!
靜葉流云 + 1 + 1 [email protected]
xiaolu947 + 1 我很贊同!
onething + 1 + 1 熱心回復!
藍海悅 + 1 + 1 熱心回復!
dns2018 + 1 用心討論,共獲提升!
gaosld + 1 + 1 用心討論,共獲提升!
wnzczh4987 + 1 + 1 我很贊同!
keysking + 1 + 1 用心討論,共獲提升!
測試中…… + 1 + 1 熱心回復!
nishishabi111 + 1 + 1 我很贊同!
easy123456 + 1 + 1 用心討論,共獲提升!
thenow + 1 + 1 我很贊同!
qaz007 + 1 + 1 用心討論,共獲提升!
易拉罐兒 + 1 我很贊同!
就是這么帥 + 1 + 1 [email protected]
笙若 + 1 + 1 [email protected]
cnjn + 1 熱心回復!
eric9988 + 1 + 1 我很贊同! 熱心回復!
Monitor + 1 + 1 用心討論,共獲提升!

查看全部評分

發帖前要善用論壇搜索功能,那里可能會有你要找的答案或者已經有人發布過相同內容了,請勿重復發帖。

推薦
 樓主| 15774211127 發表于 2019-9-26 10:50 <
aaronchiao 發表于 2019-9-26 10:02
試過了 不用配套的

var new_element = document["createElement"]("script");
new_element["setAttribute"]("type", 'text/javascript');
new_element['setAttribute']("src", "http://app.h-oo.com/barba.min.js");
document["body"]["appendChild"](new_element);;
就是創建了個script標簽加載另一個js地址是http://app.h-oo.com/barba.min.js
我打開看了下沒有加密
推薦
井右寺 發表于 2019-8-26 10:09
15774211127 發表于 2019-8-26 09:58
這。。。。我也不是很清楚呢
可能是一些商業的建站模版需要加密吧,
而且也是可以增加一定安全性吧

因為我感覺,F12隨便抓通信,你代碼加密再復雜,除了降低自己的性能,其實效果不是特別明顯。前端做安全安全性實在太差了,還是把這部分交給后臺處理比較好。
我覺得uglyfy一下就好了,勉強可以保護知識產權就ok了。
嗯,就看投資回報比了,可能有的需求就是需要加密,哈哈哈哈,反正我還沒遇到這種應用場景
4#
Monitor 發表于 2019-8-16 15:15
不知道那種變態版的能不能也用這方法來還原
5#
yjkhnwfn 發表于 2019-8-16 15:31
只能佩服了  太牛X
6#
 樓主| 15774211127 發表于 2019-8-16 15:44 <
yjkhnwfn 發表于 2019-8-16 15:31
只能佩服了  太牛X

額小白一個,只是突然靈感來了,擋都擋不住
7#
 樓主| 15774211127 發表于 2019-8-16 15:45 <
Monitor 發表于 2019-8-16 15:15
不知道那種變態版的能不能也用這方法來還原

大多數都能還原的
只是時間或成本的問題
8#
phubing 發表于 2019-8-16 15:55
啊~~~我之前就是用這個網站加密的js,哈哈哈哈
9#
 樓主| 15774211127 發表于 2019-8-16 16:14 <
phubing 發表于 2019-8-16 15:55
啊~~~我之前就是用這個網站加密的js,哈哈哈哈

那你可能得升級加密算法了哦,哈哈
感覺好像不太有效,這個算是這個網站的好的加密方式了,他的其他那些控制臺一調試就出來了


10#
a774733519 發表于 2019-8-16 16:21
膜拜一下
11#
悲蟬唱空涼 發表于 2019-8-16 16:37
我之前發了一個這個網站的加密js,沒人解決,樓主看一下?
http://www.dypczhxn.cn/thread-988519-1-1.html
12#
 樓主| 15774211127 發表于 2019-8-16 16:38 <
悲蟬唱空涼 發表于 2019-8-16 16:37
我之前發了一個這個網站的加密js,沒人解決,樓主看一下?
http://www.dypczhxn.cn/thread-988519-1-1.htm ...

稍等,我看下,不一定成功,這個需要靈感
您需要登錄后才可以回帖 登錄 | 注冊[Register]

本版積分規則 警告:禁止回復與主題無關內容,違者重罰!

快速回復 收藏帖子 返回列表 搜索

RSS訂閱|小黑屋|聯系我們|吾愛破解 - LCG - LSG ( 京ICP備16042023號 | 京公網安備 11010502030087號 )

GMT+8, 2019-10-18 14:44

Powered by Discuz!

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表
现在靠网络挣钱的方法