GLI SCHEMI DI PROTEZIONE DI GOLIATH .NET OBFUSCATOR - PARTE II^ - 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




07/09/2010 @ 16.56.36
script eseguito in 63 ms


Valid XHTML 1.0 / CSS
\\ Home Page : Articolo
GLI SCHEMI DI PROTEZIONE DI GOLIATH .NET OBFUSCATOR - PARTE II^
Di Marcello Cantelmo (del 13/01/2010 @ 11:19:38, in Goliath .NET Obfuscator, linkato 256 volte)

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 Articolo  Storico Storico Stampa Stampa
 
Nessun commento trovato.

Anti-Spam: digita i numeri CAPTCHA
Testo (max 1000 caratteri)
Nome
e-Mail / Link


Disclaimer
L'indirizzo IP del mittente viene registrato, in ogni caso si raccomanda la buona educazione.


. . : :   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