středa 17. srpna 2011

Reverse engeneering Android aplikac?? (????st 1.)

Pro neznalé, reverse engeneering je krokování a pochopení aplikace, ke které nemáme zdrojové kódy. Všechny ty cracky a keygeny, co jsme si stahovali, kdy?? jsme ješt?? nem??li dostatecný p??íjem, abychom si aplikaci koupili, existují práv?? díky reverse engeneeringu.

Platforma Android nabízí vývojá????m jednoduchou p??íle??itost, jak svou programátorskou práci zhodnotit. Kdy?? je ale n??co za peníze, v??dy se najde n??kdo, kdo to chce zadarmo. Je známo, ??e proti nep??íteli se nejlépe brání, kdy?? znáte zbran??, které pou??ívá. Budete p??ekvapeni, ale reversovat aplikaci pro Android je daleko snazší ne?? t??eba exe z Windows. Zejména díky tomu, ??e vývojá??i nejakou obfuskaci ??asto zcela p??ehlí??í.

V tomto ??lánku tedy uká??i obecné principy reverse engeneeringu na Androidu, co je k tomu pot??eba, jak aplikaci debugovat bez zdrojových kód??, upravit a vytvo??it "cracklé" apk. Tato první ??ást se v??nuje instalaci a p??íprav?? nástroj??, které budeme pot??ebovat. V druhé ??ásti uká??i praktickou ukázku na konkrétní aplikaci. Ješt?? nejsem rozhodnut, zda zvolit n??jakou z Android Marketu nebo n??jaké rádoby placené apk z internetu nebo zda nenapsat n??co vlastního pro ilustraci. Prosím o komentá??, nemam tušení, jak je to s licencí.

 

Tak tedy za??n??me

P??i pitvání aplikace (exe, bin) pro PC se pou??ívá jazyk assembler. V androidu ekvivalentn?? pou??íváme poupravený jazyk Jasmin, co?? je vlastn?? assembler pro Javu. Nebudu zabíhat do detail??. Úpln?? sta??í utilitka apktool. Apktool umí rozbalit instala??ní soubor .apk do struktury adresá???? známé z vývoje aplikací.

apktool.exe d -d cz.nuc.aplikacehafhaf.apk aplikacehafhaf

Za povšimnutí stojí adresá?? smali, v kterém se nachází disassemblerované zdrojové kódy. Naopak pochopiteln?? chybí adresá?? src, kde jsou normáln?? zdrojové kódy v Jav??.

Soubory v adresá??i smali mají koncovku .java. Kdy?? n??jaký ale otev??ete, naleznete n??co jako:

package cz.nuc.aplikacehafhaf; class HafhafApplication {/*

.class public abstract Lcz/nuc/aplikacehafhaf/HafhafApplication;
.super Landroid/app/Application;
.source "HafhafApplication.java"

# interfaces
.implements Ljava/lang/Thread$UncaughtExceptionHandler;

. . .

. . .

. . .

    move-result-object v0

    goto :goto_0
.end method

*/}

Jedná se o klasickou definici t??ídy v Jav??, ale hned po { následuje za??átek více??ádkového komentá??e, který kon??í a?? nakonci t??sn?? p??ed ukon??ovací závorkou }. Zdrojový kód se nachází celý v komentá??i, aby se p??ípadné vývojové prost??edí nepokoušelo disassemblerovaný kód analyzovat.

Debugování probíhá p??ímo v komentá??i, co?? sebou nese omezení na IDE, v kterém je mo??né aplikace debugovat. Osobn?? pou??ívám NetBeans 5.5, ale pokud je mi známo, tak funguje i verze 6.5. Eclipse, IntelliJ stejn?? jako nov??jší verze NetBeans neumo??nují debugování kódu v komentá??ích.

Po dokon??ení úprav budete vytvá??et zp??t instala??ní balí??ek, který musí byt v Androidu podepsán. Bude se tedy hodit program SignAPK. M????ete samoz??ejm?? také podepsat aplikaci ru??n??.

Utility tedy sta??í:

Vytvo??ení projektu v NetBeans na základ?? smali soubor??

fjselifjelsijf


precist" http://mylifewithandroid.blogspot.com/2009/01/disassembling-dex-files.html

Žádné komentáře:

Okomentovat