Domanda

Mi piacerebbe un passo avanti come il salamandra fa quello che fa? Includerò alcuni punti sono particolarmente interessato a

-

.

link on demand

Il linker inizia con i metodi di immissione (che è possibile configurare) e cammina ricorsivamente il grafico della chiamata per collegare solo i bit richiesti del codice MSIL. Il codice non utilizzato non sarà collegato all'Assemblea finale. Pertanto, il tuo codice diventa più efficiente e le dimensioni del file diventano più piccole.

-

.

Link in API quadro

Il linker è così potente che anche le assemblee di Microsoft .NET Framework, come System.Windows.Forms.dll, possono essere collegate ai propri assembly .NET. Dal momento che collega su richiesta, sarà collegata solo la porzione richiesta. Questo è molto utile per proteggere il tuo codice, la semplice distribuzione dell'applicazione e la ripresa dei problemi debug nel debug nel codice quadro stesso.

-

.

Compliamento nativo

Il compilatore nativo converte tutti i gruppi gestiti, compresi i gruppi di sistema, nel codice nativo X86. Nessuna istruzione MSIL verrà spedita, nessuna compilazione JIT in fase di esecuzione. Ciò fornisce la migliore protezione della migliore contro smontaggio e decompilazione, e migliora anche le prestazioni e il tempo di avvio.

-

.

Distribuzione semplice e veloce senza installazione Full Microsoft .NET Framework

Lo strumento Mini-Deployment mette insieme il set minimo dei file di runtime CLR e degli assembly dipendenti che possono essere semplicemente copiati in una singola cartella su una macchina di destinazione e l'applicazione viene eseguita come se l'intera framework sia installata. Poiché l'installazione è isolata in una singola cartella, non ci saranno conflitti con la futura installazione .NET. Quando il collegamento viene utilizzato per i gruppi dipendenti, ridurrà ulteriormente la dimensione del file.

-

.

Protezione del codice C'è un problema Nessuno degli attuali riscontri degli Obfuscatori, cioè, non importa quanto sia buona l'offuscinazione, ci sono chiamate di libreria di sistema e altri riferimenti esterni sparsi nel tuo codice (vedi Rosso nel basso). Poiché queste chiamate sono riferimenti esterni, gli obfuscolatori dovranno lasciarli invariati. Tuttavia, questi riferimenti aiutano molto a capire il codice decompilato, perché sono ben documentati e pubbliche API. Il Linkeer rimuove o riduce tali API pubbliche collegando le API quadro nel proprio codice, e quindi rende il tuo codice molto più difficile da decompilare dopo l'offuscamento. Sotto mostra il codice MSIL del campione prima e dopo che il linker viene utilizzato.

Prima: (Nessun Obfuscolatore è in grado di rinominare il seguente codice, poiché sono API pubbliche esterne)

IL_0000:  ldarg.0
IL_0001:  call       instance void [System.Windows.Forms]System.Windows.Forms.Form::.ctor()
IL_0006:  ldarg.0
IL_0007:  newobj     instance void  [System.Windows.Forms]System.Windows.Forms.TextBox::.ctor()
IL_000c:  stfld      class [System.Windows.Forms]System.Windows.Forms.TextBox A.A::A
IL_0011:  ldarg.0
IL_0012:  ldfld      class [System.Windows.Forms]System.Windows.Forms.TextBox A.A::A
IL_0017:  call       valuetype  [System.Drawing]System.Drawing.Color [System.Drawing]System.Drawing.Color::get_Cyan()
IL_001c:  callvirt   instance void  [System.Windows.Forms]System.Windows.Forms.TextBoxBase::set_BackColor(valuetype [System.Drawing]System.Drawing.Color)
IL_0021:  ldarg.0
.

.

Dopo: (assolutamente nessuna finestra Windows.Forms sono utilizzati API, un ostacolo elevato per un hacker per capirlo Junk)

IL_0000:  ldarg.0
IL_0001:  call       instance void a.A::.ctor()
IL_0006:  ldarg.0
IL_0007:  newobj     instance void  D.c::.ctor()
IL_000c:  stfld      class D.c A.A::A
IL_0011:  ldarg.0
IL_0012:  ldfld      class f.aA.A::A 
IL_0017:  call  valuetype        a.B()
IL_001c:  callvirt  instance   void  D.c(valuetype g.e)
IL_0021:  ldarg.0  
.

Alcune di queste cose mi sono sconfigintate, e mi chiedevo se chiunque altro sapesse come funzionasse?

È stato utile?

Soluzione

Compliation nativo, Distribuzione semplice e veloce senza installazione Full Microsoft .NET Framework, Protezione del codice:

Stanno compilando "YourApp" + ".NetFramework" in una DLL nativo. Questo non ha simboli non e nessun simboli, quindi è molto più difficile da invertire l'ingegnere.

link on demand, Collegamento in API quadro:

Per mantenere la .dll una dimensione risonabile, devono lasciare il codice morto (il codice che non verrà mai chiamato) dalla DLL.Per fare ciò, camminano l'albero di chiamata dalla radice, di solito principale (), e includi semplicemente questi metodi.Potrebbero esserci problemi con il codice chiamato tramite la riflessione, quindi immagino che consentano più di 1 radice.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top