Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Con la prima rete 5G Standalone attiva in Italia, WINDTRE compie un passo decisivo verso un modello di connettività intelligente che abilita scenari avanzati per imprese e pubbliche amministrazioni, trasformando la rete da infrastruttura a piattaforma per servizi a valore aggiunto
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro punta a diventare uno dei riferimenti assoluti nel segmento dei camera phone di fascia alta. Con un teleobiettivo Hasselblad da 200 MP, una batteria al silicio-carbonio da 7500 mAh e un display da 6,78 pollici con cornici ultra ridotte, il nuovo flagship non teme confronti con la concorrenza, e non solo nel comparto fotografico mobile. La dotazione tecnica include il processore MediaTek Dimensity 9500, certificazione IP69 e un sistema di ricarica rapida a 80W
DJI Romo, il robot aspirapolvere tutto trasparente
DJI Romo, il robot aspirapolvere tutto trasparente
Anche DJI entra nel panorama delle aziende che propongono una soluzione per la pulizia di casa, facendo leva sulla propria esperienza legata alla mappatura degli ambienti e all'evitamento di ostacoli maturata nel mondo dei droni. Romo è un robot preciso ed efficace, dal design decisamente originale e unico ma che richiede per questo un costo d'acquisto molto elevato
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 15-11-2009, 19:40   #1
M4rk191
Senior Member
 
L'Avatar di M4rk191
 
Iscritto dal: Sep 2008
Messaggi: 1271
Codice offuscato

Sono venuto a conoscenza del codice offuscato, purtroppo non trovo molte informazioni in rete e ho deciso di chiedere spiegazioni a voi.
So che si tratta di codice tipicamente scritto in C, allo scopo di confondere il lettore. So che esiste anche del codice Assembly offuscato. Quello che mi chiedo è in cosa consista l'offuscamento del codice; mi spiego, si tratta di scrivere il codice utile in maniera da renderne difficile l'interpretazione, o si tratta di scrivere porzioni non strettamente utili di codice insieme al codice utile in modo da renderne difficile la lettura?

A cosa serve offuscare il codice?
Eseguendo il reverse engineering di un binario ottenuto dalla compilazione di codice offuscato, si ottiene codice offuscato?
Se no, dov'è il vantaggio dell'offuscamento del codice?
__________________
MacBook 6,1|2,26 Ghz C2D|2GB 1067 Mhz DDR3|GeForce 9400M|Mac OSX 10.6.2
M4rk191 è offline   Rispondi citando il messaggio o parte di esso
Old 15-11-2009, 22:09   #2
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Succede principalmente per due motivi. Il primo è che si fanno delle gare per vedere chi riesce a tirare fuori programmi funzionanti aventi codice offuscato in modo "bello" (tipo che vengono fuori disegni, simmetrie o robe simili).

Il secondo motivo è che a volte i programmatori sono talmente scarsi nello scrivere codice, che gli viene fuori offuscato in maniera naturale. E questo dipende molto anche dal linguaggio di programmazione. Il C ti può portare a scrivere codice così compatto che diviene poco o per nulla leggibile. Poi ci sono linguaggi come Perl che sono naturalmente illeggibili.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 15-11-2009, 23:19   #3
kurts
Senior Member
 
L'Avatar di kurts
 
Iscritto dal: Oct 2009
Città: Varese
Messaggi: 307
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Succede principalmente per due motivi. Il primo è che si fanno delle gare per vedere chi riesce a tirare fuori programmi funzionanti aventi codice offuscato in modo "bello" (tipo che vengono fuori disegni, simmetrie o robe simili).

Il secondo motivo è che a volte i programmatori sono talmente scarsi nello scrivere codice, che gli viene fuori offuscato in maniera naturale. E questo dipende molto anche dal linguaggio di programmazione. Il C ti può portare a scrivere codice così compatto che diviene poco o per nulla leggibile. Poi ci sono linguaggi come Perl che sono naturalmente illeggibili.
lol
kurts è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2009, 02:58   #4
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
offuscare il codice nel senso piu comune dell'espressione non ha la benché minima utilitá pratica, serve solo in quei contest particolarissimi a cui ha fatto riferimento cdimauro.

esistono tuttavia alcune forme di offuscamento che hanno degli scopi di security by obscurity; ne conosco un paio. la prima si fa a livello di codice macchina (non di assembly) ed é attuabile solamente con le architetture Intel o in generale con tutte le architetture che non hanno una dimensione prefissata per le istruzioni (per esempio non é attuabile coi PowerPC); consiste nell'introdurre all'interno del codice macchina dei bytes "a cavolo" che disallineano tutto il codice seguente facendo capire ad un eventuale disassemblatore istruzioni completamente diverse; il motivo per cui invece la CPU esegue le istruzioni giuste é che c'é un JMP relativo che salta al byte giusto. naturalmente un hacker armato di tanta pazienza, dopo aver perso una marea di ore a capire istruzioni totalmente insensate, puó comunque notare quel JMP e quei bytes inutili e capire l'inghippo ed inoltre c'é la controindicazione che a volte le istruzioni dopo un tot si riallineano per caso; ah, e tra l'altro alcuni disassemblatori neanche ci cascano. quindi in definitiva non é un granché come tecnica peró almeno é facilissima da attuare.

