Login
Username:

Password:

Remember me



Lost Password?

Register now!
Main Menu
Who's Online
1 user(s) are online (1 user(s) are browsing Forum)

Members: 0
Guests: 1

more...

Browsing this Thread:   1 Anonymous Users



(1) 2 »


Ingegneria inversa

Joined:
5/10 9:10
Group:
Member
Posts: 11
Offline
Ciao a tutti, vorrei capire bene la questione,
riguarda decisamente AROS (nello specifico ABIv1 68k) e quello che si può o non può fare.
Sicuramente se ne sarà parlato in passato abbondantemente ma un riassunto può far comodo.

Dato che i sorgenti di AmigaOS non sono disponibili non resta che 'emulare' il funzionamento delle sue funzioni.
Ma fino a dove ci si può spingere?

Fin da quando ho avuto un Amiga fra le mani (A500, Kickstart 1.2, 1987..) ho 'ravanato' fra le routine in ROM per capire quello che succedeva.
Di alcune ne ho fatto il resourcing e con la mia prima Blizzard con MAPROM mi sono patchato varie cose (ben prima che ci fosse BlizKick e compagnia ). Mi ero fatto anche un degrader personalizzato che 'simulava' un A500 KS1.3 attraverso l'MMU. Bei tempi, manualone spedito dall'america (gratis!) dalla Motorola e vai di prove con le tabelle di traslazione.

Copio/incollo da Wikipedia:
Stato legislativo dell'ingegneria inversa.
La retro ingegneria informatica, applicata cioè a sistemi software o hardware con scopi di interoperabilità, per esempio al fine di supportare formati di file o periferiche hardware non documentati, è prevalentemente ritenuta legale, sebbene i detentori spesso facciano valere aggressivamente i loro brevetti. Tuttavia, poiché nell'Unione europea la legge per i brevetti software non è mai stata approvata, si applica la legge del diritto penale informatico locale. Nel caso specifico italiano, la reingegnerizzazione a scopo di interoperabilità con altri sistemi (e solo a questo scopo) è un atto pienamente lecito ai sensi dell'art. 64 della legge 633 del 22 aprile 1941, come modificata dall'art. 5 del D. Lgs. 518/1992, sia in senso "leggero" (qualora egli compia tali atti durante operazioni di caricamento, visualizzazione, esecuzione, trasmissione o memorizzazione del programma che egli ha il diritto di eseguire) che in senso di decompilazione vera e propria, ma solo al fine di permettere l'interoperabilità del software con altri programmi. L'accezione di software è estesa per analogia a concetti informatici quali il formato di un file o la struttura interna di un protocollo.

