微信小程序反編譯

  最近公司想作地圖業務,可是考慮到數據的重要性,咱們就須要從各個角度進行評估,如何保證咱們的程序安全;通過長期的調研發現微信小程序是沒辦法防止別人抓包的,只要連上charles就能隨意抓取微信小程序的任意一個接口數據,所以咱們只能對程序代碼進行加固,主要的方式以下:前端

1.  接口通信層面添加signature,後臺獲取參數後進行解密比對,若是不一致直接返回報錯。node

2. 接口次數限制,爲了防止別人頻繁刷後臺接口,接口須要對同一用戶作次數限制。git

3. 數據加密,爲了防止別人輕易獲取數據,須要對接口返回值再後臺進行對稱加密,前端進行解密。github

以上是目前考慮的安全防範,可是因爲小程序自己是能夠破解的,所以以上的方案就現的不太安全,可是可以起到必定的保護做用。可能不少人對小程序破解感到陌生,認爲小程序是微信的,微信的安全確定會很高,不可破解,事實並不是如此。算法

因而我針對OFO小程序作一次編譯和破解,深刻了解一下狀況,看看咱們的加密是否安全,若是解密以後,代碼暴露無疑,公鑰和算法輕易拿到,說明前端永遠都不是安全的。npm

1、下載網易模擬器小程序

mumu.163.com/baidu/微信小程序

根據本身的系統選擇對應的軟件進行安裝。緩存

安裝成功後,以下:安全

image

2、再模擬器上面安裝對應的軟件(微信、RE文件管理器)

1. 打開應用中心,搜索 RE文件管理器和微信,分別進行下載

image

2. 打開微信,輸入賬號進行登陸,登陸成功後,點擊發現,點擊 「小程序」

image

3. 搜索ofo小黃車

image

4. 打開ofo小黃車官方版本

image

此頁面可能會打不開,多是模擬器的問題,可是不要緊,小程序文件已經下載到本地了。

3、打開RE文件管理器

1. 進入到目錄中:/data/data/com.tencent.mm/MicroMsg

這個下面會存放各類文件,沒登陸一個用戶會產生一個hash串做爲用戶標識

image

如上圖所示,我登陸了2個微信賬號,產生了2個hash串。

2. 隨便選擇一個用戶進去,確保這個用戶點擊過ofo小程序。(若是隻登陸過一個賬號,裏面只有一個hash串)

image

3. 進入到appbrand中,裏面包含2個文件夾,一個是pkg(執行文件),一個是jscache(緩存文件)

image

4. 打開pkg文件夾

image

裏面包含了打開過的小程序執行文件,找到ofo的文件進行;

a. 鼠標單擊長按,右邊會出現一個選項

b. 選擇建立tar文件

image

c. 接下來,選擇不壓縮、壓縮成功後,選擇查看,會進到查看目錄,看到剛剛壓縮的tar文件

image

5. 鼠標長按此文件,右邊選擇發送,經過微信發送給對應的好友,不能直接拷貝到本身電腦上,只能經過微信接收的方式。

4、編譯小程序源碼

1. 打開終端,用git下載代碼

git clone https://github.com/qwerty472123/wxappUnpacker.git
複製代碼
  1. 安裝依賴,安裝以前須要安裝Node環境(此處自行安裝,不提供安裝方式)
cd wxappUnpacker

npm i 或者 cnpm i

//安裝依賴文件
複製代碼
  1. 運行代碼
//window系統:
node wuWxapkg.js C:\work\UppackWxApp\app\_362760388_3.wxapkg

//Mac系統
node wuWxapkg.js /Users/jacksoft/Desktop/_-1050685970_73.wxapk
複製代碼

運行完成後,便可生成編譯以後的源碼,以下:

目錄結構:

image

頁面結構:

image

以上即爲對OFO小程序的破解步驟,經過編輯器打開看了一下代碼,發現可讀性仍是很是好的,結構完整,部分變量作了混淆,即便裏面存放了公鑰和算法均可以找到進行研究,所以前端永遠都不是安全的。

咱們能作的,就是先把本身變強大,等到強大之後,纔會有人來攻擊你,針對一個小企業要考慮的不是安全而是如何快速成長和壯大。

大企業天然有更多的人才來進行安全防禦;想作什麼功能,大膽的上,不要猶豫,用戶體驗至上,安全並重;至此此文章獻給前端愛好者。 有什麼技術問題歡迎留言討論

相關文章
相關標籤/搜索