Posted By: pivson (Pijte pivo, je zdrave !) on 'CZprogram'
Title: GCC and Elf
Date: Thu Sep 6 11:38:51 2001
Caute...
Mam gcc kompiler. Dejme tomu ze mam kod typu:
const char* ble="...";
Potom nejaky dalsi konstanty. Potom samozrejmne non-read only data,
prodecury, etc... Elf si nahravam/relokuju sam (to jest prez virtualni pamet
si udelam stranky, etc.)
No a muj problem spociva v tom, ze on sice udela vsechny sekce spravne (to
jest, konstanty josu v .rodata (pomijim dalsi sekce). To by taky bylo blby
kdyby top nebylo spravne ;o)
No, a v program hlavicce (tedy segmentech) se tato sekce (bohuzel) nachazi
(jak by clovek cekal) v loadable sekci, jenze zaroven s .text - tedy page
prava jsou R X. Vadi mi samozrejmne ze mohu provest 'konstantu'.
Tedy pokud budu mit nejakej ptr na fci, a nejakou nahodou (chybou v pgmu) se
mi presune to teto variable konstanta treba na string, tak naprosto bez
problemu se pusti 'konstanta' - tedy nejakej bordel co zrovna bude tvorit
instrukce.
A ja mam 2 cesty, nebot nehodlam toto velice pekne potencialni nebezpeci
nechat:
1. parsovat si ELF a udelat segmentu podle svyho
2. nejaky prinutit gccc aby naprosto idiotsky nedaval dohromady konstanty a
code
(1) neni tak hrozna prace, ale pokud existuje (2) tak radsi bych toto :)
ps: aby mne nekdo nenapadnul, ze by to stejne pravdepodobne skonci s
'segfault' nebo tak, necht tedy dotycny si uvedomi, ze nahoda je blbec a
zrovna tam muze bejt u smyslu plnej kod, a hlavne, ten elf poustim pod
ruznejma OS (proto svuj loader, ikdyz pripmarne kompilujeme pod unixama) a
pod jinejma systemama se da dobre debugovat kdyz uz k takovy situaci dojde
tak si nenecham znicit stack a podobny veci, neb se rad podivam jak k ty chybe
doslo a odkad vzesla...
pss: a nehodlam se bavit o tom, ze gcc usetri par bajtiku kdyz ty segmenty
spoji dohromady... Nenahravam program co ma 60 bajtu aby mne to bolelo. A max
4K je dneska opravdu hnilobne malo.
A pro rejlapy co trdi ze debuger je zbytecnej: nepovazuju se za takove bohy
jako oni povazuji sebe a pocitam s tim ze jsem delal chyby, delam je a budu
delat - a udelam vse proto aby kdyz uz tam takova chyba bude, aby to 'padlo'
na vyjimce (nejaky) a nebudu riskovat ze to 'nahodou' pujde a padne mi to o
par desitek hodin pozdeji nekde uplne jinde.
Dik :)
Pivson I a posledni, z bozi vule pivar
A co budou delat cesi ???
Deme na pivo !