0

有没有办法将任意代码注入到 jar 文件中?例如,给定一个 jar 文件,程序将在类 X 的方法 m 中注入一个 init 函数,该函数将检查某些条件并在不满足条件时退出。可以这样做吗?

4

1 回答 1

0

如果 jar 已签名 - 否**。如果罐子没有签名 - 那么是的,这当然是可能的。从更改类的方法到添加或替换整个类。

JAR 文件实际上是一个包含类文件的 ZIP 文件——源程序的二进制表示,由编译后的字节码、字符串和其他文字以及其他必要信息组成。这些类文件具有 Java VM 规范定义的格式。由于可以以某种方式读取和处理任何文件,因此类文件也可以被读取更改然后写回。

至于确定必须更改/添加/删除什么 - 这当然是想要改变程序行为并有足够技能阅读 JavaVM 汇编语言和/或逆向工程源代码的人的任务。有一些可用的 java 反编译器可以生成通常难以理解但仍然可能的 java 源代码。


** 如果 jar 被篡改这一事实并不重要,那么可以删除签名并仍然进行修改

于 2012-10-22T04:37:59.700 回答