我正在开发一个应用程序,很快就会公开发布。我愿意做任何我力所能及的事情,以确保那些下载我程序的人不会对它进行反向工程。我知道分发.jar文件是非常不安全的。
有人能推荐一种独立于平台的方式来分发我的Java应用程序吗?此外,我想将其作为服务安装在任何平台上(Windows、Linux、Mac OSX)。
谢谢!
发布于 2009-08-14 23:52:20
您可以使用yGuard或其他java字节码模糊加密器对字节码进行加扰/混淆。
独立于操作系统的分发可能很困难。我想最好的解决方案是一个包含几个程序脚本(.bat/.cmd用于windows,.sh用于linux /OSX)的普通归档文件-在程序支持的操作系统下启动。
将java程序作为服务运行可能更加困难:在Linux下很容易,你只需要写一个合适的启动脚本就可以在后台运行它。我知道FireDaemon在将java程序作为服务运行时存在问题,所以在Windows上将其作为服务运行可能很困难(或不可能)。对不起,我对Linux一无所知。它可以像MacOS一样简单,也可以像Windows一样不可能。
发布于 2009-08-15 04:05:38
正如其他人所说,你可以混淆你的代码。这将使逆向工程变得不那么简单。您还可以使用(例如) GCJ将Java编译为本机代码。这将使逆向工程变得更加困难,但这也意味着您必须为每个支持的硬件/OS平台创建不同的发行包。
我知道分发.jar文件是非常不安全的。
您必须了解,如果您以任何形式分发软件,以便在您无法完全控制的平台上运行,那么在技术上,您无法阻止反向工程。没什么。
最终,你必须权衡分发软件的好处和有人对其进行逆向工程的风险。人们采取的一种方法是找出收益是否大于风险*成本,并使用法律保障措施(例如适当的软件许可证)来阻止反向工程。另一种方法是对潜在的反向工程师说“祝你好运”,并通过提供服务而不是软件许可来赚钱。
发布于 2009-08-15 03:44:15
通过模糊处理程序运行应用程序会使逆向工程变得更加困难和昂贵。
看看Java Service Wrapper,了解一种在多个平台上作为服务安装和运行java应用程序的相对简单的方法。
https://stackoverflow.com/questions/1280702
复制相似问题