Visszafejtésre hibakeresés és Android-alkalmazások

Ez a cikk elmagyarázza, hogyan kell csatolni a hibakereső az Android-alkalmazást, és menjen át a lépésről lépésre módszerek által okozott szerzett információk felhasználásával után decompiling alkalmazás.
A tesztkörnyezet követelményeknek:
A papír fogják használni az alábbi konfiguráció: Windows 8, Android Studio és IntelliJ IDEA. Eszköz: Nexus 4 Android verzió 4.4.4. Azt javasoljuk, hogy minden közmű hozzá a PATH környezeti változó, hogy megkönnyítse és felgyorsítsa a hozzáférést ezekhez eszközöket.
Android alkalmazás (APK), használt cikk letölthető itt: com.netspi.egruber.test.apk.
Az alábbi utasítások segítségével elkészítheti a készüléket a kísérletekhez.
Az aktiválás szakasz Fejlesztői beállítások
Ahhoz, hogy indulhat a hibakeresés USB engedélyezni kell az Android-eszköz (USB hibakeresés opció), amely „kommunikálni” a készülék segítségével egy sor eszközt Android SDK. De előtte, aktiválni kell részén fejlesztői lehetőségek. Az eszköz, bemegy a Beállítások> A telefonról és kattintson többször a pontot a build számot, és akkor megjelenik egy üzenet, hogy a partíció Fejlesztői beállítások engedélyezve.


1. ábra: Annak érdekében, hogy aktiválja a szakasz Fejlesztői beállítások, akkor kattintson többször a Build száma
Felbontás hibakeresés USB-n keresztül
Ahhoz, hogy a hibakeresés USB-port, menjen a Beállítások> Fejlesztői lehetőségek és ellenőrizze a jelölőnégyzetet az USB hibakeresést.

2. ábra: Engedélyezze USB hibakeresés opciót
Csatlakoztassa a készüléket, és indítsa el az ADB
Az eszköz csatlakoztatása után a számítógéphez USB porton, akkor megjelenik egy üzenet «USB hibakereső csatlakoztatva a készülék». Azt is ellenőrizni kell, hogy tud-e csatlakozni a készülék az Android Debug Bridge alkalmazás (ADB), része az Android SDK (Android SDK Platform-tools csomag). A parancssorba írja be a következő parancsot:
A készülék jelenik meg a listában.

3. ábra: a csatlakozó eszközök listáját
Ha az eszköz nem jelenik meg a listában, a legvalószínűbb oka helytelenül telepített meghajtók (Windows). Attól függően, hogy az eszközillesztő megtalálható akár az Android SDK, illetve a gyártó honlapján.
Vizsgáljuk meg az alkalmazás képes hibakeresés
Mielőtt hibakeresés Android-alkalmazás először ellenőriznie kell, hogy van-e ilyen lehetőség. A teszt lehet tenni számos módon.
Az első út - fut az Android Device Monitor. része az Android SDK (az eszközök mappában). A Windows, a fájl neve monitor.bat. Amikor megnyitja az Android Device Monitor eszköz jelenik meg a Devices.

4. ábra: Alkalmazás Android Device Monitor
Ha bármilyen alkalmazás a készüléken, akkor hibakeresés kérelembe látható a listán. Csináltam egy tesztprogram, de a lista üres, mert a program nem lehet hibakeresése.
A második út, hogy teszteljék az alkalmazás hibakeresés - felfedezni a AndroidManifest.xml fájlt az alkalmazás (APK, Android alkalmazás csomag). APK egy zip-fájl, amely tartalmazza az összes szükséges információt, hogy az alkalmazás futtatásához Android-eszközön.
Amikor egy alkalmazás letölthető a Google Play Store, letölthető és pályázati csomag. Minden letöltött APK-fájlok általában a készüléken tárolt a mappában / data / app. Ha nem rendelkezik rendszergazdai hozzáférést, akkor nem kap egy listát a fájlokat a / data / app. Bár, ha tudja a nevét az APK-fájlt, akkor másolja a ADB segédprogram. Ahhoz, hogy megtudja a nevét, a APK-fájlt, írja be a következő parancsot:
Device parancsot húr. Ezután írja be a következő parancsot:
pm lista csomagok -f
A lista az összes csomagot a készüléken.

