有没有办法将任意代码注入jar文件?例如,给定一个jar文件,程序将在类X中的方法m中注入一个init函数,该函数将检查某些条件并在不满足条件时退出。 可以这样做吗?
答案 0 :(得分:0)
如果罐子签了 - 没有**。如果jar没有签名 - 那么是的,这当然是可能的。从改变类的方法来添加或替换整个类。
JAR文件实际上是一个包含类文件的ZIP文件 - 源程序的二进制表示,包括已编译的字节码,字符串和其他文字以及其他必要信息。这些类文件具有Java VM规范定义的格式。由于可以以某种方式读取和处理任何文件,因此也可以读取类文件,然后将其写回。
至于确定必须更改/添加/删除的内容 - 对于想要更改程序行为并具有足够技能来阅读JavaVM汇编语言和/或反向工程源的人来说当然是一项任务码。有一些java反编译器可以生成通常很难理解但仍然可能的java源代码。
<小时/> **如果jar被篡改的事实并不重要,那么可以删除签名并仍然进行修改