Тадқиқоти академӣ, забони фаҳмо

Verianla | Тадқиқоти академӣ ва илм ба забони тоҷикӣ

12 ноябр 2026, панҷшанбе
VERİANLA Нашри мустақили илмӣ
Кушодан ё бастани меню
...
Саҳифаи асосӣ / Илмҳои амалӣ / Илми компютер / Баррасии Эволютсияи Runtime дар Android: Таҳлили Байниверсиявӣ ва Паёмадҳои Он барои Криминалистикаи Хотира
Илми компютер

Баррасии Эволютсияи Runtime дар Android: Таҳлили Байниверсиявӣ ва Паёмадҳои Он барои Криминалистикаи Хотира

Ин таҳқиқот ба таври низомманд чен мекунад, ки Android Runtime аз Android 9 то Android 14 чӣ гуна аз ҷиҳати сохторӣ тағйир ёфтааст ва ин тағйирот ба криминалистикаи хотираи фазои корбар чӣ таъсир доранд.

15/10/2026  Veri Anla  278 боздид
Баррасии Эволютсияи Runtime дар Android: Таҳлили Байниверсиявӣ ва Паёмадҳои Он барои Криминалистикаи Хотира

Ин таҳқиқот ба таври низомманд чен мекунад, ки Android Runtime аз Android 9 то Android 14 чӣ гуна аз ҷиҳати сохторӣ тағйир ёфтааст ва ин тағйирот ба криминалистикаи хотираи фазои корбар чӣ таъсир доранд. Android Runtime (ART) қабати асосии нармафзорест, ки иҷрои барномаҳои Android-ро дастгирӣ карда, вазифаҳои вақти иҷро, аз ҷумла сохтани объект, давраи ҳаёти thread ва идоракунии хотираро назорат мекунад. Муҳаққиқон шаш версияи Android-ро дар чор меъморӣ — ARM32, ARM64, x86-32 ва x86-64 — аз манбаъҳои AOSP build карда, маълумоти debug-и DWARF-и файли libart.so-ро дар ҳар build бо parser-и махсус бароварда, номҳои сохтор, андозаи сохтор, аъзоҳо ва офсетҳои хотираро байни версияҳо муқоиса кардаанд.

Муҳимтарин натиҷаи таҳқиқот ин аст, ки мавҷуд будани як сохтор ё майдон бо ҳамон ном дар версияи баъдии Android маънои дар ҳамон мавқеи хотира ҷой доштани онро надорад. %73,2 аъзоҳои сохторе, ки дар тӯли версияҳо боқӣ мондаанд, ҳадди ақал як маротиба офсеташонро тағйир додаанд. %89,4 аъзоҳои сохтори Runtime ва %64,7 аъзоҳои марбут ба идоракунии thread ҳадди ақал як маротиба аз нав ҷойгир шудаанд. Ин ҳаракатнокӣ метавонад боиси он гардад, ки абзорҳои криминалистикие, ки ба таърифҳои статикии сохтор ва офсетҳои собит такя мекунанд, дар версияи нави Android маълумоти нодуруст хонанд ё тамоман аз кор монанд.

Барои 34 сохтори муҳими криминалистикӣ, ки байни Android 9–14 баррасӣ шудаанд, Ҷадвали II ҳамагӣ 1067 тағйироти сохториро нишон медиҳад: 956 тағйири офсет, 68 аъзои нав, 39 аъзои ҳазфшуда ва ҳазфи чор сохтори пурра. Тақрибан %89,6 тағйирот танҳо тағйир ёфтани мавқеи аъзоҳо дар дохили сохтор мебошад. Аз ин рӯ, ҳатто тағйироти зоҳиран хурди source code метавонад фарзияҳои абзори тафсиркунандаи тасвири хотираро вайрон кунад.

Таҳқиқот тарки усулҳои symbol-based-ро пешниҳод намекунад. Баръакс, он ҳифзи санҷишпазирӣ ва пайгиришавандагии таъминкардаи symbol-ҳоро ҷонибдорӣ мекунад, вале таъкид мекунад, ки ин бояд бо parsing-и огоҳ аз версия, баровардани худкори сохтор, symbolic execution, таҳлили намунаҳои дастрасӣ ба хотира ва роҳҳои эҳтиётии discovery якҷо карда шавад. Азбаски натиҷаҳо ба build-ҳои AOSP eng барои Android 9–14 асос ёфтаанд, тағйироти истеҳсолкунандагони OEM, build mode-ҳои гуногун ва версияҳои баъд аз Android 15 бевосита санҷида нашудаанд.

Чаро криминалистикаи хотира танҳо аз таҳқиқи диск иборат нест?

Ҳангоми кор кардани барнома маълумоти муҳим танҳо дар захираи доимӣ ҷой надорад. Ҳолатҳои кушодаи барнома, ҳамкориҳои муваққатии корбар, объектҳои ҳалшуда, metadata-и вақти иҷро ва дигар маълумоте, ки ҳанӯз ба диск навишта нашудаанд, метавонанд дар RAM мавҷуд бошанд. Криминалистикаи хотираи фазои корбар махсусан кӯшиш мекунад ҳамин маълумоти муваққатии хоси барномаро фаҳмад.

