Cantelmo Software

sempre aggiornati
sui canali:

     
 
 
 
 
 
 
 

Le ultime novità...

Di seguito tutti gli interventi pubblicati sul sito, in ordine cronologico.
 
 
Di Marcello Cantelmo (del 07/08/2011 @ 17:06:23, in Social Network, linkato 168 volte)

...ultimi ritocchi al nuovo sito web! : - )

Per chi, invece, segue le nuove tendenze del web (...e vuole informazioni brevi e concise) può seguire Cantelmo Software anche sui principali social network:

- facebook;

- twitter;

- youtube;


stay tuned! ; - ) 

Articolo Link Commenti Commenti (1)  Storico Storico  Stampa Stampa
 
Di Marcello Cantelmo (del 16/07/2011 @ 17:20:57, in .NET Components, linkato 89 volte)

Estate 2011 ricca di novità! Cantelmo Software da il via ad una nuova linea di componenti per sviluppatori, denominata: .NET Easy... ; - )

Tutti i componenti sono realizzati in puro codice managed (100% vb.net):

  • DXF.IO: lettura/scrittura di file .DXF 2D/3D. Disponibile per tutte le tipologie di progetto: WinForms, WPF, ASP.NET, Silverlight, WP7;
  • PaletteBar: creazione di toolbar (anche fluttuanti) posizionabili a piacimento sullo schermo (utilissime in applicazioni grafiche). Al momento disponibile solo per WinForm.

stay tuned! ; - )

Articolo Link Commenti Commenti (0)  Storico Storico  Stampa Stampa
 
Di Marcello Cantelmo (del 07/07/2011 @ 16:44:14, in .NET Decompiler, linkato 117 volte)

Il vero pericolo per la sicurezza è provare un falso senso di sicurezza! : - o

Il rilascio dei nuovi decompilatori per la piattaforma .NET (...gratuiti ed in formato sorgente cioè modificabile da chiunque!) espone, il ns codice, in modo esponenziale, al reverse-engineering e decompilazione da parte di hacker e competitors!

In questo post vedremo una modifica applicata al nuovo decompilatore ilspy che bypassa una tecnica di offuscamento: il renaming a caratteri non stampabili!

L'attuale modifica unitamente all'automatismo -già presente- per l'eliminazione del control-flow mette a serio rischio la tutela delle ns applicazioni!

Se il tuo obfuscator (...gratuito e non) usa ancora queste due tecniche obsolete...il tuo codice, purtroppo, appartiene già ad un altro! : - o

In breve:

la modifica esegue un banale check di validità sul nome dei tipi : - ) In presenza di caratteri diversi da: "_", ".", "a-z", "A-Z", "0-9" si identifica il nuovo nome con: "Type_", "Method_", "Field_", "Event_", ect. unitamente al valore del metadata-token (che è unico!).

N.B.: Con tale tecnica si bypassa completamente l'overloads dei simboli! ; - )

La fasi da implementare sono:

- nell'assembly Mono.Cecil referenziare: System;
- nel file AssemblyReader -> classe MetadataReader inserire il seguente metodo:

// check unprintable name
public static bool IsValidName(string name)
{
     byte[] arr = Encoding.UTF8.GetBytes(name);
     int size = arr.Length - 1;
     for (int ik = 0; ik <= size; ik++)
     {
          int chkvalue = arr[ik];
          if ((((((chkvalue == 0x2e) || (chkvalue == 0x5f)) ? 1 : 0) == 0) && 
             ((((chkvalue >= 0x41) && (chkvalue <= 0x5a)) ? 1 : 0) == 0)) && 
             ((((chkvalue >= 0x61) && (chkvalue <= 0x7a)) ? 1 : 0) == 0))
             {
                  return false;
             }
          }
          return true;
      }
}

e modificare, ad esempio, il metodo: ReadMethod in questo modo:

ReadMethod (uint method_rid, Collection<MethodDefinition> methods)

