Baksmali/Smali (Dissassembler/Reassembler) Android Tutorial

Zunächst müssen die .jar Dateien von der Projektseite geladen und entpackt werden:
Download von http://code.google.com/p/smali/

  • baksmali-0.93.jar  ist der Disassembler
  • smali-0.92.jar ist der Reassembler

Nachdem die Dateien herunterladen wurden einfach in einen Ordner Eurer Wahl kopieren. Nun können wir auch schon mit dem Dis-/Reassemblieren beginnen.

Disassemblieren:

  • Gewünschte .apk Datei in einen leeren Ordner kopieren
  • Datei dort entpacken (in Ubuntu entweder per Doppelklick auf die .apk oder via Konsole:

mkdir <yourApp>
cd <yourApp>
adb pull /system/app/<yourApp>.apk ./
unzip <yourApp>.apk

Nun sollten die .apk entpackt sein und unter anderem die Manifest Datei, der path/to/project/res/ Ordner und ganz wichtig die classes.dex Datei vorhanden sein. Nun geht es an das Disassemblieren der .dex Datei.

Hierzu müssen wir auf der CLI folgenden Befehl ausführen:

java -jar your/path/baksmali-0.93.jar classes.dex
(Der allgemein Aufruf ist java -jar baksmali.jar [options] <dex-file>)

Baksmali erstellt dann einen neuen Ordner namens “out”, in welchem sich die disassemblierten Dateien befinden. In diesem Fall  wäre z.B. unter out/your/package/name/ die entsprechenden .smali Dateien zu finden.

Assemblieren:
Hat man die .smali abgeändert kann man diese natürlich auch wieder reassemblieren. Hierzu nimmt man den Smali Reassembler. Dieser macht aus den .smali Dateien wieder eine .dex Datei, die in diesem Fall out.dex heisst. Der Befehl sieht dann folgendermaßen aus:

java -jar your/path/smali-0.92.jar out/your/package/name/

Als letztes muss nun noch die out.dex nach classes.dex umbenannt werden und zusammen mit den anderen, im ersten Teil entpackten Ressourcen, wieder zu einer .apk Datei gepackt werden. Danach sollte diese wieder normal auf dem Gerät ausführbar sein, inklusive den an den .smali Dateien vorgenommenen Änderungen.

Auf der Smali Seite gibt es auch noch ein HelloWorld Beispiel, das man sich auf jeden Fall anschauen sollte.

Hello World in Android Assembler mit Compile und install Beispiel
http://code.google.com/p/smali/source/browse/trunk/examples/HelloWorld/HelloWorld.smali

Viel Spaß beim Dis-/Reassemblieren!!

Wenn dir dieser Beitrag gefällt, lade den Autor doch mal zu einem Drink ein ;-)

Broadcast us
  • Yigg
  • Webnews.de
  • Digg
  • MisterWong
  • del.icio.us
  • Technorati
  • DZone
  • Facebook
  • Google Bookmarks
  • Reddit
  • StumbleUpon
  • TwitThis

Tags: , , , ,

Leave a Reply