Mobil inkişafda Reverse Engineering: bu nədir, alətlər və analiz metodları

Müəllif: IT Sectr Dərc olunub: 2026-04-04 Oxuma vaxtı: 10 dəq

Reverse Engineering (tərs mühəndislik) — mobil tətbiqin məntiq və strukturunun mənbə koduna çıxış olmadan bərpa edilməsi. Android və iOS kontekstində bu, alqoritmləri, şifrələmə açarlarını, API endpointlərini və biznes məntiqini çıxarmaq üçün DEX/APK və Mach-O/IPA ikili fayllarının dekompilasiyası deməkdir. Veracode Security Research (2025) məlumatlarına görə, top-200-dəki mobil tətbiqlərin 60%-dən çoxu reverse engineering-i asanlaşdıran ən azı bir göstərici ehtiva edir. Reverse Engineering təkcə hücumlar üçün deyil, həm də təhlükəsizlik auditi, patent analizi və penetrasiya testi üçün tətbiq edilir.

Başlıca

  • Reverse Engineering — mənbə koduna çıxış olmadan tətbiqin məntiqini, məlumatlarını və alqoritmlərini bərpa etmək üçün ikili kodun analizi prosesi
  • Statik analiz DEX/APK-nın jadx vasitəsilə dekompilasiyasını, iOS bayt kodunun Ghidra ilə analizini və apktool ilə resursların oxunmasını əhatə edir
  • Dinamik analiz tətbiqi dayandırmadan runtime-da çağırışları tutmaq üçün Frida, Objection və Xposed vasitəsilə həyata keçirilir
  • Reversdən qorunma obfuskasiya (ProGuard, DexGuard), sətrlərin şifrələnməsi, RASP agentləri və APK bütövlüyünə nəzarət üzərində qurulur
  • Hüquqi status reverse engineering müxtəlifdir: DMCA uyğunluq və təhlükəsizlik üçün icazə verir, lakin lisenziyaların və DRM-in yan keçilməsini qadağan edir

Reverse Engineering nədir?

Reverse Engineering (reversing) — ikili təsvirdən tətbiqin xarakteristikalarını, məntiqini və strukturunu bərpa etməyƏ yönəlmiş proqram təminatının analizi intizamıdır. Mobil tətbiqlər üçün analiz obyektləri kompilyasiya olunmuş kodu, resursları, manifestləri və sertifikatları ehtiva edən APK faylları (Android) və IPA fayllarıdır (iOS). Reversing-in nəticəsi — alqoritmlərin, protokolların, şifrələmə açarlarının, API sxemlərinin və biznes məntiqinin çıxarılmasıdır.

Tərs mühəndislik məqsədləri qanuni və qeyri-qanuni bölünür. Qanuni: müdafiə vasitələri yaratmaq üçün zərərli proqramların analizi, öz tətbiqlərinin zəifliklərə qarşı auditi, qapalı protokollarla uyğunluğun təmin edilməsi, patent analizi və təhsil. Qeyri-qanuni: əqli mülkiyyət oğurluğu, lisenziya məhdudiyyətlərinin yan keçilməsi, qorsan nüsxələrin yaradılması və istifadəçi məlumatlarını oğurlamaq üçün tətbiqin dəyişdirilməsi. Google Play Protect (2025) məlumatlarına görə, bank tətbiqlərinin zərərli modifikasiyalarının 78%-i reverse engineering-dən keçirilmiş orijinal APK əsasında yaradılır.

Reversing metodologiyası iki əsas istiqaməti əhatə edir: statik analiz (tətbiqi işlətmədən) və dinamik analiz (icra zamanı). Hər bir yanaşma müxtəlif məlumat səviyyəsi verir. Statik — kodun tam şəklini, lakin icra vaxtı məlumatları olmadan. Dinamik — real davranışı, məlumat axınını, şəbəkə çağırışlarını, lakin yalnız konkret icra ssenarisi çərçivəsində. Peşəkar reversing həmişə hər iki yanaşmanı birləşdirir.

Statik analiz alətləri

Statik analiz — tərs mühəndisliyin ilk mərhələsidir. Orijinal APK və ya IPA paketdən çıxarılır və hər bir komponent ayrıca analiz edilir. Əsas məqsədlər: DEX bayt kodu, resurslar, manifest, yerli kitabxanalar (.so, .dylib) və metamelumatlar.

jadx — DEX-dən Java-ya dekompilator

