<?xml version="1.0" encoding="windows-1252"?><rss version="0.91" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>Cantelmo Software</title><link>http://www.cantelmosoftware.com/dblog/</link>
<description>Cantelmo Software</description><language>it</language>
<item>
	<title><![CDATA[GOLIATH's KEYGENME #1]]></title>
	<description><![CDATA[<p>Risolvi un crypto <strong>KeyGenMe</strong> e vinci:</p>
<p>- <strong>1 Licenza d'uso: Goliath .NET Obfuscator rel. 4.x (Enterprise Edition)<br /></strong>- <strong>assurance program (per 1 anno)</strong></p>
<p>Maggiori informazioni sono disponibili a questo <a href="http://www.cantelmosoftware.com/eng/keygenme1.html"><strong>link</strong></a></p>]]></description>
	<link><![CDATA[http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=32]]></link>
	<guid isPermaLink="true">http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=32</guid>
	<dc:date>2010-02-15T17:12:37+01:00</dc:date>
	<dc:creator>Marcello Cantelmo</dc:creator>
</item>
<item>
	<title><![CDATA[GLI SCHEMI DI PROTEZIONE DI GOLIATH .NET OBFUSCATOR - PARTE II^]]></title>
	<description><![CDATA[<p>Vengono presentate, in breve, le tecniche di protezione utilizzate in Goliath .NET Obfuscator </p>
<p>La maggior parte di queste tecniche sono state poi &quot;copiate&quot; ed inserite in prodotti concorrenti (tecniche &quot;spudoratamente&quot; simili verrano -adeguatamente- segnalate). </p>
<p><strong>ENCRYPTION DELLE STRINGHE:</strong></p>
<p>&nbsp;<strong>&egrave; un'ulteriore&nbsp;tecnica da adottare per la&nbsp;protezione del ns codice.</strong> In Goliath .NET Obfuscator si &egrave; avuta una naturale evoluzione tra le varie release 1.x, 2.x, 3.x e 4.x. </p>
<p>Nella&nbsp;<strong>release 2.x</strong> -<em>invece di cifrare&nbsp;la stringa&nbsp;byte-per-byte</em>- si &egrave; scelto di implementare un'evoluzione di <strong>StackCrypt</strong> (tecnica rilasciata pubblicamente su <strong>CodeProject</strong> <a href="http://www.codeproject.com/KB/vb/StackCrypt.aspx">qui</a> e <a href="http://www.codeproject.com/KB/security/StackCrypt.aspx">qui</a> a luglio'2004...da notare, all'epoca,&nbsp;&nbsp;la mia mente&nbsp;ancora &quot;inquinata&quot; da&nbsp;codice vb6!&nbsp;<img alt=": - D" src="/dblog/template/standard/gfx/smile_risatona.gif" />) che consente anche la&nbsp;&quot;compressione&quot;&nbsp;delle stesse.</p>
<p><strong>Quindi, per ogni stringa, viene creato un metodo&nbsp;contenente&nbsp;la stringa da&nbsp;ricostruire a runtime</strong>. Ad esempio per una generica stringa &quot;<strong>hello world!</strong>&quot;:</p>
<font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>Dim<font size="2"> txt </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">As</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">String</font></font><font size="2"> = <strong>CryptMethod</strong>()</font></p>
</font></font><font size="2"><font color="#0000ff" size="2"><font color="#0000ff" size="2">
<p>Function<font size="2"> <strong>CryptMethod</strong>() </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">As</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">String<br /></font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">&nbsp;&nbsp;&nbsp;&nbsp; Dim</font></font><font size="2"> stack </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">As</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">New</font></font><font size="2"> Stack(2)<br />&nbsp;&nbsp;&nbsp;&nbsp; </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Dim</font></font><font size="2"> startCode </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">As</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Integer</font></font><font size="2"> = &amp;H29BCA4A<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font><font color="#008000" size="2"><font color="#008000" size="2">'&lt;&lt;&lt;<br />&nbsp;&nbsp;&nbsp;&nbsp; </font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">With</font></font><font size="2"> stack<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; startCode = startCode </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Xor</font></font><font size="2"> 1895280235<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Push(startCode)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; startCode = startCode </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Xor</font></font><font size="2"> 491524942<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Push(startCode)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; startCode = startCode </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Xor</font></font><font size="2"> 121969411<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .Push(startCode)<br />&nbsp;&nbsp;&nbsp;&nbsp; </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">End</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">With<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></font><font color="#008000" size="2"><font color="#008000" size="2">'+++<br />&nbsp;&nbsp;&nbsp;&nbsp; </font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Dim</font></font><font size="2"> retValue </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">As</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Byte</font></font><font size="2">() = <strong>STACKED_BYTES</strong>(stack)<br />&nbsp;&nbsp;&nbsp;&nbsp; </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Return</font></font><font size="2"> System.Text.Encoding.UTF8.GetString(retValue)<br /></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">End</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Function</font></font></p>
<font size="2">
<p><font color="#0000ff" size="2"><font color="#0000ff" size="2">Private</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Function</font></font><font size="2"> <strong>STACKED_BYTES</strong>(</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">ByVal</font></font><font size="2"> st </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">As</font></font><font size="2"> Stack) </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">As</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Byte</font></font><font size="2">()<br />&nbsp;&nbsp;&nbsp;&nbsp; </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Dim</font></font><font size="2"> asmPos </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">As</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Integer</font></font><font size="2"> = 0<br />&nbsp;&nbsp;&nbsp;&nbsp; </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Dim</font></font><font size="2"> tempValue((st.Count * 4) - 1) </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">As</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Byte<br />&nbsp;&nbsp;&nbsp;&nbsp; '&lt;&lt;&lt;<br />&nbsp;&nbsp;&nbsp;&nbsp; </font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">For</font></font><font size="2"> ik </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">As</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Integer</font></font><font size="2"> = 1 </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">To</font></font><font size="2"> st.Count<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Dim</font></font><font size="2"> arr </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">As</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Byte</font></font><font size="2">() = BitConverter.GetBytes(</font><font color="#0000ff" size="2"><font color="#0000ff" size="2">DirectCast</font></font><font size="2">(st.Pop, </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Integer</font></font><font size="2">))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><font color="#008000" size="2"><font color="#008000" size="2">'---------------------------------------------------------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">For</font></font><font size="2"> ij </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">As</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Integer</font></font><font size="2"> = 3 </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">To</font></font><font size="2"> 0 </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Step</font></font><font size="2"> -1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">If</font></font><font size="2"> arr(ij) &gt; 0 </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font><font size="2">tempValue(asmPos) = arr(ij)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; asmPos += 1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">End</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">If<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Next<br />&nbsp;&nbsp;&nbsp;&nbsp; </font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Next<br />&nbsp;&nbsp;&nbsp;&nbsp; '&lt;&lt;&lt;<br />&nbsp;&nbsp;&nbsp;&nbsp; </font></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Dim</font></font><font size="2"> retValue(asmPos - 1) </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">As</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Byte<br />&nbsp;&nbsp;&nbsp;&nbsp; </font></font><font size="2">Array.Copy(tempValue, retValue, asmPos)<br />&nbsp;&nbsp;&nbsp;&nbsp; </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Return</font></font><font size="2"> retValue<br /></font><font color="#0000ff" size="2"><font color="#0000ff" size="2">End</font></font><font size="2"> </font><font color="#0000ff" size="2"><font color="#0000ff" size="2">Function</font></font></p>
</font></font></font></font>
<p><strong>...la generazione casuale impedisce -anche&nbsp;al sottoscritto- qualsiasi&nbsp;previsione dei&nbsp;risultati di codifica!</strong> Ne consegue che ad&nbsp;un aggressore non basta &quot;invertire&quot; un solo algoritmo ma deve ricostruire <strong>N-metodi</strong> (metodi offuscati)&nbsp;contenenti <strong>N-stringhe</strong>! <img alt=": - D" src="/dblog/template/standard/gfx/smile_risatona.gif" /></p>
<p>Nelle successive release l'encryption delle stringhe &egrave; legato all'offuscazione del codice! <img alt="; - )" src="/dblog/template/standard/gfx/smile_occhiolino.gif" /></p>
<p>&nbsp;</p>
<p><strong>CONTROL-FLOW OBFUSCATION (<a href="http://it.wikipedia.org/wiki/Spaghetti_code">Spaghetti-Code</a>)<br /></strong>[<em>continua</em>]</p>]]></description>
	<link><![CDATA[http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=31]]></link>
	<guid isPermaLink="true">http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=31</guid>
	<dc:date>2010-01-13T11:19:38+01:00</dc:date>
	<dc:creator>Marcello Cantelmo</dc:creator>
</item>
<item>
	<title><![CDATA[GLI SCHEMI DI PROTEZIONE DI GOLIATH .NET OBFUSCATOR - PARTE I^]]></title>
	<description><![CDATA[<p>Vengono presentate, in breve,&nbsp;le tecniche di protezione utilizzate in Goliath .NET Obfuscator</p>
<p>La maggior parte di queste tecniche sono state poi &quot;copiate&quot; ed inserite in prodotti concorrenti (tecniche &quot;spudoratamente&quot; simili verrano -adeguatamente- segnalate).</p>
<p><strong>RENAMING DEI SIMBOLI:</strong></p>
<p><strong>&egrave; una delle&nbsp;prime tecniche da adottare per la&nbsp;protezione del ns codice</strong>. Alcuni prodotti basano la protezione sul&nbsp;solo renaming (leggi DF). Sfortunatamente per noi -ad un aggressore che non conosce il ns programma- un metodo che si chiami &quot;serialnumber&quot; o &quot;a0&quot; poco importa...il codice interno &egrave; sempre leggibile! Il risultato &egrave; che in poco tempo &egrave; stato facile vedere solo &quot;cloni di prodotti&quot; (suite di controlli, ect.)</p>
<p>Comunque, per applicare il renaming:</p>
<p><strong>goliath assembly.</strong>[<strong>exe</strong>][<strong>dll</strong>] ed utilizzare i seguenti parametri:</p>
<p><strong>/renaming+<br />/chr</strong>:[<strong>4</strong>][<strong>6</strong>][<strong>8</strong>][<strong>16</strong>][<strong>32</strong>][<strong>U</strong>][<strong>P</strong>][<strong>D</strong>] ...output rispettivamente di 4, 6, 8, 16 o 32 caratteri stampabili. [U]=1 carattere non stampabile, [P]=1 carattere stampabile, [D]=si usa un dizionario esterno</p>
<p>in abbinamento al parametro /chr:[4][6][8][16][32][D] &egrave; possibile&nbsp;utilizzare, per comodit&agrave;, anche il parametro <strong>/optchr</strong> ed ottenere un risaltato di questo tipo: 61<strong>a</strong>a2b307ae4cb8b, 61<strong>A</strong>a2b307ae4cb8b, 61a<strong>A</strong>2b307ae4cb8b ...simili per confondere la lettura di chi &quot;spia&quot; ma diversi nella sostanza. In un eventuale dump su file -nomi uguali- vengono sovrascritti.</p>
<p>In automatico, poi, si applica l'<strong>overloads dei simboli</strong> a metodi, propriet&agrave;, field, ect. (nomi uguali a simboli diversi). Questa tecnica risulta valida perch&egrave;&nbsp;<strong>consentita solo in assembler IL</strong> ma non in un linguaggio di alto livello (c#, vb).</p>
<p>&nbsp;Dato che il range di caratteri utilizzabili &egrave;: <strong>0123456789abcdef</strong> si pu&ograve; anche personalizzare l'output utilizzando il parametro: </p>
<p><strong>/tbl:a=#,b=?</strong></p>
<p>cio&egrave; le &quot;a&quot; dovranno essere convertite in &quot;#&quot; e tutte le &quot;b&quot; in &quot;?&quot;.esempio:</p>
<p>61<strong>aa</strong>2<strong>b</strong>307<strong>a</strong>e4c<strong>b</strong>8<strong>b</strong> diventa: 61<strong>##</strong>2<strong>?</strong>307<strong>#</strong>e4c<strong>?</strong>8<strong>?</strong></p>
<p>mentre utilizzando:&nbsp;<strong>/tbl:a=\1,b=\2</strong> si specifica l'utilizzo di caratteri non stampabili: chr(1), chr(2), ect.</p>
<p>&nbsp;</p>
<p><strong>ENCRYPTION DELLE STRINGHE:</strong></p>
<p>[<em>continua a breve</em>]&nbsp;</p>]]></description>
	<link><![CDATA[http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=30]]></link>
	<guid isPermaLink="true">http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=30</guid>
	<dc:date>2010-01-13T09:19:16+01:00</dc:date>
	<dc:creator>Marcello Cantelmo</dc:creator>
</item>
<item>
	<title><![CDATA[GOLIATH .NET OBFUSCATOR &amp; DOTNETBAR 8.X]]></title>
	<description><![CDATA[<p>Utilizzando il nuovo Goliath .NET Obfuscator rel. 4.x &egrave; possibile "<em>unire</em>" gli assembly in un unico exe o dll. </p>
<p><em>Pur disponendo di un valido prodotto bisogna, per&ograve;, anche saperlo usare correttamente!</em> </p>
<p>Chiss&agrave; perch&egrave; poi un qualsiasi "fallimento" viene sempre imputato all'offuscatore!</p>
<p>Nello specifico mi riferisco all'ostinazione di alcuni utenti americani che cercano di unire i propri programmi con librerie di terze parti (un esempio su tutti &egrave; la suite di controlli <strong>DOTNETBAR</strong>).</p>
<p><strong>N.B.: l'unione di librerie di terze parti porta ad una violazione della licenza d'uso delle stesse. Verificare sempre le condizioni di utilizzo! </strong></p>
<p>Ad esempio, in DOTNETBAR, si usano alcune tecniche per l'assegnazione delle propriet&agrave; (nomi passati come stringa): </p>
<p>TypeDescriptor.GetProperties(page)["<strong>BackColor</strong>"].SetValue(page, Color.White); TypeDescriptor.GetProperties(page)["<strong>CanvasColor</strong>"].SetValue(page, Color.White);</p>
<p>quindi da qualche altra parte del codice ci sono le propriet&agrave;:</p>
<p>- BackColor<br />- CanvasColor</p>
<p>Risulta immediatamente chiaro a tutti (?) che -per una corretta protezione- le propriet&agrave; <strong>"BackColor"</strong> e <strong>"CanvasColor"</strong> <strong>NON DEVONO ESSERE RINOMINATE</strong>!</p>
<p>A questo punto si pu&ograve; decidere:</p>
<p>1) di non rinominare utilizzando <strong>/renaming-</strong> ed usare sola offuscazione del codice;<br />2) decorare con l'attributo <strong>ObfuscationAttribute(Exclude:=True)</strong> solo i metodi e propriet&agrave; che devono essere escluse dalla fase di renaming;<br />3) <strong>modificare il codice</strong></p>
<p>Come sempre detto: <strong>LA PROTEZIONE DEVE NASCERE CON IL PROGETTO!!!</strong> </p>
<p>Il non voler e/o saper modificare opportunamente il codice fa dire che Goliath .NET Obfuscator NON funziona e provocare un danno di immagine a CANTELMO SOFTWARE!</p>
<p>A mio avviso, invece, conviene dire: "<strong><em>per incapacit&agrave; professionale non sono riuscito a proteggere il mio programma!</em>"</strong></p>]]></description>
	<link><![CDATA[http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=29]]></link>
	<guid isPermaLink="true">http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=29</guid>
	<dc:date>2010-01-05T17:32:43+01:00</dc:date>
	<dc:creator>Marcello Cantelmo</dc:creator>
