6

如果我为 BlackBerry 编写 Java 软件,是否可以使用类似于.NET Reflector的免费工具对其进行反编译,或者它是一个更复杂的过程?

4

8 回答 8

16

您为任何语言、任何平台编写的软件都可以被反编译。不管你使用什么代码处理(混淆)工具,它都可以被反编译。

任何担心这一点的尝试都是浪费时间。就像 DRM ;p

但真正的重点是,我希望我有我正在考虑的讨论的链接,因为它非常好。但重点是这个。有人可以反编译它,如果他们只是直接重新编译它并尝试转售它,那有什么意义呢?将他们带到法庭并获胜仍然很容易。

但是您说“他们可以查看我的代码并弄清楚我是如何做到的并重做它!”。对此我说:不要自吹自擂。

想想你是否可以得到 Windows 的源代码。会有很多“他们在这里做什么”?和“男孩,我会以不同的方式做事”。有那么一会儿,你会挠挠下巴,然后“哇,好极了”。但总的来说,这不是你自己不会来的。真正的价值是他们花时间真正解决问题并提出解决方案。

任何盗用您的代码的人都不会这样做。什么更难?编写新软件还是维护软件?我认为大多数开发人员更喜欢前者。

所以有人反编译了你的软件,或者以一种显而易见的方式出售它,你可以轻松起诉,或者他们花时间完全解决问题并设计自己的问题,最终(几年后?)可能会完全和你的不同。

这真是一个荒谬的场景,如果有人通过反编译竞争产品来剽窃产品,我真的很伤心。

不要担心有人“窃取”你的代码。它可以做到,你无法阻止它,但它不会做,因为它很荒谬。

于 2008-12-18T18:17:11.017 回答
10

RIM 的 RAPC 工具将标准 J2ME .jar 文件转换为 .cod 文件——这是一种专有格式,尚未公布其详细信息。已知的是 .cod 文件的大小小于 .jar 文件的大小,并且很多东西都被剥离了(基本上是静态上下文无法访问的任何东西)。

请注意,当 .cod 文件变得足够大时(或者更准确地说,当它们的代码或数据大小变得足够大时),RAPC 会将 .cod 拆分为 2 个或多个单独的 cod(名为 CODNAME-2.cod 等),然后压缩它们并将 .zip 重命名为 .cod。您可以解压缩它,但仍然留下一堆无法反编译的 .cod 文件。

所以一般来说,不,你不能反编译 BlackBerry 应用程序文件。有一个名为codedec的工具声称能够反编译 .cod 文件,但我没有任何运气。

于 2009-01-13T14:04:19.490 回答
4

Java 代码很容易反编译。如果您对保护您的代码感兴趣,请搜索 Java Me 的混淆器。值得注意的是检查这个

然而,亚当关于你为什么不应该关心的评论也应该被考虑在内。

于 2008-12-18T17:59:38.557 回答
3

RIM 的工具链还通过优化器 (rapc) 运行您的代码,这使得它比标准字节码更难反编译。除非有人专门花费大量时间来反编译它,否则这不太可能。

于 2008-12-20T04:37:47.327 回答
1

If you write a Midlet using pure J2ME and Sun's Compiler, the resulting bytecode can easily be decompiled. (Not that I have ever done this :P). However if you use RIM's BlackBerry JDE and it's RAPC Compiler, your bytecode will be in a proprietary, undocumented format and it's really hard for somebody to decompile that or make any sense of your code.

Be aware though, its always possible to find out hard-coded Strings in an application, so you don't wanna hard code your TripeDES Key or something like that.

于 2008-12-23T17:00:27.700 回答
-1

我喜欢 Java 类的 JAD - http://www.kpdus.com/jad.html

与上述观点相呼应 - 不要担心人们会窃取您的代码。

关于反编译,我最喜欢的两件事:

  1. 您将了解编译器如何处理您的代码。例如,您可以验证字符串连接是否由 StringBuilder 类处理。或者,您可能会发现一些发人深省的“for”语句,而不是传统的“for (int i=0, i

  2. 你真的可以学习一个产品并扩展它。我使用过 Microsoft OCS2007 语音服务器。我在反编译他们的一些程序集时学到了很多关于产品的知识。我还扩展了一些基本工具以满足我的需求。

于 2008-12-23T17:15:47.810 回答
-1

是的,理论上可以,因为它本质上只是 Java 字节码。但是,上次我做 BB 开发时(2 年前),在实践中实际上很难做到。

于 2008-12-18T18:28:02.710 回答
-1

几乎所有软件都可以反编译。问题只是实现它所需的参与量和资源。

于 2008-12-18T18:01:16.820 回答