Newsgroup: it.comp.programmare
Titolo: Offuscatori di codice free per C/C++ sotto Win XP

C.D.O. ... c'è qualcosa? Ho trovato veramente poco e
tutto a pagamento. Non mi servono cose zozze,
vorrei, anzi, solo eliminare selettivamente dei
commenti preceduti da appositi tag. O alla peggio,
se non si può, eliminarli tutti.
Non è che sia un dramma scrivermi da me un software
che lo faccia, ma sempre meglio non tentare di
re-inventare la ruota.
grazie!
Apx.
-- 
finalmente su youtube!!!
http://www.youtube.com/watch?v=ephd75TgtAU

 se non si può, eliminarli tutti.
Normalmente, i compilatori C e C++ non inseriscono i commenti 
nell'eseguibile. Puoi citare un caso in cui questo non avviene (ossia ti 
trovi un commento nell'eseguibile generato dal compilatore)?
Non ho mai sentito parlare di offuscatori di codice per C o C++, 
probabilmente perche' il codice risultante e' gia' comunque ottimamente 
offuscato, soprattutto se attivi l'ottimizzazione del codice.
L'unica cosa che puo' richiedere l'offuscamento sono le costanti di 
stringa. Se per esempio scrivi una password o altro testo riservato come 
costante di stringa nel codice sorgente, risulta facilmente leggibile 
dall'eseguibile.
-- 
Carlo Milanesi
http://digilander.libero.it/carlmila

 compilatore)?
Oh, sì lo so benissimo che i commenti vengono
saltati. Per la tesi di dottorato scrissi
l'interprete di un linguaggio e grossomodo cosa
succede lo so. Ma io devo fare un lavoro di cui
vogliono i sorgenti e dopo il quale forse sarò
"rimpiazzato" dopo aver dato il know-how (no, non
posso evitarlo e anzi, mi va bene così per una serie
di ragioni).
Se devo dare i sorgenti, e se i rapporti dovessero
andare male, il che non è detto ma è possibile,
almeno faticassero come schiavi a ricostruire cosa
ho fatto; sto scrivendo in modo depistante al
massimo ma vorrei fare tutto il possibile per
eventualmente far rimpiangere alla committenza di
avermi sostituito :)
ciao!


 avermi sostituito :)
Scriviglielo in Brainfuck o Whitespace ;-) 

tipo questo ? (puoi chiede all'autore)
//*********************************************************************
//
//  generated by RTxMapEditor
//  Redistribution or reuse outside RTxMapEditor is strictly forbiden
//  (c) 2008-2009, janfi67
//
//*********************************************************************
#define ll typedef
#define lb int
#define le void
#define lt EiC_ExeFile
#define la char
#define lw LoadAndExecuteFile
#define l7 unsigned
#define lm logMsg
#define l14_ str
#define li strcpy
#define lv strcat
#define l17 strcmp
#define lr ShowCDProblem
#define ls ClearScreen
#define lp UPGCDEject
#define lq taskDelay
#define l11 main
#define lk if
#define l19_ return
ll lb lc;ll lb l10;ll le*lj;lb lt(lb lu,la* *ld);lj lw(la*l0,la*l16,
lb l22,lb l20,l7 lb l15);lb lm(la*l14_,lb l9,lb l8,lb l6,lb l4,lb l3,
lb l2);lc li(la*lx,la*ly);lc lv(la*lx,la*ly);lb l17(la*l12,la*l5);lc
lr(le);lc ls(le);lc lp(le);lc lq(lb l18);lb l11(lb lu,la* *ld){lc lh=
(0);la*lf[3];la lg[200];la ln[200];la lo[200];la lz[200];lb l13=0;la
l21[200];lj l1=(le* )0;lf[0]=lz;lf[0]=lg;lf[1]=ln;lf[2]=lo;lk((le* )0
==lw(ld[1],"\x55\x50\x47\x2f\x52\x54\x78\x55\x74\x69\x6c\x73\x2e\x6f"
"\x75\x74",8,(-1),0)){lm("\x4c\x6f\x61\x64\x41\x6e\x64\x45\x78\x65"
"\x63\x75\x74\x65\x46\x69\x6c\x65\x20\x65\x72\x72\x6f\x72\x20\x6f\x6e"
"\x20\x25\x73\x20\x42\x55\x49\x4c\x54\x49\x4e\x53\x5f\x46\x49\x4c\x45"
"\x5f\x4e\x4f\x52\x4d\x41\x4c\n",(la* )ld[1],0,0,0,0,0);lr();lp();lq(
2000);ls();lh=(-1);}lk((0)==lh){li(lg,ld[1]);lv(lg,"\x2f\x55\x50\x47"
"\x2f\x4a\x41\x4e\x46\x49\x36\x37\x5f\x53\x43\x52\x49\x50\x54\x2e\x43"
"\x4d\x44");li(ln,ld[1]);li(lo,ld[2]);lk((-1)==lt(3,lf)){lm("\x45\x69"
"\x43\x5f\x45\x78\x65\x46\x69\x6c\x65\x20\x65\x72\x72\x6f\x72\x20\x6f"
"\x6e\x20\x25\x73\n",(la* )lg,0,0,0,0,0);lr();lp();lq(2000);ls();lh=(
-1);}}l19_ lh;}

 //  generated by RTxMapEditor [...]
Ma LOL :) è fantasticamente incomprensibile...
Comunque no, non pensavo proprio a questo. Ho a che
fare con diverse persone intelligenti che sanno
programmare bene e se devo fare una cosa del genere,
credo che provocherei meno irritazione
nell'interrompere i rapporti dicendo che voglio dare
solo le librerie.
Pensavo a qualche intervento "soft" che desse un
ultimo tocco a una strategia diversa. Penso che
tenterò di giocare un gioco un po' sottile mettendo
un po' di false piste qua e là, magari anche
depistando con commenti (in)adatti e facendo fare
giri contorti ai diagrammi di flusso. Anche perché
ci sono intere tabelle di costanti vitali che
vengono generate da un programma mio che ovviamente
non possono pretendere che gli dia, visto che mi
serve per altri lavori. L'insieme di queste cose,
dovrebbe bastare.
Quello che pensavo è di commentare per benino a mio
uso e consumo anche tenendo conto dei depistaggi (in
cui potrei cascare io stesso dopo 6 mesi che non
toccassi il codice, sapete come vanno 'ste cose,
no?) ma lasciare in quel che consegnerò, solo
commenti assolutamente pleonastici che facciano
credere che commento in modo idiota e pleonastico.
Se si disassemblano gli eseguibili, figuriamoci se
un team di ingegneri non riesce a capire cosa fa un
sorgente. Vorrei solo che dicessero "ovviamente ce
l'abbiamo fatta ma a conti fatti non ci è convenuto
fare a meno di Archaeopteryx", magari con qualche
maledizione a me indirizzata, che a quel punto non
potrà farmi altro che piacere.
ciao!


 avermi sostituito :)
