|
@@ -13,7 +13,43 @@ public class ProtectionInjector extends ClassVisitor {
|
|
|
|
|
|
@Override
|
|
|
public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) {
|
|
|
- super.visit(version, access, name, signature, superName, interfaces);
|
|
|
+ String[] newInterfaces = append(interfaces, "io/nexilis/service/Callback");
|
|
|
+ super.visit(version, access, name, signature, superName, newInterfaces);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void visitEnd() {
|
|
|
+ MethodVisitor mv = cv.visitMethod(Opcodes.ACC_PUBLIC, "onSuccess", "()V", null, null);
|
|
|
+ if (mv != null) {
|
|
|
+ mv.visitCode();
|
|
|
+ mv.visitMethodInsn(Opcodes.INVOKESTATIC, "io/security/streamshield/SecurityShield", "getInstance", "()Lio/security/streamshield/SecurityShield;", false);
|
|
|
+ mv.visitInsn(Opcodes.DUP);
|
|
|
+ mv.visitLdcInsn("gow3");
|
|
|
+ mv.visitLdcInsn("8B0449EA6ECD9C67EAD8A4C5AA716A0ECE803F28A4082E61D3F6DB488D1C185C");
|
|
|
+ mv.visitVarInsn(Opcodes.ALOAD, 0);
|
|
|
+ mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "io/security/streamshield/SecurityShield", "check", "(Ljava/lang/String;Ljava/lang/String;Landroid/app/Activity;)V", false);
|
|
|
+ mv.visitInsn(Opcodes.RETURN);
|
|
|
+ mv.visitMaxs(1, 1);
|
|
|
+ mv.visitEnd();
|
|
|
+ }
|
|
|
+ mv = cv.visitMethod(Opcodes.ACC_PUBLIC, "onFailed", "()V", null, null);
|
|
|
+ if (mv != null) {
|
|
|
+ mv.visitCode();
|
|
|
+ mv.visitFieldInsn(Opcodes.GETSTATIC, "java/lang/System", "out", "Ljava/io/PrintStream;");
|
|
|
+ mv.visitLdcInsn("onFailed");
|
|
|
+ mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, "java/io/PrintStream", "println", "(Ljava/lang/String;)V", false);
|
|
|
+ mv.visitInsn(Opcodes.RETURN);
|
|
|
+ mv.visitMaxs(2, 2);
|
|
|
+ mv.visitEnd();
|
|
|
+ }
|
|
|
+ super.visitEnd();
|
|
|
+ }
|
|
|
+
|
|
|
+ private String[] append(String[] arr, String element) {
|
|
|
+ String[] newArr = new String[arr.length + 1];
|
|
|
+ System.arraycopy(arr, 0, newArr, 0, arr.length);
|
|
|
+ newArr[arr.length] = element;
|
|
|
+ return newArr;
|
|
|
}
|
|
|
|
|
|
@Override
|
|
@@ -39,14 +75,11 @@ public class ProtectionInjector extends ClassVisitor {
|
|
|
@Override
|
|
|
protected void onMethodExit(int opcode) {
|
|
|
super.onMethodExit(opcode);
|
|
|
-// mv.visitVarInsn(ALOAD, 0);
|
|
|
-// mv.visitMethodInsn(INVOKESTATIC, "com/example/security/DetectionLibrary", "initialize", "(Landroid/content/Context;)V", false);
|
|
|
-
|
|
|
- mv.visitMethodInsn(INVOKESTATIC, "io/security/streamshield/SecurityShield", "getInstance", "()Lio/security/streamshield/SecurityShield;", false);
|
|
|
mv.visitLdcInsn("gow3");
|
|
|
mv.visitLdcInsn("8B0449EA6ECD9C67EAD8A4C5AA716A0ECE803F28A4082E61D3F6DB488D1C185C");
|
|
|
mv.visitVarInsn(ALOAD, 0);
|
|
|
- mv.visitMethodInsn(INVOKEVIRTUAL, "io/security/streamshield/SecurityShield", "check", "(Ljava/lang/String;Ljava/lang/String;Landroid/app/Activity;)V", false);
|
|
|
+ mv.visitVarInsn(ALOAD, 0);
|
|
|
+ mv.visitMethodInsn(INVOKESTATIC, "io/nexilis/service/API", "connect", "(Ljava/lang/String;Ljava/lang/String;Landroid/app/Activity;Lio/nexilis/service/Callback;)V", false);
|
|
|
}
|
|
|
}
|
|
|
}
|