繁体   English   中英

需要有关逆向工程和反编译的一些信息(Android App-JDK)

[英]Need some information about reverse engineering and decompile (android app - jdk)

我是android新手,对软件工程知识也不多。 我想知道应该做些事情以使其更难于反编译应用程序。 我对此进行了一些研究,然后遇到了这个调试器JEB,看来它可以在应用程序运行时监视某些内容。 但是我不知道使用它的好处,因为我没有得到JEB监视的android应用程序的关键点。 例如:

在此处输入图片说明

右侧似乎显示了局部变量。 x / xh对一个整数意味着什么? 还是对于字符串值“ secretKey”来说字符串的值是认真的? 如果是这样,那么我代码中的所有变量都处于危险之中! 我认为也许一种尝试是在代码中创建大量假变量,以使真正的变量不容易被看到。 是否有意义? 还有其他泄漏,我应该尝试防止,例如关于这个JEB的泄漏吗? Proguard是否与此有关? 正如我所说的,我对soft-eng并不太了解,我也不了解proguard的实际作用。

我看到的另一件事是https://ibotpeaches.github.io/Apktool 如何使这种工具处理起来更加混乱?

最后一个问题,我用Java编写代码,但我认为我没有机会开始本机编码,但为了将来。 我见过有人说在本地进行编码更安全。 它本身吗? 还是有更多的图书馆来保持更高的安全性? 还是因为最终的apk结构?

抱歉,如果有些话显得愚蠢。 提前致谢

您不应该尝试阻止逆向工程,因为这样做基本上是徒劳的。 相反,您应该设计您的应用程序,以最大程度地减少逆向工程的影响(即,不应在应用程序中包含密钥或密码之类的秘密数据)。

人们愿意对应用程序进行逆向工程的工作量取决于它的重要性和受欢迎程度,而混淆会增加对应用程序进行逆向工程所需的工作量。 但是,如果您的应用程序变得流行,那么就不会有让人感到困惑的事情,而如果它变得晦涩难懂,那么即使您将源代码发布在Github上,也没有人会费心去看它。 同样,在极少数情况下,添加混淆会使人们为了挑战而破解它。

除此之外,还存在混淆会给您带来错误的安全感的风险。 任何人都可以设计自己无法破坏的系统,但是,如果您不是逆向工程专家,那么您想出的措施就不可能阻止那些失败的人。 最好改为假设您应用中的所有内容都是公共信息,并进行相应的设计。

您可以使用一些强大的混淆器工具来保护代码,例如: Bg + Anti Decompile / Reverse Java它具有许多保护选项:

  • 隐藏字符串值(在Java源代码中保留一些敏感信息时有用,例如:“ Hello world”->ߤª)
  • 用Unicode字符混淆
  • 隐藏包装名称
  • 添加假代码以捕获反编译器工具
  • 检查资源字符串(在有人尝试编辑APK资源时很有用)
  • ....

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM