這還要從很久以前的一個故事說起,某電商在做手機預訂時,為了顯得這款手機很火爆,在顯示預定數的頁面上,將預定數顯示為實際預定數的3倍。雖然這是一個簡單吸引眼球的方式,但是他們操作起來也太草率了,直接在前端頁面里面將數字乘以3,然后就自然地被網友們扒了底褲。
要知道,很多的場景下,我們不得不將程序的源代碼暴露到外界,比如說網頁應用,用戶在瀏覽這個網頁時,使用右鍵查看網頁或者打開開發者工具,都可以輕松地看到HTML和前端JS的源代碼;又比如說一個Android程序,在下載到安裝包的APK文件后,使用一些反編譯工具,也可以將這個應用的Java源代碼反編譯出來查看。
既然源代碼都暴露了,那么寫在代碼里的一些有點小心思的邏輯自然也隱藏不了咯。如果代碼不可避免地要暴露出去,同時又想隱藏一些邏輯,或者說想讓別人不是那么容易的被看出來,那么『代碼混淆』你值得擁有。
『代碼混淆』其實并不是什么高科技,它的作用就是將一句條理清晰的話翻譯得晦澀難懂,但是功能卻保持不變。一般采用的方法,就是將代碼中各種有意義的變量名、函數名都用簡單的幾個字母組合來表示,還有就是將一些等價的代碼邏輯轉換一下,比如將for循環改成while循環,將while循環改成for循環等。比如說,我有個函數是從銀行取錢1萬塊錢,這樣寫的Bank.giveMeMoney(10000),經過混淆后就變成a.b(10000),單純地看a.b(10000)鬼才知道是什么意思。
我們再來看個實際的栗子,這次混淆基本上將代碼中有意思的詞都替換了:
最后要說一句,『代碼混淆』并不是加密代碼,它只是讓代碼看起來比較難懂,但是機器執行起來的邏輯是一樣一樣的,增加的是人為分析的難度和時間成本。
云恒網絡www.xyzqw.net版權所有 備案號:魯ICP備19021997號-1 淄博高端網站建設、網絡營銷知名品牌 網絡整合傳播機構