Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - CrashTest

Pages: 1 ... 3 4 [5]
61
Introduce yourself - Presentazioni / Re:Mi presento :D
« on: November 19, 2016, 05:16:17 PM »
You are not allowed to view links. Register or Login
ma abiti ancora a taranto o sei partito da qualche parte?
Ora sono a Firenze per l'università :D

62
Password Cracking / Re:L'essenziale del Password Cracking
« on: November 18, 2016, 08:33:03 PM »
You are not allowed to view links. Register or Login
Quote
E voi che ne pensate? Avete in mente altri "schemi" per trovare un password?
Una volta ho sbloccato un programmino per seguire le fasi lunari e altre cosette astronomiche semplicemente aprendo l'eseguibile con Wordpad e, cercando delle stringhe di testo pertinenti, ho trovato la password scritta in chiaro. 8)
Mai funzionato con altri software... :(
Per quanto riguarda le password di account altrui... beh sinceramente non ne sento l'esigenza. Per adesso... ::) :D
Aprendo un eseguibile con WordPad non ottieni altro che caratteri incomprensibili, dubito tu sia riuscito a fare una modifica :D
Se tu volessi leggere qualcosa da un eseguibile dovresti usare un Hex editor o un Debugger. Hai nominato wordpad quindi presumo ti riferisca a Windows. In questo caso potresti utilizzare Ollydbg o IDA Pro. Strumenti molto molto utili, ti restituiscono l'assembler del programma che puoi (se sei in grado) modificare per creare patch e ricreare l'eseguibile patchato. Questa pratica si chiama Reverse engineering

63
GNU-Linux / Gestione dei processi in Linux - Pt. 1
« on: November 18, 2016, 07:54:43 PM »
Gestione dei processi in Linux

1. Cosa è un processo

Un processo è un programma in esecuzione, viene elaborato da un processore sotto la supervisione del Sistema Operativo. La loro gestione è affidata allo scheduler che tramite algoritmi di scheduling ne pianifica l'esecuzione stabilendo un ordine temporale e privilegiando alcune richieste (che rispettano determinati criteri) stabilendo code di priorità. Questa pratica si chiama politica di scheduling. Non scriverò ulteriormente su questo, magari farò un altro thread parlando dei processi in generale :)


1.2. Creazione di un processo

Ora che abbiamo rivisto cosa è un processo vediamo come questo viene creato.
Gli eventi più comuni,a seconda di quello che sceglie il programmatore o scelte fatte dal sistema operativo, che possono dar luogo ad un processo sono:
  • Inizializzazione del sistema
  • Avvio di nuovi batch
  • Avvio di un nuovo processo da parte dell'utente
Condivisione delle risorse:
  • Padre e figlio condividono tutte le risorse
  • Padre e figlio condividono alcune risorse
  • Padre e figlio non condividono alcuna risorsa
Esecuzione/sincronizzazione:
  • Il padre e figlio procedono in modo concorrente
  • Il padre attende il completamento dell’esecuzione del figlio
1.3. Processi in Linux

Ora che conosciamo le varie modalità di creazione di un processo vediamo come questi funzionano su sistemi Unix/Linux.
Iniziamo col dire che un processo su Linux è caratterizzato dalla sua immagine.

L'immagine di un processo consiste di:

  • Immagine di memoria (virtual address space)
  • valore dei registri (CPU status)
  • tabella dei file (file descriptor table)
  • directory di lavoro
Quando un processo viene creato a questo e? assegnato uno spazio virtuale degli indirizzi (virtual address space). Questo spazio è usato dal processo durante tutta la sua esecuzione.
Le informazioni di sistema relative ad un processo sono invece mantenute in due aree: l' user space e la process table.
L' user space di un processo e? localizzato al termine della parte superiore dell’address space del processo ma, tranne in alcune eccezioni (monitor mode) questo non è accessibile. Contiene:

  • Puntatore al processo nella process table
  • Tabella dei file
  • Directory di lavoro corrente
Ci tengo inoltre a sottolineare che questa area può essere sottoposta a swap.

La process table contiene le principali informazioni mantenute dal sistema operativo rispetto ad ogni processo. È situata nella memoria del kernel del sistema operativo e non puo? essere sottoposta a swap. Ogni ingresso (entry) della tabella contiene:

  • PID del processo
  • PID del processo padre (PPID)
  • ID utente (user ID)
  • Stato
  • Descrittore di evento (ad esempio, un processo in stato di sleeping, indica l’evento per cui il processo e? in attesa)
  • Posizione nella user area
  • Priorita?
Nei sistemi Unix/Linux per vedere le informazioni contenute nella process table e nell' user space è possibile usare il comando: ps.

1.4. Struttura della memoria

Lo spazio di indirizzi virtuale di un processo e? diviso in segmenti, cioe? un insieme di indirizzi virtuali ai quali il processo puo? accedere. Se tenta di accedere in zone di memoria che non gli competono questo processo vai in SegFaul (Segmentation Fault). Solitamente un programma (parlerò di quelli scritti in linguaggio C) viene suddiviso nei seguenti segmenti:
  • Il segmento di testo (text segment). Contiene il codice del programma le funzioni di libreria da esso utilizzate e le costanti. Questo spazio è condiviso fra tutti i processi che eseguono lo stesso programma ed è impostato in sola lettura per evitare sovrascritture che modifichino le istruzioni. Viene allocato dalla funzione exec() all’avvio del programma e resta invariato per tutto il tempo di esecuzione del processo;
  • Il segmento dei dati (data segment). Contiene le variabili globali (cioè quelle definite al di fuori di tutte le funzioni che compongono il programma) e le variabili statiche. Questo segment è diviso a sua volta in due parti: variabili inizializzate e variabili non inizializzate. Non scriverò altro su questo per non allungare troppo il brodo, magari farò un nuovo thread;
  • Lo heap. Qui che avviene l’allocazione dinamica della memoria; puo? essere ridimensionato allocando e deallocando la memoria dinamica con le apposite funzioni malloc(), calloc(), free(), etc. (funzioni che si appoggiano su chiamate di sistema. In realtà è il sistema operativo che alloca la memoria).
  • Lo stack, che contiene, appunto lo stack del programma. Tutte le volte che si effettua una chiamata ad una funzione e? qui che viene salvato l’indirizzo di ritorno ed altre informazioni ausiliare. La funzione chiamata alloca qui lo spazio per le sue variabili locali: grazie a questo spazio le funzioni possono essere chiamate ricorsivamente. Al ritorno dalla funzione, lo spazio e? automaticamente rilasciato e ripulito. La pulizia in C e C++ viene fatta dal chiamante in quanto non sono dotati di garbage collector. La dimensione di questo segmento aumenta seguendo la crescita dello stack del programma, ma non viene ridotta quando quest’ultimo si restringe. Questo potrebbe causare problemi di frammentazione.
Su questo ci sarebbe molto molto altro da dire in quanto al di là di spazi di memoria sono anche strutture dati, magari potremmo discuterne

P.S.: Mi scuso per eventuali errori e differenze tra i caratteri ma con questo editor è molto difficile scrivere un testo formattato. Sto riportando il tutto in un documento LaTex, magari se vi interessa, al termine pubblicherò un pdf.
P.P.S.:Nella prossima parte vedremo le syscall utilizzate per gestire i processi. Attendo commenti per capire se un argomento del genere possa interessare al forum

64
Introduce yourself - Presentazioni / Re:Cialve!
« on: November 17, 2016, 09:05:40 PM »
Benvenuto!    :D :D

65
Introduce yourself - Presentazioni / Re:Mi presento :D
« on: November 16, 2016, 05:37:29 PM »
You are not allowed to view links. Register or Login
CIao e benvenuto  ;D

Grazie  :D

66
Introduce yourself - Presentazioni / Mi presento :D
« on: November 16, 2016, 05:19:34 PM »
Ciao a tutti,

mi chiamo Cosimo, 19 anni, sono di Taranto e sono un appassionato di informatica.
Sono un utente linux da ormai 3 anni. La mia esperienza è iniziata nel 2013 quando decisi di provare Debian, dopo 3-4 mesi provai ad reinstallare lo stesso sistema, questa volta però nella versione minimale. Dopo 7-8 mesi, per provare qualcosa di nuovo e di diverso decisi di installare Arch, beh nulla da dire, da allora mai più cambiato, mi trovo molto bene; un sistema rolling release, sempre aggiornato, ottima community e cosa molto molto comoda: l'AUR, un repository community-driven, ben fornito e tenuto sempre aggiornato. Mi interesso di programmazione, principalmente C/C++, nel tempo libero per curiosità ho provato anche PHP, con il quale per divertirmi ho provato a sviluppare un piccolo framework (che rilascerò appena lo riterrò presentabile e adatto per sfruttare al meglio PHP 7) per la gestione dinamica dei contenuti, sviluppato in PHP 5.6  sfruttando l'OOP e seguendo il pattern MVC. Per interfacciarmi con i Database ho usato PDO.

Bene, penso di aver scritto già troppo per una presentazione, ci becchiamo nel forum ed un in bocca al lupo ai creatori :D

Pages: 1 ... 3 4 [5]