</item>
<item>
	<title><![CDATA[VINCITA AL WINFORLIFE CON UN COLPO DI C**O!]]></title>
	<description><![CDATA[<p><img src="/public/wfl.jpg" alt="" /><br />E' possibile scaricare -gratuitamente- il <strong>generatore di combinazioni</strong> (vincenti<img src="/dblog/template/standard/gfx/smile_occhiolino.gif" alt="; - )" />) da questo <a href="http://www.cantelmosoftware.com/free/WinForLife.zip">link</a></p>]]></description>
	<link><![CDATA[http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=27]]></link>
	<guid isPermaLink="true">http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=27</guid>
	<dc:date>2009-10-17T16:30:52+01:00</dc:date>
	<dc:creator>Marcello Cantelmo</dc:creator>
</item>
<item>
	<title><![CDATA[GOLIATH .NET OBFUSCATOR REL. 4.X]]></title>
	<description><![CDATA[<p align="center"><img alt="" src="/public/goliath_setup.jpg" /></p>
<p><a href="http://www.cantelmosoftware.com/ita/obfuscator.html">Scopri le ultime novit&agrave;</a></p>]]></description>
	<link><![CDATA[http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=26]]></link>
	<guid isPermaLink="true">http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=26</guid>
	<dc:date>2009-10-12T13:53:10+01:00</dc:date>
	<dc:creator>Marcello Cantelmo</dc:creator>
</item>
<item>
	<title><![CDATA[ASSISTENZA TECNICA PRODOTTI HP: 10 E LODE!]]></title>
	<description><![CDATA[<p>L'acquisto di un nuovo computer &egrave; sempre una scelta difficile. I fattori in gioco sono diversi: prezzo, caratteristiche e -non per ultimo- l'eventuale servizio di assistenza tecnica. Pur di non avere problemi (e bloccare un'attivit&agrave;) siamo disposti anche a spendere qualcosa in pi&ugrave;!</p>
<p>La mia scelta &egrave; ricaduta su un prodotto&nbsp;<a href="http://www.hp.com">HP</a> (azienda&nbsp;gi&agrave; a me nota grazie ad un palmare: iPAQ h5450) ed ho acquistato un <strong><a href="http://h10010.www1.hp.com/wwpc/it/it/ho/WF06b/321957-321957-3329744-64354-64354-3744201-3826240.html?jumpid=reg_R1002_ITIT">notebook dv5-1140el</a>.</strong></p>
<p>L'enfasi iniziale ha subito una piccola battuta di arresto a causa di un errore con il masterizzatore. Qualsiasi tentativo di copiatura&nbsp;falliva evidenziando un errore: <strong>0xEB020B88</strong>.</p>
<p>Dopo qualche ricerca leggo <a href="http://www.cyberlink.com/prog/support/cs/product-faq-content.do?id=6761&amp;prodId=0&amp;prodVerId=-1*">sul forum&nbsp;del produttore del software</a> (in bundle&nbsp;con il notebook) che tale errore &egrave; dovuto ad un difetto di fabbrica!</p>
<p>In questo&nbsp;post voglio segnalare la <strong>pazienza, cortesia e professionalit&agrave; del Servizio Clienti HP</strong> (rif. Sig.ra Marchionni e Sig. La Grassa) che ha provveduto immediatamente (a stretto giro di e-mail) alla risoluzione del&nbsp;mio problema. Dopo essersi accertati delle mie&nbsp;competenze tecniche e, quindi, di conseguenza, senza&nbsp;bloccarmi l'attivit&agrave; commerciale (nel caso avessi dovuto inviare&nbsp;loro il notebook) mi hanno fatto pervenire -senza alcuna spesa- il nuovo masterizzatore.</p>
<p>Ora tutta la soddisfazione di aver scelto un buon prodotto...ed un'azienda affidabile!</p>]]></description>
	<link><![CDATA[http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=25]]></link>
	<guid isPermaLink="true">http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=25</guid>
	<dc:date>2009-04-21T10:37:54+01:00</dc:date>
	<dc:creator>Marcello Cantelmo</dc:creator>
</item>
<item>
	<title><![CDATA[GOLIATH .NET OBFUSCATOR REL. 3.0.7]]></title>
	<description><![CDATA[<p>Continua l'evoluzione del nuovo prodotto (<em>rel. 3.0.7</em>) con l'inserimento di <strong>nuovi eccezionali parametri di protezione</strong>:</p>
<p><strong>--clickonce<br />--fakeint<br />--fakecall<br />--chr:[u] o [p]</strong></p>
<p><em>Parametro</em>: <strong>--clickonce:[template]</strong> per la <u>generazione automatica del ClickOnce Manifest direttamente da Goliath .NET Obfuscator senza passare da VS e/o MAGE</u>; </p>
<p>esempio di template: <br />; -------------------------------------------------------------------<br />; Goliath .NET Obfuscator rel. 3.0.7 - Enterprise Edition <br />; The Ultimate Secure Obfuscator for .NET Platform <br />; Copyright (c) 2003-2009 CANTELMO SOFTWARE <br />; -------------------------------------------------------------------<br />[Application] <br />ProductName=clickOnce_Test <br /><br />[Signing] <br />Certificate=d:\mypfx\myKey.pfx <br />CertificatePwd=12345 <br /><br />[Publish] Language=neutral <br />FolderLocation=d:\myOutFolder\ <br />Version=1.0.0.1 <br />... <br />[cut]</p>
<p><em>Parametro</em>: <strong>--fakeint </strong>per il <u>camuffamento dei valori booleani e di tutti i valori interi</u>;</p>
<p>Parametro: <strong>--fakecall:[Fw.Namespaces]</strong> per il <u>camuffamento delle chiamate alle funzioni interne di un determinato namespaces del Framework</u>;</p>
<p>esempio d'utilizzo: <strong>--fakecall:#d:\project\myprj.txt</strong> <br /><br />con il simbolo '<strong>#</strong>' -come al solito- si indica di andare a leggere il contenuto di un file (es.: <em>myprj.txt</em>) che contiene, ad esempio: </p>
<p><strong>System.Console <br />System.String</strong></p>
<p><strong>N.B.</strong>: <u>non necessariamente devono essere inseriti tutti i namespaces!</u></p>
<p>risultati ottenibili in un progetto console: </p>
<p><strong>sub 'originale':</strong></p>
<p>Public Shared Sub <font color="#0000ff">Main</font>() <br />&nbsp;&nbsp;&nbsp;&nbsp; <font color="#800000">Console.WriteLine</font>(<font color="#ff6600">String.Concat</font>(&quot;<font color="#808000">Hello</font>&quot;, &quot;<font color="#008080"> World!</font>&quot;))&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp; <font color="#666699">Console.ReadLine </font><br />End Sub </p>
<p><strong>sub 'modificata' SENZA l'encryption delle stringhe:</strong></p>
<p>Public Shared Sub <font color="#0000ff">a</font>() <br />&nbsp;&nbsp;&nbsp;&nbsp; <font color="#800000">a.a</font>(<font color="#ff6600">a.a</font>(&quot;<font color="#808000">Hello</font>&quot;, &quot;<font color="#008080"> World!</font>&quot;))&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp; <font color="#666699">a.A </font><br />End Sub </p>
<p><strong>sub 'modificata' CON l'encryption delle stringhe: </strong></p>
<p>Public Shared Sub <font color="#0000ff">a</font>()&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp; <font color="#800000">a.a</font>(<font color="#ff6600">a.a</font>(<font color="#808000">a.a</font>, <font color="#008080">a.A</font>))&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp; <font color="#666699">a.A </font><br />End Sub </p>
<p>Si evidenzia che -<u>per far comprendere le tecniche utilizzate</u>- in questo esempio NON &egrave; stato inserito il parametro di <strong>stop dei decompilers!</strong><img alt=": - P" src="/dblog/template/standard/gfx/smile_lingua.gif" /> <em>...ipotizziamo -in questo modo-&nbsp;che l'attacker abbia utilizzato un <u>de-obfuscator automatico</u> e si prepara a&nbsp;&quot;spiare&quot;&nbsp;il ns codice</em><img alt=": - D" src="/dblog/template/standard/gfx/smile_risatona.gif" /></p>
<p>Inoltre, sono state inserite <strong>2 nuove opzioni</strong> al parametro <strong>--chr:</strong> </p>
<p><strong>P=printable</strong>: renaming incrementale utilizzando 1 solo carattere stampabile (a, A, b, B, ect.)<br /><strong>U=unprintable</strong>: renaming incrementale utilizzando 1 solo carattere non-stampabile</p>
<p>stay tuned! <img alt="; - )" src="/dblog/template/standard/gfx/smile_occhiolino.gif" /></p>]]></description>
	<link><![CDATA[http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=24]]></link>
	<guid isPermaLink="true">http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=24</guid>
	<dc:date>2009-02-28T09:38:59+01:00</dc:date>
	<dc:creator>Marcello Cantelmo</dc:creator>
</item>
<item>
	<title><![CDATA[UN SISTEMA DI LICENSING SICURO ED A COSTI CONTENUTI? ORA SI PUO']]></title>
	<description><![CDATA[<p>La protezione dei ns programmi &egrave; un argomento sempre attuale!</p>
<p><strong>Per una protezione efficace &egrave; necessario rendere INSEPARABILE il legame tra protezione e programma</strong>. Ma chi utilizza il .NET deve prevedere -anche la possibilit&agrave;- che il Suo codice venga spiato e/o analizzato (con l'ausilio dei decompilatori).</p>
<p>Se il codice pu&ograve; essere analizzato, risulta superfluo, utilizzare crittografia a chiave simmetrica per proteggere i dati utilizzati per il licensing. <strong>Il punto debole degli algoritmi a chiave simmetrica&nbsp;&egrave; la chiave che -necessariamente- deve essere distribuita con il programma</strong>.</p>
<p>Ora, quindi, l'idea &egrave; questa:</p>
<p>1) utilizzare <a href="http://www.cantelmosoftware.com/ita/mupal.html">Goliath .NET MuPAL</a> (<strong>Mu</strong>lti-<strong>P</strong>recision <strong>A</strong>rithmetic <strong>L</strong>ibrary);<br />2) implementare <strong><a href="http://it.wikipedia.org/wiki/Crittografia_asimmetrica">ALGORITMI A CHIAVE ASIMMETRICA</a></strong>: si cryptano i dati con la chiave privata e si decryptano i dati con la chiave pubblica (distribuita con il programma);<br />3) e, come detto, per <strong>RENDERE INSEPARABILE IL LEGAME</strong> tra protezione e programma invece di inserire manualmente i valori utilizziamo quelli presenti nello <a href="http://msdn.microsoft.com/en-us/library/wd40t7ad.aspx">STRONG-NAME</a>.</p>
<p>Ne consegue:</p>
<p>- per alterare anche 1 solo byte dei ns programmi &egrave; necessario <strong>ELIMINARE LO STRONG-NAME</strong>;<br />- eliminando lo strong-name, <strong>RISULTA FALSATA</strong>, qualsiasi decodifica dei ns dati.</p>
<p>Per esporre quanto detto, si decide, di utilizzare <strong><a href="http://it.wikipedia.org/wiki/RSA">RSA</a></strong>:</p>
<p>normalmente per cryptare si utilizza: </p>
<p><strong>C = M^E mod N</strong> </p>
<p>e per decryptare: </p>
<p><strong>M = C^D mod N</strong> </p>
<p>dove: </p>
<p><strong>M</strong> = testo da cifrare ( per non avere problemi la dim. consigliata &egrave;: (keysize/8)+1 )<br /><strong>P</strong> = 1&deg; NUMERO PRIMO di grandi dimensioni (per ora &gt;=512 bits)<br /><strong>Q</strong> = 2&deg; NUMERO PRIMO di grandi dimensioni (per ora &gt;=512 bits)<br /><strong>E</strong> = ESPONENTE PUBBLICO che soddisfa: GCD(E, (P-1)*(Q-1))==1)<br /><strong>N</strong> = MODULO PUBBLICO, il prodotto di P e Q: N=P*Q<br /><strong>D</strong> = ESPONENTE PRIVATO: D=E^(-1) mod ((P-1)*(Q-1))</p>
<p><strong>P, Q e D ...DEVONO RIMANERE SEGRETI!!!</strong></p>
<p>invece nel ns sistema di licensing utilizzeremo il sistema RSA al contrario (verifica firma): </p>
<p>per cryptare: <strong>C = M^D</strong> mod N e per decryptare: <strong>M = C^E mod N</strong></p>
<p>il risultato di tale operazioni potr&agrave; -ad esempio- essere utilizzato per far compiere al ns programma una qualsiasi operazione (e non un banale vero/falso del risultato!)</p>
<p><strong>N.B.: con tale tecnica &egrave; virtualmente impossibile realizzare un keygen dei ns programmi perch&egrave; &egrave; necessario scoprire i parametri P e Q dalla chiave pubblica N. Per riuscire nell'impresa si deve fattorizzare N (la sfida del nuovo millennio). Lo strong-name usa chiavi a 1024 bits. I tempi di calcolo -per tali dimensioni di chiavi- risultano -con le attuali macchine- davvero proibitivi!</strong></p>
<p>Per maggiori informazioni si consiglia di visionare gli esempi contenuto con la libreria Goliath .NET MuPAL!</p>
<p>enjoy!</p>]]></description>
	<link><![CDATA[http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=23]]></link>
	<guid isPermaLink="true">http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=23</guid>
	<dc:date>2008-12-17T09:12:40+01:00</dc:date>
	<dc:creator>Marcello Cantelmo</dc:creator>
</item>
<item>
	<title><![CDATA[GOLIATH .NET OBFUSCATOR V3.X - PARTE III: OFFUSCAZIONE DEI VALORI NUMERICI]]></title>
	<description><![CDATA[<p>La &quot;guerra&quot; tra obfuscators contro decompilers (e/o deobfuscators) &egrave; sempre attuale. <img alt=": - )" src="/dblog/template/standard/gfx/smile_sorriso.gif" /></p>
<p>Sono stati rilasciati strumenti che -se usati creativamente- potrebbero facilitare un eventuale aggressore nell'eliminazione di una precisa tecnica di protezione: <strong>il control-flow!</strong> <img alt=": - o" src="/dblog/template/standard/gfx/smile_shockato.gif" /></p>
<p>Prevedendo questa &quot;realistica possibilit&agrave;&quot; &egrave; necessario complicare ulteriormente il codice dei ns algoritmi! <img alt="; - )" src="/dblog/template/standard/gfx/smile_occhiolino.gif" /> </p>
<p>Ragion per cui in Goliath .NET Obfuscator release 3.0.4 (Edizione Enterprise) &egrave; stata inserita una nuova procedura che offusca i valori numerici unitamente ai valori booleani True/False (aggiornamento del 02-dic-2008). <img alt=": - D" src="/dblog/template/standard/gfx/smile_risatona.gif" /></p>
<p>Cantelmo Software&nbsp;&egrave; sempre un passo avanti! Ai competitors &quot;poco creativi&quot;...non rimane altro che copiare anche questa tecnica! <img alt="; - )" src="/dblog/template/standard/gfx/smile_occhiolino.gif" /></p>]]></description>
	<link><![CDATA[http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=22]]></link>
	<guid isPermaLink="true">http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=22</guid>
	<dc:date>2008-12-01T09:51:17+01:00</dc:date>
	<dc:creator>Marcello Cantelmo</dc:creator>
</item>
<item>
	<title><![CDATA[ANCHE I COMPETITORS TROVANO VALIDE LE TECNICHE USATE IN GOLIATH .NET OBFUSCATOR]]></title>
	<description><![CDATA[<p>Come pi&ugrave; volte ribadito .NET &egrave; una piattaforma vulnerabile! </p>
<p>A dimostrazione di quanto affermato questa volta a farne le spese &egrave; stato lo stesso Goliath .NET Obfuscator <img alt=": - D" src="/dblog/template/standard/gfx/smile_risatona.gif" /> </p>
<p>Ebbene qualcuno che, forse, ritiene il proprio prodotto &quot;competitors&quot; di Goliath .NET Obfuscator ha pensato (bene?!?) di copiare spudoratamente&nbsp;una&nbsp;tecnica usata per&nbsp;bloccare Reflector ed i vari plug-in presenti sul mercato <strong><img alt=": - P" src="/dblog/template/standard/gfx/smile_lingua.gif" /></strong></p>
<p>Non riuscendo a studiare il codice interno, il tizio (pure italiano!), ha copiato direttamente il risultato finale (<em>tecnica unica e presente *solo* in Goliath .NET Obfuscator gi&agrave; da 4 anni</em>) <img alt="; - )" src="http://www.cantelmosoftware.com/dblog/template/standard/gfx/smile_occhiolino.gif" /></p>
<p>Che dire? <br />- grazie per l'interesse ad un prodotto Cantelmo Software;<br />- complimenti per la&nbsp;creativit&agrave;! <img alt=": - )" src="/dblog/template/standard/gfx/smile_sorriso.gif" /><br />- almeno ci stai guadagnando qualcosa?&nbsp;<img alt="; - )" src="/dblog/template/standard/gfx/smile_occhiolino.gif" /></p>
<p>Il prodotto &egrave; stato gi&agrave; scaricato&nbsp;e corservato per benino! al momento, non lo nomino, per non fare &quot;pubblicit&agrave; occulta&quot; per&ograve; mi riprometto (appena possibile) di realizzare un...</p>
<p>Stay tuned!</p>
<p>UPDATE del 27-ott-2008: il &quot;tizio&quot; ha rilasciato una nuova release eliminando&nbsp;(&quot;camuffando&quot;) le similitudini con Goliath .NET Obfuscator!</p>
<p>UPDATE del 26-ago-2009: <strong>una promessa &egrave; sempre una promessa!</strong> Con la realizzazione del nuovo&nbsp;Goliath .NET Obfuscator rel. 4.x &egrave; stato implementato&nbsp;-direttamente- un nuovo parametro (<strong>/UNPACK:)</strong> che permette di <em>spacchettare automaticamente</em>&nbsp;tale prodotto: <a href="http://www.cantelmosoftware.com/video/unpack_babel_obfuscator.wmv">guarda il video in anteprima</a></p>]]></description>
	<link><![CDATA[http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=21]]></link>
	<guid isPermaLink="true">http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=21</guid>
	<dc:date>2008-10-22T10:54:27+01:00</dc:date>
	<dc:creator>Marcello Cantelmo</dc:creator>
</item>
<item>
	<title><![CDATA[GOLIATH .NET OBFUSCATOR V3.X - PARTE II: IL RENAMING DEI SIMBOLI]]></title>
	<description><![CDATA[<p align="justify">In Goliath .NET Obfuscator v3.x &egrave; stato <strong>potenziato il renaming dei simboli</strong>. E' possibile, infatti, rinominare anche i <strong>simboli pubblici</strong> (classi, metodi, propriet&agrave;, field, eventi, interface, override, ect.). <img alt=": - o" src="/dblog/template/standard/gfx/smile_shockato.gif" /></p>
<p align="justify">Questa feature che &egrave; inutile per la protezione di una&nbsp;singola dll (creazione di un componente) risulta essere abbastanza&nbsp;efficace nel <strong>camuffare le chiamate alle librerie referenziate</strong> in&nbsp;progetti pi&ugrave; complessi.</p>
<p>Potendo, ora,&nbsp;alterare i simboli pubblici &egrave; stato possibile implementare anche&nbsp;la <strong>protezione contemporanea</strong> di pi&ugrave; assembly referenziati! Di conseguenza, anche eventuali <strong>de-obfuscator,</strong> devono possedere questa caretteristica. La sola &quot;<em>analisi statica</em>&quot; sui singoli assembly &egrave; pressoch&egrave; inutile.&nbsp;<img alt=": - D" src="/dblog/template/standard/gfx/smile_risatona.gif" /></p>
<p>ESEMPIO: solo renaming di&nbsp;un singolo assembly:</p>
<p><strong>goliath -r d:\folder\assembly.exe</strong></p>
<p>ESEMPIO: solo renaming di&nbsp;un assembly con una libreria referenziata:</p>
<p align="left"><strong>goliath -r d:\folder\assembly.exe --ref:d:\folder\assembly.dll</strong></p>
<p>ESEMPIO: solo renaming di&nbsp;un assembly con due librerie referenziate:</p>
<p align="left"><strong>goliath -r d:\folder\assembly.exe --ref:d:\folder\assembly1.dll,d:\folder\assembly1.dll</strong></p>
<p align="justify">se invece ci sono numerose references &egrave; possibile definirle in un file esterno (ad esempio: references.txt)</p>
<p>d:\folder\assembly1.dll<br />d:\folder\assembly2.dll<br />d:\folder\assembly3.dll<br />...</p>
<p>e&nbsp;richiamate&nbsp;con:</p>
<p><strong>goliath -r d:\folder\assembly.exe --ref:#d:\folder\references.txt <img alt=": - D" src="/dblog/template/standard/gfx/smile_risatona.gif" /></strong></p>
<p align="justify"><strong>L'overloading dei simboli &egrave; automatico!</strong> Il range&nbsp;di simboli (standard) utilizzati per il renaming&nbsp;&egrave; &quot;limitato&quot; alla sola tipologia&nbsp;alfanumerica: <strong>0123456789abcdef</strong>.</p>
<p>All'utente&nbsp;finale, per&ograve;, viene data,&nbsp;ampia possibilit&agrave; di intervento. E' possibile infatti:</p>
<p>- definire il numero dei caratteri del testo finale (opzione <strong>--char:{number}</strong>)<br />- variare il singolo carattere&nbsp;(opzione <strong>--tbl:{}</strong>)</p>
<p><strong>goliath -r d:\folder\assembly.exe --ref:d:\folder\#references.txt --tbl:a=?,b== --char:4</strong></p>
<p align="center"><img alt="" src="/public/goliath_renaming_v3.jpg" /></p>
<p align="left">E'&nbsp;possibile generare,&nbsp;chiaramente, anche <strong>simboli non stampabili</strong> semplicemente impostando&nbsp;- nel parametro <strong>--tbl:{}</strong> - la definizione <strong>\{num}</strong>:</p>
<p><strong>goliath -r d:\folder\assembly.exe --ref:d:\folder\#references.txt --tbl:a=\1,b=\2,3=\3,a=\4,b=\5&nbsp;--char:4</strong></p>
<p align="center"><img alt="" src="/public/goliath_renunprint_v3.jpg" align="middle" /></p>
<p align="justify"><strong>La fase di esclusione dei simboli dal renaming avviene -esclusivamente&nbsp;da codice- utilizzando un&nbsp;attributo gi&agrave; presente&nbsp;nel .NET Framework&nbsp;sin dalla&nbsp;vers. 2.0:</strong> </p>
<p align="left">[<strong>Obfuscation(Exclude=true)</strong>]<br />public event EventHandler test1;</p>
<p align="left">[STAThread, <strong>Obfuscation(Exclude=true)</strong>]<br />internal static int Main([<strong>Obfuscation(Exclude=true)</strong>] string[] args)<br />{<br />}</p>
<p align="justify">dopo la fase di renaming -per non far capire alcuna logica progettuale- questo attributo&nbsp;viene&nbsp;automaticamente eliminato! <img alt="; - )" src="/dblog/template/standard/gfx/smile_occhiolino.gif" /> </p>
<p align="justify">Ma come detto pi&ugrave; volte: <strong>rinominare i simboli non significa&nbsp;offuscare il codice!</strong>&nbsp;Nelle prossime presentazioni si dar&agrave; ampio risalto all'<strong>offuscazione del codice</strong> e all'<strong>encryption dei metodi</strong> <img alt=": - o" src="/dblog/template/standard/gfx/smile_shockato.gif" /></p>
<p align="justify">stay tuned!</p>]]></description>
	<link><![CDATA[http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=20]]></link>
	<guid isPermaLink="true">http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=20</guid>
	<dc:date>2008-08-27T15:33:14+01:00</dc:date>
	<dc:creator>Marcello Cantelmo</dc:creator>
</item>
<item>
	<title><![CDATA[GOLIATH .NET OBFUSCATOR V3.X - PARTE I: CONSOLE-MODE]]></title>
	<description><![CDATA[<p>Iniziamo a conoscere il nuovo <em>Goliath .NET Obfuscator v3.x</em> presentando una delle&nbsp;features pi&ugrave; richieste dai ns clienti: <strong>la modalit&agrave; console</strong>. Il vantaggio di questa modalit&agrave; &egrave; l'utilizzo del prodotto anche come&nbsp;&quot;post-build&quot; del processo di compilazione dei ns. progetti <img alt="; - )" src="/dblog/template/standard/gfx/smile_occhiolino.gif" /></p>
<p>Questa feature, per&ograve;,&nbsp;ha comportato la completa rivisitazione di tutte le opzioni di protezione.</p>
<p><strong>goliath /?</strong></p>
<p align="center"><strong><img alt="" src="/public/goliath_console_v3.jpg" align="middle" /><br /></strong>(N.B.: le caratteristiche possono variare senza preavviso)<br /></p>
<p align="left"><font face="Courier New">Goliath .NET Obfuscator&nbsp; 3.0.0.0<br />Copyright (c) 2003-2008 CANTELMO SOFTWARE. All rights reserved.<br />The Ultimate Secure Obfuscator for .NET Platform</font></p>
<p align="left"><font face="Courier New"><strong>Usage: Goliath [options] <assemblyfile></assemblyfile>[options]</strong></font></p>
<p align="left"><font face="Courier New">Options:</font></p>
<p align="left"><font face="Courier New">&nbsp; -? --help&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Show this help list<br />&nbsp; -c --codeshield[+|-]&nbsp;&nbsp; Encrypt signed CodeShield methods<br />&nbsp; -e --encryption[+|-]&nbsp;&nbsp; Full strings encryption<br />&nbsp; -o --obfuscating[+|-]&nbsp; Full code obfuscation<br />&nbsp; -r --renaming[+|-]&nbsp;&nbsp;&nbsp;&nbsp; Full symbols renaming<br />&nbsp;&nbsp;&nbsp;&nbsp; --bak[+|-]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Backs-up the original file before processing<br />&nbsp;&nbsp;&nbsp;&nbsp; --charopt[+|-]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Optimize chars symbols for renaming<br />&nbsp;&nbsp;&nbsp;&nbsp; --chr:number&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Chars used for symbols renaming. number: 4 (default), 6, 8, 16 or 32<br />&nbsp;&nbsp;&nbsp;&nbsp; --help+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Show an additional help list<br />&nbsp;&nbsp;&nbsp;&nbsp; --ildasm[+|-]&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Prevent ILDASM tool from disassembling<br />&nbsp;&nbsp;&nbsp;&nbsp; --nsp:list&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Also -namespaces:list. Exclude namespaces. list:namespaces,...<br />&nbsp;&nbsp;&nbsp;&nbsp; --out:folder&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Specifies the output folder name<br />&nbsp;&nbsp;&nbsp;&nbsp; --ref:list&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Also -references:list. Add references assembly. list:references,...<br />&nbsp;&nbsp;&nbsp;&nbsp; --snk:key&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Specifies the strong-name key file<br />&nbsp;&nbsp;&nbsp;&nbsp; --tbl:list&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Specifies symbol(s) table for renaming. list:name=value,...<br /><br /></font><font face="Courier New"><font face="Arial"><br />altre opzioni: <strong>goliath --help+<br /><br /><br /></strong></font></font><font face="Courier New">Goliath .NET Obfuscator&nbsp; 3.0.0.0<br />Copyright (c) 2003-2008 CANTELMO SOFTWARE. All rights reserved.<br />The Ultimate Secure Obfuscator for .NET Platform</font></p>
<p align="left"><font face="Courier New"><strong>Usage: Goliath [options] <assemblyfile></assemblyfile>[options]</strong></font></p>
<p align="left"><font face="Courier New">Options:</font></p>
<p align="left"><font face="Courier New">&nbsp; -V --version&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Display version and licensing information<br />&nbsp;&nbsp;&nbsp;&nbsp; --nologo[+|-]&nbsp; Do not display the CANTELMO SOFTWARE copyright<br />&nbsp;&nbsp;&nbsp;&nbsp; --quiet[+|-]&nbsp;&nbsp; Report obfuscation progress<br />&nbsp;&nbsp;&nbsp;&nbsp; --time[+|-]&nbsp;&nbsp;&nbsp; Measure elapsed time<br />&nbsp;&nbsp;&nbsp;&nbsp; --usage&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Show usage syntax and exit<br /></font><font face="Courier New"></font></p>]]></description>
	<link><![CDATA[http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=19]]></link>
	<guid isPermaLink="true">http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=19</guid>
	<dc:date>2008-08-27T14:47:50+01:00</dc:date>
	<dc:creator>Marcello Cantelmo</dc:creator>
</item>
<item>
	<title><![CDATA[GOLIATH .NET OBFUSCATOR V3.0 E' IN BETA!]]></title>
	<description><![CDATA[Goliath .NET Obfuscator &egrave; un prodotto stabile ed affidabile. La nuova versione recepisce tutte le features richieste dai clienti:

- utilizzo da console per una eventuale integrazione con i processi di build automatizzati;
- maggiore velocit&agrave; di esecuzione nell'offuscazione del codice
- nuovo schema di encryption delle stringhe (compatibile con i sistemi a 64 bit)
- ect.]]></description>
	<link><![CDATA[http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=18]]></link>
	<guid isPermaLink="true">http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=18</guid>
	<dc:date>2008-07-16T12:24:29+01:00</dc:date>
	<dc:creator>Marcello Cantelmo</dc:creator>
</item>
<item>
	<title><![CDATA[GOLIATH .NET CODESHIELD]]></title>
	<description><![CDATA[<p>Le minacce alla tutela della propriet&agrave; intellettuale del ns codice .NET sono in continua evoluzione? ...anche le soluzioni della linea security Goliath .NET <img src="/dblog/template/standard/gfx/smile_risatona.gif" alt=": - D" /></p>
<p>Con la nuova release 2.2.0 di Goliath .NET Obfuscator &egrave; stato introdotto un nuovo componente (al momento solo internalware!) denominato Goliath .NET CodeShield</p>
<p>L'utilizzo combinato dei due prodotti consente di crittografare (AES) i <strong>metodi definiti dallo sviluppatore</strong> e tali rimarrano anche dopo un eventuale dump dalla memoria <img src="/dblog/template/standard/gfx/smile_shockato.gif" alt=": - o" /></p>
<p>Per maggiori informazioni si consiglia di &quot;spiare&quot; direttamente l'eseguibile di Goliath .NET Obfuscator (V220) <img src="/dblog/template/standard/gfx/smile_occhiolino.gif" alt="; - )" /><br /></p>]]></description>
	<link><![CDATA[http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=17]]></link>
	<guid isPermaLink="true">http://www.cantelmosoftware.com/dblog/articolo.asp?articolo=17</guid>
	<dc:date>2008-05-30T10:33:31+01:00</dc:date>
	<dc:creator>Marcello Cantelmo</dc:creator>
</item>
	</channel></rss>