前言

一般抓包要么使用Xposed,Magisk或者Root。这样风险太大,很容易被微信检测出现,本人提供一种方法,修改Android系统源码编译ROM方式,这样可以在几乎没有任何风险的情况下进行抓包。

有帮助的截图

封号根据

平时微信会封禁的账户类型(诈骗,色情营销,吸粉账号等)
手机上安装了 Xposed 框架并激活了修改微信相关模块的用户
在手机上安装了 Magisk 框架并且激活了 Systemless Xposed 的用户
只在手机上安装了 Xposed 或 Magisk 框架但没有激活的用户
一部分只 ROOT 手机的用户(存疑)和使用越狱后 iOS 的用户。
使用手机自带/第三方的微信分身功能同时使用多个微信账户。
少部分什么都没装无辜躺枪的 Play 商店版微信用户(一脸懵逼)

来自:https://xingzx.org/blog/crawl-wechatapp-on-android

封号关键词:Xposed Magisk ROOT,而我们自行编译ROM,也不开启ROOT权限。这样就可以完全躲过风控。

Pixel 2固件

我编译的适用Pixel 2的固件地址。购买Pixel 2(现价300元左右),刷入此固件即可。

系统源码改动diff

diff --git a/core/java/android/security/net/config/NetworkSecurityConfig.java b/core/java/android/security/net/config/NetworkSecurityConfig.java
index 52f48ef8..07c03657 100644
--- a/core/java/android/security/net/config/NetworkSecurityConfig.java
+++ b/core/java/android/security/net/config/NetworkSecurityConfig.java
@@ -189,11 +189,11 @@ public final class NetworkSecurityConfig {
         builder.setCleartextTrafficPermitted(cleartextTrafficPermitted);
         // Applications targeting N and above must opt in into trusting the user added certificate
         // store.
-        if (info.targetSdkVersion <= Build.VERSION_CODES.M && !info.isPrivilegedApp()) {
+        //if (info.targetSdkVersion <= Build.VERSION_CODES.M && !info.isPrivilegedApp()) {
             // User certificate store, does not bypass static pins.
             builder.addCertificatesEntryRef(
                     new CertificatesEntryRef(UserCertificateSource.getInstance(), false));
-        }
+        //}
         return builder;
     }

对于使用了网络安全配置的App

System User 自定义区域
project frameworks/base/
diff --git a/core/java/android/security/net/config/ManifestConfigSource.java b/core/java/android/security/net/config/ManifestConfigSource.java
index 79115a5a..b7f5c199 100644
--- a/core/java/android/security/net/config/ManifestConfigSource.java
+++ b/core/java/android/security/net/config/ManifestConfigSource.java
@@ -55,7 +55,7 @@ public class ManifestConfigSource implements ConfigSource {
             if (mConfigSource != null) {
                 return mConfigSource;
             }
-            int configResource = mApplicationInfo.networkSecurityConfigRes;
+            int configResource = 0; //mApplicationInfo.networkSecurityConfigRes;
             ConfigSource source;
             if (configResource != 0) {
                 boolean debugBuild =