我正在为Android和iOS创建一个应用程序,我知道理论上可以反编译Android应用程序。该应用程序包含敏感信息,我不希望用户访问,因为该应用程序与Web服务器进行交互。如果用户获得源代码中的某些信息,则可能会使用请求向我的Web服务器发送垃圾邮件。
如果假定源代码可访问,是否有任何方法来验证应用程序和服务器之间的连接,或者是否有任何方法来混淆我的代码以防止恶意用户向我的Web服务器发送垃圾邮件。
谢谢
我正在为Android和iOS创建一个应用程序,我知道理论上可以反编译Android应用程序。该应用程序包含敏感信息,我不希望用户访问,因为该应用程序与Web服务器进行交互。如果用户获得源代码中的某些信息,则可能会使用请求向我的Web服务器发送垃圾邮件。
如果假定源代码可访问,是否有任何方法来验证应用程序和服务器之间的连接,或者是否有任何方法来混淆我的代码以防止恶意用户向我的Web服务器发送垃圾邮件。
谢谢
[更新]
**
当您使用Android gradle插件版本> 3.4.0构建应用程序时,插件选择R8来优化和混淆代码。现在可以在proguard-rules.pro或proguard-app.conf文件中配置规则。指示从混淆中排除什么的规则类似于之前使用的proguard.cfg中的规则。
buildTypes{
...
release{
proguardFiles getDefaultProguardFile(
'proguard-android-optimize.txt'),
'proguard-rules.pro'
}
}
R8会收集所有已经存在的proguard规则文件,只要它们被包含在build.gradle中。你也可以配置不同产品风格的混淆部分。
**
[旧但相关信息]
Proguard 是一个工具,可以帮助您混淆您的代码。这是您的Android工具的一部分,您只需要激活它。此链接和此链接将有所帮助。
Proguard的默认配置(在proguard.cfg中)足以充分混淆您的代码。但是,当您有动态访问的方法/类时,您可能需要调整proguard配置。
例如,使用反射访问类/方法需要代码保持完整。如果proguard混淆它,有时可能会遇到ClassNotFoundException。-keep public class <MyPackage.MyClass>
添加到您的proguard.cfg文件中。
**
虽然Proguard使静态分析更加困难,但DexGuard可以保护免受静态和动态分析的影响。DexGuard专门针对Android应用程序,并且仅商业可用,而Proguard是开源的,适用于任何Java字节码混淆/优化。
你无法防止反编译Android应用程序,你只能增加反编译的难度,而Proguard是最好的选择。