Аммо дар тасвири хоми хотира худ аз худ маълум нест, ки пайдарпаии муайяни byte чӣ маъно дорад. Абзори таҳлил бояд донад, ки як сохтори Runtime, Thread, Heap, Class ё сохтори дигари C++ аз кадом аъзоҳо иборат аст ва ҳар аъзо аз оғози сохтор чанд byte дур ҷойгир шудааст. Ин масофа офсети хотира номида мешавад.

Масалан, агар абзор фарз кунад, ки суроғаи рӯйхати thread дар сохтори Runtime дар офсети муайян ҷойгир аст, дар версияи нави Android бо илова шудани аъзоҳои дигар ва чанд даҳ byte ҷойиваз шудани ин майдон абзори кӯҳна метавонад ба ҷойи рӯйхати thread майдони дигарро хонад. Дар криминалистикаи хотира як ҳалли нодурусти суроға метавонад ба тамоми занҷири объектҳои баъдӣ таъсир расонад.

Android Runtime (ART) Чист ва Барои Криминалистикаи Хотира Чаро Муҳим Аст?

Android Runtime (ART) системаи вақти иҷроест, ки ҳангоми иҷрои барномаҳои Android ҷудокунии хотира, ҳаёти объект, идоракунии thread, равандҳои garbage collection ва сохторҳои зиёди дохилии марбут ба иҷрои коди барномаро идора мекунад. Азбаски криминалистикаи хотираи фазои корбар бо такя ба pointer, аъзо ва робитаҳои ин сохторҳо thread-ҳо, минтақаҳои heap ва объектҳои барномаро аз нав барқарор карда метавонад, тағйироти сохтории ART байни версияҳо мустақиман ба эътимоднокии абзорҳои криминалистикӣ таъсир мерасонад.

Чаро гузариш аз Dalvik ба ART муҳим буд?

Меъмории вақти иҷрои Android бо гузашти вақт ба таври назаррас тағйир ёфтааст. Гузариш аз давраи Dalvik ба ART танҳо тағйири ном набуд; тарзи иҷрои коди барнома, ҷудокунии хотира, garbage collection ва сохторҳои дохилии маълумот низ тағйир ёфтанд. Бо ART, ҷудокунандагони хотира ба монанди RosAlloc ва дар версияҳои баъдӣ сохторҳое ба мисли Region Space Allocation барои таҳлили криминалистикӣ муҳим шуданд.

RosAlloc хотираи heap-ро ба минтақаҳое ҷудо мекунад, ки аз slot-ҳо барои объектҳои андозаи муайян иборатанд. Объектҳои калонтар метавонанд ба минтақаҳои дигар, ба монанди Large Object Space, гузаронда шаванд. Пас аз Android 8 асосӣ шудани Concurrent Copying ва Region Space Allocation интиқоли мустақими техникаҳои кӯҳнатари барқарорсозии хотираро ба версияҳои нав мушкил кардааст.

Масъалаи асосӣ дар ин ҷо он аст, ки ҳарчанд Android чаҳорчӯбаи умумии ART-ро нигоҳ медорад, сохторҳои дохилии он собит намемонанд. Як вазифа метавонад солҳои зиёд вуҷуд дошта бошад, вале сохтор, занҷири pointer ё мавқеи аъзое, ки барои дастрасӣ ба он истифода мешавад, тағйир ёбад.

Панҷ саволи таҳқиқот

Саволи таҳқиқотМавзӯи баррасишуда
RQ1Версияи Android ва меъмории сахтафзор ба андозаи китобхонаи ART чӣ гуна таъсир мерасонанд?
RQ2Шумораи symbol-ҳои debug-и DWARF байни версияҳо ва меъмориҳои гуногуни Android чӣ гуна тағйир меёбад?
RQ3Дар сохторҳои маълумоте, ки барои криминалистикаи хотира муҳиманд, дар тӯли версияҳо кадом тағйироти калони сохторӣ рух медиҳанд?
RQ4Сохторҳои асосии ART ба монанди Runtime, Thread ва Heap дар тӯли версияҳо чӣ гуна эволютсия мекунанд?
RQ5Ин тағйироти сохторӣ ба амалиётҳои муҳими криминалистикӣ ба монанди thread enumeration, таҳлили heap ва object reconstruction чӣ гуна таъсир мерасонанд?

Чаро чор меъморӣ баррасӣ шуд?

Муҳаққиқон версияҳои ҳам 32-bit ва ҳам 64-bit-и оилаҳои ARM ва x86-ро баррасӣ кардаанд: ARM32, ARM64, x86-32 ва x86-64. Сабаб ин аст, ки на танҳо версияи Android, балки меъмории протсессор низ метавонад ба андозаи pointer, alignment ва layout-и хотира таъсир расонад.

Бо вуҷуди ин, дида шуд, ки шумораи symbol-ҳо дар чор меъморӣ дар дохили як версияи Android ба ҳам хеле наздик аст. Масалан, барои Android 14 шумораи symbol дар ARM64 19.115, дар x86-64 19.100, дар ARM32 19.107 ва дар x86-32 19.097 аст. Аз ин рӯ, муҳаққиқон дар муқоисаи муфассали микро-сохторӣ x86-64-ро ҳамчун меъмории намояндагӣ истифода кардаанд. Ин қарор маънои якхела будани ҳамаи layout-ҳои меъморӣ дар сатҳи byte-ро надорад; манбаъ махсусан қайд мекунад, ки фарқиятҳои alignment метавонанд ба layout-и хотира таъсир расонанд.