e così via per i metodi: ReadType, ReadTypeReference, ReadField, ReadEvent, ReadProperty, ReadParameter, ReadMemberReferences

Articolo Link Commenti Commenti (3)  Storico Storico  Stampa Stampa
 
Di Marcello Cantelmo (del 28/06/2011 @ 15:28:46, in .NET Reverse-Engineering, linkato 113 volte)

Quando una determinata tecnica è obsoleta, vulnerabile e/o non funziona con tutti i decompilatori si verifica il cosiddetto effetto-boomerang sugli obfuscator!

quando si protegge un assembly .NET con uno dei seguenti prodotti:

- bab** obfuscator;
- cryp** obfuscator;
- deeps** obfuscator

si scopre una tecnica uguale : - o ma ormai, da tempo, obsoleta! dato il semplice metodo con un argomento stringa, ed il suo codice in assembler-IL:

.namespace MyNamespace
{
   .class private abstract auto ansi beforefieldinit MyClass 
   extends [mscorlib]System.Object
   { .method assembly hidebysig instance void MyMethod(string s) cil managed
     {
       ...
       L_000x: ldtoken instance void MyNamespace.MyClass::MyMethod(string) // D0????????
       L_00xx: pop // 26
       ...
     }
   }
}

si nota la presenza delle seguenti istruzioni: ldtoken, pop

il token passato (sia esso MethodInfo, FieldInfo o Type) viene convertito in RuntimeHandle e pushato sullo stack per poi essere immediatamente poppato! ; - ) ...in pratica nessuna modifica al codice!: - o

tale strategia "blocca" solo .NET Reflector (per un banale bug e/o funzionalità non implementata: - )) e getta "fumo negli occhi" a chi deve valutare realmente le potenzialità di un obfuscator! ; - )

basta spiare il codice con un altro decompilatore (ilspy, ect.) per capire il fallimento totale di tale tecnica...ed il codice "ritenuto sicuro" appartiene già ad un altro!!!: - D

modificando la sequenza di byte: D0 ?? ?? ?? ?? 26 in 00 00 00 00 00 00 il codice torna visibile anche sotto reflector! dato che la signature (i 4 valori dopo DO) non è sempre uguale, è necessario, automatizzare lo sostituzione. Si utilizzerà il noto CFF explorer a cui passeremo questo semplice script (ldtoken_pop.cff):

-- ldtoken/pop patch (c) Cantelmo Software

filename = GetOpenFile()

if filename == null then
   return
end

-- "ND" elements are wildcards

data = { 0xD0, ND, ND, ND, ND, 0x26 }

-- 0x00 = nop -> nothing instruction! ; - )
cr4ck = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }

filehandle = OpenFile(filename)

if filehandle == null then
   return
end

offset = SearchBytes(filehandle, 0, data)

while offset != null do   
   WriteBytes(filehandle, offset, cr4ck)
   offset = SearchBytes(filehandle, offset + 1, data)
end

if SaveFile(filehandle)== true then  
   MsgBox("deprotected!")
end

enjoy! : - )

Articolo Link Commenti Commenti (0)  Storico Storico  Stampa Stampa
 
Di Marcello Cantelmo (del 20/06/2011 @ 11:20:17, in .NET Decompiler, linkato 128 volte)

grazie alle vulnerabilità del codice .NET ...tutti, ormai, riescono a fare tutto! : - )

ultimamente sto riscontrando una situazione davvero divertente:

  • i "piccoli" clonano le tecniche di protezione di altri obfuscator che poi re-implementano in prodotti gratuiti o, comunque, a prezzo minore dei rispettivi competitors e riuscire, in qualche modo, ad entrare e sopravvivere nel mondo del business del software;
  • i "grandi" (produttori di componenti) invece rilasciano gratuitamente nuovi decompilatori per la piattaforma .NET