jadx — Android tətbiqlərinin statik analizi üçün əsas alətdir. O, DEX bayt kodunu minimal itkilərlə oxuna bilən Java koduna çevirir. jadx dəstəkləyir: multidex dekompilasiyası, lambda və daxili Kotlin siniflərinin tanınması, Gradle layihəsinə ixrac. Obfuskasiya olunmuş kod (ProGuard) üçün jadx a, b, c adları ilə kod göstərir, lakin sinif strukturu və çağırış ardıcıllığı qorunur. Müstəqil testlərə görə, jadx hətta obfuskasiya ilə belə kodun 85–92%-ni düzgün dekompilasiya edir.

apktool — resursların çıxarılması

apktool APK-nı smali koduna (DEX assembler) dekodlaşdırır və resursları oxuna bilən formada bərpa edir: AndroidManifest.xml AXML-dən oxuna bilən XML-ə, layoutlar — XML işarətləməsinə, strings.xml — düz mətnə çevrilir. apktool resursları dəyişdirməyə və APK-nı yenidən yığmağa imkan verir. apktool vasitəsilə çıxarıldıqdan və resurslar dəyişdirildikdən sonra tətbiq dəyişdirilmiş məzmunla quraşdırıla bilər.

Ghidra — yerli kitabxanaların analizi

Ghidra (NSA) — Android .so və iOS .dylib kitabxanalarının analizi üçün əvəzolunmaz reverse engineering freymvorkudur. Ghidra ARM64 kodunu dezasemble edir, C psevdokodunu bərpa edir və çağırış qrafiki qurur. Mobil reversing üçün Ghidra kriptoqrafiya və DRM mexanizmlərinin yerli tətbiqlərinin analizi üçün istifadə olunur. Ghidra analizi avtomatlaşdırmaq üçün Python və Java-da skript yazmağı dəstəkləyir.

bash
# APK-nın açılması və dekompilasiyası
$ jadx -d output_dir app.apk

# apktool vasitəsilə resursların çıxarılması
$ apktool d app.apk -o app_unpacked

# Ghidra vasitəsilə yerli kitabxananın analizi
$ ghidra app.apk/lib/arm64-v8a/libnative.so

# DEX-də sətr sabitlərinin axtarışı
$ strings classes.dex | grep -i api_key

Dinamik analiz alətləri

Dinamik analiz işləyən tətbiq üzərində aparılır. Analizator prosesə qoşulur və real vaxtda funksiya çağırışlarını, arqumentləri və qaytarılan dəyərləri tutur.

Frida — universal instrumentasiya aləti

Frida — mobil tətbiqlərin dinamik analizi üçün aparıcı alətdir. Frida tətbiq prosesinə (Android ART və ya iOS app) JavaScript mühərrikini yeridir və həm Java/Objective-C, həm də C/C++ funksiyalarının çağırışlarını tutmağa imkan verir. Frida ilə revers mühəndisləri: AES.decrypt() metodunun bütün çağırışlarını parametrlərlə qeyd edə, qaytarılan dəyəri ixtiyari ilə əvəz edə, Universal Android SSL Unpin vasitəsilə SSL-pinning-i silə, Stalker vasitəsilə yerli çağırışları izləyə bilərlər. Frida APK/IPA dəyişdirilmədən işləyir, bu da onu penetrasiya testi üçün əvəzolunmaz edir.

Objection — Frida üstün qurulma

Objection JavaScript skriptləri yazmadan tipik reversing tapşırıqları üçün hazır əmrlər təqdim edir: disable-pinning (SSL pinning-i söndürmə), dump-keychain (iOS), explore (sinif iyerarxiyasını gəzinti), memory search (yaddaşda sətrlərin axtarışı). Objection bir sɑ1ir kod yazmadan tam dinamik analiz aparmağa imkan verir. iOS tətbiqləri üçün Objection avtomatik olaraq NSURLSession, CFNetworkNSKeyedArchiver çağırışlarını tapır və qeyd edir.

Xposed Framework

Xposed — Zygote-də app_process faylını əvəz etməklə işləyən Android freymvorkudur. Fridadan fərqli olaraq, Xposed quraşdırmadan sonra root girişi tələb etmir. Xposed modulları istənilən tətbiqdə metod çağırışlarını tuta bilər. Reversing üçün Xposed uzunmüddətli analiz üçün əlverişlidir: modul quraşdırılır və davamlı işləyərək tətbiqin müxtəlif ssenarilərdə davranışını qeyd edir. Xposed Android 8.1-ə qədər olan versiyaları dəstəkləyir; Android 9+ üçün SandHook əsasında EdXposed istifadə olunur.