Криминалистикаи Хотираи Symbol-Based Чист?

Криминалистикаи хотираи symbol-based ё profile-based равишест, ки бо баровардани номҳо, андозаҳо, аъзоҳо ва офсетҳои аъзои сохторҳои маълумот аз маълумоти debug-и тавлидкардаи compiler тасвири хотираро маънидод мекунад. Ин усул пайгиришавандагӣ ва имкони баланди санҷиш медиҳад; аммо вақте таърифҳои сохтор дар ҳар версияи Android тағйир меёбанд, profile-ҳо ва коди parsing-и истифодабарандаи онҳо бояд пайваста нав карда шаванд.

DWARF дар ин ҷо чӣ кор мекунад?

DWARF формати debug information аст, ки метавонад дар файлҳои бинарии compiled маълумоти сохтор ва тағйирёбандаро барои мақсадҳои debug нигоҳ дорад. Таҳқиқот бо истифода аз маълумоти DWARF дар libart.so номҳои сохторҳои C++-и ART, андозаҳои умумии byte ва мавқеи аъзоҳо дар дохили сохторро мебарорад.

Азбаски ART ба таври васеъ C++ inheritance, template ва сохторҳои мураккаби object-oriented-ро истифода мебарад, гуфта мешавад, ки равиши стандартии dwarf2json эҳтиёҷи муҳаққиқонро қонеъ накардааст. Барои ҳамин parser-и махсуси бар pyelftools асосёфта таҳия шудааст.

Parser Compilation Unit-ҳо ва сабтҳои Debugging Information Entry-ро дар DWARF мегузарад; бо истифода аз сабтҳое ба монанди DW_TAG_class_type, DW_TAG_structure_type ва DW_TAG_member номи сохтор, андозаи byte ва тавассути DW_AT_data_member_location мавқеи аъзоро мебарорад. Маълумоти ҳосилшуда барои ҳар версия ва меъморӣ ба файлҳои сохторёфтаи JSON табдил дода мешавад.

Ҳудуди фарогирии таҳқиқот

Таҳқиқот Android 9, 10, 11, 12, 13 ва 14-ро дар бар мегирад. Android 15 ҳангоми оғоз шудани таҳқиқот ҳанӯз нашр нашуда буд ва аз ин рӯ ба таҳлил дохил карда нашудааст. Дар ҳамаи build-ҳо варианти AOSP eng build, ки имкониятҳои рушд ва debug медиҳад, истифода шудааст.

Манбаъ ҳамчунин ошкоро мегӯяд, ки конфигуратсияҳои гуногуни build-и Android, ба монанди user, debug, eng ва release; интихобҳои меъморӣ ва фардикунониҳои истеҳсолкунандагони OEM ба монанди Samsung метавонанд дар шумора, навъи маълумот ва андозаи сохторҳо фарқиятҳои иловагӣ ба вуҷуд оранд. Аз ин рӯ, натиҷаҳои таҳқиқотро набояд ба шакли “дар ҳамаи телефонҳои тиҷоратии Android дар сатҳи byte сохторҳо якхелаанд” тафсир кард.

Усул ва Натиҷаҳои Таҳқиқот

Ҷараёни таҳқиқот

МарҳилаАмалиётМаълумоти ҳосилшуда
1Омода кардани манбаъҳои AOSP-и Android 9–14Муҳити тозаи манбаъ, махсуси версия
2eng build барои ARM32, ARM64, x86-32 ва x86-64System image-ҳо ва libart.so
3Баровардани маълумоти debug-и DWARFНомҳои сохтор, андозаҳо, аъзоҳо ва офсетҳо
4Сохтани repository-и сохтор бар асоси JSONМаълумоти муқоисашаванда аз рӯи версия ва меъморӣ
5Cross-Version Binary ProfilingТамоюлҳои макро дар андозаи китобхона ва шумораи symbol
6Symbol-Based Structural Evolution AnalysisТағйироти офсет, аъзо, сохтор ва андоза
7Таҳлили таъсир ба вазифаҳои криминалистикӣНатиҷаҳо барои thread enumeration, таҳлили heap ва object recovery
8Пешниҳодҳои абзорҳои мутобиқшавандаМеъмории гибридӣ ва огоҳ аз версия барои таҳлили криминалистикӣ

Шакли 1 дар саҳифаи 5-и таҳқиқоти манбаъ низ ҳамин мантиқро нишон медиҳад: версияҳои AOSP аввал build шуда, symbol-ҳояшон бароварда мешаванд; сипас таҳлилҳои сатҳи макро ва микро анҷом дода мешаванд; натиҷаҳо бо таъсир ба thread, heap ва барқарорсозии объект пайваст шуда, ба пешниҳодҳо табдил меёбанд.

Муҳити build

Build-ҳои AOSP дар системаи бар Linux асосёфта иҷро шудаанд. Манбаъ мошини таҷрибавиро бо протсессори насли 13-уми Intel Core i9-13900KF, 64 GB RAM ва 4 TB захира тавсиф мекунад. Барои ҳар версия build environment-и алоҳида ва тоза омода шуда, Git, Python, OpenJDK ва абзори Android Repo истифода шудаанд. Манбаъ гузориш медиҳад, ки build-и ҳар версия тақрибан 4–5 соат давом кардааст.

