DexGuard 篡改和环境检测有用吗?

Posted

技术标签:

【中文标题】DexGuard 篡改和环境检测有用吗?【英文标题】:Is DexGuard tamper and Environment detection helpful? 【发布时间】:2015-07-25 22:25:48 【问题描述】:

我对 DexGuard 和 Proguard 很陌生。我正在浏览他们的文档和示例。他们有 dexguard_util 可以帮助您检测应用程序是否被篡改,还有助于检测它是否在它应该运行的环境中运行。该文档建议使用以下代码对这种篡改和环境检测进行加密是dexgaurd-project.txt。

 -encryptclasses A$D
 -encryptstrings A$D

以下是活动

public class A extends Activity



    @Override
    public void onCreate(Bundle savedInstanceState)
    
        super.onCreate(savedInstanceState);

        new D().c();
    

    private class D
    
        public void c()
        
            //some code to which detects the tampering and environment and takes action accordingly
        
    

如果黑客注入这行代码会怎样。

public class A extends Activity



    @Override
    public void onCreate(Bundle savedInstanceState)
    
        super.onCreate(savedInstanceState);
        //code commented by hacker
        //new D().c();
    

    private class D
    
        public void c()
        
            //some code to which detects the tampering and environment and takes action accordingly
        
    

然后我的应用程序将在不运行那些我认为是一个大问题的测试的情况下运行。我对逆向工程如何工作的理解是错误的,还是有更好的方法来做到这一点。如果存在,请分享更好的方法。提前致谢。请注意,公共类 A 无法加密,因为它是一个入口点,并且在 progaurd-project.txt 中使用此命令保留

-keep class somepackage.A

【问题讨论】:

【参考方案1】:

在防篡改方面,重要的是要记住,他们的目标不是阻止任何和所有潜在的篡改努力,而只是提高目标的安全栏高到足以阻止大多数攻击者。

话虽如此,

一点切线:

文档建议使用以下代码对这个篡改和环境检测进行加密是dexgaurd-project.txt。

类加密确实会阻止对应用程序包的基本静态分析,例如只需解压缩包并将其加载到jd-gui。然而,正如this answer shows 一样,绕过它是微不足道的:只需挂钩在加载时解密 apk 的静态方法,然后转储它。但这可以提高安全门槛。

现在回到你原来的问题:

如果黑客注入这行代码会怎样。

作为攻击者,这将是下一步。但是,这需要重新打包应用程序,并使用黑客的签名密钥对其进行签名。因此,需要结合Dexguard的防篡改措施,如checking the apk signature。

DexGuard 篡改和环境检测有用吗?

总而言之,是的,它有助于提高绝大多数应用程序的标准。但这不是灵丹妙药。

【讨论】:

以上是关于DexGuard 篡改和环境检测有用吗?的主要内容,如果未能解决你的问题,请参考以下文章

Matlab/CV系列基于帧间相关性和K-means的视频篡改检测matlab实现

实验数据篡改会被看出来吗

检测 Apk 中的代码篡改

我可以使用 dexguard 生成未签名的 APK 吗?

我应该在 proGuard 上使用 dexGuard、redEX 来混淆广播接收器吗

让假图无所遁形,阿里篡改图像检测大赛集结号令打响