5. ábra: A listát a csomagokat az eszközt
Nézzük a listát, azt látjuk, a teszt alkalmazás.

6. ábra: A csomag létrehozza a teszt alkalmazás (kiemelve fehér)
Most meg kell másolni a csomag fájl. Nyisson meg egy shell, és adja meg a következő parancsot:
ADB pull /data/app/[.apk file] [hely]

7. ábra: Másolás a APK-fájlt a készülék a rendszer
Most kell, hogy nyissa ki a csomagot fájlt, és megvizsgálja a tartalmát a AndroidManifest.xml. Sajnos, nem tudjuk csak kivonat az archívumot, mint APK-fájl kódolt bináris formában. A dekódoláshoz a leggyakrabban használt apktool segédprogram. bár tudom használni APK Studio. mert ez az alkalmazás barát grafikus felület. Később a cikkben lesz meséltek APK Studio.
Az APK Studio kattintson a kis zöld ikon, adjon meg egy nevet a projekt, és adja meg az elérési utat a APK fájlt. Akkor hadd írja, hogy mentse a projektet.

8. ábra: Új projekt létrehozása a APK Studio
Megnyitása után a APK válassza AndroidManifest.xml fájlt és nézet beállításokat alkalmazás tag. Ha a zászló android: nyomonkövethető hiányzik (vagy jelen van, de az értéke hamis), akkor az alkalmazás nem debuggolható.

9. ábra: A tartalma AndroidManifest.xml fájl
Módosítása AndroidManifest.xml fájl
Amikor a közüzemi apktool APK Studio vagy tudjuk módosítani a fájlokat, és mit tartalmaz a csomagolás vissza a csomagot. Most megváltoztathatja a AndroidManifest.xml fájlt, hogy az alkalmazás lehet hibakeresése. Hozzáadása a tag line alkalmazás android: nyomonkövethető = "true".

10. ábra: változtatni a tartalmát a címke alkalmazása
Hozzáadása után kattintsunk a zászló ikonra „kalapács”, és újra össze a csomagot. Építse újra a csomag lesz a build / apk könyvtárban.

11. ábra: újratelepítése a csomag sikeres volt
A visszaállítás után a csomag aláírása és újra lehet telepíteni a készülékre (Android-alkalmazások minden alá kell írni). A legtöbb alkalmazás nem ellenőrzi a tanúsítványt, amellyel egy aláírás bekövetkezik. Ellenkező esetben meg kell változtatni a kódot, amely elvégzi ezt az ellenőrzést.
Most telepíteni kell újjáépíteni a csomagot. Eleinte távolítsa el a régi alkalmazást a következő parancsot:
ADB pm eltávolítást [csomag neve]
Ezután az új csomag telepítéséhez:
ADB telepíteni [.apk file]
Azt is vegye ki, és a telepítésnél egy parancsot:
ADB telepíteni -r [.apk file]

12. ábra: beállítása az újraépítés csomag
Ellenőrizze, hogy a szerelés alkalmazás megfelelően fut a készüléken. Ha minden működik, menjen vissza az Android Device Monitor, ahol egy teszt alkalmazás jelenik meg.

13. ábra: Most, újjáépíteni a alkalmazások debuggolható
Beállítása a fejlesztői környezet (IDE)
Most, hogy újjáépítsék a kérelmek is felvette a debugger, de először létre kell hozni egy projektet az IDE (a cikkben használt IntelliJ IDEA). Hozzon létre egy új projektet. Az alkalmazás neve adja meg név. A Csomag neve meg egy nevet, amely megegyezik a mappák hierarchiáját újjáépíteni a csomagot.

