Mirror uses JVM reflection. In essence, it creates a second instance of the JVM, where it injects itself into the 'mirrored' version of the game. Mirror mode hooks onto a reflection of the official client. This makes it easier to work with as you can do whatever you please without really altering jagex that you're using a 'modified client'. Where as injection, is just injecting code into the client which sends back information that is needed for the bot to function (player info, npc's, objects etc)