web-dev-qa-db-ja.com

javascript deminifier(deobfuscator)のようなものはありますか?

この質問は GoogleがJS APIに使用するものと同じことを行うJavascriptミニファイア(クランチャー)はどれですか? の正反対です。

人気のないJSツールキットを使って自分でビルドできるように、Googleがどのようにロードするのかを知りたいです。

16
Jorge Vargas

これを試してください: JS Beautifier

30
yoda

試してください http://www.jsnice.org/

私はそれを偶然見つけました、そしてそれは素晴らしいです。コードを展開します。統計変数の名前変更があります。たとえば、次のコードがある場合:

var g = f.originalEvent.targetTouches[0];

次に、コードを次のように変換します。

var touches = event.originalEvent.targetTouches[0];

かなり良い推測、メチンク。

それはこれを変えました:

d.slide.hasClass("selected") ? (e.onSlideOpen.call(d.prev.children("div")[0]), q ? (e.rtl && d.slide.position().left > i.w / 2 || d.slide.position().left < i.w / 2) && h.animateSlide.call(d) : t && d.index ? (h.animateGroup(d, !0), h.fitToContent(d.prev)) : d.slide.position().top < i.h / 2 && h.animateSlide.call(d)) : (setTimeout(function() { e.onSlideOpen.call(d.slide.children("div")[0]) }, e.slideSpeed), h.animateGroup(d), t && h.fitToContent(d.slide)), e.autoPlay && (f.stop(), f.play(l.index(j.filter(".selected"))))

これに:

if (e.slide.hasClass("selected")) {
    settings.onSlideOpen.call(e.prev.children("div")[0]);
    if (val) {
      if (settings.rtl && e.slide.position().left > box.w / 2 || e.slide.position().left < box.w / 2) {
        self.animateSlide.call(e);
      }
    } else {
      if (isMac && e.index) {
        self.animateGroup(e, true);
        self.fitToContent(e.prev);
      } else {
        if (e.slide.position().top < box.h / 2) {
          self.animateSlide.call(e);
        }
      }
    }
  } else {
    setTimeout(function() {
      settings.onSlideOpen.call(e.slide.children("div")[0]);
    }, settings.slideSpeed);
    self.animateGroup(e);
    if (isMac) {
      self.fitToContent(e.slide);
    }
  }
  if (settings.autoPlay) {
    node.stop();
    node.play(tabs.index(options.filter(".selected")));
  }

私が取り組んでいるライブラリにはいくつかのバグがあり、コードの解読に何時間も費やした後、これを見つけることで多くの時間を節約できます。

真剣に、このツールはJSBeautifierで床を拭きます。

16
Shane

ええと、縮小化された->元の変数名のマッピングが利用可能でない限り、変数名を復元することは不可能です。そうでなければ、そのツールの作者は、精神的な偉業のためにランディ賞を獲得することができると思います。

15
patros
7
Matjaz Lipus

メソッド名または変数名を再構築することはできません。期待できる最善の方法は、単純なJSコードフォーマッター(前述のような)を作成し、ファイルをメソッドごと、行ごとに調べて、各部分の機能を理解することです。

おそらく、優れたJSリファクタリングツールを使用すると、これも簡単になります(メソッドの名前を変更/文書化できるようになります)

2
Matthew

正規表現で\b(単語境界)機能を使用して、ファイル内の1文字の変数名を見つけることができます。

for i in "abcdefghij..z"; do
    sed -i "s/\b$i\b/$(random /usr/share/dict/words)/g" somefile.js
done

:%s/\<a\>/truesaiyanpower/gのようなvimでこれを使用することもできます。

1
kanzure

Css、html、およびjsファイルを非最小化するには、 nminify または nminify JS オンラインツールを使用できます。

0
Mohandas P G

Jsファイルをunminifyするには、 Unminify が最適です!

0
Shafizadeh