Írja meg a trójai az Android

Amikor arról beszélünk, dugó és a moduláris alkalmazások, az első dolog, amit szem előtt a normál felhasználói szoftver. Azonban a moduláris felépítés lehet ugyanolyan hasznos a fejlesztés rootkitek és hátsóajtó. Szokásos módon frissíteni a szoftvert túl terhelő, és ez nem mindig lehetséges, de csendben tölteni a modul új funkciókat a hálózaton keresztül - ez kérem. És ha elővesszük alapvető funkciók a modulokat, és távolítsa el őket azonnal a letöltés után, akkor súlyosan károsíthatják az élet irányváltóval.

A klasszikus Java osztály nevezett java.lang.Classloader. Feladata - betölteni a byte-kód az adott osztályra (kiterjesztésű .class fájl) a virtuális gép futási időben. Ezután hozzon létre egy objektumot az ebbe az osztályba, és hívja a módszerekkel gondolkodás. Ilyen a be dinamikusan kódot, amelyet fel lehet használni a pályázatkészítés, bővített funkcionalitású vagy nagyon egyszerűen fogalmazva, plug-in támogatás.

Az Android, van egy Java virtuális gép, és nem a ClassLoader osztályban, de van egy analóg DexClassLoader végez pontosan ugyanazt a funkciót, de kapcsolatban a Dalvik bájtkódot (fájlok és .dex helyett .class -kal). És, ellentétben az asztali Java, ahol könnyebb, hogy a szükséges jar-fájl CLASSPATH és nem zavarja a dinamikus terhelés az Android, ez a megközelítés nagyon sok előnye van, a legfontosabb az, amely az alkalmazás funkcionalitása bővíthető és frissíteni anélkül, hogy a felhasználó és nélkül semmit kérve. Bármikor, az alkalmazás tölthető le a fájl egy osztály a szerver, letöltés, majd törölje a fájlt.

Bármi is volt, a dinamikus osztály betöltése - nagyon hasznos dolog írásban nem teljesen „fehér” alkalmazások, így a biztonsági szakember tudni kell, hogy ez a mechanizmus működik, és hogyan használják a trójaiak.

egyszerű példa

Minden írandó további könnyebb megérteni, csak egy példát a munkásosztály rakodó:

Általában, minden egyszerű: a kód betölti a jar-archive / sdcard / myapp / modul. jar a mi osztály, rengeteg azt com.example.modules.simple osztályban. Modul, létrehoz egy objektumot, és felhívja run () metódust. Ügyeljen arra, hogy a három pontot:

Ennek tesztelésére a kódot a teljesítmény, hozzon létre egy egyszerű modult:

Hogyan írjunk egy trójai

Ne rohanjon, hogy hozzon létre egy új projektet az Android Studio, akkor elhelyezett kód jegyzettömböt, és fordítsd le egy jar-fájl közvetlenül a parancssorból:

Győződjön meg arról, hogy a könyvtárak és állványok / android-23 és épít szerszámok / 23.0.3 ott, az ön esetében, nevük változhat.

Ha minden jól megy, akkor kap a kimeneti fájl module.jar. Csak akkor kell hozzá a boot betöltő kódot az alkalmazás, tegye module.jar memóriakártyára, építeni és az alkalmazás futtatásához.

DOWN reflexek

Reflection - egy jó dolog, de ebben az esetben ez csak egy akadályt. Az egyik módszer, nem érv vele mert ez nem nehéz, azonban, ha azt akarjuk, hogy alkalmazás került kifejlesztésre API modul a különböző módszerek, figyelembe néhány paramétert kell, hogy jöjjön ki valami sokkal kényelmesebb. Például, használja egy előre meghatározott felület, amelyet végre kell hajtani az egyes modul.

Ezt a módszert a fenti példában, akkor kap a következő három fájlt:

ModuleInterface.java fájlt az API leírás:

2. Module.java fájlt a végrehajtás a mi modulok:

Hogyan írjunk egy trójai

3.Novy module loader (tedd az alkalmazásban):

Hogyan írjunk egy trójai

Ez minden. Most tudunk dolgozni a modul egy közös cél. Sőt, a rendszer selejtezett modulok (osztályok), amelyek nem kompatibilisek a felület, még a rendszerindítás során, így nem kell azon töprengeni, hogy van-e olyan eljárás azt akarja, hogy a modulba.

Ha a modul SOKKAL

Például a modul tartozik com.example csomagot adott korábban. modules.simple (lásd. az irányelv-csomag), ezért be kell vonni a jar-archiválási simple.jar (változás -output = module.jar a -output = egyszerű. jar a build parancs). Amikor eljön az ideje, hogy hozzon létre egy új modult (pl remote_shell), az első sorban, akkor adja meg a csomag com forráskódját. example.modules.remote_shell.Module; és zapakuesh összeállított byte-kódot a jar-archiválási remote_shell.jar.

Jar-fájlnév (kiterjesztés nélkül) is használják, mint egy kulcs heshmape ezért, ismerve a modul nevét, akkor mindig fut a módszerek:

Hogyan írjunk egy trójai
EGYSÉGEK vigyen magával

Ebben a szakaszban már van egy app, hogy lehet letölteni korlátlan számú modult a megadott könyvtárban és a kényelem velük dolgozni. Továbbra is foglalkozni, hogyan osztja ezeket a modulokat. A legkézenfekvőbb lehetőség -, hogy töltse le a szerverről, akkor is, ha a „trójai faló”, hogy ezt egyszer egy nap, és a letöltés után a modul kiváltja module loader preload azokat az alkalmazást. Mondja el nekünk, hogyan kell csinálni, nem lesz itt minden elemi, és ez a feladat meg fogja találni minden bevezető cikket vagy könyvet fejlődő Android.

Egy másik lehetőség -, hogy tartalmazza modulok a pályázati csomag. Ebben az esetben a trójai fog férni a szükséges modulokat közvetlenül az első futás, amely megvédi problémákat a hozzáférést a hálózathoz. Amikor megjelenik a hálózaton található, akkor adjunk a terhelési modult a szerver, ha szükséges.

Ahhoz, hogy a modult az APK, azokat úgy kell elhelyezni a katalógusban eszközök a projekt keretein belül (ebben az esetben, az eszközök / modulok), majd végrehajtja az elszívó modul a kívánt könyvtárat. A kódot, akkor a következőképpen néz ki:

Hogyan írjunk egy trójai

Hogyan írjunk egy trójai
Ez nagyon egyszerű. A kódex a modul a csomagon belül, és másolja őket egyesével át az / sdcard / myapp, ahonnan akkor lehet betölteni az rakodógép.