Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34
A Londra, per il trentennale dei Toughbook, Panasonic ha presentato il tablet G3 e il 2-in-1 34. Con Jon Tucker, a capo dell'ingegneria europea, abbiamo parlato di ciò che non si vede: batterie, antenne, porte seriali e accorgimenti nati sul campo
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione
realme C100x scommette tutto, forse troppo, sulla batteria da 7500 mAh e sulla certificazione ArmorShell per farsi notare nella fascia più economica del mercato: lo abbiamo messo alla prova per capire a chi è rivolto questo smartphone che sacrifica un po' prestazioni, display e fotocamera per offrire l'autonomia migliore possibile a un prezzo decisamente contenuto
Star Wars Zero Company è l'erede di XCOM 2
Star Wars Zero Company è l'erede di XCOM 2
Bit Reactor porta nell’universo di Star Wars una struttura tattica che richiama apertamente XCOM 2, ma la arricchisce con legami tra i personaggi, progressione ruolistica, gestione della base e un sistema di combattimento costruito attorno a tre Punti Azione e alle risorse condivise della squadra
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-12-2005, 22: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, 18: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, 00: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, 09: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, 12: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, 12: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, 13: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, 13: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, 14: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 14:12.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 02-01-2006, 14: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, 14: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 14:17.
71104 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Panasonic, 30 anni di Toughbook: la "Bibbia" di mille regole dietro i nuovi G3 e 34 Panasonic, 30 anni di Toughbook: la "Bibbia...
realme C100x, lo smartphone economico con la batteria da 7500 mAh. La recensione realme C100x, lo smartphone economico con la bat...
Star Wars Zero Company è l'erede di XCOM 2 Star Wars Zero Company è l'erede di XCOM ...
Test ride Can-Am Origin: la moto elettrica che fa dimenticare il motore a scoppio (ma occhio all'autonomia) Test ride Can-Am Origin: la moto elettrica che f...
Logitech G325, G305 e G316 X: il tris per chi non vuole rinunciare a nulla, spendendo poco Logitech G325, G305 e G316 X: il tris per chi no...
GTA 6, la mappa di gioco sarà div...
Tesla brevetta una 'Electric Fan Car' co...
Chi usa l'IA al lavoro: uno su tre lo fa...
Mac mini M5 Pro a 1.897€: 307 GB/s di ba...
QNAP presenta TS-432XeU, un nuovo NAS da...
Dreame Aqua10 Roller a 479€: nuovo minim...
Apple ha rinviato il piano di taglio di ...
Revolut mette nero su bianco i requisiti...
Dreame svuota il magazzino per il Prime ...
Un utente Reddit perde un banco di DDR4 ...
TV Amazon Ember da 32, 40, 43 e 50'' in ...
Pixel 11a trapela in anticipo: design qu...
ECOVACS, sconti fino a 300€ su robot asp...
Modern Warfare 4, tutti i dettagli tecni...
Il Big Mac costa in base al quartiere: M...
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: 12:07.


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