我正在为Android 开发支付处理应用程序,我想阻止黑客从APK文件访问任何资源,资产或源代码.
如果有人将.apk扩展名更改为.zip,那么他们可以解压缩它并轻松访问所有应用程序的资源和资产,并使用dex2jar和Java反编译器,他们也可以访问源代码.逆向工程Android APK文件非常容易 - 有关详细信息,请参阅Stack Overflow问题从APK文件到项目的逆向工程.
我使用了随Android SDK提供的Proguard工具.当我对使用签名密钥库和Proguard生成的APK文件进行逆向工程时,我得到了混淆代码.
但是,Android组件的名称保持不变,某些代码(如应用程序中使用的键值)保持不变.根据Proguard文档,该工具不能混淆清单文件中提到的组件.
现在我的问题是:
我正在开发Android库,我想隐藏/混淆库的源代码实现.
用户项目应用程序将使用该库的方式是:
startActivity( new Intent(context, LibraryActivityName.class) );
Run Code Online (Sandbox Code Playgroud)
所以我需要Activity在库项目中保留入口点的名称,这就是全部.
当我使用默认的ProGuard设置时:
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
Run Code Online (Sandbox Code Playgroud)
以及库的建议示例 - 没有发生任何事情,通过单击用户应用程序内的活动名称(当他导入它时) - 可以看到源代码.
谢谢,
使用Play或Grails或任何其他JVM框架;
有没有一种方法(或者是什么方法),以充分编译生成的战争/ jar文件,这样的源代码可以被隐藏,而不会反编译的可能性?
或者甚至在编译之后,是否可以轻松地反编译并获取字符串和类?例如db connection等.
谢谢.