Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Renault Twingo E-Tech Electric: che prezzo!
Renault Twingo E-Tech Electric: che prezzo!
Renault annuncia la nuova vettura compatta del segmento A, che strizza l'occhio alla tradizione del modello abbinandovi una motorizzazione completamente elettrica e caratteristiche ideali per i tragitti urbani. Renault Twingo E-Tech Electric punta su abitabilità, per una lunghezza di meno di 3,8 metri, abbinata a un prezzo di lancio senza incentivi di 20.000€
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media
Nel Formula 1 Technology and Media Centre di Biggin Hill, la velocità delle monoposto si trasforma in dati, immagini e decisioni in tempo reale grazie all’infrastruttura Lenovo che gestisce centinaia di terabyte ogni weekend di gara e collega 820 milioni di spettatori nel mondo
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica
Il nuovo gimbal mobile DJI evolve il concetto di tracciamento automatico con tre modalità diverse, un modulo multifunzionale con illuminazione integrata e controlli gestuali avanzati. Nel gimbal è anche presente un'asta telescopica da 215 mm con treppiede integrato, per un prodotto completo per content creator di ogni livello
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-12-2005, 23:26   #1
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
[C e gcc] sezione shared in immagine ELF

salve, è possibile col gcc creare gestire e modificare nomi e attributi delle sezioni di un'immagine ELF di un programma C? quello che mi interessava fare era creare (su Linux) uno shared object che abbia una sezione di dati condivisa; che direttive dovrei usare?

grazie.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 01-01-2006, 19:11   #2
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
dal numero di risposte mi pare di capire che non si possa
e come faccio a fare la stessa cosa però usando il MinGW e volendo produrre un file PE? in altre parole, qual è l'equivalente MinGW di #pragma data_seg? grazie
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2006, 01:59   #3
okay
Senior Member
 
Iscritto dal: Feb 2002
Messaggi: 906
Secondo me (fino a che qualcuno non me lo dimostra) il comp msvc è il migliore.

Riguardo l'efficienza di gcc con il C è buona mentre non lo sono per il C++.

Questo è un buon esempio con il comp msvc
http://www.twork.it/work/Oki_DataSegs.zip

