2014-06-12 16 views
0

縮小後的所有變量都是用一個或兩個字母來定義的。是否有任何工具或技術可以幫助找到我在javascript代碼中找到的正確變量?從縮小的javascript代碼查找正確的變量

例如,我發現谷歌塗鴉足球遊戲:https://www.google.com/logos/2012/football-2012-hp.html,現在我試圖找到變量那裏得分或最終得分被保存。所以我可以爲比賽做出高分榜。

歡迎任何提示。

+3

使用此http://jsbeautifier.org/ –

+0

是否沒有開發者文檔或類似的東西? – putvande

+0

沒有源代碼,沒有文檔,沒有源圖。 – Randel

回答

1

無法恢復Minified Javascript變量名稱,除非Javascript代碼或庫具有映射文件來解碼瀏覽器的Inpsector視圖中的原始代碼。

在你的例子中,這是不可能的。

+0

確切地說。 (除非提供* map-name *)對縮小的代碼進行反向工程也意味着要找出內部連接,關係和下面的邏輯,因此將縮小的變量名稱重新命名爲有意義的東西。痛苦。 –

+1

那麼,有一些工具使用GitHub上的大量可用開源代碼的名稱和類型規則數據庫,例如[JSNice](http://stackoverflow.com/a/24199255/1183010) –

2

通常你想避免使用縮小的源代碼。嘗試使用完整的變量名稱查找原始未壓縮的源文件。

我從來沒有能夠成功地對縮小的Javascript文件進行更改。我的JavaScript技能非常好,但是縮小器使得很難弄清楚代碼實際上在做什麼。

Source Maps是幫助解決此問題的新事物:http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/。但不幸的是,在你的情況下,這可能不會工作,因爲谷歌還沒有提供源地圖。

如果您被迫對縮小的來源進行更改,請嘗試使用一些像http://jsbeautifier.org/這樣的@Mustafa_sabir建議。然後嘗試找出每個變量是什麼。然後,您可以記住他們的工作,或嘗試將其重命名爲更有意義的內容。

祝你好運!

+0

它似乎是黑客攻擊Javascript遊戲並不像黑客玩PC遊戲那麼受歡迎。我認爲縮小的代碼並不比十六進制代碼更難。所以,唯一的選擇是在硬模式下進行:美化代碼並使用例如console.log來測試哪個變量具有與遊戲中得分相同的值? – Randel

+0

是的...如果你要修改縮小的源碼控制檯。日誌「將成爲你的朋友。一旦你弄清楚變量的作用(即使它不是你需要的變量),嘗試將它重新命名爲更好的名稱。這樣,當你處理你的代碼時,事情會變得更加可讀。 – Stratus3D

3

有一個很好的工具,稱爲jsnice

什麼是JSNice?

JSNice是一種新的JavaScript的統計去混淆和縮小引擎。給定一個JavaScript程序,JSNice 自動建議新的可能的標識符名稱和類型。

jsnice與其他'javascript beautifiers'的不同之處在於它不僅格式化縮小的代碼,而且還預測有意義的變量名稱。

+0

我不得不說在我的情況下,jsnice比jsbeautifier更好。但我的主要目標是觀察變量以找到正確的變量。代碼的美化或縮小有助於在沒有工具的情況下手動執行代碼,從而幫助我從代碼中挖掘正確的變量。 – Randel