Pregunta

Me gustaría inyectar código en una aplicación Android en tiempo de ejecución. He intentado utilizar la herramienta dx para generar un dexfile en la sdcard pero cuando desea crear una instancia, falla. ¿Existe alguna herramienta para inyectar código de generación de código de bytes nuevo Dalvik? Estoy studing algunas bibliotecas, aspecjt o guice para android. Es mejor trabajar con un lenguaje de script?

Gracias gente :)

¿Fue útil?

Solución

No, no es posible. permisos de las aplicaciones de Android no funcionaría si eso era posible.

Otros consejos

Dexmaker es nuevo y diseñado sólo para esto. Aquí está parte del ejemplo de la página web del proyecto:

    DexMaker dexMaker = new DexMaker();

    // Generate a HelloWorld class.
    TypeId<?> helloWorld = TypeId.get("LHelloWorld;");
    dexMaker.declare(helloWorld, "HelloWorld.generated", Modifier.PUBLIC, TypeId.OBJECT);
    generateHelloMethod(dexMaker, helloWorld);

    // Create the dex file and load it.
    File outputDir = new File(".");
    ClassLoader loader = dexMaker.generateAndLoad(HelloWorldMaker.class.getClassLoader(),
            outputDir, outputDir);
    Class<?> helloWorldClass = loader.loadClass("HelloWorld");

    // Execute our newly-generated code in-process.
    helloWorldClass.getMethod("hello").invoke(null);

Puede especificar su propio archivo DEX con la clase DexClassLoader. Esto es usado por algunas aplicaciones que quieren "plug-in" comportamiento.

No hay nada en el dispositivo que va a generar los archivos DEX, sin embargo. No existe un mecanismo para generar código sobre la marcha y hacer uso de ella.

Generating Dalvik Bytecode en tiempo de ejecución en el dispositivo mediante ASM o BCEL

Este ejemplo uso ASM y BCEL a generete dos clases en el dispositivo. Las clases se crean en la memoria de la tarjeta SD y luego se cargan en el sistema operativo Android de forma dinámica.

La siguiente clase es la plantilla del ejemplo:

public class HelloWorld {
    public static void hello(){
        int a=0xabcd;
        int b=0xaaaa;
        int c=a-b;
        String s=Integer.toHexString(c);
        System.out.println(s);
    }

}

En primer lugar he utilizado BCEL o ASM para crear una nueva clase ad-hoc en la tarjeta SD. En segundo lugar He convertido la clase Java a una clase Dex con el utiliy Dxclient en la tarjeta SD. Finalmente he creado un archivo jar y luego he cargado este paquete en el dispositivo de tarjeta SD

referencia DXClient

https://github.com/headius/dexclient/blob/ maestro / src / DexClient.java

Usted puede mirar esta página, pero usted tiene que utilizar algunas herramientas como APKTool, SignApk.

http: //blackhatcrackers.blogspot. es / 2013/05 /-aduana-código-en-android-inyección apks.html

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top