Kérdés:
Hogyan lehet megakadályozni az erőforrás-szerkesztők használatát
Mellowcandle
2013-03-30 13:03:52 UTC
view on stackexchange narkive permalink

Számos olyan eszköz létezik, amelyek lehetővé teszik a Windows futtatható fájlok erőforrásainak szerkesztését. Ezek az eszközök nagyon egyszerű felületet tesznek lehetővé a programok megjelenésének és hangulatának megváltoztatásához. Az ikonok, a szöveg és a menük cseréje könnyen megtörténhet a hátramenetben. p>

Kérdésem az, hogy milyen lehetőségem van az erőforrások ilyen könnyű szerkesztését megakadályozni?

Három válaszokat:
Remko
2013-03-31 02:25:26 UTC
view on stackexchange narkive permalink

Elegáns és egyszerű megoldás az lenne, ha aláírná a futtatható fájlt, és ellenőrizné az aláírást indításkor (minden változtatás érvényteleníti az aláírást). Még akkor is, ha valaki javítja az aláírás-ellenőrzést, az aláírás továbbra is érvénytelen lesz, ami egyértelművé teszi, hogy az exe nem ugyanaz, mint amit Ön átadott. az erőforrásokról (mindkettőt a @angealbertine válasz már javasolta).

waliedassar
2013-04-03 17:56:05 UTC
view on stackexchange narkive permalink

Emellett kihasználhatjuk a hibákat magukban a szerkesztőkben is, hogy megakadályozzuk az erőforrásaink manipulálását. Az érdekes rész itt az, hogy a legtöbb erőforrás-szerkesztőnek fogalma sincs arról, hogyan kell elemezni a nem tipikus (nem túl nem tipikus) PE fájlokat. Például egyes szerkesztők feltételezik, hogy az erőforrásszakasz nevének mindig .rsrc -nak kell lennie. Példák:

  1. Resource Hacker

    • Speciális erőforrás beillesztése az erőforrás-hacker végtelenbe kerülését okozza hurok. Bemutató itt: http://code.google.com/p/ollytlscatch/downloads/detail?name=antiResHacker.exe

    • Speciális beszúrása Az RT_STRING erőforrás az erőforrás-hacker összeomlását okozza.

    • Feltételezi, hogy a IMAGE_OPTIONAL_HEADER szerkezet mérete sizeof (IMAGE_OPTIONAL_HEADER) , jelenleg 0xE0 hexadecimális formában, miközben ennél nagyobb is lehet. Ha a méret nagyobb értékű, akkor az Resource Hacker elveti a teljes PE fájlt.

  2. helyreállító

    • Ugyanaz, mint az 1c.
    • A NumberOfRvaAndSizes mezőt használja, amelyet könnyen 0xFFFFFFFF -nak hamisíthatunk. Ez azt eredményezi, hogy a Restaurátor elveti a teljes PE fájlt.
    • Feltételezi, hogy az erőforrás szakasz neve .rsrc . Változtasson bármi mást. Ez arra készteti a Restaurátort, hogy a teljes PE-t eldobja.
    • A Resorator elvet minden olyan erőforrásszakaszt, amelynek IMAGE_SCN_CNT_UNINITIALIZED_DATA mezőjére a Jellemzők mezőt állítja.

    Demók itt: http://pastebin.com/ezsDCaud

Okos! Kérdés: Úgy tűnik, hogy az ur javaslatok egy része nem felel meg az újrafogalmazási definícióknak. Ennek következtében a betöltő meghibásodhat, vagy erőforrásfunkciók (pl. Loadstring) meghibásodhatnak a jelenlegi vagy jövőbeli Windows verziókban?
Nem valószínű, hogy a Microsoft megváltoztatná a PE betöltési és bejárási kódjának alapvető viselkedését. Soha nem láttam, hogy ezt csinálnák. A viselkedés egyetlen változata a Win9x kernel használatakor volt, és az NT kerneltől eltér. A Microsoft jól tudja, hogy minden típusú linkelő a PE fájlformátum olyan eltérő értelmezését generálja, hogy biztos vagyok benne, hogy tudják, hogy ne nyúljanak semmihez. Valójában a PE fájlformátum annyira meglepően változatos, az egyetlen állandóság a Window kódjával való kompatibilitás. Természetesen tesztelje jól az ilyen modok elkészítése után.
Az antiResHacker.exe link nem működik
Ange
2013-03-30 13:33:47 UTC
view on stackexchange narkive permalink

Az erőforrások csak egy szabványos struktúra meghatározott állandókkal, de végül csak egy rekurzív struktúra egy pufferhez, függetlenül attól, hogy mit tartalmaz ( itt van a szokásos elrendezés).

Elméletileg bármit tartalmazhat - bármilyen mélységet, ciklust, érvénytelen típust stb ..., de akkor a szabványos API-k nem működnek velük.

Tehát meg kell győződnie arról, hogy ha titkosítja vagy tömöríti az erőforrásokat, ezeket az API-k bármelyikének használata előtt vissza kell állítani (mind az erőforrás könyvtár struktúráját, mind azok tartalmát), ami nem biztos, hogy nyilvánvaló.

Különösen néhány erőforrást fognak használni az operációs rendszer által, még a fájl végrehajtása előtt, például az első ikonok, a manifeszt és a verzióinformációk - így valószínűleg ezeket érintetlenül szeretné megőrizni.

A triviális erőforrás-szerkesztés megakadályozásának egyszerű módja egy adatfolyam futtatása lenne rejtjel a kiválasztott erőforrásokon, a végső bináris fájlon (miután a linkelő helyre tette őket és létrehozta az erőforrás bejegyzést a DataDirectory-ban), és ezeket az erőforrásokat dem és vagy a program inicializálásakor.

Ha kész megoldást keres, sok jó csomagoló, például a PECompact támogatja az erőforrások tömörítését, megakadályozva ezzel a külső erőforrások szerkesztését.

Kíváncsi vagyok, működhet-e itt valamilyen betöltési időbeli kicsomagolás / visszafejtés? Az erőforrás-szerkesztők vélhetően a lemezen lévő adatokkal dolgoznak, nem a memóriában.
igazad van, szerkesztettem a válaszomat.


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...