|
4 | 4 | import me.n1ar4.jar.obfuscator.config.BaseConfig; |
5 | 5 | import me.n1ar4.jar.obfuscator.utils.JunkUtil; |
6 | 6 | import me.n1ar4.jar.obfuscator.utils.RandomUtil; |
| 7 | +import me.n1ar4.jrandom.core.JRandom; |
7 | 8 | import me.n1ar4.log.LogManager; |
8 | 9 | import me.n1ar4.log.Logger; |
9 | 10 | import org.objectweb.asm.*; |
@@ -126,17 +127,28 @@ public void visitMethodInsn(int opcode, String owner, String name, String descri |
126 | 127 | return; |
127 | 128 | } |
128 | 129 |
|
129 | | - mv.visitLdcInsn((int) (Math.random() * 100)); |
| 130 | + mv.visitTypeInsn(Opcodes.NEW, "java/lang/String"); |
130 | 131 | mv.visitInsn(Opcodes.DUP); |
131 | | - mv.visitInsn(RandomUtil.genICONSTOpcode()); |
132 | | - mv.visitInsn(Opcodes.IADD); |
133 | | - mv.visitInsn(RandomUtil.genICONSTOpcode()); |
134 | | - mv.visitInsn(Opcodes.ISUB); |
135 | | - mv.visitInsn(Opcodes.DUP_X1); |
136 | | - mv.visitInsn(Opcodes.SWAP); |
137 | | - mv.visitInsn(Opcodes.POP); |
138 | | - mv.visitInsn(Opcodes.POP); |
| 132 | + mv.visitLdcInsn(JRandom.getInstance().randomString(16)); |
| 133 | + mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/String", "<init>", |
| 134 | + "(Ljava/lang/String;)V", false); |
139 | 135 | mv.visitInsn(Opcodes.POP); |
| 136 | + |
| 137 | + Label ifLabel = new Label(); |
| 138 | + Label endLabel = new Label(); |
| 139 | + |
| 140 | + mv.visitInsn(Opcodes.ICONST_1); |
| 141 | + mv.visitJumpInsn(Opcodes.IFNE, endLabel); |
| 142 | + |
| 143 | + mv.visitLabel(ifLabel); |
| 144 | + mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/System", |
| 145 | + "out", "Ljava/io/PrintStream;"); |
| 146 | + mv.visitLdcInsn(JRandom.getInstance().randomString(16)); |
| 147 | + mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/io/PrintStream", |
| 148 | + "println", "(Ljava/lang/String;)V", false); |
| 149 | + mv.visitJumpInsn(Opcodes.GOTO, endLabel); |
| 150 | + mv.visitLabel(endLabel); |
| 151 | + mv.visitFrame(Opcodes.F_SAME, 0, null, 0, null); |
140 | 152 | } |
141 | 153 | super.visitMethodInsn(opcode, owner, name, descriptor, isInterface); |
142 | 154 | } |
@@ -176,6 +188,11 @@ public void visitTypeInsn(int opcode, String type) { |
176 | 188 | } |
177 | 189 | mv.visitInsn(Opcodes.NOP); |
178 | 190 | mv.visitInsn(Opcodes.NOP); |
| 191 | + mv.visitTypeInsn(Opcodes.NEW, "java/util/ArrayList"); |
| 192 | + mv.visitInsn(Opcodes.DUP); |
| 193 | + mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/util/ArrayList", |
| 194 | + "<init>", "()V", false); |
| 195 | + mv.visitInsn(Opcodes.POP); |
179 | 196 | mv.visitInsn(Opcodes.NOP); |
180 | 197 | } |
181 | 198 | super.visitTypeInsn(opcode, type); |
|
0 commit comments