js
// Frida: tətbiqdə decrypt() metodunun tutulması
let aesClass = Java.use("javax.crypto.Cipher");

aesClass.doFinal.overload(
    "[B", "int", "int"
).implementation = function(
    input, offset, len
) {
    console("[AES] decrypt called, len=" + len);
    return this.doFinal(input, offset, len);
};

Android tətbiqinin tərs mühəndislik prosesi

Standart reversing iş axını ardıcıl addımlardan ibarətdir, hər biri müəyyən məlumat səviyyəsi verir.

Addım 1: Kəşfiyyat məlumatlarının toplanması

Analitik APK-nı metamelumatlar səviyyəsində öyrənir: targetSdk, uses-permission (hansı icazələrin tələb olunduğu), intent-filter və exported components. İcazələrə əsasən hansı API-lərin istifadə edildiyi müəyyən edilir (android.permission.CAMERA → kamera, android.permission.RECORD_AUDIO → səs). Exported activity əsasənda avtorizasiyasız giriş nöqtələri müəyyən edilir. Bu mərhələ aapt və ya ApkAnalyzer vasitəsilə yerinə yetirilir və 1–2 dəqiqə çəkir.

Addım 2: DEX dekompilasiyası

APK çıxarılır, classes.dex (və ya multidex) jadx-ə ötürülür. Nəticədə — paketlərdə Java/Kotlin kodu. Analitik əsas sinifləri axtarır: CryptoUtils, ApiClient, AuthManager, DatabaseHelper və hansı alqoritmlərin istifadə edildiyini yoxlayır. Kodda AES/CBC/PKCS5Padding sətrləri varsa — tətbiq şifrələmə istifadə edir və açar tapılmalıdır. Bu mərhələdə müəyyən edilir: sərt kodlaşdırılmış açarlar, API URL-ləri, OAuth tokenləri və sirlər. Obfuskasiyasız tətbiqin bütün kodu adi Java layihəsi kimi oxunur.

Addım 3: Trafik analizi

SSL-pinning-i söndürmək üçün Frida və ya Objection quraraq, analitik tətbiqi işə salır və Burp Suite və ya mitmproxy vasitəsilə şəbəkə trafikini tutur. Trafik məlumatları əsasında API sxemi bərpa olunur: hansı endpointlər, hansı parametrlər, hansı formatda. Mümkün olduqda analitik sorğuları dəyişdirir və serverin səhv və ya zərərli məlumatlara reaksiyasını yoxlayır. Server tərəfində validasiyanın olmaması bu mərhələdə aşkar edilən birbaşa zəiflikdir.

Addım 4: data.json faylına yazılma

Analiz nəticələri strukturlaşdırılmış formada qeyd olunur. Tapılan hər bir zəif yer üçün göstərilir: sinif və metod, zəifliyin təsviri, istismar vektoru və düzəltmə tövsiyəsi. Bu məlumat dəsti inkişaf komandasına ötürülür və ya pentest hesabatının hazırlanması üçün istifadə olunur. Avtomatlaşdırılmış mühitlərdə (MobSF) hesabat statik və dinamik analizin nəticələrinə əsasən avtomatik yaradılır.

iOS tətbiqlərinin reverse engineering xüsusiyyətləri

iOS tətbiqlərinin reverse engineering-i Apple-ın daha sərt təhlükəsizlik arxitekturası və stock cihazlarda fayl sisteminə birbaşa çıxışın olmaması səbəbindən Android-dən çətindir. iOS analizi üçün jailbreak tələb olunur.

Mach-O statik analizi

IPA arxivi Mach-O ikili faylını ehtiva edir — Apple-ın universal icra olunan fayl formatı. Dekompilasiya üçün Hopper Disassembler və ya IDA Pro istifadə olunur. Minimal itkilərlə Java-ya dekompilasiya olunan Android DEX-dən fərqli olaraq, Mach-O daha az dəqiqliklə C psevdokoduna bərpa olunan yerli ARM64 kodunu ehtiva edir. Hopper 60–70% bərpa ilə öhdələşir, qalanı assembler səviyyəsində analiz edilməlidir.

iOS üçün Frida ilə dinamik analiz

