微信小程序反編譯


  最近公司想做地圖業務,但是考慮到數據的重要性,我們就需要從各個角度進行評估,如何保證我們的程序安全;經過長期的調研發現微信小程序是沒辦法防止別人抓包的,只要連上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小程序的破解步驟,通過編輯器打開看了一下代碼,發現可讀性還是非常好的,結構完整,部分變量做了混淆,即使里面存放了公鑰和算法都可以找到進行研究,因此前端永遠都不是安全的。

我們能做的,就是先把自己變強大,等到強大以后,才會有人來攻擊你,針對一個小企業要考慮的不是安全而是如何快速成長和壯大。

大企業自然有更多的人才來進行安全防護;想做什么功能,大膽的上,不要猶豫,用戶體驗至上,安全並重;至此此文章獻給前端愛好者。

近期剛上線一門基於微信小程序、公眾號和小程序雲開發的微信授權、分享和支付的專項課程,如果你對支付感興趣可以考慮入手:

https://coding.imooc.com/class/343.html

React全家桶開發通用的后台管理系統:

https://coding.imooc.com/class/236.html

Vue2.0+Vue-Router+Vuex+Node+Mongo開發全棧商城課程

https://coding.imooc.com/class/113.html

 

慕課講師:河畔一角

http://www.imooc.com/u/1343480


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM