本帖最后由 MagicLocyDragon 于 2017-10-22 18:44 编辑
老哥我要删帖你咋给恢复了
老哥我要删帖你咋给恢复了
你根本就贴错代码了
按你贴的代码,你意思是asm有bug喽?
按你贴的代码,你意思是asm有bug喽?
本帖最后由 ddyy163 于 2017-10-18 00:58 编辑
别玩asm了 回去学好基础吧
以下回复不针对楼主:
asm作为一个被广泛使用,功能强大的开源库,在这里判断是楼主的代码有问题,我觉得OK
而且我并没有什么别人开源库都一定没bug的感觉,真的没有
如果你在用别人开源库时出了bug,你能上来就先赖开源库?你不把自己代码贴出来啊?
我觉得我回复可能惹到某个群体的人了,但是,
看个机儿,我在讨论这个帖子,你跟我说我回复之前还要先看别人作品了,我累不累啊?
ddyy163 发表于 2017-10-17 09:18
你根本就贴错代码了
按你贴的代码,你意思是asm有bug喽?
别玩asm了 回去学好基础吧
以下回复不针对楼主:
asm作为一个被广泛使用,功能强大的开源库,在这里判断是楼主的代码有问题,我觉得OK
而且我并没有什么别人开源库都一定没bug的感觉,真的没有
如果你在用别人开源库时出了bug,你能上来就先赖开源库?你不把自己代码贴出来啊?
我觉得我回复可能惹到某个群体的人了,但是,
看个机儿,我在讨论这个帖子,你跟我说我回复之前还要先看别人作品了,我累不累啊?
糟糕的木匠总是嫌工具不好
错误从不是独立存在的,只贴asm不贴自己的代码,你也是真自信
先检查自己的参数错了没有,在看看上下文,是不是在不该调用的时候调用了
如果真是bug就去找作者汇报,前提是你足够确信
(如果你这态度玩c++早就完了,几乎所有error出现在库里,而错在自己身上)
错误从不是独立存在的,只贴asm不贴自己的代码,你也是真自信
先检查自己的参数错了没有,在看看上下文,是不是在不该调用的时候调用了
如果真是bug就去找作者汇报,前提是你足够确信
(如果你这态度玩c++早就完了,几乎所有error出现在库里,而错在自己身上)
本帖最后由 ddyy163 于 2017-10-18 09:39 编辑
既然楼主不是新手,我可以正经的说一句,可以多尝试几个accept的int参数,就是ClassReader里的几个静态常量
ddyy163 发表于 2017-10-17 09:19
别玩asm了 回去学好基础吧
以下回复不针对楼主:
既然楼主不是新手,我可以正经的说一句,可以多尝试几个accept的int参数,就是ClassReader里的几个静态常量
本帖最后由 MagicLocyDragon 于 2017-10-20 17:36 编辑
如果你要代码的话我给你给你
我只是忘记贴出来了而已 对于你的什么“认为ASM有bug之类的话” 我觉得你只是自作多情
如果我根本是在瞎说 你可以无视
顺便来说 我只是来问问题的 我确实不会用asm 我才来这里问 要是我会我用得着来冒着被你们骂的风险来这里问?
@Override
public void visitInsn(int codes) {
mv.visitTryCatchBlock(l0, l1, l2, "java/lang/Exception");
mv.visitLabel(l0);
mv.visitLineNumber(5, l0);
mv.visitLdcInsn(packetName);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Class", "forName", "(Ljava/lang/String;)Ljava/lang/Class;", false);
mv.visitLdcInsn(methodName);
mv.visitInsn(Opcodes.ICONST_0);
mv.visitTypeInsn(Opcodes.ANEWARRAY, "java/lang/Class");
mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Class", "getMethod", "(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;", false);
mv.visitInsn(Opcodes.ACONST_NULL);
mv.visitInsn(Opcodes.ICONST_0);
mv.visitTypeInsn(Opcodes.ANEWARRAY, "java/lang/Object");
mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/reflect/Method", "invoke", "(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;", false);
mv.visitInsn(Opcodes.POP);
mv.visitLabel(l1);
mv.visitLineNumber(6, l1);
Label l3 = new Label();
mv.visitJumpInsn(Opcodes.GOTO, l3);
mv.visitLabel(l2);
mv.visitFrame(Opcodes.F_SAME1, 0, null, 1, new Object[] {"java/lang/Exception"});
mv.visitVarInsn(Opcodes.ASTORE, 1);
mv.visitLabel(l3);
mv.visitLineNumber(7, l3);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
mv.visitInsn(Opcodes.RETURN);
Label l4 = new Label();
mv.visitLabel(l4);
mv.visitLocalVariable("args", "[Ljava/lang/String;", null, l0, l4, 0);
mv.visitMaxs(5, 2);
mv.visitEnd();
super.visitInsn(codes);
}
核心代码
ClassReader r = new ClassReader(className);
ClassWriter w = new ClassWriter(r, 0);
ClassVisitor v = new ClassAdapterVisit(w);
r.accept(v, ClassReader.SKIP_DEBUG);
以及调用
ddyy163 发表于 2017-10-17 09:19
别玩asm了 回去学好基础吧
以下回复不针对楼主:
如果你要代码的话我给你给你
我只是忘记贴出来了而已 对于你的什么“认为ASM有bug之类的话” 我觉得你只是自作多情
如果我根本是在瞎说 你可以无视
顺便来说 我只是来问问题的 我确实不会用asm 我才来这里问 要是我会我用得着来冒着被你们骂的风险来这里问?
@Override
public void visitInsn(int codes) {
mv.visitTryCatchBlock(l0, l1, l2, "java/lang/Exception");
mv.visitLabel(l0);
mv.visitLineNumber(5, l0);
mv.visitLdcInsn(packetName);
mv.visitMethodInsn(Opcodes.INVOKESTATIC, "java/lang/Class", "forName", "(Ljava/lang/String;)Ljava/lang/Class;", false);
mv.visitLdcInsn(methodName);
mv.visitInsn(Opcodes.ICONST_0);
mv.visitTypeInsn(Opcodes.ANEWARRAY, "java/lang/Class");
mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/Class", "getMethod", "(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;", false);
mv.visitInsn(Opcodes.ACONST_NULL);
mv.visitInsn(Opcodes.ICONST_0);
mv.visitTypeInsn(Opcodes.ANEWARRAY, "java/lang/Object");
mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/lang/reflect/Method", "invoke", "(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;", false);
mv.visitInsn(Opcodes.POP);
mv.visitLabel(l1);
mv.visitLineNumber(6, l1);
Label l3 = new Label();
mv.visitJumpInsn(Opcodes.GOTO, l3);
mv.visitLabel(l2);
mv.visitFrame(Opcodes.F_SAME1, 0, null, 1, new Object[] {"java/lang/Exception"});
mv.visitVarInsn(Opcodes.ASTORE, 1);
mv.visitLabel(l3);
mv.visitLineNumber(7, l3);
mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null);
mv.visitInsn(Opcodes.RETURN);
Label l4 = new Label();
mv.visitLabel(l4);
mv.visitLocalVariable("args", "[Ljava/lang/String;", null, l0, l4, 0);
mv.visitMaxs(5, 2);
mv.visitEnd();
super.visitInsn(codes);
}
核心代码
ClassReader r = new ClassReader(className);
ClassWriter w = new ClassWriter(r, 0);
ClassVisitor v = new ClassAdapterVisit(w);
r.accept(v, ClassReader.SKIP_DEBUG);
以及调用
本帖最后由 MagicLocyDragon 于 2017-10-20 17:24 编辑
阿?
我是用过C++
咋了
只会吐槽别人而不仔细看看代码帮帮忙只会喷人的人
你也是“真够自信”
姚氏帅哥 发表于 2017-10-17 22:15
糟糕的木匠总是嫌工具不好
错误从不是独立存在的,只贴asm不贴自己的代码,你也是真自信
先检查自己的参数 ...
阿?
我是用过C++
咋了
只会吐槽别人而不仔细看看代码帮帮忙只会喷人的人
你也是“真够自信”
ClassWriter w = new ClassWriter(ClassWriter.COMPUTE_FRAMES);
MagicLocyDragon 发表于 2017-10-20 17:22
阿?
我是用过C++
咋了
最终代码是你的代码的问题,而你一开始就帖ASM代码,这是事实吧。
直到我回复时,我都没看见你发自己的代码,所以我都不可能知道你错在什么地方
就好比你没有问别人问题就要别人回答一样,到头来还是我的问题,那么我也无能为力了,
现在你已经给出了你自己的代码,的确有人为你解答了,所以我不想多说了