Nota: partiremos de que o SDK de android está instalado, só hai que descargar-lo arquivo comprimido, descomprimilo e se tal (por comodidade) engadi-los directorios tools e platform-tools ó PATH.
Para compilar usaremo-lo NDK de android, só hai que descargalo e descomprimirlo (como referencia para a configuración, aquí fíxeno en `~/android-ndk/`), a partires de aquí pódese usar o compilador a pelo a base de comandos... pero sería un pouco pesado, así que imos alixeralo, o primeiro é preparar unhas cantas variables de entorno (sería recomendable engadílas ó .bashrc ou a algún arqivo que esté a man):
export AND_NDK=$HOME/android-ndk # Indica onde está o NDK, de primeiras só habería que adaptar este export AND_PLATFORM=$AND_NDK/platforms/android-9/arch-arm # Plataforma para a que se compilarará (neste caso android 2.3) export AND_LIB=$AND_PLATFORM/usr/lib # Aquí está a libc export AND_PREBUILT=$AND_NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86 # O de linux-x86 cambiaría segundo o sistema anfitrión export PATH=$AND_PREBUILT/bin:$PATH # E por último poñer os binarios no PATHSupoñamos que temos un programa en C, `hackliza.c`:
#includeSe queremos compilalo nun arqivo `hackliza` faríamos:int main(int argc, char **argv){ int i; for (i = 0; i < 10;i++){ puts("Hackliza!"); } return 0; }
arm-linux-androideabi-gcc -I$AND_PLATFORM/usr/include -L$AND_LIB -Wl,-rpath-link=$AND_LIB -nostdlib -lc $AND_LIB/crtbegin_static.o $AND_LIB/crtend_so.o hackliza.c -o hacklizaBufff, pero iso non é precisamente algo que sexa cómodo de teclear de cada vez, así que estaría ben definir un alias:
alias andgcc='arm-linux-androideabi-gcc -I$AND_PLATFORM/usr/include -L$AND_LIB -Wl,-rpath-link=$AND_LIB -nostdlib -lc $AND_LIB/crtbegin_static.o $AND_LIB/crtend_so.o'Agora sí podemos compilalo como root manda:
andgcc hackliza.c -o hacklizaE listo, xa está compilado, agora ímos executalo.
Para "instalalo" habería que mandalo ó teléfono:
adb push hackliza /sdcard/Despois montar-la partición de /system/ como de escritura (dende o `adb shell`):
## Vemos cal é o dispositivo que contén a /system/ $ df -h|grep system Filesystem Size Used Available Use% Mounted on /dev/block/stl6 209.1M 161.2M 48.0M 77% /system ## Neste caso /dev/bloc/stl6, remontámolo con outros parámetros $ mount -o rw,remount /dev/block/stl6 /system
E xa podemos pasar o programa ó PATH:
cp hackliza /system/xbin/
E, claro está, executalo, sexa polo `adb` ou no propio celular :
Ahí o está, C puro en Android!
ps: casi me esquezo, para volver a deixar /system/ como de só lectura usariase este comando (cambiando /dev/block/stl6 polo que corresponda)
mount -o ro,remount /dev/block/stl6 /system
No hay comentarios:
Publicar un comentario