Pester come ti dicevo esistono diversi metodi, ti spiego brevemente le funzioni di quelli che ti ho menzionato.
Trick antidebug
Ce ne sono dei più disparati ma tutti servono per un motivo: riconoscere se un debugger è "attaccato" al programma.
Il più delle volte consiste nel leggere nel PEB se i flag di debug sono true, misurare i tempi di esecuzione di determinate porzioni sensibili del programma ecc...
Packer/Crypter
Consistono in un software che comprime il tuo programma per renderlo più piccolo di dimensioni. Molti packer oltre a diminuirne la dimensione rimuovono la import table e reindirizzano. Di default utilizzano trick antidebug e decryptano a runtime porzioni di condice prima di eseguirle (questo impedisce un analisi statica del software packato).
I packer sono molto comuni e ce ne sono alcuni più complicati di altri ma alla fine nella maggior parte dei casi dopo che il codice del packer è stato eseguito il controllo viene trasferito al tuo software.
Obfuscator
Offuscano come dice il nome il codice ed aggiungono del codice spazzatura (junk) in mezzo alle istruzioni reali.
Utilizzato per distrarre i reverser alle prime armi o con poca dimistichezza, un reverser alle prime armi tenterà di capire il significato di codice spazzatura perdendo tempo (il developer spera che perdita di tempo porti alla resa)
Dongle
Utilizzati per lo più per bloccare la distribuzione illegale di software. La maggior parte di essi vengono utilizzati come una licenza.
Il top dei dongle sono quelli che al loro interno contegono chiavi per decriptare il codice o addirittura porzioni di codice necessarie per eseguire il software. Sono molto sicuri ma se un bravo reverser riesce ad avere il software e fisicamente il dongle in mano anche queste protezioni cadono inesorabilmente.
Come vedi sono tutti metodi ed escamotage per tentare di bloccare/rallentare l'analisi del software. Come ti dicevo nel post precedente se un software è appetibile niente fermerà il reverser avanzato.
Trick antidebug
Ce ne sono dei più disparati ma tutti servono per un motivo: riconoscere se un debugger è "attaccato" al programma.
Il più delle volte consiste nel leggere nel PEB se i flag di debug sono true, misurare i tempi di esecuzione di determinate porzioni sensibili del programma ecc...
Packer/Crypter
Consistono in un software che comprime il tuo programma per renderlo più piccolo di dimensioni. Molti packer oltre a diminuirne la dimensione rimuovono la import table e reindirizzano. Di default utilizzano trick antidebug e decryptano a runtime porzioni di condice prima di eseguirle (questo impedisce un analisi statica del software packato).
I packer sono molto comuni e ce ne sono alcuni più complicati di altri ma alla fine nella maggior parte dei casi dopo che il codice del packer è stato eseguito il controllo viene trasferito al tuo software.
Obfuscator
Offuscano come dice il nome il codice ed aggiungono del codice spazzatura (junk) in mezzo alle istruzioni reali.
Utilizzato per distrarre i reverser alle prime armi o con poca dimistichezza, un reverser alle prime armi tenterà di capire il significato di codice spazzatura perdendo tempo (il developer spera che perdita di tempo porti alla resa)
Dongle
Utilizzati per lo più per bloccare la distribuzione illegale di software. La maggior parte di essi vengono utilizzati come una licenza.
Il top dei dongle sono quelli che al loro interno contegono chiavi per decriptare il codice o addirittura porzioni di codice necessarie per eseguire il software. Sono molto sicuri ma se un bravo reverser riesce ad avere il software e fisicamente il dongle in mano anche queste protezioni cadono inesorabilmente.
Come vedi sono tutti metodi ed escamotage per tentare di bloccare/rallentare l'analisi del software. Come ti dicevo nel post precedente se un software è appetibile niente fermerà il reverser avanzato.