Чаро 34 сохтор интихоб шуд?

Азбаски дар файлҳои libart.so-и версияҳои нави Android зиёда аз 19.000 symbol-и DWARF мавҷуд аст, ба ҷойи таҳлили алоҳидаи ҳамаи сохторҳо аз рӯи аҳамияти криминалистикӣ ба 34 сохтори муҳими маълумот диққат дода шудааст. Ин сохторҳо бо баррасии он муайян шудаанд, ки барои интиқоли абзори криминалистикаи хотираи фазои корбар DroidScraper, ки Android 8, 8.1 ва 9-ро дастгирӣ мекунад, ба версияҳои навтар кадом сохторҳои сатҳи поён заруранд.

Дар гурӯҳи сохторҳои интихобшуда, пеш аз ҳама Runtime, Thread ва Heap, инчунин сохторҳои ёрирасони зарурӣ барои thread enumeration, memory mapping ва object recovery мавҷуданд.

RQ1 — Андозаи китобхонаи ART чӣ гуна тағйир ёфт?

Версияи AndroidARM64 (MB)x86-64 (MB)ARM32 (MB)x86-32 (MB)
9157,57156,05184,41189,80
10147,42147,36128,77133,43
11198,32200,71162,51167,94
12177,09172,35153,99157,29
1389,7688,7083,9088,02
1492,5292,0886,5391,36

Андозаи binary ба таври монотонӣ зиёд намешавад. Барои x86-64 аз 147,36 MB дар Android 10 то 200,71 MB дар Android 11 афзоиш дида мешавад; манбаъ инро тақрибан %36 афзоиш шарҳ медиҳад. Дар Android 13 бошад, дар ҳамаи меъмориҳо коҳиши намоён дида мешавад. Дар мисоли ARM64 файли 177,09 MB-и Android 12 дар Android 13 то 89,76 MB коҳиш меёбад.

Муҳаққиқон бо readelf муайян кардаанд, ки Android 9–12 DWARF 4 ва Android 13 ва 14 DWARF 5-ро истифода мебаранд. Манбаъ мегӯяд, ки DWARF 5 метавонад ба бастабандии зичтари маълумот мусоидат кунад, вале ҳамзамон ҳушдор медиҳад, ки андозаи binary метавонад аз compiler flag, ҳаҷми debug information ва интихобҳои оптимизатсия низ таъсир гирад. Аз ин рӯ, тақрибан 48% коҳиши андозаро танҳо ҳамчун аз даст рафтани функсияи ART хондан дуруст нест.

RQ2 — Шумораи symbol-ҳои debug чӣ гуна тағйир ёфт?

Версияи AndroidARM64x86-64ARM32x86-32
915.69815.69815.70215.731
1016.75716.75816.78916.800
1117.21517.20217.23817.227
1217.74317.74617.74417.775
1317.27517.27017.22817.262
1419.11519.10019.10719.097

Шумораи symbol-и ARM64 аз 15.698 дар Android 9 то 19.115 дар Android 14 зиёд шудааст; манбаъ инро тақрибан %22 афзоиш гузориш медиҳад. Гарчанде дар Android 13 коҳиши кӯтоҳмуддат дида мешавад, Android 14 баландтарин шумораи symbol-ро дар давраи баррасишуда дорад.

Натиҷаи муҳими ин ҷо он аст, ки ҳарчанд андозаи binary дар Android 13 ва 14 ба таври ҷиддӣ коҳиш ёфтааст, шумораи symbol-ҳои debug дар дарозмуддат зиёд мешавад. Аз ин рӯ, хулосаи “файл хурд шуд, runtime содда шуд” баровардан мумкин нест. Тафсири манбаъ ин аст, ки кодгузории самараноктар ба монанди DWARF 5 метавонад маълумоти бойи debug-ро дар binary-и хурдтар нигоҳ дорад.

RQ3 — Дар 34 сохтори муҳим чанд тағйирот ёфт шуд?

Гузариши версияТағйири офсетИловаи аъзоҲазфи аъзоҲазфи сохторҶамъ
Android 9 → 1031224191356
Android 10 → 111561540175
Android 11 → 1298830109
Android 12 → 131871043204
Android 13 → 142031190223
Ҷамъ956683941067

Аз 1067 тағйирот, 956-то тағйир ёфтани мавқеи аъзоҳо дар дохили сохтор аст. Ин тақрибан ба %89,60 баробар аст. Иловаи аъзоҳо тақрибан %6,37, ҳазфи аъзоҳо тақрибан %3,66 ва ҳазфи тамоми сохтор тақрибан %0,37 мебошад.

Зичтарин тағйирот дар гузариши Android 9→10 аст. Баъдтар дар гузариши Android 11→12 шумораи умумии тағйирот то 109 кам шуда, аммо дар давраҳои Android 12→13 ва 13→14 боз ҳаракати намоёни сохторӣ дида шудааст.

Азбаски рақамҳои 355 ва 201 дар матни манбаъ ҳазфи тамоми сохторҳоро ба ҷамъ дохил намекунанд, ҷадвали боло мустақиман аз арзишҳои Ҷадвали II-и манбаъ таҳия шудааст.

