不可调试的 Android 应用程序中的 Charles 代理

Posted

技术标签:

【中文标题】不可调试的 Android 应用程序中的 Charles 代理【英文标题】:Charles proxy in non debuggable flavour of Android app 【发布时间】:2019-02-25 08:34:40 【问题描述】:

首先让我澄清一下,我知道这是一种非常糟糕的做法,我不会将此更改推送到我的生产代码中。但有时我们需要调试我的应用程序的不可调试风格的一些更改,但所有 https url 都失败并出现以下错误

Client SSL handshake failed: An unknown issue occurred processing the certificate (certificate_unknown)

我使用了以下网络配置文件并添加到我的清单文件中。这在应用程序的可调试风格下工作,但仍无法在不可调试风格下工作。

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config>
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
    <debug-overrides>
        <trust-anchors>
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
</network-security-config>

有什么方法可以使用 charles 以 android 应用程序的不可调试风格监控我的网络调用?

【问题讨论】:

【参考方案1】:

这个对我有用:

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config>
        <trust-anchors>
            <certificates src="user" />
            <certificates src="system" />
        </trust-anchors>
    </base-config>
</network-security-config>

Source

【讨论】:

【参考方案2】:

在创建需要使用 Charls 进行调试的发布版本时,在应用程序上下文中的清单中。请在此之后添加android:debuggable="true",然后尝试构建您的发布版本并尝试使用 Charls 进行调试。 我还没有尝试过,但这可能会奏效。根据以下链接。 https://developer.android.com/training/articles/security-config.html

【讨论】:

我不想让我的应用程序可调试。我在问题中提到我要调试可调试的问题。

以上是关于不可调试的 Android 应用程序中的 Charles 代理的主要内容,如果未能解决你的问题,请参考以下文章

Android调试优化篇

一些Android程序的反逆向方法

逆向手机内核,添加调试支持和反调试

Android 逆向修改运行中的 Android 进程的内存数据 ( Android 系统中调试器进程内存流程 | 编译内存调试动态库以及调试程序 )

Android 逆向修改运行中的 Android 进程的内存数据 ( Android 命令行中获取要调试的应用进程的 PID | 进程注入调试进程内存的 so 库 )

android中的所有包都不可用于下载错误