il riscontro immediato è che dopo, "Jetbrains" ora anche "Telerik" ha rilasciato il suo decompilatore: JustDecompile! (...la nota simpatica è che viene rilasciato un tool che danneggia tutti ma poi viene precisato che tale tool non dev'essere utilizzato per il reverse-engineering dello stesso) : - o

nell'offuscazione del ns codice, quindi, non basta "testare" un obfuscator solo con il noto "reflector" ma i test di validazione devono essere fatti anche su tutti questi altri prodotti! ; - )

[Update] 20-giu-2011 (17:27): tale tool è stato "offuscato" (...purtroppo la concorrenza è a tutti i livelli : - P) con un obfuscator commerciale che fallisce miseramente all'analisi con "ilspy.net" (altro decompiler).

c'è ora da chiedersi: "chi sarà il prossimo"? : - D 

Articolo Link Commenti Commenti (0)  Storico Storico  Stampa Stampa
 
Di Marcello Cantelmo (del 15/06/2011 @ 11:52:32, in Goliath .NET Obfuscator, linkato 145 volte)

Goliath .NET Obfuscator è in continua evoluzione con tecniche di protezione sempre uniche ed originali!

Nell'attuale versione 5.5.x è stato inserito un ulteriore parametro di protezione (/array) che consente l'offuscazione automatica degli "array" di byte (nelle successive release anche di tutti gli altri tipi). In abbinamento a tale parametro è anche possibile usare il parametro /proxy (per usare, cioè, i "delegate-invoke" anzichè le "call-dirette")

N.B.: come sempre, tale parametro di protezione è disponibile, indipendentemente dalla tipologia di progetto usata: winforms, web, wpf, wp7, silverlight, ect.

enjoy! ; - )

Articolo Link Commenti Commenti (0)  Storico Storico  Stampa Stampa
 
Di Marcello Cantelmo (del 11/06/2011 @ 15:26:17, in Goliath .NET Obfuscator, linkato 338 volte)

Ancora un test sulle potenzialità del Goliath .NET Obfuscator 5.5.x su progetti WPF-MVVM (notoriamente ostici all'offuscazione del codice) ; - )

Link

Articolo Link Commenti Commenti (7)  Storico Storico  Stampa Stampa
 
Di Marcello Cantelmo (del 31/05/2011 @ 22:40:03, in WPF, linkato 133 volte)

Come più volte ribadito è possibile sfruttare le molteplici tecniche di protezione presenti in Goliath .NET Obfuscator rel. 5.5.x qualunque sia il tipo di progetto sviluppato! : - )

Oggetto di questo post è la protezione di una semplice applicazione "WPF-Browser":

 

A questo link è disponibile l'applicazione demo; mentre, invece, da questo link è possibile scaricare il solo eseguibile da decompilare! : - P

I parametri utilizzati per la protezione sono:

/main:C:\testv55\tictactoe.exe /nonusercode /nopublic /cg /e:s /var /call /values /proxy /r /namespaces /stack

enjoy! ; - )

Articolo Link Commenti Commenti (0)  Storico Storico  Stampa Stampa
 
Di Marcello Cantelmo (del 30/05/2011 @ 09:58:34, in Windows Phone 7, linkato 135 volte)

Alcune delle molteplici tecniche di protezione presenti in Goliath .NET Obfuscator rel. 5.5.x applicate ad un semplice progetto WP7:

I parametri utilizzati sono:

/main:C:\testv55CalendarControl.dll /nonusercode /nopublic /cg /e:s /var /call /values /proxy /r /xap:C:\testv55\CalendarControl.xap /namespaces

L'esempio, invece, è disponibile a questo link

enjoy! ; - )

Ulteriori Aggiornamenti:

  • 01-giu-2011: inserito nel processo di protezione il parametro /math per l'offuscamento delle operazioni matematiche: +, -, *, /, And, Not, Or, Xor : - D
Articolo Link Commenti Commenti (0)  Storico Storico  Stampa Stampa
 
Di Marcello Cantelmo (del 08/05/2011 @ 19:36:28, in Goliath .NET Obfuscator, linkato 126 volte)

Le tecniche di protezione implementate nel nuovo Goliath .NET Obfuscator rel. 5.5 sono sempre disponibili indipendentemente dal tipo di progetto utilizzato: winform, web, silverlight, ect.

