Come eseguire in sicurezza codici binari casuali? [chiuso]

2

Ok, quindi sto cercando un modo per eseguire in modo sicuro un codice binario generato a caso. Devo anche essere in grado di decompilare il codice. Qualsiasi idea e tutti i linguaggi di programmazione sono i benvenuti.

BTW è soprattutto il codice binario; codice byte o codice sorgente non funzionerà. Questo è un progetto di ricerca, quindi non posso aggiungere variabili.

    
posta amir 22.10.2013 - 03:37
fonte

2 risposte

3

Da quello che sembra, si vuole fare qualcosa di simile a ciò che i ricercatori di malware fanno per l'analisi del malware.

Per quanto riguarda l'esecuzione sicura dei file binari casuali, il commento di FrustratedWithFormsDesigner lo copre bene.

Basta eseguirlo su una macchina virtuale per evitare qualsiasi rischio di spargimento nel computer. Esistono molte macchine virtuali gratuite come Virtual Box o qualche livello gratuito di VMWare o Parallels

Ma se vuoi sapere di più su come limitare o sandbox i binari, puoi anche leggere di più qui: link

Per quanto riguarda la decompilazione, c'è anche qualche menzione di ciò nell'articolo precedente. Puoi anche cercare il reverse engineering che potrebbe aiutarti.

Anche se per curiosità, ti dispiace se chiedo di cosa tratta il progetto di ricerca? Forensics o Reverse Engineering o ???

    
risposta data 22.10.2013 - 03:55
fonte
0

Quindi generi casualmente codice ed eseguilo?

Per come la vedo io, le tue scelte linguistiche sono:

  1. binario (istruzioni macchina dirette)
  2. qualsiasi lingua di livello superiore

Se (2) viene generato casualmente, probabilmente semplicemente non verrà compilato. Supponendo che il tuo codice non sia veramente casuale e tu lo faccia compilare, molto probabilmente finirai con delle eccezioni a causa di tutti i cattivi dati che vengono trasmessi.

Quindi questo ti lascia solo con (1). Hai una probabilità molto più alta (ancora non al 100%) che sarai in grado di mettere insieme un mucchio di istruzioni macchina "dall'aspetto valido" che potrebbero essere eseguite. Ma poi di nuovo, il 99,99% delle istruzioni della macchina generate a caso non supererà nemmeno 4 o 5 di esse.

Se vuoi provarlo tu stesso. Direi di dimenticare di provare a prevenire i danni . Non ce ne saranno. Basta compilare qualsiasi programma C ++, inserire un breakpoint nella funzione principale, aprire la finestra di smontaggio e spianare sulla memoria con dati casuali e solo vedere fino a che punto arriva il tuo programma.

L'unica protezione di cui hai bisogno è già fornita per te da qualsiasi sistema operativo moderno che supporti la memoria virtuale. Un normale processo utente (ad esempio uno che non è in esecuzione in modalità kernel) non può danneggiare alcun altro processo o il sistema operativo stesso. Il peggio che può fare è uccidersi mentre esegue istruzioni non valide. Penso che per il tuo esperimento, dovrebbe essere tutta la protezione di cui hai bisogno.

    
risposta data 24.10.2013 - 09:14
fonte

Leggi altre domande sui tag