Kérdés:
A titkosított Mach-o bináris fájlokat nem lehet szétszerelni / nyomon követni a GDB-vel
user1815381
2013-07-26 23:36:15 UTC
view on stackexchange narkive permalink

Megpróbálok elemezni egy titkosított Mach-O binárisat (nem iPhone-t), és a következő furcsa viselkedéseket figyelem meg:

  • amikor töltse be ezt a bináris fájlt a GDB-be, és próbálja szétszedni a kódot a belépési pont által jelzett címen, a GDB minden értelmes ASM helyett szemetet ad vissza.
  • ugyanez történik a radare2
  • Hopper szétszerelővel is ugyanazt a belépési pont címet mutatja, de egyértelmű szétszerelést biztosít.

Megpróbáltam végrehajtani ezt az alkalmazást a GDB-ben - semmi sem működik egyáltalán. Meglepő módon az alkalmazás futtatása a terminálról nagyon jól működik.

Attól tartok, hogy a célpontom valamilyen módon be van csomagolva / összenyomva / elhomályosítva, a GDB / radare2 nem képes megbirkózni vele. Meglepő módon a Hopper elég jól feldolgozza.

Sajnos nem a Hopper teljes verziója a tulajdonom. Sőt, szeretném, ha ezt az alkalmazást a GDB-ben hibakeresni szeretném. Van erre valamilyen módszer?

Futtatott még valaki ilyesmit? Ha igen, hogyan folytassam?

Mi a bináris? Hogyan szerezzük be a "belépési pont által jelzett címet", és hogyan szedjük szét a kódot? Mutasson nekünk néhány képernyőképet vagy szöveges kiírást. Minél több részlet, annál jobb.
Ok, a bináris, amelyet elemezni próbálok, a Mac OS rendszerszoftver része. Úgy tűnik, hogy ez az úgynevezett "Apple által védett" bináris fájlok egyike. Nemrégiben több leírást is találtam erről a védelemről: http://osxbook.com/book/bonus/chapter7/binaryprotection/, sőt egy parancssori eszközről is, amely azt állítja, hogy képes eltávolítani egy ilyen titkosítást: http: // tumblr .alanquatermain.me / post / 97884723 / apple-bináris-protection-tool Most próbáltam ki, de még több szemetet termel ...
Milyen portot használsz? [MacPort] (http://www.macports.org/) vagy egy másik port?
A radare2 a `libbfd` programot használja? Azt hittem, hogy a saját könyvtárát használja a bináris formátum kezelésére, nem?
A Radare2 saját Mach-O elemzőt használ, amely úgy tűnik, hogy nem támogatja a titkosított bináris fájlokat. Sajnos hibákat tartalmaz: a szétszerelés felsorolása négy bájttal elmozdul. Beküldöm a megfelelő hibajelentést.
Kettő válaszokat:
perror
2013-07-27 04:36:04 UTC
view on stackexchange narkive permalink

Valójában a GDB a GNU binutilekre támaszkodik a bináris fájlok megnyitásához és szétszereléséhez. Tehát a bináris formátum kezelése a libbfd.so segítségével történik.

Általában a MacOS X binutils jön a Mach-O menedzsmenttel, de előfordulhat, hogy Ön használja egy hibás csomag. Vagy megpróbálhat Mach-O-t megnyitni egy másik rendszeren is, nem a MacOS X-en, más rendszereken pedig a Mach-O-támogatást rendkívül ritkán adják hozzá az alapértelmezett csomaghoz.

A Mach-O támogatás (és a GNU binutils összes lehetséges formátuma és architektúrája) megszerzésének legjobb módja a --enable-target = all opcióval történő fordítás. .

Személy szerint instabil Debian-t használok. és hozzászoktam a forrásokból vett teljes csomag újrafordításához. A következő lépéseket kell követnie:

  1. Adja hozzá a következő sort a /etc/apt/sources.list:

      deb-src ftp://ftp.debian.org/debian/ instabil fő hozzájárulás  
  2. Frissítse a csomagok listáját:

      su -c 'apt-get update'  
  3. Szerezze be a binutils csomagok fordításához szükséges csomagokat:

      su -c 'apt-get build-dep binutils'  
  4. Szerezze be a binutils code forrásait > csomagok:

      apt-get source binutils  
  5. Menjen a binutils forrás könyvtárba:

      cd binutils-xxx /  
  6. A binutils-xxx / debian / rules mezőben írja át a a következő sort, mint ez (távolítsa el az összes többi célt):

      multiarch_targets = all  
  7. Készítse el a csomagokat (ez eléggé eltarthat egy ideig):

      dpkg-buildpackage -rfakeroot -us -uc  
  8. Telepítse a binutils-multi arch csomag:

      dpkg -i binutils-multiarch_x.x.x_amd64.deb  
user1815381
2013-07-27 04:55:17 UTC
view on stackexchange narkive permalink

Nagyon köszönöm válaszát!

További kutatásokat folytattam, és a következőket találtam ki:

  • mivel a célom a Macintosh rendszer része, ezért Az úgynevezett "Apple bináris védelem" megvédi a közvetlen szétszereléstől és hibakereséstől.

otool -l [target] "a következő információkat fedi fel:

  Load parancs 0 cm LC_SEGMENT cmdsize 532 szekció __TEXT vmaddr 0xb8000000 vmsize 0x001df000 fileoff 0 fájlméret 1961984 maxprot 0x00000007 initprot 0x00000005 nsects 7 flag 0x8 < -------- "WARNING: encrypt !!! p> Ezért meg kell találnom a bináris kód visszafejtésének lehetőségét, mielőtt megpróbálnám használni a GDB-t. Elolvastam, hogy manuálisan is megtehető a GDB, dd és bármilyen megfelelő hexa szerkesztő használatával, de nem találtam lépésenkénti utasításokat .  

Ez az eszköz állítása szerint képes a visszafejtésre: http://tumblr.alanquatermain.me/post/97884723/apple-binary-protection-tool

de nekem nem megy.

Van valakinek els Itt valaha is foglalkozott ilyen binárissal? Köszönöm előre is!

Íme néhány további leírás erről a védelmi sémáról: http://osxbook.com/book/bonus/chapter7/binaryprotection/

http://reverse.put.as/2009/06/30/how-to-dump-an-apple-protected-binary/

UPDATE: Végül sikerült visszafejteni a célpontomat ezzel az eszközzel: http://www.insanelymac.com/forum/topic/285375-apb-decrypt-for-mountain-lion-lion- and-snow-leopard-apple-protected-bináris-decryptor /

A GDB helyes szétszerelést mutat a "disas 0xb800e5c4" szóval, ahol 0xb800e5c4 jelzi a belépési pontot. Míg a visszafejtett bináris fájl a terminálról indítva működik, a GDB belépése és futtatása még mindig nem működik ...

Ne tegyen megjegyzéseket válaszként. Ha szükséges, a részletek hozzáadásához szerkessze a kérdését.
Egyetértek Igorral, ráadásul ez egy másik kérdés. Kérjük, töltsön ki egy másik kérdést, és kezdje az elejétől.


Ezt a kérdést és választ automatikusan lefordították angol nyelvről.Az eredeti tartalom elérhető a stackexchange oldalon, amelyet köszönünk az cc by-sa 3.0 licencért, amely alatt terjesztik.
Loading...