日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

技术分享:几种常见的JavaScript混淆和反混淆工具分析实战【转】

發布時間:2025/4/16 javascript 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 技术分享:几种常见的JavaScript混淆和反混淆工具分析实战【转】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

信息安全常被描述成一場軍備競賽,白帽與黑帽,滲透測試者與黑客,善與惡,本文將聚焦這場永無止境決斗中的一個小點。

HTML5 & JS 應用中充滿著對輸入進行驗證/注入的問題,需要開發人員始終保持警惕。但同時還存在著另一個問題,就是應用中程序專用代碼的易訪問性。為了防止盜版或者至少使盜版更加困難,常會使用混淆工具對 JS 代碼進行混淆。作為對立面,反混淆工具也可以將混淆過的 JS 代碼進行還原。我曾經接觸過雙方的一些工具,下面是我的一些研究成果。

首先,下面這是我們的示例代碼(取自Google Closure Compiler的 Wiki 頁面)。一個完整的應用程序中代碼會更加復雜,但這里足以用于實驗了:

  • function displayNoteTitle(note) {
  • alert(note['title']);
  • }
  • var flowerNote = {};
  • flowerNote['title'] = "Flowers";
  • displayNoteTitle(flowerNote);
  • 接下來,讓我們來列舉下要進行實驗的混淆和反混淆工具,本文中會實驗 4 個混淆工具和 2 個反混淆工具。

    混淆工具:

    • YUI Compressor
    • Google Closure Compiler
    • UglifyJS
    • JScrambler

    反混淆工具:

    • jsbeautifier.org
    • JSDetox

    以上除了 JScrambler 是商業軟件需要付費使用外,其余全部為免費軟件。

    縮小和混淆

    下面首先讓我們看看混淆工具的混淆效果如何,隨后在看看反混淆工具的表現又如何。

    YUI Compressor

    function displayNoteTitle(a){alert(a.title)}var flowerNote={};flowerNote.title="Flowers";displayNoteTitle(flowerNote);

    Google Closure Compiler

    這個工具有優化和混淆兩種類型:

    簡單優化:

    function displayNoteTitle(a){alert(a.title)}var flowerNote={title:"Flowers"};displayNoteTitle(flowerNote);

    深度優化:

    alert("Flowers");

    UglifyJS

    同前一個工具一樣,UglifyJS 也有兩種層次的混淆:

    默認:

    function displayNoteTitle(e){alert(e.title)}var flowerNote={};flowerNote.title="Flowers",displayNoteTitle(flowerNote);

    高級:

    function t(t){alert(t.title)}var e={};e.title="Flowers",t(e);

    JScrambler

    /* Obfuscate your JavaScript at https://jscrambler.com */var g5b={'S':"A",'A':function(b){flowerNote['title']=b;},'X':"V",'o':(function(E){return (function(s,p){return (function(G){return {K:G};})(function(m){var c,R=0;for(var U=s;R<m["length"];R++){var O=p(m,R);c=R===0?O:c^O;}return c?U:!U;});})((function(h,n,a,M){var y=28;return h(E,y)-M(n,a)>y;})(parseInt,Date,(function(n){return (''+n)["substring"](1,(n+'')["length"]-1);})('_getTime2'),function(n,a){return new n()[a]();}),function(m,R){var d=parseInt(m["charAt"](R),16)["toString"](2);return d["charAt"](d["length"]-1);});})('3lrno3f7c'),'e':'title','V':function(b){x=b;},'Q':"Flowers",};function displayNoteTitle(b){alert(b[g5b.e]);}var flowerNote=g5b.o.K("3d3")?{}:"Flowers";g5b[g5b.S](g5b.Q);displayNoteTitle(flowerNote);g5b[g5b.X](g5b.D);

    那么,上面的代碼是什么意思呢?顯而易見,YUI Compressor,Google closure compiler 的簡單優化模式和 UglifyJS 的默認模式都使用了相同的方法對 JS 代碼進行縮小和混淆。縮小意味著壓縮代碼、減小應用程序的體積或者降低瀏覽器的加載時間。所有的這一切,在將變量名改為一個無意義的字符后,代碼會變得難以閱讀。

    UglifyJS 的高級模式會進一步混淆函數名和全局變量的名稱。Google closure compiler 的深度優化模式同時還會積極的刪除無用代碼,它追求最簡。

    而 JScrambler 則是另一種方式,它專注于對代碼進行混淆,不僅不對代碼進行縮小,反而通過增加代碼數量使代碼變的難以閱讀。

    美化和反混淆

    jsbeautifier.org

    正如其名字一樣,這個在線工具試圖將縮小后的代碼變的更加具有可讀性,但似乎它不會對代碼進行進一步的反混淆。

    YUI Compressor -> jsbeautified

  • function displayNoteTitle(e) {
  • alert(e.title)
  • }
  • var flowerNote = {};
  • flowerNote.title = "Flowers", displayNoteTitle(flowerNote);
  • UglifyJS Toplevel -> jsbeautified:

  • function t(t) {
  • alert(t.title)
  • }
  • var e = {};
  • e.title = "Flowers", t(e);
  • JSDetox

    對 UglifyJS 高級模式的代碼使用 JSDetox 似乎并不比 jsbeautifier.org 好多少,這點可以理解的,畢竟對變量/函數名進行轉換這是不可逆的過程。

    高級的反混淆和惡意代碼檢測

    一般的代碼混淆常用于知識產權保護,而高級的代碼混淆則常會被用于隱藏 WEB 應用中的惡意代碼。對惡意代碼進行混淆是為了躲避殺毒軟件的檢測,這些代碼在被混淆擴充后會難以被識別為惡意軟件。Metasploit 的 Javascript 混淆器常被用于開發惡意代碼,所以我們下面使用 Metasploit 的混淆器對我們的代碼進行混淆(參考文檔)。JSDetox 聲稱其具有進行反混淆 JS 代碼的能力,所以下面讓我們來嘗試下對 Metasploit 和 JScrambler 混淆后的代碼進行高級的反混淆。

    Metasploit Javascript 混淆器

    function L(t){window[String.fromCharCode(0141,0x6c,101,0162,0164)](t[String.fromCharCode(0164,105,0164,108,0145)]);}var C={};C[(function () { var K='le',Z='tit'; return Z+K })()]=(function () { var m="s",D="r",J="F",e="lowe"; return J+e+D+m })();L(C);

    使用 JSDetox 進行反混淆

    JScrambler -> JSDetoxed

  • var g5b = {
  • 'S': "A",
  • 'A': function(b) {
  • flowerNote['title'] = b;
  • },
  • 'X': "V",
  • 'o': (function(E) {
  • return (function(s, p) {
  • return (function(G) {
  • return {
  • K: G
  • };
  • })(function(m) {
  • var c, R = 0;
  • for(var U = s; R < m["length"]; R++) {
  • var O = p(m, R);
  • c = R === 0 ? O : c ^ O;
  • }
  • return c ? U : !U;
  • });
  • })((function(h, n, a, M) {
  • return h(E, 28) - M(n, a) > 28;
  • })(parseInt, Date, (function(n) {
  • return ('' + n)["substring"](1, (n + '')["length"] - 1);
  • })('_getTime2'), function(n, a) {
  • return new n()[a]();
  • }), function(m, R) {
  • var d = parseInt(m["charAt"](R), 16)["toString"](2);
  • return d["charAt"](d["length"] - 1);
  • });
  • })('3lrno3f7c'),
  • 'e': 'title',
  • 'V': function(b) {
  • x = b;
  • },
  • 'Q': "Flowers"
  • };
  • function displayNoteTitle(b){
  • alert(b[g5b.e]);
  • }
  • var flowerNote = g5b.o.K("3d3") ? { } : "Flowers";
  • g5b[g5b.S](g5b.Q);
  • displayNoteTitle(flowerNote);
  • g5b[g5b.X](g5b.D);
  • Metasploit -> JSDetoxed

  • function L(t){
  • window["alert"](t["title"]);
  • }
  • var C = { };
  • C["title"] = "Flowers";
  • L(C);
  • 盡管經過 Metasploit 混淆后的 JS 代碼依舊可以躲避殺毒軟件,但看起來也會輕易被 JSDetox 進行反混淆。有趣的是,看起來 JSDetox 無法反混淆 JScrambled 的代碼。我不確定為什么 JSDetox 可以反混淆出 metasploit 的代碼卻不能反混淆出 JScrambler 的,不過我猜測是 JSDetox 專門針對 metasploit 的混淆方法做過專門的支持。另一方面,JScrambler 完全是一個黑盒,但這并不意味著 JScrambled 混淆后的 Javascript 代碼不能被反混淆,也許有另一個工具專門用于或包含反混淆 JScrambled 代碼功能。

    *原文:damilarefagbemi,FB小編xiaix編譯,轉自須注明來自FreeBuf黑客與極客(FreeBuf.COM)

    轉載于:https://www.cnblogs.com/mazhenyu/p/10622844.html

    總結

    以上是生活随笔為你收集整理的技术分享:几种常见的JavaScript混淆和反混淆工具分析实战【转】的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 中文字幕有码无码人妻av蜜桃 | 国产一区二区激情视频 | 男人和女人日b视频 | 国产无码精品一区二区 | 午夜精品久久99蜜桃的功能介绍 | 91亚洲视频在线 | 黄色网av | 国模少妇一区二区三区 | 91视频网 | 久久免费视屏 | 中文字幕 视频一区 | 国产1级片 | 亚洲精品自拍 | 亚洲va久久久噜噜噜久久天堂 | 神马久久久久久久久 | 久久久综合精品 | av成人动漫 | 日韩第六页 | 国产精品视频网址 | 欧美日韩视频免费 | 永久免费av在线 | 欧美三级在线视频 | 天堂色区| 99久久国产精 | 黄色免费一级 | 免费黄色在线视频 | 国产精品视频成人 | 欧美日韩成人一区 | 欧美老熟 | 欧美大尺度做爰啪啪床戏明星 | 国产一级α片 | 亚洲免费av网 | 久热伊人| 免费无码肉片在线观看 | 狠狠艹av| 国产无套精品一区二区三区 | 久久综合亚洲色hezyo国产 | 日本激情在线 | 成年人视频免费看 | 综合久久久 | 神马久久网站 | 中文一区二区在线 | fc2ppv在线观看 | 少妇真人直播免费视频 | 亚洲精品一区二区三区在线观看 | 亚洲a级在线观看 | 黑人巨大精品欧美黑白配亚洲 | 舒淇裸体午夜理伦 | 国产一级av毛片 | 欧美视频综合 | 成人av专区 | 涩涩屋视频| 国产精品夜色一区二区三区 | 草草草在线视频 | 求av网站| 久久久a级片| 成人黄色小视频 | 一区二区精品在线观看 | 亚洲 小说 欧美 激情 另类 | 久久青青草原亚洲av无码麻豆 | 成人刺激视频 | 国产精品一区二区在线看 | 99免费精品视频 | 人人妻人人澡人人爽欧美一区 | 老色鬼av| 中文字幕一本 | 日本三级不卡 | 黄色av观看 | 欧美激情国产一区 | 亚洲欧洲视频 | av片免费在线 | 在线观看黄网 | 教练含着她的乳奶揉搓揉捏动态图 | 伦理片中文字幕 | 亚洲中文字幕97久久精品少妇 | 日日干,夜夜操 | 夜夜爽网站| 亚洲美女一区二区三区 | 男女爽爽爽 | 四十路av| 天天舔天天干 | 1024国产视频 | 911av| 91丨porny丨国产 | 色呦呦视频 | 极品美女一区二区三区 | 在线看日韩 | 久久久久久久久久国产 | 精东影业一区二区三区 | 亚洲黄色片子 | 91视频免费在线 | 三级在线网站 | 婷婷去俺也去 | 免费看a级片 | 青草青草视频 | 爱爱一级 | 波多野结衣调教 | 精品国产va久久久久久久 | 亚洲男人天堂2019 |