[ol]
打开MT→找到海狗视频APK→点击APK→选「Dex编辑器++」→全选所有 classes*.dex (多DEX必须全选,否则漏改!)。
点右上角搜索→输入 verify →搜索类型选「方法名」→确定。
在结果中找 okhttp3 包下的 OkHttpClient ,打开其 构造方法。
在 return-void 前插入:
smali
[/ol]
new-instance p1, Lokhttp3/TrustAllCerts;
invoke-direct {p1}, Lokhttp3/TrustAllCerts;->()V
if-eqz p1, :cond_16e
check-cast p1, Ljavax/net/ssl/X509TrustManager;
iput-object p1, p0, Lokhttp3/OkHttpClient;->x509TrustManager:Ljavax/net/ssl/X509TrustManager;
new-instance p1, Lokhttp3/TrustAllHostnameVerifier;
invoke-direct {p1}, Lokhttp3/TrustAllHostnameVerifier;->()V
if-eqz p1, :cond_16e
iput-object p1, p0, Lokhttp3/OkHttpClient;->hostnameVerifier:Ljavax/net/ssl/HostnameVerifier;
iget-object p1, p0, Lokhttp3/OkHttpClient;->sslSocketFactoryOrNull:Ljavax/net/ssl/SSLSocketFactory;
if-eqz p1, :cond_16e
iput-object p1, p0, Lokhttp3/OkHttpClient;->sslSocketFactoryOrNull:Ljavax/net/ssl/SSLSocketFactory;
:cond_16e
在 okhttp3 目录下新建两个文件:
smali
[/ol]
.class public final Lokhttp3/TrustAllCerts;
.super Ljava/lang/Object;
.implements Ljavax/net/ssl/X509TrustManager;
.method public checkClientTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)V
.registers 3
return-void
.end method
.method public checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;)V
.registers 3
return-void
.end method
.method public getAcceptedIssuers()[Ljava/security/cert/X509Certificate;
.registers 1
const/4 v0, 0x0
new-array v0, v0, [Ljava/security/cert/X509Certificate;
return-object v0
.end method
.end class
smali
.class public final Lokhttp3/TrustAllHostnameVerifier;
.super Ljava/lang/Object;
.implements Ljavax/net/ssl/HostnameVerifier;
.method public verify(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)Z
.registers 3
const/4 v0, 0x1
return v0
.end method
.end class
二、VPN检测绕过(搜“VPN”字符串)
[ol]
点右上角搜索→输入 VPN →搜索类型选「字符串」→确定。
在结果中找弹出“网络异常,请关闭VPN”的Toast代码,例如:
smali
[/ol]
const-string/jumbo v0, "网络异常,请关闭VPN后重试"
invoke-static {v0}, Lcom/blankj/utilcode/util/ToastUtils;->v(Ljava/lang/CharSequence;)V
将Toast代码删除,在检测方法后加 goto :cond_xx ( xx 为原正常逻辑标签),例如:
smali
[/ol]
invoke-static {p0}, Lcom/other/s;->a(Landroid/content/Context;)Z
move-result v0
goto :cond_37 # 强制跳正常逻辑,不检测
三、保存编译+测试
四、避坑总结