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文件, 如图:

 

 

显示文件效果图, 妈妈再也不担心看不到代码了。。。

 

 

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

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

破解新版本,请查看另一文章: https://www.cnblogs.com/dzqdzq/p/17449508.html

 

posted @ 2021-06-20 11:28  Please Call me 小强  阅读(1499)  评论(10编辑  收藏  举报