有没有办法编译隐藏源代码?

2024-02-07

使用 Play 或 Grails 或任何其他 JVM 框架;

有没有一种方法(或者什么方法)来完全编译生成的war/jar文件,以便隐藏源代码,而没有反编译的可能性?

或者甚至编译后,是否可以轻松反编译并获取字符串和类?例如数据库连接等

谢谢。


不,你无法编译anything没有可能性的反编译。也就是说,您可以采取一些措施来提高该过程的成本。

真正的技巧是让你的成本低而别人的成本高。简而言之,预计要付出更多的时间/金钱/不便,并意识到你刚刚以某种方式使挑战变得更加困难(这可能会变得很容易规避)。但是,从好的一面来看,整个软件行业在没有绝对的反编译保护的情况下也相处得很好。

签署并密封您的 JAR 文件。这可以防止人们向您的 JAR 文件添加内容,并防止人们替换您的部分代码(以更好地理解操作程序)。

考虑一个类/方法名称混淆器。这会将您的类和方法名称重命名为包含“a.a(..)”等小名称的等效结构,而不是“Client.connect(...)”。这使得其他人更难阅读您的代码(在这种情况下其他人包括您自己,因此如果您打算调试,这会增加您支持代码的成本)。哦,这会破坏任何反射,因此您必须提供反射的解决方法和修复。

如果您提供任何类型的体面日志记录,则还需要混淆日志记录,否则只需读取从类发出的日志消息即可找出类“h”是DatabaseConnection,类“k”是“User”数据对象等

类中嵌入的字符串始终可以被提取。因此,如果您想保护它们,则必须嵌入“加扰”字符串,并在使用前对其进行“解扰”。这样做会产生 CPU 开销,并且一旦知道“解扰”路由,就可以绕过整个过程。

存在奇异的解决方案,例如将代码重写为执行类似操作的等效代码。问题是,为了使最终交付成果有用,它仍然必须与原始代码执行相同的操作,但现在调试输出甚至不遵循原始代码。

通常人们想要保护解决问题的能力,而不是真正的源代码。请记住这一点,通过提供有效的东西,通常复制已编译的元素就足以打破“此代码是我的”心态。如果您确实想控制代码,请不要发布它,而是设置服务器并在您自己的硬件上“作为服务”提供软件解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有没有办法编译隐藏源代码? 的相关文章