Function Forwarding:
#pragma comment (linker, "/export:Func1=Dll.OtherFunc");
(Ho cercato una cosa simile con gcc ma non l'ho trovata)

Preferisco esportare con .def

Ti faccio un esempio di file .DEF che fa la stessa cosa di quella pragma li:

;Esempio file def

LIBRARY "blabla"

EXPORTS

func_uno mx_sock.altra_func_1 @23
func_due mx_sock.altra_func_2 @45 PRIVATE

senza usare i pragma.

W win il migliore

Edit: cionci usa il ming chissà se ne sà qualcosa
okay è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2006, 10:09   #4
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da 71104
quello che mi interessava fare era creare (su Linux) uno shared object che abbia una sezione di dati condivisa
...cioè?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2006, 13:52   #5
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da ilsensine
...cioè?
lascia perdere, ho scoperto per certo che non si può
(il formato ELF non ha sezoni condivise tra processi)

cambio la domanda:
mi interessava sapere come fare col gcc (sia col MinGW sia col gcc di Linux) a creare un'immagine PE (un programma per Windows insomma) contenente una sezione shared, ovvero una sezione che sia mappata sulle stesse pagine fisiche in tutti i processi in cui il modulo viene caricato (sia esso un exe, una dll, un ocx, una qualsiasi altra cosa); naturalmente nel codice dovrò fare in modo di sincronizzare gli accessi al contenuto della sezione.

e poi più in generale mi interessava sapere come faccio (sempre col gcc) a gestirmi a piacere i nomi e gli attributi delle sezioni; cioè, detto in parole poverissime, qual è l'equivalente GNU di #pragma data_seg???
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2006, 13:55   #6
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
hum, sta a vedere che hanno messo #pragma data_seg pure nel MinGW...
ora provo, non si sa mai dovesse funzionare...
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2006, 14:07   #7
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
---___---'''

va in crash il linker


help please come faccio???
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2006, 14:51   #8
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Quote:
Originariamente inviato da 71104
lascia perdere, ho scoperto per certo che non si può
(il formato ELF non ha sezoni condivise tra processi)
Forse perché sarebbe una piccola fonte di problemi di sicurezza?

Puoi gestire un piccolo segmento condiviso (ipc o in mmap su un file) tramite una funzione constructor della tua libreria, così da avere almeno un pò di controllo su chi può scrivere sul segmento e chi no...io farei così, se deve essere "trasparente" all'applicazione...
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2006, 15:04   #9
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da ilsensine
Forse perché sarebbe una piccola fonte di problemi di sicurezza?
mumble non ci avevo mai pensato, però c'è anche da dire che una sezione shared è una forma di IPC, e quindi i programmi in genere non ci vanno a scrivere dati sensibili (tipo password), cioè ci scrivono dati partendo dall'assunto che chi legge è "unreliable"; per fare un paragone Linux: metti che due processi comunicano tramite named pipe (fifo); chi scrive chiaramente non scrive dati sensibili (oppure li scrive ma non in chiaro), perché chi legge potrebbe non essere il processo aspettato.

edit: aggiungi anche che un processo per poter leggere i dati della sezione condivisa deve aver necessariamente caricato il modulo che la contiene, sia esso un exe o una dll o qualsiasi altra cosa: considerando che i files sono protetti dal sistema di sicurezza di Windows NT direi che comunque una certa protezione c'è.

per esempio, mettiamo che io ho due utenti sul mio sistema NT: Administrator e Utonto; Utonto viene usato per accedere ad Internet e per lavorare sui documenti (immagini, doc di Word, slides, ecc.) e per alcune cartelle ha accesso in sola lettura o esecuzione, ma non in scrittura (diciamo le cartelle C:\WINDOWS e C:\Program Files); Administrator invece ha accesso su tutto quanto e viene usato per la manutenzione del sistema (es. installazione / rimozione di programmi).

mettiamo che Utonto andando in Internet con IE (male male ) si becca un virus: diciamo che si tratta di un buffer overflow di IE, quindi il codice malizioso viene eseguito nel processo iexplore.exe; contemporaneamente sta girando un programma importante sotto l'account di Administrator, e si da il caso che ce ne sia più istanze e che comunichino con una sezione shared presente nell'eseguibile; il codice malizioso per poter leggere e/o modificare la sezione shared deve poter caricare il modulo che la contiene, che si trova in C:\Program Files oppure in C:\WINDOWS oppure ancora in C:\WINDOWS\SYSTEM32, e infatti lo carica senza problemi perché gli accessi in lettura ed esecuzione ce li ha anche Utonto, e infatti l'esempio non calza solo che dopo aver scritto tutto sto popo' di roba non mi va di cancellarlo.

edit2: bella pe' Linux.

Ultima modifica di 71104 : 02-01-2006 alle 15:12.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2006, 15:13   #10
ilsensine
Senior Member
 
L'Avatar di ilsensine
 
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
Ehm no; file, pipe e oggetti IPC hanno controllo sui permessi. Non puoi ad es. leggere da un pipe se il processo non è in grado di aprirlo con i privilegi in lettura.

Usando un constructor+mmap puoi facilmente ottenere il pezzo condiviso che ti serve; vuoi che ti posto un esempio?
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al
andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12
ilsensine è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2006, 15:14   #11
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
al contrario, siccome le named pipes suppongo siano sempre sono soggette al sistema di sicurezza (essendo dei files), immagino che sia possibile proteggerle in maniera tale da impedire anche la lettura a processi estranei, e quindi le fifo non danno problemi di sicurezza. ma LOL...

edit: ecco, hai postato prima che io postassi questo post
no thx, l'esempio non mi serve: il fatto delle sezioni shared mi serviva per Windows, non per Linux; mi serve di generare delle immagini PE col gcc avendo controllo su nomi e attributi delle sezioni (è per un lavoro open source che sto facendo con DanieleC88).

e in particolare oltre a definire sezioni shared (ma ci sto un po' ripensando ) mi serviva di poter definire quali sezioni debbano essere paginabili e quali no.

Ultima modifica di 71104 : 02-01-2006 alle 15:17.
71104 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Renault Twingo E-Tech Electric: che prezzo! Renault Twingo E-Tech Electric: che prezzo!
Il cuore digitale di F1 a Biggin Hill: l'infrastruttura Lenovo dietro la produzione media Il cuore digitale di F1 a Biggin Hill: l'infrast...
DJI Osmo Mobile 8: lo stabilizzatore per smartphone con tracking multiplo e asta telescopica DJI Osmo Mobile 8: lo stabilizzatore per smartph...
Recensione Pura 80 Pro: HUAWEI torna a stupire con foto spettacolari e ricarica superveloce Recensione Pura 80 Pro: HUAWEI torna a stupire c...
Opera Neon: il browser AI agentico di nuova generazione Opera Neon: il browser AI agentico di nuova gene...
I 6 migliori smartphone da acquistare su...
iPhone Air 2 è già in cant...
OnePlus 15, in Europa sarà uguale...
Portal X, un nuovo modo per controllare ...
Con Satispay ora si può pagare in...
Sora sbarca anche su Android: una nuova ...
Vibes sbarca in Europa: Meta sfida TikTo...
Tesla, approvato il pacchetto da 1.000 m...
Rockstar posticipa GTA 6 a novembre 2026...
Snap e Perplexity unite: dal prossimo an...
La Cina dice addio a NVIDIA? Il governo ...
Microlino, simbolo italiano della mobili...
Apple disattiverà la sincronizzaz...
Google lancia l'allarme: attenzione ai m...
Primo test drive con Leapmotor B10: le c...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 07:35.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v