l'altra forma di offuscamento, se cosi vogliamo chiamarla, con l'obiettivo della security by obscurity consiste nello scrivere algoritmi di protezione in Brainfuck o qualche altro linguaggio esoterico del genere
a scrivere un interprete di Brainfuck ci vogliono 30 minuti scarsi, a scrivere uno script in Brainfuck da includere nel programma finale ci vuole un po' di piu e per scrivere un altro programma che complica volutamente un programma Brainfuck esistente l'unico limite é la propria fantasia
il risultato é potenzialmente qualche decina di KB di codice Brainfuck che magari il programma finale esegue in pochi secondi, peró se l'hacker é veramente costretto a rompere quell'algoritmo puó dichiarare la resa
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2009, 13:22   #5
gbhu
Senior Member
 
Iscritto dal: Apr 2008
Messaggi: 1242
Io ho sempre saputo che l'offuscamento del codice è una tecnica utilizzata per applicazioni java.
Infatti tale linguaggio viene compilato in uno pseudocodice che consente tramite reverse engineering di riprodurre in modo abbastanza semplice i sorgenti nativi, e questo può non essere gradito.
Per i linguaggi compilati in codice macchina il reverse engineering non è così semplice, mi pare.
gbhu è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2009, 13:43   #6
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Quote:
Originariamente inviato da gbhu Guarda i messaggi
Io ho sempre saputo che l'offuscamento del codice è una tecnica utilizzata per applicazioni java.
Infatti tale linguaggio viene compilato in uno pseudocodice che consente tramite reverse engineering di riprodurre in modo abbastanza semplice i sorgenti nativi, e questo può non essere gradito.
giusto, esiste anche questa forma: offuscare un programma in bytecode significa cambiare tutti gli identificatori che ci sono rimasti dentro in maniera tale che una eventuale decompilazione produca del codice algoritmicamente identico all'originale ma pieno di nomi insignificanti o illeggibili. si fa sia per Java che per .NET.

tra l'altro alcuni offuscatori di bytecode non si limitano all'offuscamento ma cercano anche di ottimizzare il codice ed eliminare parti non necessarie.
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2009, 15:57   #7
M4rk191
Senior Member
 
L'Avatar di M4rk191
 
Iscritto dal: Sep 2008
Messaggi: 1271
Grazie per le risposte, mi avete chiarito i dubbi

Per quanto riguarda il brainfuck, avendo visto qualche pezzo di codice, ho immaginato fin da subito che si sarebbe potuto usare per scrivere codice relativamente sicuro dal punto di vista della leggibilità

Trovo molto ingegnoso l'offuscamento del linguaggio macchina, credo riesca a scoraggiare quasi tutti i tentativi di hacking.

Ho dato un'occhiata la link riguardante i conteste sono rimasto così guardando i codici d'esempio, soprattutto perché non sembrano avere una sintassi corretta. L'ultimo esempio è veramente una cosa pazzesca.

In conclusione, sarà anche inutile, ma sicuramente è molto curiosa quest'attività
__________________
MacBook 6,1|2,26 Ghz C2D|2GB 1067 Mhz DDR3|GeForce 9400M|Mac OSX 10.6.2
M4rk191 è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2009, 20:06   #8
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da fero86 Guarda i messaggi
offuscare il codice nel senso piu comune dell'espressione non ha la benché minima utilitá pratica, serve solo in quei contest particolarissimi a cui ha fatto riferimento cdimauro.
Che non è assolutamente vero.
In .NET è praticamente obbligatorio, pena la divulgazione totale dei sorgenti di un programma. Reflector non perdona.
E ci sono casi in cui viene fatto anche in C++, ad esempio se dai ad un cliente i "sorgenti" per ricompilarsi una libreria, se glieli passassi in chiaro è inutile.
A volte poi ci sono clienti che non pagano per i sorgenti ma che ne hanno bisogno per le certificazioni, ecco che gli dai il contentino e gli giri i codici offuscati (senza soluzione, nè dipendenze), ovvero un pò di file di testo del tutto inutilizzabili.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2009, 20:31   #9
M4rk191
Senior Member
 
L'Avatar di M4rk191
 
