JavaScript不是很給力,想怎么破解就怎么破解!此文章教你的不僅僅是破解方案,還有源碼保護意識!
一、原理:
JavaScript是解釋性語言,沒有懸念,它嚴重依賴游覽器,尤其是手機小游戲 59600.com 這樣的網站,嚴重地依賴手機瀏覽器。
不管JavaScript如何混淆,最終瀏覽器都會知道最真實的代碼。
有朋友提出質疑,混淆方式千千萬萬,你如果知曉它的混淆方式,並制定出反混淆算法?
如果你這么想,那就陷入了泥潭,為何不另辟蹊徑呢?
首先,作為成熟的JavaScript產品,混淆是必須的。但是,他必須提供給瀏覽器反混淆算法,因為用戶需要運行。
而運行這兩個字卻提供給我無限的契機。我不需要知道反混淆算法,我只要知曉一個接口,
有IE9->F12的幫助,一切都變的很簡單,因為瀏覽器內核中有我迫切想要的東西。
有朋友提問,我混淆過后,不給你接口或不給瀏覽器反混淆算法。
在我眼里,運行不起來的代碼,統統都是廢代碼,一無是處,我也懶得去破解。
二、方案:
當你需要學習一款JavaScript產品的源碼,卻無情遭到混淆,心情恐怕是糟糕的。
所以你只能拿到官網例子,然后進一步學習。
什么?例子?那就好辦了,這不就是我想要的接口么?首先記住,只要JS源碼里含有throw,那咱們就成功了一大步。
首先找到這個接口,嗯,參數一切正常。正常?可不是咱們想要的,
咱真正要做的就是讓源代碼拋出異常,讓Eval Code還原出最真實的代碼。
我故意改一個錯誤的參數傳進去。好吧,源代碼已經展現在我眼前。
三、源碼保護解決方案:
1.混淆前,讓變量、方法名不可讀:
陰招啊,絕對的陰招。當人家破解完后你的代碼,一眼望去,看一眼都覺得損了陽壽。
不過,這樣做的話,還有一個麻煩,就是你對外開發人員提供的API必須是有意義的,
要不然誰也讀不懂,這期間的映射工作,也非常的復雜。
2.瀏覽器廠商配合:
真正的實現JS源碼保護,非瀏覽器廠商參與不可,妄圖用JS全程實現源碼保護是不現實的。
3.杜絕把源碼里存在throw
如果諸位用JQuery或ExtJS,那么盡量throw錯誤給這些類庫,避免讓瀏覽器從源碼文件拋出異常。