"Egy pelda volt, lehet nem az a megfelelo struktura (az elso korben), de konnyen lehet, hogy van olyan aminek tudhatod a cimet is"
Egyetértünk, ezért írtam, hogy "nem tartom kizártnak, hogy esetleg létezhet ilyen, de szeretném látni, melyik."
"es nem tortenik azonnal baj, ha egy kis ideig elrontasz par erteket is"
Ez is tökéletesen így van, azonban felveti a GP handler megszakítás problematikáját. Azt sem szabad elfelejteni, hogy az address space (amiben épp garázdálkodsz) egy olyan taskhoz tartozik, ami épp most kapott egy SIGKILL-t.
"vagy tudod az eredetit es azt iratod vissza."
Szintén korrekt, a baj az, hogy nem tudod mind a 100 byteot tetszőlegesen beállítani, hanem elszórtan vannak random vagy constant értékek. Ez drasztikusan lecsökkenti a potenciális kernelstruktúrák számát. Azt szerettem volna tisztázni PaxTeam-el, hogy nullára vagy egyre csökken-e, de sajnos kommunikációs problémák merültek fel valamint önellentmondásba keveredett.
"Kepzeld el mondjuk, mi van akkor, ha van valami strutura/tomb ami tele van fuggveny mutatottkkal, es atirod mindet, hogy "jo" helyre mutasson."
Elméletileg igazad van. Gyakorlatilag senki nem tudott még ilyent találni. Az is probléma, hogy senki nem rukkolt még elő olyan megoldással, ami során egy ilyen struktúra/tömb étírása az effektív GP handler eltérítést meg is valósítaná. Ezért írtam, hogy ez két művelet:
1. funcptr=&func
2. *funcptr()
Nekünk a másodikra (mivel adatot módosítunk, call %rax nem játszik) csak egy külső esemény révén van esélyünk. Viszont senki nem talált még olyan megoldást, ami legalább elméletileg ilyen eseményt előidézhetne (módosítatlan GP handler futása közben).