如果我为BlackBerry编写Java软件,是否可以使用类似于.NET Reflector的免费工具对其进行反编译,或者它是一个更复杂的过程?
答案 0 :(得分:16)
您为任何语言,任何平台编写的软件都可以反编译。无论你使用什么代码修改(混淆)工具,都可以反编译。
任何担心这种情况的企图都是浪费时间。就像DRM一样; p
但真正的问题是,我希望我能够与我正在考虑的讨论联系起来,因为它非常好。但重点是这一点。有人可以反编译它,如果他们只是直接重新编译并尝试转售它,那有什么意义呢?将他们告上法庭并赢得胜利仍然很容易。
但你说“他们可以查看我的代码并弄清楚我是如何做到的并重做它!”。对此我说:不要恭维自己。
想想您是否可以将源代码放到Windows上。会有很多“WTF他们在这里做什么”?而“男孩我会以不同的方式做事”。有点你划伤下巴然后去“哇,好”。但总而言之,你自己不会有任何改变。真正的价值在于他们花时间真正解决问题并提出解决方案。
任何破坏你代码的人都不会这样做。更难的是什么?编写新软件或维护软件?我认为大多数开发人员更喜欢前者。
所以有人反编译你的软件并以一种显而易见的方式销售它,你可以很容易地起诉,或者他们花时间完全包围他们的问题并设计他们自己的最终(几年后?)将可能与你的完全不同。
这只是一个荒谬的场景,如果有人通过反编译竞争产品来扯掉产品,我真的很啰嗦。
不要担心某人“偷”你的代码。它可以做到,你无法做任何事情来阻止它,但它不会被做,因为它是荒谬的。
答案 1 :(得分:10)
RIM的RAPC工具将标准的J2ME .jar文件转换为.cod文件 - 这是一种专有格式,并且没有公布任何细节。众所周知,.cod文件大小小于.jar文件大小,并且大量内容被剥离(基本上无法从静态上下文访问)。
请注意,当.cod文件足够大时(或者当代码或数据大小足够大时更准确),然后RAPC将.cod拆分为2个或更多单独的代码(命名为CODNAME-2.cod等),压缩它们并将.zip重命名为.cod。你可以解压缩这个,但你仍然留下一堆你无法反编译的.cod文件。
因此,通常情况下,您无法反编译BlackBerry应用程序文件。有一个名为coddec的工具声称可以反编译.cod文件,但我没有运气。
答案 2 :(得分:4)
Java代码易于反编译。如果您对保护代码感兴趣,请搜索Java Me的混淆器。值得注意的是检查this。
然而,亚当对你不应该关心的原因的评论也应该被考虑在内。
答案 3 :(得分:3)
RIM的工具链还通过优化器(rapc)运行代码,这使得它甚至比标准字节码更难反编译。除非有人花了很多时间专门用它来反编译它,否则它几乎不可能。
答案 4 :(得分:1)
如果使用纯J2ME和Sun的编译器编写Midlet,则可以轻松地反编译生成的字节码。 (不是说我曾经这样做过:P)。 但是,如果您使用RIM的BlackBerry JDE和它的RAPC编译器,您的字节码将采用专有的,未记录的格式,并且对于某人来说很难对其进行反编译或对您的代码有所了解。
请注意,它始终可以在应用程序中找到硬编码的字符串,因此您不需要对TripeDES Key或类似的东西进行硬编码。
答案 5 :(得分:-1)
几乎所有软件都可以反编译。问题只是拉动它所需的参与量和资源。
答案 6 :(得分:-1)
是的,它理论上可以,因为它基本上只是Java字节码。然而,上次我做BB开发(2年前)实际上很难做到。
答案 7 :(得分:-1)
我喜欢JAD for Java课程 - http://www.kpdus.com/jad.html。
回应上述观点 - 不要担心人们窃取您的代码。
关于反编译的两个最喜欢的事情:
您将了解编译器如何处理您的代码。例如,您可以验证字符串连接是否由StringBuilder类处理。或者,你可以发现一些发人深省的“for”语句超越传统的“for(int i = 0,i
您可以真正了解产品并进行扩展。我使用过Microsoft OCS2007语音服务器。我学到了很多关于该产品反编译其部件的知识。我还扩展了一些基本工具以满足我的需求。