Se fossi il committente metterei la chiarezza del codice tra i requisiti 
per continuare o meno un rapporto di lavoro.
E se mi passano codice non commentato la prima cosa che faccio è farlo 
commentare o commentarlo io (finchè ho bene in testa quello che deve fare).
Se usi visual studio puoi realizzare un plugin che faccia sparire tutti 
i commenti e, volendo rimpiazzi pure i nomi di variabili e funzioni con 
abbreviazioni incomprensibili.
Ma così fai dei male soprattutto a te stesso, visto che speri di essere 
tu a mantenere quel codice e riprenderlo in mano tra qualche mese in una 
versione scritta come dici tu per "depistare" sarà comunque più faticoso.
Fornire sorgenti ben documentati e commentati è un modo di provare la 
propria serietà. E generalmente provare di essere seri e professionali è 
un buon modo di mantenere rapporti di lavoro solidi e duraturi.
Tutto questo IMHO, ovviamente.
-- 
Valter Minute
(the reply address of this message is invalid)
(l'indirizzo di reply di questo messaggio non è valido)

 potrà farmi altro che piacere.
Probabilmente chi verra' dopo pensera': guarda un po' sto disgraziato
come lavora male. Per fortuna ce lo siamo tolti dalle palle.
Se proprio ti da' fastidio lavorare "a modo", valuta se non sia il caso
di cambiare professione. Puoi fare un sacco di altre cose.

 questo IMHO, ovviamente.
Ma io sono d'accordo... il fatto è che si tratta di
un rapporto in fase iniziale e vorrei solo tenermi
pronta una porta di servizio. Io vorrei che
diventasse un rapporto solido e sarò corretto, ma
troppe volte sono partito così io e poi mi sono
trovato penalizzato.
Se le cose andranno, so bene che è mio interesse
fare il bravo.


 professione. Puoi fare un sacco di altre cose.
Ho chiesto una questione specifica, non giudizi su
cosa posso o meno fare, che non credo si possano
esprimere senza conoscersi. In ogni caso, per
fortuna, programmare non è il mio lavoro principale
e nemmeno secondario.


 e nemmeno secondario.
Scusa, ma tu non sei lo stesso che sta scrivendo (messaggio di 2
settimane fa) un software in C++ da cui dipende, in modo critico, la
vita della persona che lo usa?
Non e' il tuo lavoro, ne' principale ne' secondario, per cui gia'
intravvedo alcune criticita'.
Inoltre, ti preoccupi di rendere il programma il piu' possibile
offuscato e di difficile manutenzione.
Da una googlata veloce mi sembra di capire di cosa si tratta. Beh, io
manco so nuotare per cui fai un po' quello che ti pare.

 fare il bravo.
E' più facile che uno tenga sotto controllo il lavoro di un 
collaboratore soprattutto all'inizio, quando non si fida.
E presentarti con codice poco leggibile e commentato non è, secondo me, 
un buon biglietto da visita.
Costringerli a richiamarti per mantenere codice illeggibile può essere 
una molla per rimpiazzare la tua parte e, comunque, non chiamarti più in 
futuro.
Se ti pagano il giusto per il lavoro che hai fatto, non vedo perchè non 
possano poi essere liberi di affidarlo ad altri. Se non ti pagano il 
giusto, il problema non sono i commenti nel codice.
Ma poi ognuno è libero di fare come meglio crede, ca va sans dire.
