MAC App破解之路十二 微信開發者工具


最近用微信開發者工具很不爽,想看下底層的代碼結果顯示: /// The code has been hided by Wechat Devtools

破解目的:就是能夠顯示所有源碼。

 

 

 

接下來開始破解過程:

===============================

分析: 從本質上講微信開發者工具就是一個瀏覽器,訪問一個web服務器地址,呈現相應的內容。 

關於顯示源碼這塊有兩種可能: 

1.  每次點擊的時候,都會想web服務器請求對應資源,如果發現是運行系統相關文件名,那么直接返回字符串 /// The code has been hided by Wechat Devtools

2. 運行的微信開發者工具前端時已經有了所有源碼資源,只不過如果查詢的是相應文件名,則不顯示源碼,用/// The code has been hided by Wechat Devtools 替換。

 

開始驗證, 因為本地服務器是http, 使用我wireshark流量分析,就可以知道使用的哪一種了。

 

 

從wireshark流量分析來看,微信開發者工具使用的是第二種, 運行所有的代碼已經在前端了,只不過要顯示時,做了一下替換。

 

如果要一勞永逸,當然是修改工具前端的代碼,不然它做替換。 修改源碼需要先hook調checkSIgn那塊代碼,之后修改才能生效。

但是我突然不想這么干了, 一是開發者工具經常要升級, 每次修改一次很麻煩,況且我僅僅是想獲取源碼,並不想做其他的小動作。

關於這個事情,直接寫一個http工具獲取源碼,要簡單的多。

 

 

隨便寫一下http工具居然不OK,會校驗token, 無語了。 那就加上token吧

 

 雖然工具是寫出來了,但是這個工具相當於一次性的, 因為微信開發者工具前端不支持設置代理, 只能使用wireshark獲取token,   拿到token還得改源碼,然后運行。整個過程太他媽繁瑣。 

附上源碼:

const axios = require('axios');

const wechatdevtools = "1.05.2102020";
const port = 61151;
const token = "9f6c3274a3b2349bc2ad77af8254ca2f";
const ua = `Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.3 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1 wechatdevtools/${wechatdevtools} MicroMessenger/7.0.4 Language/zh_CN webview/20000 gameservice port/${port} token/${token}`;

const BaseUrl = `http://127.0.0.1:${port}`;

const kReq = {
  asdebug : '/game/__dev__/asdebug.js'
}
const headers = {
  'User-Agent': ua,
  Refere:'https://servicewechat.com/wx418ad5760dd5bcba/devtools/page-frame.html',
  'Accept-Encoding': 'gzip,deflate, br',
}

axios.get(BaseUrl + kReq.asdebug, {headers}).then((data) => {
  console.log(data);
}).catch((err) => {
  console.error(err);
});

 

==============================================================================

你既然檢驗這么嚴格,就不要怪我對你動刀了。  開始修改源碼之旅。  

對/Applications/wechatwebdevtools.app/Contents/Resources/package.nw/core.wxvpkg 進行解包。

找到對應替換邏輯:

 

猜測e,r 就是URL路徑。  返回出去的是一個字符串。 從這個邏輯可以看出,還不能斷然確實修改它能不能生效。

 

 

 有一段邏輯是 _ || h.push(hide.......).  而下划線這個變量是global.appConfig.isDev 賦值的

那么大膽猜測global.appConfig.isDev 這個變量。。   我不能直接修改這個變量,因為這個isDev跟很多邏輯有關系, 我注意到asdebug文件字符串push了兩次,

那么直接修改hideSourceContentInDevtools這個函數應該可以生效吧。 

1 setTimeout(function (){
2   const xxx = require("../../../core.wxvpkg/5cd41701460b6113adbf1f8f645cdd15.js");
3   ["hideSourceContentInDevtools"].forEach(
4     (k) => xxx[k] = function (e, r, n = !0) {
5       return n ? `<script><\/script>` : '';
6     }
7   );
8 }, 1000);

直接將這段邏輯放到/Applications/wechatwebdevtools.app/Contents/Resources/package.nw/js/unpack/hackrequire/index.js文件, 如圖:

 

 

顯示文件效果圖, 媽媽再也不擔心看不到代碼了。。。

 

 

我,我得意的,,,完美收工。。。。。

 


免責聲明!

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



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