Ho sottolineato con il corsivo i punti salienti.
Ho visto che in AROS (davo un'occhiata ad exec, ma di sicuro in tanti altri componenti) piccole parti non esistono.
Senza contare il trilione di patch per >3.1 che circolano e che potrebbero essere inserite.
Anche alcuni contenuti delle ROM delle Blizzard o altre acceleratrici potrebbero essere integrate (semplice esempio la 'fast ram' senza bisogno dell' expansion.library)

Quindi:
- fino a quanto ci si può spingere nell'ispirarsi al contenuto delle ROM originali?
- cosa dimostra che non ho 'copiato'?
- se riscrivo una routine, la miglioro e la pubblico, diventa a tutti gli effetti 'open source'?

Prendo ad esempio alcune librerie migliorate disponibili (icon.library, graphics.library, dos.library, etc.) che sono liberamente scaricabili e con cui ci si può flashare una ROM o caricare su WinUAE (alcune completamente open, altre solo i binari).

Sono solo tollerate o sono legali?
Anche perché se si guardano i sorgenti (o i decompilati) sono palesemente codice Resource-ato e modificato.

Scusate la lunghezza eccessiva ma mi volevo spiegare bene

Ciao!
ross

Posted on: 5/12 5:05
Transfer the post to other applications Transfer


Re: Ingegneria inversa

Joined:
2013/4/21 1:35
From Germany
Group:
Member
Posts: 275
Offline
Molto velocemente perché ho pochissimo tempo (tanto per cambiare).

Non c'è sostanziale differenza fra andare a guardare il codice sorgente e il disassemblato del codice oggetto (derivato dalla compilazione del precedente): si tratta sempre di guardare il codice.

Ciò che cambia è "soltanto" (lo so, non è così semplice la questione, ed è per questo che metto le virgolette) la forma con cui il frutto del lavoro degli sviluppatori di quell'applicazione viene rappresentato.

Sì, sappiamo che in Italia il reverse engineering è consentito in alcune forme (come in altri paesi. Non in paesi "chiave" come gli USA, purtroppo), per cui in linea teorica potresti disassemblare le ROM del s.o. di Amiga (scusami, ma "AmigaOS" continuo a considerarlo un artefatto postumo a cui si sono attaccati alcune aziende e i loro seguaci integralisti) per poi creare delle patch per migliorarlo in alcuni aspetti.

Ciò è certamente legale in Italia, ma appunto può non esserlo in altri paesi. Dunque il tuo contributo avrebbe un'audience troppo limitata, per cui te lo sconsiglio.

Per farti un altro esempio, il progetto InfoZip è stato realizzato eseguendo il reverse engineering non di PkZip, ma degli archivi ZIP (dunque i soli DATI. Il codice non c'entra niente!) che quest'ultimo produceva. Dunque analizzando i dati sono stati in grado di tirare fuori autonomamente le strutture dati, e poi l'algoritmo di compressione.

Questo è perfettamente legale. Com'è anche perfettamente legale l'approccio degli sviluppatori di AROS che, partendo dalla documentazione delle API, sono arrivati alla completa riscrittura, da zero, del s.o. di Amiga.

E' il classico sviluppo "clean room", insomma, che evita alla radice la possibile "contaminazione", che potrebbe poi portare a enormi rogne di carattere legale.

Ed è l'approccio che ti consiglio, e che seguirei anch'io, visto che da un po' di mesi penso (e solo quello, purtroppo, mi resta, vista la cronica carenza di tempo) a possibili soluzioni per progetti relativi all'esecuzione di codice 68K per Amiga.

Ed è anche il motivo per cui, pur scaricando i sorgenti di WinUAE (quando viene rilasciata una nuova versione ufficiale), li lascio lì a "prender la polvere". Non li guardo nemmeno perché potrei avere problemi se poi dovessi realizzare qualcosa di simile, visto che WinUAE usa una licenza GPL, che è virale.

Dunque rimuovo a monte ogni problemi: non guardo il codice. Se mi serve qualcosa, me la riscrivo da zero, e sono tranquillissimo che nessuno potrà rompermi le scatole.

P.S. Invero ho problemi dello stesso tipo con AROS. La licenza, se non ricordo male, è un "virale", anche se non ai livelli della GPL. Questo penso che potrebbe crearmi problemi se volessi riscrivere alcuni API del s.o. di Amiga per il progetto di cui sopra (esecuzione di binari 68K).

Posted on: 5/12 23:48
Transfer the post to other applications Transfer


Re: Ingegneria inversa

Joined:
5/10 9:10
Group:
Member
Posts: 11
Offline
Grazie cdimauro dell'intervento articolato.

Ma devo dissentire in alcuni punti. Tu dici:
Non c'è sostanziale differenza fra andare a guardare il codice sorgente e il disassemblato del codice oggetto (derivato dalla compilazione del precedente): si tratta sempre di guardare il codice. ---
...è anche perfettamente legale l'approccio degli sviluppatori di AROS che, partendo dalla documentazione delle API, sono arrivati alla completa riscrittura, da zero, del s.o. di Amiga.


C'è una enorme differenza tra l'avere il codice sorgente e il disassemblato!
Quando decompili sei costretto a capire cosa il programmatore originale voleva fare, devi ragionare su come ha usato le strutture dati e questo ti impone di riconsiderare a modo tuo se c'è un metodo migliore per risolvere l'algoritmo.
Se si ragiona in questo modo allora tutte le patch per i binari sarebbero in qualche modo illegali (a parte, per assurdo!, qualche crack dove viene modificato un semplice controllo condizionale).
Logico che se usassi IRA o Resource per disassemblare/riassemblare pari-pari allora avresti ragione al 100%.. ma ti assicuro che se ne accorgerebbero tutti.
Si trovano su Aminet patch che praticamente fanno l'opposto.. tengono (come scusa!) qualche byte dell'originale e in pratica sostituiscono in toto il codice.
Da quanto ho capito lo stesso AROS non usa GIT per evitare problemi con la legislazione americana (e non mi si venga a raccontare che AROS non ha 'guardato' i binari, non sarebbe stato possibile nemmeno il boot altrimenti..).
La stessa legislazione americana non credo sia così 'integralista' altrimenti non avremmo mai avuto i PC compatibili e tutto il mondo 'wintel'...
E se anche fosse quello il problema, siamo in Europa, gran parte della scena Amiga è in Europa, seguiamo le leggi Europee

E' vero come dici tu che AROS ha una licenza virale ma non credo che ti fustigherebbero in piazza se 'prendessi spunto' da loro. Puoi usare i loro sorgenti pari pari e riusarli altrove, basta mantenere la licenza, a me tanto basta.
E non mi farei nemmeno troppe paranoie nel 'guardarne' i sorgenti: nessuno dice che bisogna copiare, ma imparare si! Altrimenti saremmo ancora tutti a inventare da capo le ruote dei carri.. Tutto quello che alimenta le pubblicazioni scientifiche si basa su quello: prendere spunto, dare una base alle tue idee a creare qualcosa di migliore.
Considera poi un altro punto secondo me fondamentale: qua non si tratta di sfruttare nulla a livello commerciale (forse quando parlavi del tuo progetto miravi a quello), ma di dare ordine a tutto quello che è disponibile per Amiga 68k sotto forma di contributi liberi, miglioramenti, patch, binari e sorgenti.

La mia idea è partire da Exec e da quella che è la base di ogni sistema: la gestione della memoria.
Nei sorgenti di AROS c'è un'implementazione (mi pare off di default) di TLSF e si può trovare in rete una patch binaria per AOS in asm 68k (non ho trovato i sorgenti).
Ho scaricato la pubblicazione accademica originale: quando ho un po' di tempo e voglia mi metto a scriverne una versione 020+ pensata per Amiga.
Dopo, e solo dopo, potrei dare un'occhiata a come è stata implementata da altri e 'aggiustare' il tiro.

In ogni caso stiamo sempre parlando di questioni di lana caprina, ogni buon programmatore conosce una regola d'oro: ci si mette meno tempo a riscrivere codice proprio (dato un buon algoritmo di base) che cercare di 'copiare' qualcosa scritto da altri
Per me almeno è così.

Ci sarebbe altro da aggiungere in effetti, ma un papiro alla volta basta

Ciao!
ross

Posted on: 5/14 4:59
Transfer the post to other applications Transfer


Re: Ingegneria inversa

Joined:
2013/4/21 1:35
From Germany
Group:
Member
Posts: 275
Offline
Purtroppo è difficile evitare papiri (causa troppa carne al fuoco... ed è carne molto interessante. ), ma eviterò almeno i quote per cercare di snellire la lettura.

Premetto che non sono iscritto né ad EAB né al forum del progetto Apollo, ma più o meno li seguo (in realtà di EAB solo alcune sezioni: quelle che m'interessano), come seguo pure Amigaworld (ma ormai da quasi 2 anni a sola lettura), per cui sono sostanzialmente al corrente del fermento che c'è attorno al mondo Amiga/68K, ho letto pure i tuoi messaggi, e so quel che vorresti fare.

IMO ciò su cui dovremmo appurare, riguardo al tema "codice sorgente vs oggetto", non è tanto ciò che pensiamo o vorremmo, ma quanto stabilisca la legge. La legge tutela già, nelle varie forme espresse dalla normativa dei vari stati, il codice oggetto, a cui fa il paio, eventualmente (perché non tutti lo prevedono) la possibilità di suo reverse engineering.

E' chiaro che fra oggetto e sorgente c'è differenza, ma se vai di reverse-engineering, la differenza fra i due si assottiglia, fino ad arrivare anche alla possibilità che si annulli. Questo è il motivo per cui, in alcuni paesi, esistono normative che impediscono questa pratica: per proteggere il codice nella sua totalità, cioé in tutte le sue forme.

Per cui sì: le patch che nascono dal lavoro di reverse-engineering di un codice oggetto rimangono illegittime nei paesi in cui esiste la normativa che lo vieta.

E poco importa se in Europa (ma in realtà non è tutta l'Europa: mi pare che il reverse-engineering non sia legale in tutti i paesi dell'unione. Forse ti confondi coi brevetti sul software, che al momento non sono previsti in tutta l'UE) ciò sia lecito: se un certo binario che, su questa base, è stato realizzato nel nostro territorio, e dunque ne risulta lecito l'utilizzo dalle nostre parti, rimane illegale nei paesi in cui la legge vieta questa pratica.

Per cui lo puoi fare, senz'altro, ma taglierai un bel po' di possibili utenti. Negli USA e altri paesi magari non c'è la stessa audience amighista che in Europa, ma da quel che ho visto in tutti questi anni non è certo una miseria; tutt'altro.

Riguardo AROS, non so se parte del suo codice sia frutto di reverse-engineering. Qui ho letto diverse volte che è stato realizzato con la pratica della "clean room". Tanto che, alla notizia della pubblicazione fraudolenta dei sorgenti del s.o. di Amiga, ci sono state ferme e decise dichiarazioni di alcuni sviluppatori di AROS che non vogliono avere nulla a che vedere con quei sorgenti.

E, restando sul tema, personalmente i problemi che ho sono con quelli con le licenze virali, che ritengo liberticide. Coi sorgenti "pubblici/pubblicati" vorrei che chiunque potesse farci quello che vuole, senza pesanti vincoli (va bene lasciare un README con la licenza originale, insomma). Infatti quando ho realizzato un fork di Python (WPython), ho rilasciato tutto con licenza BSD. Questo per dire che non sono contro l'open source, ma solo con queste licenze che, da sviluppatore in particolare, mi stanno indigeste.

Per cui se leggessi quelli di AROS non vorrei poi avere problemi con eventuali miei progetti futuri. Al momento non ho tempo (e nemmeno voglia, onestamente. Sono uscito dalla scena Amiga, che personalmente trovo lacerante e velenosa, e... mi sento meglio), per cui il problema non si pone.

La scienza è un altro paio di maniche. Onore alle pubblicazioni per la diffusione della conoscenza, ma c'è da dire che prima di arrivarci in genere vengono anche effettuate richieste di brevetti, proprio per tutelare il lavoro che è stato fatto dai ricercatori & dalle aziende. Quindi la generosità al 100%... non c'è.

Infine, per tornare al tuo problema, ciò che vuoi realizzare è certamente possibile (lo so che in AROS è già implementata la TLSF, ma su 68K è disabilitata per questioni di retrocompatibilità),ma eventuali tue patch si possono benissimo realizzare tramite il famigerato (nel senso che ha aspetti sia positivi sia negativi) meccanismo SetFunction.

Dunque senza andare di reverse-engineering, creando codice ex-novo, e rilasciando il tutto in maniera perfettamente legale (in tutti i paesi del mondo, intendo).

P.S. La regola d'oro a volte è difficile da attuale. Anch'io tante volte faccio meno fatica e perdo meno tempo riscrivendo da zero una cosa anziché cercare di capire quello che è stato già scritto, ma serve almeno una buona documentazione. Cosa che, purtroppo, non sempre è presente. Se prendi gli autodoc di AROS o della Commodore, in tanti casi non sono sufficienti a capire immediatamente ciò che la specifica API implementa. L'assenza di esempi, inoltre, complica notevolmente il tutto. Ma capisco che non posso certo pretendere di avere documentazione ai livelli Microsoft / MSDN.
Per cui so già che, se finalmente avrò un po' di tempo (e voglia!!!) per passare dalle idee all'implementazione, dovrò sputare sangue perché gli autodoc non mi basteranno...

Posted on: 5/14 7:37
Transfer the post to other applications Transfer


Re: Ingegneria inversa

Joined:
2013/4/21 1:35
From Germany
Group:
Member
Posts: 275
Offline
Vorrei che una cosa fosse chiara.

Non ho alcun problema con chi sceglie licenze virali. Del suo codice può fare quello che vuole, visto che è, per l'appunto, suo.

Come mia è la scelta di non volerci avere niente a che fare, perché, "semplicemente", non voglio avere rogne.

Tutto qui. :)

Posted on: 5/14 10:55
Transfer the post to other applications Transfer


Re: Ingegneria inversa

Joined:
5/10 9:10
Group:
Member
Posts: 11
Offline
Gasp.. mi hai smontato
Ma mica mi arrendo, un compromesso lo si può trovare

Grazie degli interventi, sono stati molto stimolanti.
Mi piacerebbe sentire anche l'opinione di altri al riguardo (o altro da parte tua se vuoi!).

Ciao,
ross

PS: a proposito.. qualcuno mi deve far capire, con parole molto convincenti, che differenza c'è tra usare SetFunction e patchare la ROM con le proprie funzioni. Io non ci arrivo

Posted on: 5/15 13:41
Transfer the post to other applications Transfer


Re: Ingegneria inversa

Joined:
2016/8/16 0:09
Group:
Member
Posts: 321
Offline
Thanks for the interesting discussion, but it was a bit clouded for me because i had to use translators.

Quote:

Grazie degli interventi, sono stati molto stimolanti.
Mi piacerebbe sentire anche l'opinione di altri al riguardo (o altro da parte tua se vuoi!).

roughly translated into:

Quote:

Thanks for the interventions, they were very stimulating.
I would also like to hear the opinion of others about it (or else on your part if you want!).


Perhaps it is possible for you to ask the same in English ?

There are capable (AROS) developers that can perhaps help you further on matters regarding definition of clean room implementations, conflicting laws and other related topics that came along in the discussion.

Of course, i understand why the discussion is written in your native tongue, as differences in interpretation can be subtle and are sometimes very difficult to translate.

Posted on: 5/15 14:22
Transfer the post to other applications Transfer


Re: Ingegneria inversa

Joined:
5/10 9:10
Group:
Member
Posts: 11
Offline
Hi origami, you're very brave venturing in this section

Quote:
Of course, i understand why the discussion is written in your native tongue, as differences in interpretation can be subtle and are sometimes very difficult to translate.

Yes, this is the issue: subtleties that are understandable only with in-depth knowledge of the language, which I do not have for english..
I'm a self-taught and everyone can see my limitation.
Often in another forum (EAB) I write things incorrectly and I'm ashamed.

No problems if some volunteer wants to try to translate, we can try to fix misplaced words

Quote:
..on matters regarding definition of clean room implementations, conflicting laws and other related topics..

Yes, you got the point.

Ciao!
ross

PS: and yes, 'ciao' is likewise 'hi' and 'bye'

Posted on: 5/15 15:03
Transfer the post to other applications Transfer


Re: Ingegneria inversa

Joined:
2013/4/21 1:35
From Germany
Group:
Member
Posts: 275
Offline
I've created a topic in English here: http://aros-exec.org/modules/newbb/vi ... id=104379#forumpost104379

ross, we can continue there, but if you have problems I can translate something here. Just let me know.

Now I've to (quickly) go to work. Have a nice day, guys.

Posted on: 5/15 22:30
Transfer the post to other applications Transfer


Re: Ingegneria inversa

Joined:
2013/4/21 1:35
From Germany
Group:
Member
Posts: 275
Offline
ross, abbiamo chiarito nel thread di cui sopra.

In sintesi, puoi contribuire ad AROS, ma:

"preferably things are implemented from scratch using publicly available information.

using things like ReSource to generate code and import it is definitely not ok, even if such generated binaries get "accepted" in places such as the aminet."

Quindi se il tuo contributo arriva da un'operazione di reverse-engineering, può andare bene a patto che non ricopi quel codice.

Dunque se generi codice nuovo dopo che hai capito come funziona quello originale -> OK!

Posted on: 5/18 21:53
Transfer the post to other applications Transfer



(1) 2 »



You can view topic.
You cannot start a new topic.
You cannot reply to posts.
You cannot edit your posts.
You cannot delete your posts.
You cannot add new polls.
You cannot vote in polls.
You cannot attach files to posts.
You cannot post without approval.

[Advanced Search]


Search
Top Posters
1 paolone
paolone
4364
2 magorium
magorium
4095
3 phoenixkonsole
phoenixkonsole
3892
4 nikolaos
nikolaos
3694
5 deadwood
deadwood
2923
6 ncafferkey
ncafferkey
2648
7 mazze
mazze
2214
8 clusteruk
clusteruk
2111
9 Kalamatee
Kalamatee
2024
10 damocles
damocles
1789
© 2004-2017 AROS Exec