Un esempio di protezione su un progetto Silverlight4 è disponibile a questo link

I parametri utilizzati sono:

goliath /main:C:\g_test_v5\testSL.dll /e:s /values /nopublic /xap:C:\g_test_v5\TestSL.xap /snk:C:\g_test_v5\goliath.snk /proxy /r /var /namespaces /call

/main: assembly principale;
/e:s encryption statico delle stringhe;
/values encryption statico dei valori numerici (integer);
/nopublic esclusione dei tipi pubblici dal renaming;
/xap: il file .xap che deve essere aggiornato con gli assembly offuscati;
/snk: file strong-name da utilizzarsi per rifirmare gli assembly (ed automaticamente viene inserito un check anti-tampering);
/proxy utilizzare proxy-call anzichè call dirette ai metodi (in questo esempio applicato solo all'encryption delle stringhe e dei valori numerici);
/r renaming dei simboli;
/var offuscazione delle variabili nei metodi /namespaces renaming dei namespaces;
/call camuffamento delle call ai costruttori e metodi

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

 

Menù Blog

< febbraio 2012 >
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
       
             

Cerca per parola chiave
 

Titolo
.NET (4)
.NET Components (1)
.NET Decompiler (4)
.NET Metamorphic & Polymorphic Code (2)
.NET Reverse-Engineering (8)
.NET Software Protection (2)
Amici (1)
Goliath .NET CodeShield (1)
Goliath .NET CPU Emulator (3)
Goliath .NET MuPAL (2)
Goliath .NET Obfuscator (25)
Goliath .NET SerialShield (1)
Hardware (1)
KeyGenMe (1)
Off-Topic (1)
Social Network (1)
UNPACKER (1)
VS.NET (1)
Windows Phone 7 (3)
WinForLife (1)
WPF (1)

Catalogati per mese:
Febbraio 2006
Marzo 2006
Aprile 2006
Maggio 2006
Giugno 2006
Luglio 2006
Agosto 2006
Settembre 2006
Ottobre 2006
Novembre 2006
Dicembre 2006
Gennaio 2007
Febbraio 2007
Marzo 2007
Aprile 2007
Maggio 2007
Giugno 2007
Luglio 2007
Agosto 2007
Settembre 2007
Ottobre 2007
Novembre 2007
Dicembre 2007
Gennaio 2008
Febbraio 2008
Marzo 2008
Aprile 2008
Maggio 2008
Giugno 2008
Luglio 2008
Agosto 2008
Settembre 2008
Ottobre 2008
Novembre 2008
Dicembre 2008
Gennaio 2009
Febbraio 2009
Marzo 2009
Aprile 2009
Maggio 2009
Giugno 2009
Luglio 2009
Agosto 2009
Settembre 2009
Ottobre 2009
Novembre 2009
Dicembre 2009
Gennaio 2010
Febbraio 2010
Marzo 2010
Aprile 2010
Maggio 2010
Giugno 2010
Luglio 2010
Agosto 2010
Settembre 2010
Ottobre 2010
Novembre 2010
Dicembre 2010
Gennaio 2011
Febbraio 2011
Marzo 2011
Aprile 2011
Maggio 2011
Giugno 2011
Luglio 2011
Agosto 2011
Settembre 2011
Ottobre 2011
Novembre 2011
Dicembre 2011
Gennaio 2012
Febbraio 2012

Gli interventi più cliccati

Ultimi commenti:
Carina la nuova graf...
06/02/2012 @ 14:13:43
Di Giochi online
Thanks for all of th...
09/01/2012 @ 06:44:06
Di Cheap Christian Louboutin
A wonderful afternoo...
09/01/2012 @ 06:43:57
Di christian louboutin outlet

Titolo
In che modo Proteggi il tuo software?

 Chiave Hardware
 Chiave Software
 Nessuna Protezione




08/02/2012 @ 8.35.52
script eseguito in 469 ms