如何编辑已编译的Java字节码?
我使用反编译器在编译代码中查找以下函数:
public static void sub_e5b()
{
var_972 = null;
System.gc();
vservConfigHashTable = new Hashtable();
vservConfigHashTable.put("appId_end", "498");
vservConfigHashTable.put("showAt", "both");
vservConfigHashTable.put("categoryId", "22");
vservConfigHashTable.put("viewMandatory_end", "true");
(new VSERV_BCI_CLASS_000(var_93a, vservConfigHashTable)).showAtEnd();
}
现在我想将"true"
值更改为"false"
可以使用哪些工具和/或技术来进行此更改
# 1 楼答案
这可以很容易地使用像Krakatau这样的反汇编器来完成(我写了这篇公开文章)
与反编译器相比,使用反汇编器的优势在于它可以保证工作。不是所有的代码都可以反编译,但它总是可以反编译的
例如,以这样一个类为例
用喀拉喀托分解后,你会得到这样的东西
将行
ldc 'true'
更改为ldc 'false'
,重新组合它,现在它将打印false而不是true# 2 楼答案
获取反编译代码,编辑它,编译它,然后使用它
我会认真考虑删除这个系统。gc()