iOS-da Frida jailbreak və frida-server quraşdırılmasını tələb edir. Qoşulduqdan sonra Frida API message routing vasitəsilə Objective-C metodlarını tutur. iOS tətbiqləri üçün tipik ssenari: HTTP sorğularını qeyd etmək üçün NSURLSession.dataTaskWithRequest metodlarının tutulması, seriallaşdırılmış məlumatların analizi üçün NSKeyedUnarchiver-in tutulması və frida-trace vasitəsilə CoreData sorğularının izlənməsi. Frida Dopamine jailbreak-ının buraxılması ilə iOS 15–17 üçün əlçatan oldu.

IPA modifikasiyası

Reversing IPA-nın dəyişdirilməsini, sonra yenidən yığılmasını və cihaza quraşdırılmasını əhatə edə bilər. Alətlər: çıxarılması üçün ipatool, bölmələrə baxmaq üçün MachOView və kod yeridilməsi üçün optool. Dəyişdirildikdən sonra IPA jailbreak edilmiş cihazda quraşdırmaq üçün ldid və ya fastlane sigh ilə imzalanır. iOS 16+ üçün kod imzası Secure Enclave səviyyəsində yoxlanılır və dəyişdirilmiş IPA jailbreak edilməmiş cihazda işləməyəcək.

js
// Frida: iOS tətbiqində HTTP sorğularının tutulması
if (ObjC.available) {
    let NSURLSession = ObjC.classes.NSURLSession;
    let dataTaskWithRequest = ObjC.protocol("NSURLSessionDelegate")
        .method("- URLSession:dataTask:didReceiveData:");
    Interceptor.attach(dataTaskWithRequest.implementation, {
        onEnter(args) {
            let data = ObjC.Object(args[3]);
            console("[HTTP Response]", data.toString());
        }
    });
}

Reverse engineering-dən qorunma metodları

Tərs mühəndislikdən qorunma layered security prinsipi üzərində qurulur: heç bir metod 100% qorunma təmin etmir, lakin kombinasiya reversing-i iqtisadi cəhətdən məqsədəuyğun etmir.

Kod obfuskasiyası

Əsas səviyyə — sinif və metod adlarını bir simvolla əvəz edən Android üçün ProGuard. Gücləndirmə üçün overload induction (müxtəlif imzalarla eyni ada malik bir neçə metod) və AES-256 sətr şifrələməsi əlavə edən DexGuard istifadə olunur. Obfuskasiya kod analizi vaxtını səviyyədən asılı olaraq 5 dəqiqədən 5–20 saata qədər artırır. DexGuard əlavə olaraq idarəetmə axışını qarışdıraraq kodu jadx üçün oxunmaz edir.

Sabitlərin şifrələnməsi

Bütün sətr sabitləri — URL-lər, açarlar, tokenlər, SQL sorğuları — qurma mərhələsində şifrələnir və runtime-da deşifrələnir. Bu, DEX faylının sətrlərinin statik analizindən qoruyur. strings app.apk işə salan hücumçu heç bir API endpointi görməyəcək. Hətta dekompilasiyadan sonra belə bütün sətrlər ikili məlumat kimi görünür. Hər bir sətr üçün ayrıca açar istifadə edilə bilər ki, bu da deobfuskasiyanı çətinləşdirir.

RASP və bütövlük nəzarəti

Tətbiq daxilindəki RASP agenti runtime-da Frida və debug-u aşkarlayır. APK-nın SHA-256 heşi ilə bütövlük nəzarəti dəyişdirilmiş tətbiq versiyasının işə salınmasının qarşısını alır. APK heşi etalonla (yerli təbəqədə saxlanılır) üst-üstə düşmürsə — tətbiq dayanır. Bu, repackaging daxil olmaqla APK modifikasiyasına əsaslanan hücumları bloklayır.

Server tərəfi qorunma

Kritik biznes məntiqi serverdə icra edilməlidir, müştəridə yox. Hücumçu tətbiqi tam dekompilasiya etsə belə, server kodu əlçatmaz qalır. Bütün sorğuların və parametrlərin server tərəfində validasiyası reversing zamanı tapılan zəifliklərin istismarının qarşısını alır. Play Integrity API və ya App Attest vasitəsilə server attestasiyası sorğunun həqiqi, dəyişdirilməmiş tətbiqdən gəldiyini təsdiqləyir.

