弱鸡绿毛怪
本帖最后由 MagicLocyDragon 于 2017-10-22 18:44 编辑

老哥我要删帖你咋给恢复了




ddyy163
你根本就贴错代码了

按你贴的代码,你意思是asm有bug喽?

ddyy163
本帖最后由 ddyy163 于 2017-10-18 00:58 编辑
ddyy163 发表于 2017-10-17 09:18
你根本就贴错代码了

按你贴的代码,你意思是asm有bug喽?

别玩asm了 回去学好基础吧

以下回复不针对楼主:
asm作为一个被广泛使用,功能强大的开源库,在这里判断是楼主的代码有问题,我觉得OK

而且我并没有什么别人开源库都一定没bug的感觉,真的没有
如果你在用别人开源库时出了bug,你能上来就先赖开源库?你不把自己代码贴出来啊?

我觉得我回复可能惹到某个群体的人了,但是,
看个机儿,我在讨论这个帖子,你跟我说我回复之前还要先看别人作品了,我累不累啊?


Yaossg
糟糕的木匠总是嫌工具不好
错误从不是独立存在的,只贴asm不贴自己的代码,你也是真自信
先检查自己的参数错了没有,在看看上下文,是不是在不该调用的时候调用了
如果真是bug就去找作者汇报,前提是你足够确信

(如果你这态度玩c++早就完了,几乎所有error出现在库里,而错在自己身上)

ddyy163
本帖最后由 ddyy163 于 2017-10-18 09:39 编辑
ddyy163 发表于 2017-10-17 09:19
别玩asm了 回去学好基础吧

以下回复不针对楼主:

既然楼主不是新手,我可以正经的说一句,可以多尝试几个accept的int参数,就是ClassReader里的几个静态常量

弱鸡绿毛怪
本帖最后由 MagicLocyDragon 于 2017-10-20 17:36 编辑
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 编辑
姚氏帅哥 发表于 2017-10-17 22:15
糟糕的木匠总是嫌工具不好
错误从不是独立存在的,只贴asm不贴自己的代码,你也是真自信
先检查自己的参数 ...

阿?
我是用过C++
咋了
只会吐槽别人而不仔细看看代码帮帮忙只会喷人的人
你也是“真够自信”

耗子
ClassWriter w = new ClassWriter(ClassWriter.COMPUTE_FRAMES);

弱鸡绿毛怪
耗子 发表于 2017-10-20 17:41
ClassWriter w = new ClassWriter(ClassWriter.COMPUTE_FRAMES);

谢谢

Yaossg
MagicLocyDragon 发表于 2017-10-20 17:22
阿?
我是用过C++
咋了

最终代码是你的代码的问题,而你一开始就帖ASM代码,这是事实吧。
直到我回复时,我都没看见你发自己的代码,所以我都不可能知道你错在什么地方
就好比你没有问别人问题就要别人回答一样,到头来还是我的问题,那么我也无能为力了,
现在你已经给出了你自己的代码,的确有人为你解答了,所以我不想多说了

第一页 上一页 下一页 最后一页