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 !

Search the boards