Чаро Тағйири Як Офсети Хотира Метавонад Таҳлили Криминалистикиро Вайрон Кунад?

Абзорҳои криминалистикаи хотира аксар вақт ба аъзои муайяни сохтори маълумот тавассути масофаи собити byte аз оғози сохтор дастрасӣ пайдо мекунанд; вақте навсозии Android ҳамон аъзоро ба офсети дигар мекӯчонад, profile-и кӯҳна метавонад мавқеи нодурусти хотираро хонад. Агар ин хато дар нуқтаи оғози рӯйхати thread, heap pointer ё маълумоти class-и объект ба вуҷуд ояд, амалиётҳои баъдии pointer dereference низ метавонанд занҷири нодурустро пайгирӣ карда, reconstruction-и криминалистикии сатҳи боло ноком шавад.

RQ4 — Runtime, Thread ва Heap яксон эволютсия накарданд

Манбаъ гузориш медиҳад, ки се сохтори марказии ART намунаҳои гуногуни эволютсия нишон додаанд.

СохторЭволютсияи асосии мушоҳидашудаМаънои криминалистикӣ
RuntimeАфзоиш ва бозсозии пайваста дар тӯли версияҳо; %62,7 афзоиши андоза байни Android 11→12.Мавқеи pointer-ҳое, ки ба ThreadList, Heap ва дигар ҷузъҳои марказӣ мебаранд, метавонад тағйир ёбад.
ThreadАз 2584 byte дар Android 9 то 6768 byte дар Android 10 афзуда, тақрибан %162 калон шуд; дар версияҳои баъдӣ устувортар аст.Ба parsing-и идентификатори thread, маълумоти ҳолат ва маълумоти thread-local таъсир мерасонад.
HeapДар байни се сохтори асосии баррасишуда намунаи андоза ва тағйирот устувортар аст.Бо вуҷуди устувории нисбӣ, офсетҳои pointer-ҳои муҳими heap ва RegionSpace тағйир меёбанд.

Шакли 2 дар саҳифаи 9 ин фарқро махсусан равшан мекунад: сохтори Thread дар гузариши Android 9→10 ҷаҳиши ногаҳонӣ мекунад, Runtime хати афзоиши тағйирёбандаро пайгирӣ мекунад, Heap бошад тағйироти маҳдудтар дорад. Муҳаққиқон яке аз сабабҳои муҳими афзоиши Thread дар Android 10-ро аъзои нави interpreter_cache_ медонанд, ки зиёда аз 4000 byte ҷой мегирад.

Нишондиҳандаи таъсир чиро нишон медиҳад?

Муҳаққиқон барои нишон додани на танҳо шумора, балки шиддати тағйироти сохторӣ нишондиҳандаи таъсири аз 0 то 1 таҳия кардаанд. Ин нишондиҳанда се унсурро якҷо арзёбӣ мекунад: ҳиссаи аъзоҳои аз тағйири офсет таъсирдида, нисбати аъзоҳои илова ё ҳазфшуда ба шумораи умумии аъзоҳо ва бузургии тағйироти нисбии андозаи сохтор.

Азбаски манбаъ барои ин ченак муодилаи closed-form намедиҳад, дар ин ҷо формулаи нав ҳосил карда намешавад. Дар харитаи гармии Шакли 3 дар саҳифаи 10 таъсири тағйири офсет барои Runtime дар Android 9→10 дар сатҳи 0,90 аст. Thread дар ҳамон гузариш тағйироти баланд нишон медиҳад, аммо дар версияҳои баъдӣ дар аксари ченакҳо ба нишондиҳандаҳои пасттари таъсир мефарояд. Heap умуман дар сатҳҳои пасттар ва устувори таъсир мемонад.

RQ5 — Thread enumeration чӣ гуна таъсир мебинад?

Барои ёфтани thread-ҳо дар як раванди Android бояд аз сохтори Runtime ба майдони thread_list_ дастрасӣ пайдо карда, аз он ҷо занҷири дуҷонибаи thread-ҳоро дар ThreadList пайгирӣ кард. Аммо офсети майдони thread_list_ аз Android 9 то 14 чунин тағйир ёфтааст:

Версияи AndroidОфсети thread_list_
9512
10464
11456
12480
13576
14584

Дар ин ҷо намунаи яксамта ва пешгӯишавандаи афзоиш ё коҳиш вуҷуд надорад. Интиқоли арзиши собити версияи қаблӣ ба версияи нав бехатар нест.

Гузориш шудааст, ки майдонҳое ба монанди name_ ва tid_, ки барои муайян кардани идентификатори thread истифода мешаванд, низ дар тақрибан нисфи версияҳои баррасишуда мавқеи худро иваз кардаанд. Дар дохили tls_32bit_sized_values, майдони park_state_ дар Android 10 дар офсети 60 пайдо шуда, дар Android 14 ба офсети 44 кӯчидааст.

Таҳлили Heap чӣ гуна таъсир мебинад?

Яке аз нуқтаҳои асосии воридшавӣ барои таҳлили Heap боз ҳам дар дохили Runtime ҷойгир будани pointer-и heap_ мебошад. Таҳқиқот нишон медиҳад, ки ин майдон дар тӯли Android 9→14 мутаносибан дар офсетҳои 448 → 400 → 392 → 416 → 512 → 512 ҷойгир шудааст.

