Category: C

22
mar
Hybris memory lookup, now Google powered!!!
Postato da il 22-03-2010 alle ore 01:32:26


No, non ho inserito un motore di ricerca dentro Hybris (sarebbe figo però vero? XD) !

Mi spiego … profilando un po l’interprete, mi è parso evidente che una delle funzioni che veniva richiamata più spesso durante l’esecuzione di uno script, come è facile immaginare, è quella per il look up delle variabili in memoria.

In pratica è la funzione che, dato il nome di una variabile (quindi una chiave), deve trovare l’oggetto associato all’interno del’array associativo che rappresenta la memoria virtuale di Hybris .

Così ho pensato a come ottimizzare l’algoritmo di ricerca, che prima si limitava a scorrere l’array contemporaneamente dall’inizio verso la fine e dalla fine verso l’inizio (in realtà un espediente abbastanza inutile quando ci sono poche variabili, ma quando sono molte si fa sentire) e ho capito che mi conveniva utilizzare una hash table .

Questo tipo di struttura è tanto efficiente quanto difficile da realizzare e, pensando che avrei impiegato giorni, se non settimane, per buttare giù un implementazione ottimizzata al massimo, mi son messo a cercare online se ne esistevano già di pronte e soprattutto di facilmente integrabili con quanto scritto fin’ora .

E che ti vado a scoprire?

More…

Popularity: 8% [?]

20
mar
Gestione “Smart” Della Memoria In Hybris : Parte II .
Postato da il 20-03-2010 alle ore 23:20:46


Come detto nell’ultimo articolo, negli ultimi commit di Hybris è stato inserito un garbage collector strutturato in modo tale da districarsi al meglio tra le varie ricorsioni e i vari deliri di allocazione nell’interprete .

Nell’articolo avevo anche detto che questo sistema, nonostante avesse il vantaggio di diminuire drasticamente l’utilizzo della memoria durante l’esecuzione di uno script, aveva lo svantaggio di diminuire anche le prestazioni complessive dato com’era strutturato l’algoritmo per determinare se un dato oggetto era deallocabile durante l’esecuzione dello script stesso, algoritmo che effettuava diversi controlli, tra i quali due loop (quelli che rappresentavano maggiormente il collo di bottiglia) sul frame della funzione chiamante e su quello della memoria principale.

Ebbene, sono un coglione XD .

Si avete letto bene, sono un coglione perchè avevo strutturato l’algoritmo ragionando “a posteriori” senza pensare che prevenendo questo controllo si poteva risolvere il problema ed aumentare anche le prestazioni rispetto a prima .

More…

Popularity: 6% [?]

21
dic
C Stack Inspection
Postato da il 21-12-2009 alle ore 17:13:49


Un po di tempo fa mi son posto un quesito :

Avendo un puntatore ad una variabile allocata sullo stack (non l’heap, quindi memoria statica), è possibile determinare quanti byte ci posso scrivere al massimo prima di andare in overflow ?

Naturalmente, nel caso di una stringa con la corretta terminazione nulla, basterebbe una semplice chiamata a strlen ed il gioco è fatto … ma avendo un puntatore “generico”, del quale non si sa niente, ne il tipo di dati ai quali punta, ne se è terminato, o altro ?

Voi potreste dire “e a che scopo fare una cosa del genere ?”

Beh, immaginate di dover scrivere una libreria .so o .a e, in una delle varie funzioni che volete esportare, di ricevere come parametro un puntatore del quale non conoscete la natura e nel quale dovete scrivere delle informazioni … non sarebbe utile (più che altro doveroso XD) accertarsi quanto potete scrivere prima di fottere tutto ?! :D

Inizialmente pensai ad una soluzione drastica, un piccolo modulo kernel che si interfacciava al gestore della memoria per darci le info necessarie sul puntatore in questione, ma oltre che ad estremamente complicata come soluzione, ho scoperto che era anche inutile!

Ebbene si, dopo tante ricerche e ore di studio, ho scoperto finalmente il modo :)

More…

Popularity: 17% [?]

