我对 DexGuard 和 Proguard 还很陌生。我正在浏览他们的文档和示例。他们有 dexguard_util 可以帮助您检测应用程序是否被篡改,还可以帮助检测它是否在应该运行的环境中运行。该文档建议使用以下代码加密此篡改和环境检测是 dexgaurd-project.txt。
-encryptclasses A$D
-encryptstrings A$D
Activity 如下
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
}
}
}
如果黑客注入(inject)这行代码怎么办。
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
}
}
}
然后我的应用程序将在不运行那些我认为是大问题的测试的情况下运行。我对逆向工程工作原理的理解是错误的还是有更好的方法来做到这一点。如果存在,请分享更好的方法。提前致谢。请注意,公共(public)类 A 无法加密,因为它是一个入口点,并且在 progaurd-project.txt 中使用此命令保持不变
-keep class somepackage.A
最佳答案
谈到防篡改时,请务必记住,他们的目标不是阻止任何和所有潜在的篡改行为,而只是提高目标的安全栏足够高以阻止大多数攻击者。
话虽如此,
有点切线:
The document suggests that this tamper and environment detection be encrypted using the following code is dexgaurd-project.txt.
类加密确实阻止了应用程序包的基本静态分析,例如只需解压缩包并将其加载到 jd-gui
中。然而,作为this answer shows ,规避起来很简单:只需 Hook 在加载时解密 apk 的静态方法,然后将其转储。但这可以提高安全标准。
现在回到你原来的问题:
What if a hacker inject this line of code.
作为攻击者,这将是下一步。然而,这需要重新打包应用程序,并使用黑客的签名 key 对其进行签名。因此需要结合Dexguard的防篡改措施如checking the apk signature .
Is DexGuard tamper and Environment detection helpful?
总而言之,是的,它有助于提高标准,超越绝大多数应用。但这不是 Elixir 。
关于android - DexGuard 篡改和环境检测有帮助吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30235047/