14. ábra: Új projekt létrehozása a IntelliJ IDEA
Általában a nevét APK-fájl megfelel a mappastruktúrát, akkor is, ha nem biztos a dolgában, az APK Studio egy könyvtárhierarchiában azt a mappát, ahol az alkalmazás fájlok találhatók. Az én esetemben, a nevét és a mappa struktúra azonos (com.netspi.egruber.test).

15. ábra: hierarchiája teszt alkalmazás könyvtár
Ha nincs bejelölve «létrehozása Hello World Activity» és hozzák létre a projekt (az összes többi paraméter változatlan marad az alapértelmezett). Az új projekt kell kinéznie:

16. ábra: A hierarchia mappák és fájlok az új projekt
Miután létrehoztuk a projekt hozzá szeretné adni a forráskód az APK-fájlt a debugger „tudott” szimbólum nevek, módszerek, változók, és így tovább. D. A jó hír az, hogy az Android-alkalmazás visszafordítani gyakorlatilag minőségromlás nélkül (forráskód ugyanaz lesz az eredeti). Miután decompiling forráskód behozni a fejlesztőkörnyezet (IDE).
Ismerkedés a forráskódját az alkalmazás csomag
Először is, meg kell konvertálni az APK-t a jar-fájl. Akkor használjuk a java-decompiler forráskódért a kérelmet. Átalakítás jar fog tenni dex2jar segédprogramot. Van dex2jar d2j-dex2jar.bat használt fájl konvertáló APK jar. A parancs szintaxisa elég egyszerű:
d2j-dex2jar.bat [.apk fájl]

17. ábra: átalakítása APK üvegben
Aztán nyílt vagy húzza a fájlt a JD-GUI (ez a java-decompiler).

18. ábra: szerkezete a jar-fájl
Jar-fájlt meg kell jeleníteni egy hierarchikus struktúrát, amelyen belül a java-fájlok olvasható forráskódot. Menjen a File> Save Minden forrás, a csomag a teljes forráskódot a zip-archívumot.

19. ábra: Mentés a forráskódot decompiled fájl
A mentés után a forrás kicsomagolása az archívum egy külön könyvtárba.

20. ábra: A kicsomagolt fájl
Most meg kell importálni a két könyvtár a projektben az IDE korábban létrehozott. A IntelliJ megy az src mappát, és másolja a tartalmát vissza kicsomagolt archív (két könyvtár).

21. ábra: A két másolt mappákat src könyvtárban
Visszatérve IntelliJ látjuk, hogy a frissített tervezetet.

22. ábra: A projekt alakult forráskód
Ha rákattintunk bármely tétel a listán, azt látjuk a forráskódot. Ahogy a lenti képen (forráskód LoginActivity osztály), a forráskód összezavart segítségével ProGuard.

23. ábra: Homályosított forráskód osztály LoginActivity
Most, hogy a projekt megjelent a forráskódot, akkor kezdjük töréspont a módszerek és változók. Ahhoz, hogy töréspont alkalmazás leáll. Példaként én meg egy töréspont a módszer (jobbra a eltorzítva kód) feldolgozásáért felelős az információ bekerül a szövegmezőbe.

24. ábra: szállított töréspontot eltakart módszerrel
Amint a töréspont, csatlakoztassa a hibakereső eljárás az eszközön kattintva a képernyő ikonra a jobb felső sarokban (IDE logója változhat).
25. ábra: csatlakoztatása a hibakereső folyamat
Most meg kell adnia, hogy a folyamat a csatlakoztatni kívánt. nyomonkövethető = „true”: Csak feldolgozza a zászló android jelenik meg.

26. ábra: Azon eljárások összekötő debugger
Kiválasztása után folyamat hibakereső kapcsolódni fog a készülék.

27. ábra: A hibakereső csatlakozik a folyamat a készüléken futó
A szöveges mezőben, én meg a 42 számú (ha emlékszel, a megfelelő módszert kell típuspontjának).

28. ábra: A mezőbe írja be a számot 42

29. ábra: kirúgták töréspont
A lenti képen látható a szám, amit már korábban bemutatott a szövegmezőbe.

30. ábra: A változók listáját a jelenlegi esetben az osztály