Java更改字节码 - 无法正常工作

时间:2017-03-24 18:36:56

标签: java bytecode decompiler

首先,我想确保,我没有做非法操作来修改软件违反规则(除了更改字节码已经违反规则 - 它是一个免费软件,我想改变一行来改进我的生产力)

  • 我使用JDGui来反编译代码以理解代码
  • DirtyJoe编辑字节码(无反编译和编译)
  • Winrar将.class文件从JAR解压缩到桌面,用DirtyJoe修改它并将修改后的类文件再次放入jar中

问题在于,当我在jar中更改类文件的字节码时,程序会检测到这一点,并且根本不会执行此代码。

我所尝试的内容: 更改类文件的字节码:只需插入一个空格并再次删除空格(在本例中我使用的是Windows编辑器) - 结果:此文件的所有方法根本不会执行。该软件调用一些记录器或事件调度程序。

所以我认为软件会检测到这些修改(即使我刚刚输入空格并再次删除它)。我已经尝试改变"修改日期"在文件元数据中,但这不会起作用。

你们有什么建议我可以试试吗?

编辑#1:回答评论:如何知道软件是否检查哈希标志或使用加密?

编辑#2:重要图片!! : Link to the picture!

1 个答案:

答案 0 :(得分:0)

首先关闭 - 如果您尝试修改混淆的Java应用程序,请不要依赖重新编译。编译和反编译都是有损进程,如果你能够重新编译反编译的结果,那只能靠运气。这并不意味着反编译是无用的 - 它仍然有用于理解代码。但是,您不应该依赖它来修改混淆代码。

为了修改代码,您最好使用Krakatau assembler and disassembler。这允许您直接修改字节码,无论应用程序如何混淆(假设它仍然具有有效的类文件)。

首先,您应该尝试使用反汇编程序来编辑代码,这将告诉您由于重新编译问题您的问题是否是如此。但是,应用程序更有可能进行某种完整性检查,在这种情况下,您必须确定检查的位置,并删除或绕过它。遗憾的是,如果没有关于相关代码的更具体信息,可以说没什么可说的。