Майдони region_space_ дар дохили Heap низ аз офсети 728 дар Android 9 ба офсети 840 дар Android 14 кӯчидааст. Гуфта мешавад, ки майдонҳои муҳим ба монанди num_regions_, ки барои фаҳмидани шумораи минтақаҳо дар RegionSpace истифода мешаванд, низ якчанд маротиба аз нав ҷойгир шудаанд.

Ин тағйирот танҳо масъалаи “як суроғаро нав кун” нестанд; азбаски thread-ҳо метавонанд бо истифода аз Thread Local Allocation Buffer объектҳоро ба минтақаҳои heap ҷудо кунанд, маълумоти thread, heap ва object-recovery ба ҳам вобаста аст.

Чаро object reconstruction мушкилтар шуд?

Далелҳои сатҳи барнома аксар вақт дар хотира ҳамчун instance-ҳои class ва instance field ё static field дар ин объектҳо ҷой мегиранд. Аз ин рӯ, пайваст кардани объекти Android ба сохтори дурусти class ва ҳал кардани field-ҳои он дар маркази таҳлили криминалистикии фазои корбар қарор дорад.

Дар давраи Android 9–12 дар майдонҳои марбут ба Object ва Class тағйироти офсет дида шуданд, аммо дар гузариши Android 12→13 тағйироти асоситар ба амал омад: таҳқиқот гузориш медиҳад, ки баъзе сохторҳои асосӣ, аз ҷумла Object ва Class, аз libart.so хориҷ шудаанд. Ин идомаи кори коди кӯҳнаи таҳлилро танҳо бо ҷадвали нави офсет мушкил мекунад.

Чаро тағйироти JIT дар Android 10 аз андозаи сохтор муҳимтар аст?

Манбаъ мегӯяд, ки дар давраи Android 9→10 бо дастгирии profiler-based Just-In-Time compilation сохторҳое ба монанди JitCodeCache ва ProfilingInfo пайдо шудаанд.

Дар тарҳҳои Android 9 ва қаблтар instance-ҳои DexFile дар дохили OATFile-ҳо ҷойгир буданд ва тавассути OatFileManager дастрас мешуданд. Абзорҳое ба монанди DroidScraper аз ин робита истифода карда, ба намунаҳои DexFile мерасиданд.

Пас аз Android 10 OatFileManager дигар ба ҳамон шакл менеҷери файлҳои OAT-и хоси барнома набуд. Манбаъ шарҳ медиҳад, ки дар версияҳои навтар барои дастрасӣ ба instance-ҳои DexFile-и барнома бояд занҷири мураккабтари робитаҳои зерин пайгирӣ шавад:

JitCodeCache → ProfilingInfo → ArtMethod → DexCache → DexFile

Ин мисол паёми асосии таҳқиқотро равшан нишон медиҳад: ҳатто дуруст донистани ҳамаи офсетҳо дар версияи нави Android кори алгоритми кӯҳнаро кафолат намедиҳад; баъзан робитаи семантикӣ ва роҳи дастрасӣ байни сохторҳо низ тағйир меёбад.

Натиҷаи фарогир: %73,2 тағйири мавқеи сохторӣ

Дар бахши муҳокима муҳаққиқон ҳамаи аъзоҳои сохтореро, ки байни версияҳо боқӣ мондаанд, якҷо арзёбӣ кардаанд. %73,2 ин аъзоҳо дар фосилаи Android 9–14 ҳадди ақал як маротиба ба офсети дигар кӯчидаанд.

Гурӯҳи арзёбишудаАъзоҳои ҳадди ақал як маротиба офсет ивазкарда
Ҳамаи аъзоҳои сохтории боқимонда%73,2
Сохтори Runtime%89,4
Сохторҳои идоракунии Thread%64,7

Арзиши %89,4 барои Runtime махсусан муҳим аст, зеро Runtime дар маркази дастрасӣ ба бисёр сохторҳои дигар қарор дорад. Тағйири васеи мавқеъ дар чунин сохтори марказӣ метавонад ба занҷири васеътари код аз як plugin ё вазифаи parser таъсир расонад.

Оё Дар Абзорҳои Криминалистикаи Хотираи Android Танҳо Нав Кардани Офсетҳо Кифоя Аст?

Не. Таҳқиқот нишон медиҳад, ки дар баъзе гузаришҳои Android на танҳо мавқеи аъзоҳои сохтор, балки мавҷудияти сохторҳо, ҷойи онҳо байни китобхонаҳо ва роҳҳои дастрасӣ ба сохторҳои дигар низ тағйир меёбанд. Аз ин рӯ, мутобиқсозӣ ба версияи нав баъзан бештар аз нав кардани ҷадвали офсетҳои собитро талаб мекунад: parsing-и огоҳ аз версия, роҳҳои алтернативии discovery ва техникаҳои таҳлиле, ки метавонанд робитаҳои семантикиро аз нав барқарор кунанд.

Равиши гибридии пешниҳодкардаи муаллифон

Муҳаққиқон мухолифи тарки пурраи криминалистикаи symbol-based мебошанд. Азбаски symbol-ҳо маънои сохторҳо ва пайгиришавандагии онҳоро бо source code таъмин мекунанд, барои санҷиши криминалистикӣ арзишманданд. Мушкилӣ дар истифодаи танҳо онҳост.

