nemirst Ierakstīts Oktobris 10, 2016 Share Ierakstīts Oktobris 10, 2016 Esmu sācis apgūt Android izstrādi, precīzāk ar Android NDK. Esmu izveidojis Android Native bibliotēku (*.so) ar NDK un gribu no šīs bilbliotēkas pārbaudīt, vai to izmanto no oriģinālās aplikācijas. Bija ideja pārbaudīt DEX signature. Palasīju, ka ir tāds /proc/self/maps fails, no kura var iegūt adrešu range, kurā atrodas DEX fails. Kaut ko laikam nesaprotu pareizi, jo mēģinot nolasīt datus nedabūju gaidītos "magic" baitus "dex...."(https://source.android.com/devices/tech/dalvik/dex-format.html#definitions) Šeit ir maps faila rindiņas, kuras satur .dex un zem katras izdrukāju pirmos 32 baitus, bet tajos neredzu "magic" baitus. Izskatās, ka manas aplikācijas dex fails ir sadalīts 4 atmiņas apgabalos. "a419e000-a4484000 r--p 00000000 b3:17 185315 /data/dalvik-cache/arm/data@app@...test_app-2@base.apk@classes.dex" "\x7fELF\x01\x01\x01\x03\0\0\0\0\0\0\0\0\x03\0(\0\x01\0\0\0\0\0\0\04\0\0\0" "a4484000-a4642000 r-xp 002e6000 b3:17 185315 /data/dalvik-cache/arm/data@app@...test_app-2@base.apk@classes.dex" "\xb0&\x02\0\x11A\0\0\xb0E\x05\0 \0\0\0`\x80\0\0\0\0\0\0<\0\0\0\xbd� "a4642000-a4643000 rw-p 004a4000 b3:17 185315 /data/dalvik-cache/arm/data@app@...test_app-2@base.apk@classes.dex" "\x04\0\0\0x\x01\0\0\x05\0\0\0\x14\x01\0\0\x06\0\0\0� "b3de6000-b3de7000 r--p 00000000 b3:17 185315 /data/dalvik-cache/arm/data@app@...test_app-2@base.apk@classes.dex" "\x7fELF\x01\x01\x01\x03\0\0\0\0\0\0\0\0\x03\0(\0\x01\0\0\0\0\0\0\04\0\0\0" Kur varētu būt problēma? Varbūt ir kāds gatavs risinājums? Vismaz es atradu tikai kodu, kas no C++ caur JNI izsauc Java. Link to comment Share on other sites More sharing options...
bubu Oktobris 10, 2016 Share Oktobris 10, 2016 (labots) Es esmu mēģinājis darīt tieši to pašu. Bet tas nestrādās, jo tad, kad dex fails tiek lādēts atmiņā, tas tiek "optimizēts". Tur tiek visādas lietas gan metadatos, gan baitkodā izmainītas (un tas tiek arī JIT'ots), lai runtaimā varētu efektīvāk izpildīt kodu. Labākais ko tu vari darīt ir nolasīt .dex failu no diska, un tad pārbaudīt tā signaturi. Jā, protams, runtaimā pačotu kodu tas nedetektēs, bet ja lietotājs spēj runtaimā patčot kodu, tad viņš spēs arī nopačot tavu pārbaudi neitīvajā kodā. Labots Oktobris 11, 2016 - bubu Link to comment Share on other sites More sharing options...
Recommended Posts
Izveido kontu, vai pieraksties esošajā, lai komentētu
Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas
Izveidot jaunu kontu
Piereģistrējies un izveido jaunu kontu, tas būs viegli!
Reģistrēt jaunu kontuPierakstīties
Jums jau ir konts? Pierakstieties tajā šeit!
Pierakstīties tagad!