Iscritto dal: Sep 2008
Messaggi: 1271
Quote:
Originariamente inviato da tomminno Guarda i messaggi
un pò di file di testo del tutto inutilizzabili.
questo ovviamente è relativo, perché a quanto ho capito, per quanto difficile è sempre possibile risalire al codice sorgente
__________________
MacBook 6,1|2,26 Ghz C2D|2GB 1067 Mhz DDR3|GeForce 9400M|Mac OSX 10.6.2
M4rk191 è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2009, 22:02   #10
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Quote:
Originariamente inviato da tomminno Guarda i messaggi
In .NET è praticamente obbligatorio, pena la divulgazione totale dei sorgenti di un programma. Reflector non perdona.
offuscare l'IL e offuscare il sorgente originale sono due cose diverse, io con quella frase mi riferivo al secondo caso.
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 16-11-2009, 22:04   #11
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
Quote:
Originariamente inviato da M4rk191 Guarda i messaggi
questo ovviamente è relativo, perché a quanto ho capito, per quanto difficile è sempre possibile risalire al codice sorgente
il codice sorgente offuscato é codice sorgente, non c'é nulla a cui risalire. piuttosto si puó dire che la sua comprensione e l'eventuale riuso/abuso di proprietá intellettuale puó richiedere risorse temporali molto piu elevate.
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2009, 08:16   #12
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da fero86 Guarda i messaggi
offuscare l'IL e offuscare il sorgente originale sono due cose diverse, io con quella frase mi riferivo al secondo caso.
Idem.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2009, 09:28   #13
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da fero86 Guarda i messaggi
offuscare l'IL e offuscare il sorgente originale sono due cose diverse, io con quella frase mi riferivo al secondo caso.
Guarda che per offuscare l'IL vengono prima offuscati i sorgenti e poi compilati, per generare un IL incomprensibile se guardato con Reflector o similari.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2009, 10:11   #14
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Lo si può fare anche soltanto a livello di IL.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2009, 10:23   #15
M4rk191
Senior Member
 
L'Avatar di M4rk191
 
Iscritto dal: Sep 2008
Messaggi: 1271
Quote:
Originariamente inviato da fero86 Guarda i messaggi
il codice sorgente offuscato é codice sorgente, non c'é nulla a cui risalire. piuttosto si puó dire che la sua comprensione e l'eventuale riuso/abuso di proprietá intellettuale puó richiedere risorse temporali molto piu elevate.
ovviamente intendevo il codice sorgente originario
__________________
MacBook 6,1|2,26 Ghz C2D|2GB 1067 Mhz DDR3|GeForce 9400M|Mac OSX 10.6.2
M4rk191 è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2009, 10:33   #16
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Lo si può fare anche soltanto a livello di IL.
Solo che così ti perdi la Reflection.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2009, 10:56   #17
vhost87
Senior Member
 
L'Avatar di vhost87
 
Iscritto dal: Apr 2008
Città: Varese
Messaggi: 406
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Lo si può fare anche soltanto a livello di IL.
Si ma .Net lo fa da sorgente in su questo intende l'utente.
__________________
IT Developer at Hardware Upgrade S.r.l.
self.love(this.me());
vhost87 è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2009, 14:08   #18
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Solo che così ti perdi la Reflection.
Se non erro ci sono dei tool di offuscamento del bytecode per Java che ne tengono conto. Per l'IL penso si possa realizzare qualcosa di simile.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2009, 19:10   #19
vhost87
Senior Member
 
L'Avatar di vhost87
 
Iscritto dal: Apr 2008
Città: Varese
Messaggi: 406
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Se non erro ci sono dei tool di offuscamento del bytecode per Java che ne tengono conto. Per l'IL penso si possa realizzare qualcosa di simile.
Ma qui si parla di .NET...
__________________
IT Developer at Hardware Upgrade S.r.l.
self.love(this.me());
vhost87 è offline   Rispondi citando il messaggio o parte di esso
Old 17-11-2009, 19:33   #20
||ElChE||88
Senior Member
 
Iscritto dal: Dec 2003
Messaggi: 4907
Quote:
Originariamente inviato da michele.broggi Guarda i messaggi
Ma qui si parla di .NET...
E secondo te IL cos'è?
||ElChE||88 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi Wind Tre 'accende' il 5G Standalone in Italia: s...
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
Il meglio di Amazon in 2 minuti: tira ar...
ECOVACS risponde a Eureka e dimezza il p...
Durissimo colpo per Nintendo: l'ufficio ...
Scope elettriche al minimo storico su Am...
Blue Jay e Project Eluna: robotica e AI ...
Scede a 949€ il Samsung Galaxy S25 Ultra...
Blue Yeti Nano in super offerta su Amazo...
Netflix sta preparando un'offerta per Wa...
Prezzo impossibile, è sceso ancor...
Torna il migliore dei mini PC economici:...
USA, via libera all'uso di plutonio mili...
Tutte le tappe verso l'euro digitale sec...
Nikon Comedy Wildlife 2025: le immagini ...
Il telescopio spaziale James Webb ha cat...
Tesla Roadster? Il re di ChatGPT chiede ...
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: 11:14.


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