【发布时间】:2017-03-24 18:36:56
【问题描述】:
首先我想确定,我没有做非法操作来修改软件违反规则(除了更改字节码已经违反规则 - 它是一个免费软件,我想改变一行来改进我的生产力)
- 我用JDGui反编译代码看懂代码
- DirtyJoe 编辑字节码(无需反编译和编译)
- Winrar 将 .class 文件从 JAR 提取到桌面,使用 DirtyJoe 对其进行修改,然后使用 Winrar 再次将修改后的类文件放入 jar 中
问题是,当我在 jar 中更改类文件的字节码时,程序会检测到这一点并且根本不会执行此代码。
我已经尝试过的: 更改类文件的字节码:只需插入空格并再次删除空格(在这种情况下我使用了 windows 编辑器) - 结果:该文件的所有方法根本不会执行。该软件调用一些记录器或事件调度程序。
所以我认为软件会检测到这种修改(即使我刚刚输入了一个空格并再次删除了它)。我已经尝试更改文件元数据中的“修改日期”,但这不起作用。
你们有什么建议我可以尝试吗?
编辑#1:对评论的回答:如何知道软件是检查哈希符号还是使用加密?
编辑 #2:重要图片! : Link to the picture!
【问题讨论】:
-
Afaik 更改字节码本身不违反规则。
-
某些软件使用非对称加密来验证软件的“签名”。在这种情况下,您无能为力。我知道欧洲的大多数 ATM 都有一个 CPU 来验证软件,这样 ATM 就知道它运行的是供应商而不是黑客生产的软件。
-
如果在类文件中插入“空格”,所有的内部索引都会出错。此外,如果 jar 已签名,则该文件的签名哈希将是错误的。
-
“插入空格”意味着您正在文本编辑器中修改字节码。这可能会破坏二进制文件;有时,即使您只是保存而不修改它,文本编辑器也会破坏它。由此看来,该软件具有某种“检测”的结论是非常牵强的。您应该发布实际的错误消息。
-
你可以尝试反编译你要修改的class文件,修改反编译的源码,重新打包JAR。如果在原始编译期间保留了调试信息,这会容易得多,但我怀疑如果它是商业应用程序,情况会如此。
标签: java bytecode decompiler