Hackit’2012, solucionario. Level 4

Así que tenemos que destripar un binario .apk para Android… bien, empecemos con la cirugía.

1) Comprobemos material quirúrgico. Vamos a necesitar apktool para abrir al paciente.
2) Un vademecum de cómo y por dónde cortar tampoco vendrá mal.
3) Proceder a abrir en canal el .apk

apktool d AndroidLevel0.apk

4) Buscar un poco dentro de las tripas, a ver si encontramos algo valioso

$ grep -irn "password" * 
...
AndroidLevel0/smali/com/mobandme/hackit/euskal20/level0/services/CryptographyService.smali:114:   
direct {p0}, Lcom/mobandme/hackit/euskal20/level0/services/CryptographyService;->decodePassword()Ljava/lang/String;
 ...

5. Yo creo que tendremos que empezar examinando esa zona (decodePassword() suena bien 🙂
6. Editamos el services/CryptographyService.smali para incluir una llamada de log justo en el punto en el que la aplicación comprueba nuestro password con el que tiene almacenado.

 
const-string v0, "DL_Rules"
# Después de 
#    invoke-direct {p0}, Lcom/mobandme/hackit/euskal20/level0/services/CryptographyService;->decodePassword()Ljava/lang/String;
 #   move-result-object v2
 
invoke-static {v0, v2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

Por cierto, no conocíamos mucho de las interioridades de un paciente Android, asi que tuvimos que revisar varios tutoriales en la guía anteriormente citada hasta entender cómo llamar al método de la clase Log (que nos mostrará en pantalla el password en claro)

7. Ya podemos cerrar el cuerpo del delito. Sutura.

apktool b AndroidLevel0 /tmp/hack.apk

8. Firmamos nuestra obra de arte

jarsigner -keystore ~/.android/debug.keystore  /tmp/hack.apk  androiddebugkey

9. Y le decimos al paciente que se tome esta pastilla:

adb install /tmp/hack.apk

10. No perder de vista su reacción, porque seguro que nos dice algo interesante que nos permitirá pasar al nivel 5 😉

adb logcat

Eclipse, ventanas grises y la gran comunidad

UPDATE (22/12/2009): hoy he actualizado la versión de Ubuntu de uno de mis PCs, pasando de la 9.04 a 9.10. Conocía los «trucos» para hacer funcionar la bestia Eclipse en Karmic Koala, pero hete aquí que me he topado con un nuevo problema: al intentar instalar cualquier plugin, todo iba bien, salvo al final, cuando pulsaba en «Finish». Entonces Eclipse cerraba todas sus ventanas, saliendo inmediatamente (sin terminar la instalación del plugin). Analizando los logs de error, he visto que se «trababa» con la biblioteca Pango. Y tras unas cuántas búsquedas en el Bugzilla de Eclipse y en el Launchpad de Ubuntu, he encontrado en éste último la solución (o más bien parche): consiste en deshabilitar las «tecnologías de accesibilidad» (System/Preferences/Assistive Technologies/ y desmarcar «Enable Assistive Technologies»). </UPDATE>

Receta rápida para que no perdáis ni un minuto en arreglar un problema grave con Eclipse en Ubuntu 9.10. En concreto, con Eclipse Ganymede (3.4.0), que efectivamente, no es la última versión, pero es en la única en la que he conseguido hacer funcionar el plugin de Flex para Eclipse y la que necesito por tanto tener instalada. El problema radica en que al lanzar Eclipse, éste nos pide la ruta hacia el workspace (bien) y a continuación nos muestra una bonita ventana gris , sin ningún tipo de información (y que tampoco podemos cerrar). Bien, la solución (tras media hora de búsqueda, y gracias a que la Comunidad de usuarios la ha perseguido y documentado), consiste en añadir esta línea al fichero eclipse.ini :

   -Dorg.eclipse.swt.browser.XULRunnerPath=/dev/null

(el problema parece estar relacionado con alguna ruta de XulRunner que en las nuevas versiones de Ubuntu ha cambiado de localización y que, por alguna extraña razón, a Eclipse no parece haberle gustado nada de nada :-O

Nota de regalo: ¿tienes problemas con Ubuntu 9.10 y Eclipse a la hora de pulsar los botones con el ratón? (en concreto, ¿que por mucho que pulses cualquier botón no te hace ni puñetero caso?). Bien, pues también tenemos la solución en la comunidad, oiga. La verdad es que Eclipse y esta nueva versión de Ubuntu 9.10 se llevan a matar…

Eclipse y Moskitt Day en Valencia

Desde la Conselleria de Infraestructuras y Transporte (CIT) de la Comunidad Valenciana nos informan:

«se está promoviendo la organización de un MOSKittDay en Valencia el próximo día 1 de diciembre de 2009. Junto a este evento, se celebrará también el segundo EclipseDay promovido, al igual que el año pasado por la misma Conselleria.

La CIT es miembro de la Fundación Eclipse y lidera el proyecto MOSKitt para el desarrollo de una herramienta CASE libre basada en Eclipse.

El objetivo del evento MOSKittDay es doble, por un lado, en él se quiere dar a conocer el proyecto MOSKitt y promover la colaboración con otras organizaciones públicas y privadas. En segundo lugar, la CIT está interesada en dar a conocer la herramienta MOSkitt a potenciales usuarios fuera de los límites de la propia Conselleria, identificando para ello el valor añadido que MOSKitt como herramienta CASE puede proporcionarles: soporte al Desarrollo Dirigido por Modelos (una nueva estrategia de desarrollo de Software) integrado en una Metodología de Desarrollo.

Conjuntamente se celebrará el segundo EclipseDay en Valencia, cuyo objetivo, al igual que el del mismo evento promovido por la CIT el año anterior es el de poner en contacto a la comunidad española de usuarios y desarrolladores de Eclipse mediante una serie de charlas y tutoriales técnicos, siguiendo la filosofía de experiencias similares celebradas en otras partes del mundo. Los perfiles de los asistentes puede ser muy diverso: académico, institucional, empresarial, etc… El tema que principalmente se tratará en MOSKittDay es el del modelado, metodologías y el desarrollo dirigido por modelos, cualquier otro tema tiene cabida en el ámbito del EclipseDay.

Queda abierto cualquier tipo de participación: ponencias, patrocinio, asistencia etc… a cualquiera de los dos eventos.
Todos aquellos interesados se pueden poner en contacto con la organización, bien, a través de,
la siguiente dirección de correo : moskittday@moskitt.org .
Pueden enviarse las propuestas también a la lista de distribución: https://dev.eclipse.org/mailman/listinfo/spain-ec«

How to install Flash Builder on Linux

Lately, I’ve been wondering how to use Flash Builder on Linux. You know, Adobe is apparently putting Flash Builder (formerly also known as Flex Builder) for Linux on hold. So, if you are a Linux user, you’d better look for alternatives to FB (and certainly, there are a few...) However, I think that FB is the most feature-packed IDE for Flex development. So, how could we use that tool in our beloved system? Well, I managed to install it using Wine 1.1.23 on Ubuntu 9.04. This is the process that I’ve followed.

Download Flash Builder for Windows from Adobe Labs. Before the installation, you will have to configure Wine and install some needed DLL files. To do that, first and foremost, you’ll need to download the winetricks application and make it executable:

$ wget http://www.kegel.com/wine/winetricks
$ chmod a+x ./winetricks
$ ./winetricks

Now, you must select vcrun2005 and vcrun2005sp1 to install the needed dependencies : MS Visual C++ 2005 libraries and the related service pack.

Ok, time to install Flash Builder under wine:

$ wine flashbuilder4_b1_win_060109.exe

After finishing the installation, if you try to execute the application, you’ll get the following error:

«Licensing for this product has stopped working . This product has encountered a problem which requires that you restart your computer before it can be launched»

Restart the computer? on Linux? No way! 🙂 Now comes the tricky part, because you have to copy from a Windows installment some needed files:

a) On Windows, open the regedit tool and export the following branches:
HKEY_LOCAL_MACHINESOFTWAREAdobe –> adobe.reg
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesFLEXnet Licensing Service –> flexnet.reg

b) Back on Linux, import the previously saved registry branches

$ wine regedit
(now import adobe.reg and flexnet.reg files)

Now, mount the windows partition and copy this folders to the related wine folder:

$ cp -R /mnt/windows/Program Files/Common Files/Adobe ~/.wine/drive_c/Program Files/Common Files/

$ copy -R «/mnt/windows/Program Files/Common Files/Macrovision Shared» ~/.wine/drive_c/Program Files/Common Files/

Voilá! After entering the Serial Number or choosing the trial version, you’ll be able to work with Flash Builder on Linux 🙂 Enjoy!

Note: don’t forget to visit the WineHQ AppDB page about Flash Builder, for learning some hacks&tweaks that will allow you to address some annoying issues with code completion and the use of spaces as tabs.

Trucos para Flex Builder 3 en Linux (II)

Ni Eclipse ni Flex Builder (Eclipse+plugin Flex) son capaces de formatea código ActionScript de serie. La característica de «code beautifier» de otros lenguajes, como Java, se echan de verdad en falta. El Ctrl-Shift-f es una de las combinaciones de teclas que más se usan cuando la conoces. Por otro lado, el código ActionScript tiende a tener largas cadenas de texto a modo de instrucciones, que ocupan más de 2 y 3 líneas. Si a esto le añades la definición de estructuras de datos en las que los componentes se declaran de forma anidada al padre, un pequeño descuido o pereza a la hora de picar código hacen que éste sea bastante ilegible para todo aquel que no sea el programador original.

¿Existe alguna solución? Sí, Flex Formatter, un plugin opensource para Eclipse que permite formatear el código ActionScript como si de código Java se tratara (¡Ctrl-shift-f vuelve a funcionar!) Imprescindible para los desarrolladores Flex.