Дар меъмории пешниҳодшудаи абзори оянда истифодаи якҷояи чанд қобилият таъкид мешавад:

  • Parsing-и огоҳ аз версия, ки таърифҳои сохторро мувофиқи версияи Android интихоб мекунад.
  • Меъмории модулӣ, ки layout-и собитро аз мантиқи parser ҷудо мекунад.
  • Истифодаи якҷояи харитаҳои сохтори хоси версия бо коди умумии таҳлил.
  • Якчанд роҳи discovery барои нуқтаҳои муҳими воридшавӣ ба монанди Runtime ва Thread.
  • Усулҳои эҳтиётӣ ба монанди memory scanning ё behavioral pattern tracing ҳангоми нокомии symbol.
  • Symbolic execution, ки тарзи истифодаи сохторҳоро дар код таҳлил мекунад.
  • Дар оянда истифодаи якҷояи directed symbolic execution ва memory-access-pattern analysis.

Манбаъ кори пешинаи proof-of-concept бо номи Seance-ро ҳамчун намунаи имконияти symbolic execution меорад, аммо мушкилоте ба монанди натавонистани ошкор кардани баъзе тағйирот дар global variable reference-ҳоро низ ошкоро қайд мекунад. Аз ин рӯ, symbolic execution низ ҳамчун ҳалли комили ягона пешниҳод намешавад.

Хулосаҳое, ки таҳқиқот дастгирӣ мекунад

  • Layout-и дохилии сохторҳои ART байни Android 9–14 ба таври назаррас тағйир меёбад.
  • Дар 34 сохтори муҳим навъи маъмултарини тағйирот аз нав ҷойгир шудани офсетҳои аъзоҳо мебошад.
  • Runtime, Thread ва Heap як намунаи эволютсияро нишон намедиҳанд.
  • Thread enumeration, heap analysis ва object reconstruction мустақиман аз ин тағйирот таъсир мебинанд.
  • Идомаи равиши Static symbol/profile ба танҳоӣ нигоҳдории бештарро талаб мекунад.
  • Ҳангоми тағйир ёфтани робитаҳои сохторӣ танҳо нав кардани ҷадвалҳои офсет мумкин аст кофӣ набошад.
  • Дизайни гибридӣ, ки маълумоти symbol-и санҷишпазирро бо усулҳои мутобиқшаванда якҷо мекунад, самти пешниҳодкардаи муҳаққиқон аст.

Хулосаҳое, ки таҳқиқот дастгирӣ намекунад

  • Нишон дода нашудааст, ки ҳамаи телефонҳои тиҷоратии Android бо build-ҳои AOSP eng-и баррасишуда як layout-и хотира доранд.
  • Firmware-ҳои фардикунонидашудаи Samsung ё дигар OEM-ҳо мустақиман муқоиса нашудаанд.
  • Android 15 ва версияҳои баъдӣ ба доираи таҷриба дохил нашудаанд.
  • Бартарии ҳамаи усулҳои гибридии пешниҳодшуда дар як абзори нави production-level-и криминалистикӣ ба таври таҷрибавӣ нишон дода нашудааст.
  • Symbolic execution ҳамчун ҳалли бехатое, ки ҳамаи тағйироти сохториро ошкор мекунад, исбот нашудааст.
  • Таҳқиқот таҷрибаи ҳуқуқии тасдиқкунӣ барои чен кардани қобили қабул будани далел дар парвандаи воқеии судӣ нест.

Ҳудудҳои тафсири методологӣ

Нуқтаи қавии таҳқиқот дар он аст, ки ҳамон версияҳои AOSP дар чор меъморӣ аз нав build шуда, муқоиса мешаванд ва маълумоти сохторӣ мустақиман аз сабтҳои DWARF бароварда мешавад. Ин имкон медиҳад тағйироти байни версияҳо ба таври низомманд чен карда шавад.

Бо вуҷуди ин, ҳамаи build-ҳо ба конфигуратсияи AOSP eng асос меёбанд. Худи манбаъ мегӯяд, ки build mode-ҳои гуногуни Android ва фардикунониҳои OEM метавонанд ба шумора, навъ ва андозаи сохторҳо таъсир расонанд. Аз ин рӯ, гуногуние, ки дар дастгоҳҳои саҳроӣ дучор шудан мумкин аст, метавонад аз тарҳи ин таҳқиқот васеътар бошад.

Ғайр аз ин, муқоисаи сохтор дар сатҳи микро асосан дар x86-64 иҷро шудааст. Муҳаққиқон ин интихобро бо он асоснок мекунанд, ки шумораи symbol ва робитаҳои сохтор дар дохили як версияи Android байни меъмориҳо хеле монанданд; аммо манбаъ низ эътироф мекунад, ки фарқиятҳои воқеии layout-и хотира аз сабаби alignment вуҷуд дошта метавонанд.

Азбаски Android 15 ҳангоми оғоз шудани таҳқиқот нашр нашуда буд, таҳлил дар Android 14 анҷом меёбад. Натиҷаҳо набояд ҳамчун пешгӯии қатъӣ дар бораи кадом сохторҳоро тағйир додани версияҳои баъдии Android истифода шаванд.