Tez-tez verilən suallar

Mobil tətbiqlərin reverse engineering-i qanunidirmi?

ABŞ-da reverse engineering DMCA ilə tənzimlənir — uyğunluq, təhlükəsizlik testi və arxiv məqsədləri üçün icazə verilir. Texniki qoruma tədbirlərinin (DRM) yan keçilməsi qadağandır. Avropada EUCD-nin 6-cı maddəsi DMCA-ya bənzərdir. Rusiyada müəllif hüququ sahibinin razılığı olmadan reverse engineering müəllif hüquqlarının pozulması kimi şərh edilə bilər. Kommersiya reversingindən əvvəl hüquqi məsləhət müləqimdir.

Tətbiqi 100% reversingdən qorumaq mümkündürmü?

Xeyr. Hücumçunun cihazında icra olunan istənilən kod analiz edilə bilər — bu, müştəri tərəfi qoruma modelinin prinsipial məhdudiyyətidir. Qorumanın məqsədi reversing-i iqtisadi cəhətdən sərfəsiz etməkdir: vaxt və resurs xərcləri əldə edilən nəticənin dəyərindən çox olmalıdır. Obfuskasiya, RASP və server məntiqinin kombinasiyası cari qoruma standartıdır.

APK repackaging (yenidən yığma) nədir?

Repackaging — reverse engineering vasitəsilə tətbiqin dəyişdirilməsi və sonra APK-nın yenidən yığılması. Hücumçu APK-nı apktool ilə açır, zərərli kod əlavə edir və ya API açarlarını dəyişdirir, yenidən yığır və öz sertifikatı ilə imzalayır. Repackaging Kaspersky Threat Report (2025) məlumatlarına görə Android-dəki bütün hücumların 86%-ni təşkil edir. Əks tədbir: runtime-da rəqəmsal imzanın yoxlanılması.

Frida SSL-pinning-i necə yan keçir?

Universal Android SSL Unpin Frida skripti TrustManager.checkServerTrusted və iOS-da ServerTrustManager çağırışlarını tutaraq tətbiqi allow-all ilə əvəz edir. Həmçinin OkHttp və URLConnection-da X509TrustManager metodlarının tutulması istifadə olunur. SSL-pinning Frida-da hazır skriptlə 10 saniyəyə yan keçilir. Daha davamlı qoruma — server tərəfində sertifikatın yoxlanılması ilə certificate transparency.

Hansı dilləri reversing etmək ən çətindir?

.so/.dylib kitabxanalarındakı yerli C/C++ kodu DEX-dəki Java-dan çox daha çətin reversing edilir. PGO və Osize kompilasiyası ilə Swift Objective-C-dən daha qarışıq ikili fayl verir. Rust runtime metamelumatları və Objective-C standart bağlantısı olmadan yerli koda kompilyasiya olunur, bu da onu müasir mobil inkişaf dilləri arasında reversing üçün ən çətin edir.

Nəticələr

  • Reverse Engineering — statik analiz (jadx, Ghidra, Hopper) və dinamik instrumentasiya (Frida, Xposed, Objection) vasitəsilə ikili koddan tətbiq məntiqinin bərpası
  • Android tətbiqlərinin statik analizi DEX-in jadx ilə dekompilasiyası və resursların apktool ilə çıxarılması ilə başlayır, 90% bərpa olunmuş Java kodu verir
  • Frida vasitəsilə dinamik analiz runtime-da çağırışları tutmağa, SSL-pinning-i söndürməyə və bütün arqumentləri və qaytarılan dəyərləri qeyd etməyə imkan verir
  • iOS-un Reverse Engineering-i jailbreak və Android-də DEX analizindən çox daha çətin olan Hopper/IDA Pro vasitəsilə ARM64 ikili faylları ilə işləməyi tələb edir
  • Reversingdən qorunma obfuskasiyanı (ProGuard/DexGuard), sabitlərin şifrələnməsini, Frida-nı aşkarlamaq üçün RASP agentini və Play Integrity API vasitəsilə server attestasiyasını əhatə edir
  • 100% qorunma reversingdən mümkün deyil — məqsəd hücumun dəyərini qorunan məlumatların dəyərindən yüksək etməkdir
  • APK repackaging — mobil tətbiqlərə ən kütləvi hücum, runtime-da rəqəmsal imzanın yoxlanılması və server tərəfində bütövlük yoxlaması ilə qarşısı alınır

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun