Software Development
Italiano | English

FORUM
::  Menù Principale - Sito Web
del Geom. Marcello Cantelmo :: Un'Azienda. Molte Soluzioni !
 
:: In Primo Piano
< settembre 2010 >
L
M
M
G
V
S
D
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
     
             

Profilo Facebook di Marcello Cantelmo
Cerca per parola chiave
 


Titolo
In che modo Proteggi il tuo software?

 Chiave Hardware
 Chiave Software
 Nessuna Protezione




04/09/2010 @ 16.52.22
script eseguito in 31 ms


Valid XHTML 1.0 / CSS
Di seguito tutti gli interventi pubblicati sul sito, in ordine cronologico.
 
 
Di Marcello Cantelmo (del 10/05/2010 @ 10:02:19, in .NET Software Protection, linkato 104 volte)

Nell'articolo viene spiegato come inserire codice arbitrario nella dll "core" (mscorlib.dll) del .net framework : - o

Per quanto riguarda, invece, la protezione del software/dati (attività specifica del sottoscritto) è realistico prevedere managed-code-injection:

- messagebox di una stringa in base64;
- scrittura su disco di un array di byte

direttamente nel namespace: System.Security.Cryptography -> classi relative alla crittografia dei dati (des, tripledes, rijndael, ect.) -> metodo:

public override ICryptoTransform CreateDecryptor(byte[] rgbKey, byte[] rgbIV);

in definitiva, per quanto nascosti, nel ns codice, gli array .KEY e .IV ...devono passare per questo metodo...e, quindi, saranno sempre a disposizione dei ns aggressori! : - (

Attualmente, con tale tecnica, vengono "bucati" tutti gli schemi di licensing presenti sul mercato oltre alle eventuali tecniche personali di protezione dei dati!

E' indispensabile, quindi, d'ora in poi, l'utilizzo di algoritmi di crittografia a chiave asimmetrica! ; - )

link di riferimento: http://bit.ly/bWiGKD

Articolo Link Commenti Commenti (0)  Storico Storico  Stampa Stampa
 
Di Marcello Cantelmo (del 04/05/2010 @ 22:05:45, in VS.NET, linkato 167 volte)

Nel nuovo Visual Studio 2010 è presente la classe "BigInteger" che consente di trattare numeri interi di qualsiasi dimensione.

Utilizzando tale classe ci si accorge che non è stata implementata alcuna funzione relativa al calcolo delle radici quadrate : - o

La "soluzione" a questa mancanza (stranamente assente anche in java, mono, ect.) è:

VB.NET

Function Sqrt(ByVal value As BigInteger) As BigInteger

     Dim a As BigInteger = BigInteger.One
     Dim b As BigInteger = (value >> 5) + 8

     While (b.CompareTo(a) >= 0)

          Dim m As BigInteger = BigInteger.Add(a, b) >> 1

          If (BigInteger.Multiply(m, m).CompareTo(value) > 0) Then
               b = BigInteger.Subtract(m, BigInteger.One)
          Else
               a = BigInteger.Add(m, BigInteger.One)
          End If

     End While

     Return BigInteger.Subtract(a, BigInteger.One)

End Function

esempio:

Dim bI As BigInteger = New BigInteger
BigInteger.TryParse("265657159959580629138389106654927260761", bI)
bI = Sqrt(bI) '// bI={16298992605666787931}

enjoy! : - )

Articolo Link Commenti Commenti (0)  Storico Storico  Stampa Stampa
 
Di Marcello Cantelmo (del 12/04/2010 @ 20:27:50, in .NET, linkato 154 volte)

Circola in rete la release 6.x completamente spacchettata e decompilata (completa di src code c#).

Se da una parte è forse quello che tutti volevano (reflector è per tutti un nemico) dall'altra -questa notizia- porta con se nuove complicazioni.

Infatti, ora, tutti -con adeguate competenze- possono vedere la struttura del decompilatore e modificarlo in base alle proprie esigenze.

Ora più che mai è importantissimo proteggere il proprio lavoro!

stay tuned!

Articolo Link Commenti Commenti (0)  Storico Storico  Stampa Stampa
 
Di Marcello Cantelmo (del 15/02/2010 @ 17:12:37, in KeyGenMe, linkato 221 volte)

Risolvi un crypto KeyGenMe e vinci:

- 1 Licenza d'uso: Goliath .NET Obfuscator rel. 4.x (Enterprise Edition)
- assurance program (per 1 anno)

Maggiori informazioni sono disponibili a questo link

Articolo Link Commenti Commenti (2)  Storico Storico  Stampa Stampa
 

Vengono presentate, in breve, le tecniche di protezione utilizzate in Goliath .NET Obfuscator

La maggior parte di queste tecniche sono state poi "copiate" ed inserite in prodotti concorrenti (tecniche "spudoratamente" simili verrano -adeguatamente- segnalate).

ENCRYPTION DELLE STRINGHE:

 è un'ulteriore tecnica da adottare per la protezione del ns codice. In Goliath .NET Obfuscator si è avuta una naturale evoluzione tra le varie release 1.x, 2.x, 3.x e 4.x.

Nella release 2.x -invece di cifrare la stringa byte-per-byte- si è scelto di implementare un'evoluzione di StackCrypt (tecnica rilasciata pubblicamente su CodeProject qui e qui a luglio'2004...da notare, all'epoca,  la mia mente ancora "inquinata" da codice vb6! : - D) che consente anche la "compressione" delle stesse.

Quindi, per ogni stringa, viene creato un metodo contenente la stringa da ricostruire a runtime. Ad esempio per una generica stringa "hello world!":

Dim txt As String = CryptMethod()

Function CryptMethod() As String
     Dim stack As New Stack(2)
    
Dim startCode As Integer = &H29BCA4A
     
'<<<
    
With stack
          startCode = startCode
Xor 1895280235
          .Push(startCode)
          startCode = startCode
Xor 491524942
          .Push(startCode)
          startCode = startCode
Xor 121969411
          .Push(startCode)
    
End With
     
'+++
    
Dim retValue As Byte() = STACKED_BYTES(stack)
    
Return System.Text.Encoding.UTF8.GetString(retValue)
End Function

Private Function STACKED_BYTES(ByVal st As Stack) As Byte()
    
Dim asmPos As Integer = 0
    
Dim tempValue((st.Count * 4) - 1) As Byte
     '<<<
    
For ik As Integer = 1 To st.Count
         
Dim arr As Byte() = BitConverter.GetBytes(DirectCast(st.Pop, Integer))
         
'---------------------------------------------------------------------
         
For ij As Integer = 3 To 0 Step -1
              
If arr(ij) > 0 Then
                   
tempValue(asmPos) = arr(ij)
                    asmPos += 1
              
End If
         
Next
    
Next
     '<<<
    
Dim retValue(asmPos - 1) As Byte
    
Array.Copy(tempValue, retValue, asmPos)
    
Return retValue
End Function

...la generazione casuale impedisce -anche al sottoscritto- qualsiasi previsione dei risultati di codifica! Ne consegue che ad un aggressore non basta "invertire" un solo algoritmo ma deve ricostruire N-metodi (metodi offuscati) contenenti N-stringhe! : - D

Nelle successive release l'encryption delle stringhe è legato all'offuscazione del codice! ; - )

 

CONTROL-FLOW OBFUSCATION (Spaghetti-Code)
[continua]

Articolo Link Commenti Commenti (0)  Storico Storico  Stampa Stampa
 

Vengono presentate, in breve, le tecniche di protezione utilizzate in Goliath .NET Obfuscator

La maggior parte di queste tecniche sono state poi "copiate" ed inserite in prodotti concorrenti (tecniche "spudoratamente" simili verrano -adeguatamente- segnalate).

RENAMING DEI SIMBOLI:

è una delle prime tecniche da adottare per la protezione del ns codice. Alcuni prodotti basano la protezione sul solo renaming (leggi DF). Sfortunatamente per noi -ad un aggressore che non conosce il ns programma- un metodo che si chiami "serialnumber" o "a0" poco importa...il codice interno è sempre leggibile! Il risultato è che in poco tempo è stato facile vedere solo "cloni di prodotti" (suite di controlli, ect.)

Comunque, per applicare il renaming:

goliath assembly.[exe][dll] ed utilizzare i seguenti parametri:

/renaming+
/chr
:[4][6][8][16][32][U][P][D] ...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

in abbinamento al parametro /chr:[4][6][8][16][32][D] è possibile utilizzare, per comodità, anche il parametro /optchr ed ottenere un risaltato di questo tipo: 61aa2b307ae4cb8b, 61Aa2b307ae4cb8b, 61aA2b307ae4cb8b ...simili per confondere la lettura di chi "spia" ma diversi nella sostanza. In un eventuale dump su file -nomi uguali- vengono sovrascritti.

In automatico, poi, si applica l'overloads dei simboli a metodi, proprietà, field, ect. (nomi uguali a simboli diversi). Questa tecnica risulta valida perchè consentita solo in assembler IL ma non in un linguaggio di alto livello (c#, vb).

 Dato che il range di caratteri utilizzabili è: 0123456789abcdef si può anche personalizzare l'output utilizzando il parametro:

/tbl:a=#,b=?

cioè le "a" dovranno essere convertite in "#" e tutte le "b" in "?".esempio:

61aa2b307ae4cb8b diventa: 61##2?307#e4c?8?

mentre utilizzando: /tbl:a=\1,b=\2 si specifica l'utilizzo di caratteri non stampabili: chr(1), chr(2), ect.

 

ENCRYPTION DELLE STRINGHE:

[continua a breve

Articolo Link Commenti Commenti (0)  Storico Storico  Stampa Stampa
 
Di Marcello Cantelmo (del 05/01/2010 @ 17:32:43, in Goliath .NET Obfuscator, linkato 252 volte)

Utilizzando il nuovo Goliath .NET Obfuscator rel. 4.x è possibile "unire" gli assembly in un unico exe o dll.

Pur disponendo di un valido prodotto bisogna, però, anche saperlo usare correttamente!

Chissà perchè poi un qualsiasi "fallimento" viene sempre imputato all'offuscatore!

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 è la suite di controlli DOTNETBAR).

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!

Ad esempio, in DOTNETBAR, si usano alcune tecniche per l'assegnazione delle proprietà (nomi passati come stringa):

TypeDescriptor.GetProperties(page)["BackColor"].SetValue(page, Color.White); TypeDescriptor.GetProperties(page)["CanvasColor"].SetValue(page, Color.White);

quindi da qualche altra parte del codice ci sono le proprietà:

- BackColor
- CanvasColor

Risulta immediatamente chiaro a tutti (?) che -per una corretta protezione- le proprietà "BackColor" e "CanvasColor" NON DEVONO ESSERE RINOMINATE!

A questo punto si può decidere:

1) di non rinominare utilizzando /renaming- ed usare sola offuscazione del codice;
2) decorare con l'attributo ObfuscationAttribute(Exclude:=True) solo i metodi e proprietà che devono essere escluse dalla fase di renaming;
3) modificare il codice

Come sempre detto: LA PROTEZIONE DEVE NASCERE CON IL PROGETTO!!!

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!

A mio avviso, invece, conviene dire: "per incapacità professionale non sono riuscito a proteggere il mio programma!"

Articolo Link Commenti Commenti (0)  Storico Storico  Stampa Stampa
 
Di Marcello Cantelmo (del 17/10/2009 @ 16:30:52, in WinForLife, linkato 329 volte)


E' possibile scaricare -gratuitamente- il generatore di combinazioni (vincenti; - )) da questo link

Articolo Link Commenti Commenti (0)  Storico Storico  Stampa Stampa
 
Di Marcello Cantelmo (del 12/10/2009 @ 13:53:10, in Goliath .NET Obfuscator, linkato 326 volte)
Articolo Link Commenti Commenti (2)  Storico Storico  Stampa Stampa
 
Di Marcello Cantelmo (del 21/04/2009 @ 10:37:54, in Hardware, linkato 312 volte)

L'acquisto di un nuovo computer è 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à) siamo disposti anche a spendere qualcosa in più!

La mia scelta è ricaduta su un prodotto HP (azienda già a me nota grazie ad un palmare: iPAQ h5450) ed ho acquistato un notebook dv5-1140el.

L'enfasi iniziale ha subito una piccola battuta di arresto a causa di un errore con il masterizzatore. Qualsiasi tentativo di copiatura falliva evidenziando un errore: 0xEB020B88.

Dopo qualche ricerca leggo sul forum del produttore del software (in bundle con il notebook) che tale errore è dovuto ad un difetto di fabbrica!

In questo post voglio segnalare la pazienza, cortesia e professionalità del Servizio Clienti HP (rif. Sig.ra Marchionni e Sig. La Grassa) che ha provveduto immediatamente (a stretto giro di e-mail) alla risoluzione del mio problema. Dopo essersi accertati delle mie competenze tecniche e, quindi, di conseguenza, senza bloccarmi l'attività commerciale (nel caso avessi dovuto inviare loro il notebook) mi hanno fatto pervenire -senza alcuna spesa- il nuovo masterizzatore.

Ora tutta la soddisfazione di aver scelto un buon prodotto...ed un'azienda affidabile!

Articolo Link Commenti Commenti (0)  Storico Storico  Stampa Stampa
 
Pagine: 1 2 3 4


. . : :   U N D E R   C O N S T R U C T I O N   : : . .
Home Page:Servizi:Soluzioni:Clienti:Prodotti:Azienda

: : Use OpenOffice.org :
Copyright © 2003-2009 "Cantelmo Software" del Geom. Marcello Cantelmo. Tutti i Diritti sono Riservati • Note Legali
Document made with Nvu
Microsoftâ„¢, Windowsâ„¢, .NETâ„¢, and .NET Frameworkâ„¢ sono marchi di Microsoft Corporation. Tutti gli altri marchi appartengono ai legittimi proprietari.

powered by dBlog CMS ® Open Source