我是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发布于 2020-04-30 13:36:00
说到反篡改,重要的是要记住,他们的目标不是阻止任何和所有潜在的篡改努力,而是一个提高目标的安全标准,足以劝阻大多数攻击者的问题。
这么说,
一点切线:
该文档建议使用以下代码对篡改和环境检测进行加密,即dexgaurd-project.txt。
类加密确实阻止了对应用程序包的基本静态分析,例如简单地解压缩包并将其加载到jd-gui中。但是,作为this answer shows,绕过它是很简单的:一个人只需要连接到加载时解密apk的静态方法,并将其转储。但这允许提高安全标准。
现在回到你原来的问题:
如果黑客注入了这行代码。
作为一个攻击者,这将是下一步。然而,这需要重新打包应用程序,并使用黑客的签名密钥对其进行签名。因此,有必要结合德克斯泰的checking the apk signature等防篡改措施.
DexGuard篡改和环境检测有帮助吗?
总之,是的,它是有帮助的,因为它提高了超过绝大多数应用程序的门槛。但这不是银弹。
https://stackoverflow.com/questions/30235047
复制相似问题