Ёддошт оид ба Манбаъ ва Усул

Таҳқиқоти аслӣ: Exploring Runtime Evolution in Android: A Cross-Version Analysis and Its Implications for Memory Forensics

Муаллифон: Babangida Bappah, Lauren G Bristol, Lamine Noureddine, Sideeq Bello, Umar Farooq ва Aisha Ali-Gombe

Муассиса: Louisiana State University, USA

Навъи нашр: Мақолаи конференсияи тақризшуда.

Конференсия: 28th International Symposium on Research in Attacks, Intrusions and Defenses (RAID 2025).

Соли нашр: 2025.

Саҳифаҳо: 349–362.

Ношир: IEEE Computer Society.

DOI: 10.1109/RAID67961.2025.00040

Версияи arXiv: arXiv:2512.18517; санаи боргузории arXiv 20 Декабр 2025.

Навъи асосии таҳқиқот: Таҳлили эмпирикӣ ва ҳисоббарории ченкунии байниверсиявии сохторҳои маълумоти Android Runtime.

Версияҳои Android-и баррасишуда: Android 9, 10, 11, 12, 13 ва 14.

Меъмориҳои баррасишуда: ARM32, ARM64, x86-32 ва x86-64.

Конфигуратсияи build: AOSP eng build.

Binary-и асосӣ: libart.so.

Манбаи маълумоти сохторӣ: Маълумоти debug-и DWARF.

Parser: Parser-и махсусе, ки барои сохтори C++-и ART таҳия шуда, pyelftools-ро истифода мебарад.

Усулҳои таҳлил: Cross-Version Binary Profiling ва Symbol-Based Structural Evolution Analysis.

Доираи микро-таҳлили муфассал: 34 сохтори маълумоти ART, ки барои криминалистикаи хотира муҳиманд.

Ҳолати маълумот/repository: Таҳқиқоти манбаъ хабар медиҳад, ки маълумоти runtime structure-и баровардашуда барои Android 9–14 ва framework-и таҳқиқот дар repository-и оммавии таҳқиқот нигоҳ дошта мешаванд.

Маблағгузорӣ: Таҳқиқот аз ҷониби Criminal Investigations and Network Analysis Center (CINA) дар Department of Homeland Security (DHS), Grant No. E206378P дастгирӣ шудааст.

Бархӯрди манфиатҳо: Дар PDF-и пешниҳодшуда баёнияи ҷудогонаи бархӯрди манфиатҳо муайян нашудааст.

Саҳмҳои муаллифон: Дар PDF-и пешниҳодшуда бахши ҷудогонаи CRediT/саҳмҳои муаллифон дода нашудааст.

Иҷозатнома: Азбаски дар PDF-и пешниҳодшуда навъи иҷозатномаи кушодае, ки боэътимод тасдиқ шавад, пайдо нашуд, барои истифодаи дубораи матни ҳифзшуда ва шаклҳои аслӣ мавҷудияти иҷозатномаи кушода фарз карда нашудааст. Баёни Verianla мустақилона бар асоси далелҳои илмӣ, усулҳо ва натиҷаҳои миқдории гузоришшуда сохта шудааст.

Номувофиқии миқдорӣ дар манбаъ: Ҷадвали II барои Android 9→10 ҳамагӣ 356 ва барои Android 12→13 ҳамагӣ 204 тағйирот нишон медиҳад, дар ҳоле ки матни атроф мутаносибан 355 ва 201 медиҳад. Ин фарқ аз он ба вуҷуд меояд, ки ҳисоб дар матн ҳазфи сохторҳои пурраро аз ҷамъ берун мегузорад. Дар ҷадвалҳои Verianla арзишҳои категориявии Ҷадвали II-и манбаъ ҳифз шудаанд.

Ҳудуди асосии тафсир: Таҳқиқот build-ҳои AOSP eng ва давраи Android 9–14-ро баррасӣ мекунад. Гуногунии firmware-и OEM, profile-ҳои дигари build ва сохторҳои баъд аз Android 15 мустақиман чен нашудаанд. Равиши гибридии пешниҳодшудаи таҳлили криминалистикӣ пешниҳоди илмӣ барои рушди абзорҳои оянда аст; дар ин таҳқиқот муваффақияти саҳроии абзори нави production, ки ҳамаи ҷузъҳоро якҷо мекунад, санҷида нашудааст.

Ҳуқуқи муаллиф ва усули баён: Ҷумлаҳои аслӣ, тартиби параграфҳо ё тарҳҳои шаклии манбаъ аз нав тавлид нашудаанд. Матни Verianla бо ҷудо кардани тағйироти сохторӣ, ченкуниҳои binary ва symbol, арзишҳои офсет, қадамҳои усул ва ҳудудҳои тафсири гузоришшуда дар манбаъ ва аз нав ташкил кардани онҳо дар як меъмории мустақили омӯзишӣ сохта шудааст.


Мубодила:

Шарҳҳо пас аз баррасӣ нашр мешаванд. Шарҳи шумо ба раванди тасдиқ фиристода шуда, пас аз пазируфта шудан намоён мегардад.

Шарҳ гузоред

Нишонии почтаи электронии шумо нашр намешавад. Майдонҳои ҳатмӣ бо * нишон дода шудаанд