随机推荐

  • 使用 Core Data 按纬度/经度查找最近的位置

    我有一个 iPhone 应用程序 其中包含一个包含位置列表的核心数据数据库 每个位置都有纬度 经度坐标 如何搜索距我当前位置最近的 10 个地点 我是核心数据新手 所以我的问题实际上是如何进行查找 我知道如何获取当前位置等 我相信我需要使用
  • Python垃圾回收如何使用numpy数组追加和删除?

    我正在尝试调整在计时器上更新的绘图代码 matplotlib 的底层结构 从使用 Python 列表绘制数据到使用 numpy 数组 我希望能够尽可能降低绘图的时间步长 并且由于数据可能会达到数千个点 如果不能的话 我就会开始快速浪费宝贵的
  • Android 媒体播放器上用于搜索栏的线程

    如何创建一个线程 每秒检查歌曲位置并根据歌曲位置移动搜索栏 我使用了打击代码 它只播放两首歌 然后它就从我的应用程序中消失了 public class setp implements MediaPlayer OnPreparedListen
  • Xamarin.Forms - 摇篮 FAB

    我想要摇篮浮动操作按钮 按钮必须是动态的 它将是动画的 并且支架必须适应它 就像从材料 io https material io 它必须与 iOS 和 Android 一样工作 XAML 示例 如果可以的话 也许是自定义渲染器 我知道这个功
  • Nodejs:如何克隆对象

    如果我克隆一个数组 我使用cloneArr arr slice 我想知道如何在nodejs中克隆一个对象 对于不需要压缩每一滴性能的实用程序和类 我经常作弊 只使用 JSON 来执行深度复制 function clone a return
  • 我可以使用 Transporter 将 Flutter iOS 应用上传到 App Store 控制台吗?

    我是通过 Flutter 进入移动开发领域的 所以我所有与原生平台和技术的接触都来自于它 到目前为止 我一直按照文档所述分发我的 Flutter 应用程序 使用 Xcode 打开 build ios archive Runner xcarc
  • HTML 画布 - 绘图在调整大小时消失

    我在 HTML canvas 元素中创建了一个基本形状 效果很好 当我调整画布大小时 会出现问题 画布中的所有绘图都会消失 这是正常行为吗 或者是否有一个功能可以用来阻止这个 解决此问题的一种方法可能是在调整画布大小时再次调用绘图函数 但是
  • 使用扩展音频文件服务 (ExtAudioFileRead) 读取音频

    我正在努力理解核心音频 或者更确切地说 扩展音频文件服务 http developer apple com iphone library documentation MusicAudio Reference ExtendedAudioFil
  • PHP重写父类特征的特征方法

    我使用的是 Laravel 5 1 但这并不是特定于该框架的 它更多的是一个一般的 PHP 问题 有一个指定了特征的父类 namespace Illuminate Foundation Auth use Illuminate Auth Au
  • 删除菜单图标和标题之间的空格

    在下图中 如何删除菜单中图标和项目标题之间的空格 活动 主 抽屉 xml menu menu
  • asyncio 中的“yield from”语法有什么作用以及它与“await”有何不同

    从编写过 asyncio 代码但希望更好地理解内部工作原理的人的角度来看 什么是yield from await这些对于允许异步代码有何用处 有一个高度评价 https stackoverflow com questions 9708902
  • 使用 AtomicUsize::new 时,const fns 是一个不稳定的功能

    这段代码有什么问题 use std sync atomic AtomicUsize static mut counter AtomicUsize AtomicUsize new 0 fn main 我收到此错误 error const fn
  • 在并发环境中追加到文件末尾

    需要采取哪些步骤来确保 满 线always如果同时运行多个以下 示例 程序 则正确附加到文件末尾 usr bin env python import random passwd text open passwd txt a u jsmith
  • 如何在 WPF 中删除 Web 浏览器上的滚动条

    我在我的应用程序中使用 WebBrowser 控件 例如
  • 查找关联程序以使用 Java 打开文件

    我希望使用计算机上安装的关联程序 在本例中使用 MS Word 或 Open Office Writer 从 Java 应用程序打开文件 比如说 word 文档 问题是我想等到这个子进程完成 这可以使用 Process 类中的 waitFo
  • 如何通过修改图像尺寸和角度进行 3d 轮播

    我需要对某些图像集产生圆形轮播效果 我为此使用下面的示例项目 http www codeproject com Articles 146145 Android 3D Carousel http www codeproject com Art
  • 查找 SSRS 2012 中计算字段的中位数

    我有一个开始日期和一个结束日期 并使用以下内容计算其间的工作日 我创建了一个名为 CountWeekDays 的计算字段 它等于 Code getBusinessDaysCount Fields date created Value Fie
  • 用乌龟画一个超椭圆

    显然 任何可以通过其他方式绘制的形状都可以由海龟绘制 圆形和正方形很容易 rt 1 fd 0 and if ticks mod 100 0 rt 90 fd 1 超级椭圆没那么多 规则的省略号也不是微不足道的 维基百科关于超椭圆的文章 ht
  • MySQL - 删除日期时间字段的默认值

    现有 MySQL 表有一个不为空的 DateTime 字段 并且默认值设置为 0001 00 00 00 00 00 是否可以更改此表以删除日期时间字段的默认值 是的 您可以使用以下命令删除默认值ALTER TABLE https dev
  • 有没有办法编译隐藏源代码?

    使用 Play 或 Grails 或任何其他 JVM 框架 有没有一种方法 或者什么方法 来完全编译生成的war jar文件 以便隐藏源代码 而没有反编译的可能性 或者甚至编译后 是否可以轻松反编译并获取字符串和类 例如数据库连接等 谢谢