微信小程式反編譯
最近公司想做地圖業務,但是考慮到資料的重要性,我們就需要從各個角度進行評估,如何保證我們的程式安全;經過長期的調研發現微信小程式是沒辦法防止別人抓包的,只要連上charles就能隨意抓取微信小程式的任意一個介面資料,因此我們只能對程式程式碼進行加固,主要的方式如下:
1. 介面通訊層面新增signature,後臺獲取引數後進行解密比對,如果不一致直接返回報錯。
2. 介面次數限制,為了防止別人頻繁刷後臺介面,介面需要對同一使用者做次數限制。
3. 資料加密,為了防止別人輕易獲取資料,需要對介面返回值再後臺進行對稱加密,前端進行解密。
以上是目前考慮的安全防範,但是由於小程式本身是可以破解的,因此以上的方案就現的不太安全,但是能夠起到一定的保護作用。可能很多人對小程式破解感到陌生,認為小程式是微信的,微信的安全肯定會很高,不可破解,事實並非如此。
於是我針對OFO小程式做一次編譯和破解,深入瞭解一下情況,看看我們的加密是否安全,如果解密之後,程式碼暴露無疑,公鑰和演算法輕易拿到,說明前端永遠都不是安全的。
一、下載網易模擬器
http://mumu.163.com/baidu/
根據自己的系統選擇對應的軟體進行安裝。
安裝成功後,如下:
二、再模擬器上面安裝對應的軟體(微信、RE檔案管理器)
1. 開啟應用中心,搜尋 RE檔案管理器和微信,分別進行下載
2. 開啟微信,輸入帳號進行登入,登入成功後,點擊發現,點選 “小程式”
3. 搜尋ofo小黃車
4. 開啟ofo小黃車官方版本
此頁面可能會打不開,可能是模擬器的問題,但是沒關係,小程式檔案已經下載到本地了。
三、開啟RE檔案管理器
1. 進入到目錄中:/data/data/com.tencent.mm/MicroMsg
這個下面會存放各種檔案,沒登入一個使用者會產生一個hash串作為使用者標識
如上圖所示,我登入了2個微信帳號,產生了2個hash串。
2. 隨便選擇一個使用者進去,確保這個使用者點選過ofo小程式。(如果只登入過一個帳號,裡面只有一個hash串)
3. 進入到appbrand中,裡面包含2個資料夾,一個是pkg(執行檔案),一個是jscache(快取檔案)
4. 開啟pkg資料夾
裡面包含了開啟過的小程式執行檔案,找到ofo的檔案進行;
a. 滑鼠單擊長按,右邊會出現一個選項
b. 選擇建立tar檔案
c. 接下來,選擇不壓縮、壓縮成功後,選擇檢視,會進到檢視目錄,看到剛剛壓縮的tar檔案
5. 滑鼠長按此檔案,右邊選擇傳送,通過微信傳送給對應的好友,不能直接拷貝到自己電腦上,只能通過微信接收的方式。
四、編譯小程式原始碼
1. 開啟終端,用git下載程式碼
git clone https://github.com/qwerty472123/wxappUnpacker.git
2. 安裝依賴,安裝之前需要安裝Node環境(此處自行安裝,不提供安裝方式)
cd wxappUnpacker
npm i 或者 cnpm i
//安裝依賴檔案
3. 執行程式碼
//window系統: node wuWxapkg.js C:\work\UppackWxApp\app\_362760388_3.wxapkg //Mac系統 node wuWxapkg.js /Users/jacksoft/Desktop/_-1050685970_73.wxapk
執行完成後,即可生成編譯之後的原始碼,如下:
目錄結構:
頁面結構:
以上即為對OFO小程式的破解步驟,通過編輯器開啟看了一下程式碼,發現可讀性還是非常好的,結構完整,部分變數做了混淆,即使裡面存放了公鑰和演算法都可以找到進行研究,因此前端永遠都不是安全的。
我們能做的,就是先把自己變強大,等到強大以後,才會有人來攻擊你,針對一個小企業要考慮的不是安全而是如何快速成長和壯大。
大企業自然有更多的人才來進行安全防護;想做什麼功能,大膽的上,不要猶豫,使用者體驗至上,安全並重;至此此文章獻給前端愛好者。
慕課講師:河畔一角
http://www.imooc.com/u/1343480