1

我正在为客户开发一个 Android 应用程序。该应用程序实际上已完成,下周我将与客户开会介绍它。他会测试一切,批准后他会付款,我会给他源代码并在 Google Play 上发布。

今天他打电话给我要Apk,这样他就可以开始测试了。我担心如果我们不完成交易(出于某种原因),他可能会找人对 Apk 进行逆向工程并获得我的源代码/应用程序,即使被 ProGuard 混淆(我从未尝试过,但根据这个 SO 线程对 Apk 进行逆向工程并不难)。

我的问题:我是不是很偏执,应该只向客户端发送 Apk(因为 ProGuard 混淆可能足以使源代码无用),还是我的担忧是合理的,我应该坚持在交付任何东西之前获得报酬?

4

5 回答 5

3

您是否曾经对 .apk 进行过逆向工程?可能你做到了,但你能重新创建整个应用程序吗?可能不是。按照您的逻辑,这意味着我可以“轻松”对任何流行的应用程序进行逆向工程并为我使用它。确实,您可以查看大多数代码,如果它没有被混淆的话,但该技术并不完美。有时它仍然无法将 Smali 转换为真正的 Java 代码。你的应用越复杂,就越难。回答您的问题:不,不要担心,但您仍然应该(始终)使用 ProGuard。

于 2012-11-21T22:57:36.727 回答
1

很好的答案.. 我和一个付给我的钱总是比我要求的少的客户做了很多工作。

如果你问这个答案意味着你对客户没有信心,所以我的建议是和他一起测试第一个应用程序,所以下周。告诉他你发现了一个小错误,现在你不能给他 apk。

但我在意大利.. 客户给钱有麻烦.. 我不知道你在哪里.. :)

于 2012-11-21T22:55:07.553 回答
1

我之前做过这件事,并得出结论,混淆和“定时轰炸”(在给定的评估期后禁用应用程序)就足够了。我会 (a) 使用您的 MD5 指纹而不是调试签名者对应用程序进行签名,并且 (b) 确保您的应用程序中有 EULA 值得一提。如果涉及到它,那么您总是可以指出您同意安装 x、y 和 z 的说法——其中之一肯定是逆向工程。Google 在开发指南中与“准备发布”相关的部分提供了一些关于形成 EULA 的建议……现在在我的手机上写这个,所以不会链接。

有一个谷歌。我从我们行业的模板版本中获取了很多我的 EULA。

于 2012-11-21T23:06:33.793 回答
1

实际上,可以从 apk 对代码进行逆向工程,但如果您使用 ProGuard 对其进行混淆,则几乎不可能对您的代码进行逆向工程。

于 2012-11-21T22:56:05.860 回答
1

从头开始重新创建软件通常比逆向工程更便宜和更快,除非您使用某种可能值得麻烦的非常昂贵/专利的算法。

对于通用 UI 应用程序(约 99% 的应用程序),逆向工程是不值得的。

于 2012-11-21T23:15:52.650 回答