gpt4 book ai didi

java - ASM Java bycode muniplation 更改类名

转载 作者:行者123 更新时间:2023-11-30 10:37:27 25 4
gpt4 key购买 nike

所以最近我一直在尝试简单地更改一个类名,但我就是做不到。这是我的代码注入(inject)器类节点 https://0bin.net/paste/9REMNddwqjm8vRms#hyr4RG3BI36J+kRwMfC2pJoXb7I3+7AwKKzYhhXZQfw

方法类节点 https://0bin.net/paste/UwKCvIG+cliZAYja#gILvBXxaQ1CyfQ602c6h7UE9dimhlo6q+GbKIwZ6m8B

现在,当我运行它时,它会抛出一个类,因为某些愚蠢的原因而找不到“com/kirelcodes/cool/Task”在导入列表中,我不知道为什么我很乐意得到帮助

最佳答案

所有visit… 方法的signature 参数都引用generic signature,它仅在运行时与Reflection 相关。您应该已经注意到,类访问方法有一个 name 参数,它与类的 name 更相关,这就是您想要更改的内容。

对于成员来说,desc参数是JVM规范中所谓的“signature”,虽然不是那么明显,但至少,ASM API在调用上是一致的generic signature 描述参数 signature。这就是为什么 signature 可以是 null 的原因,这表明不涉及泛型类型。对于您想要实现的目标,您必须调整 desc 参数。

此外,请注意,在处理指令时,您不仅要注意转换推荐成员的所有者类型,还必须调整成员的类型。顺便说一下,在此上下文中将参数命名为 arg0、arg1、arg2、arg3、arg4 没有帮助。可能还有您未处理的其他类型引用,例如ldc 指令可能会推送一个 Class 引用,但我不知道这对这种特定情况是否重要。

关于java - ASM Java bycode muniplation 更改类名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40115724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com