如何修改字节码的特定部分以添加内容?
我的意思是我知道什么类,什么方法(或字段),以及我想要修改的行号,但我想知道我将如何实际修改特定行/字段的字节码一类。
假设我有一堂课,GammaController
public class GammaController {
private int gamma = 60;
public int getScreenGamma() {
return gamma;
}
public void setScreenGamma(int gamma) {
this.gamma = gamma;
}
}
但我想更改 GammaController.setScreenGamma() 以不允许超过 100 的值,而不编辑文件。我知道该方法在第 8 行(我们现在将忽略包),并且必须在第 9 行检查是否超过 100,将方法的一部分移到第 1 行。
假设我也知道将进行检查的字节码。我想要做的是运行一个针对包含 GammaController.class 的 jar 的应用程序,并让应用程序使用检查值的字节码修改类以确保它不超过 100。我将如何去做呢?