Fork me on GitHub

[iPhone SDK] Utilizzare le librerie di Cydia su XCode.

In questi giorni sto provando a scrivere un piccolo progettino, iPoison, il quale dovrebbe fornire una GUI e le funzionalità base per effettuare un attacco tramite arp poisoning su iPhone, diciamo una versione open source ed alternativa a Pirni Pro, un app a pagamento su Cydia alla quale ho collaborato tempo fa e che successivamente si è evoluta in Pro (quindi a pagamento -.-).

Il primo problema che si è posto, è quello di utilizzare le librerie, trovate su Cydia, come libpcap, libnet e così via che non fanno parte (ovviamente) del SDK della Apple, quindi come fare?

Niente di più semplice :)

Prima di tutto, accertiamoci di avere un iPhone jailbreakato, con SSH installato e in esecuzione.

Installiamo tramite Cydia libpcap (che utilizzeremo in questo esempio, ma il procedimento può essere applicato a qualsiasi altra libreria) che si trova in uno dei repository configurati di default.

A questo punto, dobbiamo copiare sia la libreria di per se (i file .dylib), che gli header (i file .h) dal nostro iPhone per poterli successivamente installare nel nostro kit di sviluppo, quindi usiamo scp :
scp -r root@ip_iphone:/usr/include/pcap* .

scp -r root@ip_iphone:/usr/lib/libpcap* .
A questo punto ci troveremo nella directory di lavoro, alcuni file .dylib, una cartella pcap ed alcuni file .h.

Bene, procediamo ad installarli nel nostro SDK :
sudo cp -r pcap* /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk/usr/include/

sudo cp -r libpcap* /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk/usr/lib/
Benissimo, apriamo XCode (o riavviamolo), tasto dx sul gruppo Frameworks > Add > Existing Frameworks, impostiamo il filtro da All a Dylibs per renderci la vita più semplice ed aggiungiamo il file libpcap.dylib .

A questo punto, grazie all'interoperabilità dei tipi C e Objective-C, potremmo includere il nostro file pcap.h come avremmo normalmente fatto ed utilizzare le funzionalità di questa libreria :)

NOTA: Alcune librerie, come ad esempio libnet, sono sottoforma di librerie statiche .a, a differenza delle dylibs vanno trascinate nel progetto (dalla cartella /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.0.sdk/usr/lib/) senza impostare il flag per copiarle fisicamente, poi tra i project settings, va impostata la chiave Library Search Paths con la directory di cui sopra.

NOTA 2: Tramite questo procedimento, installerete le librerie per architettura ARM, di conseguenza non sarà possibile eseguire l'app tramite simulatore, ma dovrete provarla direttamente sul device.

Per una guida su come poterlo fare senza certificati digitali, leggete il precedente articolo.

blog comments powered by Disqus