4
giu
iPhone Hacking with Pirni (aggiornamento !)
Postato da il 04-06-2009 alle ore 03:31:40


Nel precedente post ho illustrato Pirni, lo sniffer/arp spoofer per iPhone … beh mi sono letto al volo il codice e ho visto che in effetti si poteva modificare per trovare in automatico l’indirizzo di broadcast dell’interfaccia di rete tramite le funzionalità di libpcap … così ho modificato il codice et voilà, ora è necessario specificare solamente l’indirizzo che si vuole spoofare, nella maggior parte dei casi quello del router :D .

Ho lasciato un post sul blog dell autore di pirni linkandogli il codice aggiornato, speriamo che lo implementi nella 1.1 ^^ … vi farò sapere, sarebbe interessante iniziare una collaborazione con lui :) .

PS: Per chi fosse interessato il codice modificato è questo, le modifiche rispetto all’originale le trovate sostanzialmente nel main .

Popularity: 6% [?]

30
mag
Pubblicato BioIdentify
Postato da il 30-05-2009 alle ore 00:28:43


Dopo qualche mese dalla sua stesura ho deciso di pubblicare e condividere il mio primo progetto open che include tutte le funzioni necessarie al fine di elaborare delle impronte digitali .

BioIdentify (o bioid) è un applicazione da riga di comando che consente di estrarre le features dalle impronte digitali e salvarle in un file “BIR” (Biometric Identification Record), eseguire matching tra due impronte o identificare il padrone di un impronta all’interno di un database di BIRs precedentemente elaborato dall’applicazione stessa .

More…

Popularity: 2% [?]

29
mag
Come creare finestre su X11
Postato da il 29-05-2009 alle ore 03:52:06


Questi giorni, data la necessità su un paio di progetti che sto portando avanti, ho avuto la necessità di studiarmi il server grafico X per capire come creare finestre ed interagire con loro in C/C++ .

More…

Popularity: 2% [?]

24
mag
Voxifera : Riconoscimento vocale & esecuzione comandi
Postato da il 24-05-2009 alle ore 16:42:13


Chi di voi segue il sito di blacklight, saprà che ultimamente sta lavorando sul software Voxifera (il vecchio nome era vocal, ma era troppo banale stando a quello che dice lui XD) .

More…

Popularity: 3% [?]

23
mag


In un precedente articolo avevo introdotto la tecnica dell’arp poisoning che tramite richieste ARP spoofate consente di effettuare un attacco man in the middle .

In realtà le applicazioni possibili sfruttando il protocollo arp sono molteplici e non necessariamente incentrate sull’hacking della rete o cose simili XD

E’ per questo che ho sviluppato un piccolo applicativo che, sfruttando tale protocollo, è in grado di rilevare con estrema velocità quali sono i pc attivi sulla rete, quale è il loro indirizzo ip e il loro mac address .

Perchè utilizzare ARP invece di un normale ping ? Bhe xkè ormai i pacchetti ICMP vengono scartati nel 99% dei casi da un firewall (hardware o software che sia), rendendo quindi difficile sfruttare i ping per questo scopo .

More…

Popularity: 2% [?]

18
mag
V4L e WebCam – Esempio di implementazione
Postato da il 18-05-2009 alle ore 02:40:01


Per chi si vuole cimentare nell’interfacciare una webcam ad un suo software in ambiente GNU/Linux è d’obbligo (o quasi) utilizzare il framework V4L (video for linux) o il successivo V4L2 .

Eccovi quindi una banalissima implementazione di esempio che, sfruttando le librerie V4L, grabberà un frame dalla vostra webcam e ne salverà l’output in un immagine ppm .

Scarica

Popularity: 2% [?]

13
mag
StackHack
Postato da il 13-05-2009 alle ore 08:39:29


Lo stack, questo sconosciuto ! :P

In questo paper illustro alcuni aspetti basilari dello stack e altri non molto noti, o quantomeno non molto considerati che presentano riscontri pratici decisamente interessanti .

Scarica

Popularity: 4% [?]