ShellFl0w – Assembly: Th3_Rubb!t_Jump

Bene, siamo quasi alla fine della parte dedicata ad Assembly di questo capitolo: C_Ass3mbly.sh,  in questo articolo approfondirò alcuni concetti che sono stati espressi in precedenza e poi tratteremo delle strutture di controllo, come funzionano e quando inserirle.
A fine di questo capitolo, arriveranno i video che ritratteranno queste nozioni e probabilmente ci saranno anche delle esclusive.

Strutture di Controllo

Grazie ai linguaggi di alto livello come C/C++, Java e Python sappiamo quelle che sono le strutture di controllo o condizionali, in assembly non ci incontreremo con queste, ma con i suoi antenati (i goto ad esempio), la logica che definisce l’utilizzo di questi è data dal programmatore e dipenda da esso il suo corretto funzionamento, un po’ come tutto il linguaggio Assembly.

Comparazioni

Le strutture di controllo ragionano in base alla comparazione dei dati, ossia la sottrazione tra due operandi di quale il risultato di questa operazione determina un risultato estrapolato dal registro FLAGS (Ricorda, il risultato non viene memorizzato da nessuna parte), questo contiene al suo interno molte varianti che possono essere prese in considerazione in base al risultato ricevuto.

Per gli interi senza segno:

ci sono 2 flag (bit nel registro FLAGS) che sono importanti: lo Zero flag (ZF) e il carry flag . Lo Zero flag e’ settato se la differenza risultante e’ 0. Il carry flage’ usato come flag di prestito nella sottrazione.
cmp left, right: grazie al risultato possiamo constatare che flag restituisce.

Ora poniamo diversi esempi pratici:

Per gli interi con segno:
Ci sono tre flag importanti: Lo Zero Flag (ZF), OverFlow Flag (OF) e lo Sign Flag (SF):

  • Lo Zero Flag rimano lo stesso come nell’esempio precedente.
  • L’Overflow Flag è impostato quando c’è un caso di OverFlow o UnderFlow.
  • Il Sign Flag invece se il risultato dell’operazione è negativo.

Vediamo diversi esempi pratici anche qua:

Perchè cmp 10, 10 restituisce 0? Beh perchè chiaramente 10 – 10 = 0, quindi se è 0 allora è un Zero flag. Mentre cmp 10, 5 quindi 5 – 10 restituisce -5 quindi numero negativo quindi Sign Flag.

Noi prendiamo come punto di riferimento cmp, ma non è l’unico che possiamo utilizzare per le comparazioni.

Con i jump noi possiamo decidere a quale parte del codice saltare e volendo possiamo creare delle iterazioni, giusto per fare un esempio vediamo sto codice:

Ora abbiamo visto quelli che sono i jump condizionati, ossia quei jump che dato un cmp eseguirà una determinata azione, ecco un esempio di jump non-condizionato

Questi sono gli “opcode” che possiamo utilizzare quando dobbiamo specificare la condizione del jump, nel codice precedente noi abbiamo impostato che se nella comparazione avessimo ottenuto un Zero Flag, allora si avrebbe ottenuto un jump, prendendo lo stesso codice, ci si può divertire nel:

Per quanto possa sembrare difficile, Assembly non è un linguaggio difficile ma la parte cruciale di questo è l’organizzazione, in fatti se si impara realmente come funziona questo linguaggio e in generale come un computer funziona, non è impossibile dedicarsi a questo senza troppi problemi, come sempre consiglio di approfondire questi argomenti.



banner9



Source: https://www.freenixsecurity.net/it/2017/11/29/shellfl0w-assembly-th3_rubbt_jump/

Se vuoi sostenerci, puoi farlo acquistando qualsiasi cosa dai diversi link di affiliazione che abbiamo nel nostro sito o partendo da qui oppure alcune di queste distribuzioni GNU/Linux che sono disponibili sul nostro negozio online, quelle mancanti possono essere comunque richieste, e su cui trovi anche PC, NAS e il ns ServerOne. Se ti senti generoso, puoi anche donarmi solo 1€ o più se vuoi con PayPal e aiutarmi a continuare a pubblicare più contenuti come questo. Grazie!

Hai dubbi o problemi? Ti aiutiamo noi!

Se vuoi rimanere sempre aggiornato, iscriviti al nostro canale Telegram.
Se vuoi ricevere supporto per qualsiasi dubbio o problema, iscriviti alla nostra community Facebook o gruppo Telegram.
Cosa ne pensi? Fateci sapere i vostri pensieri nei commenti qui sotto.
Ti piace quello che leggi? Per favore condividilo con gli altri.
Amazon Music
Scopri le ultime offerte per dischi ssd su Acquista su Amazon
Scopri le ultime offerte per memorie RAM DDR su Acquista su Amazon
Scopri le ultime offerte per Chromebook su Acquista su Amazon
Scopri le ultime offerte per Raspberry su Acquista su Amazon

Potrebbero interessarti anche...

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.