[bcn-pm] pancake necesita ayuda con Perl y radare2

pancake pancake a youterm.com
dis gen 4 16:03:35 PST 2014


Vaig a fer un petit resum de l’estat de perl en radare2.

Els scripts a radare2 es poden cridar de dues formes:

- desde la shell de r2 utilitzant la comanda ‘#!perl’ on se li pot passar un argument que seria l’script a executar, sino apareix un repl.
- utilitzant un script que usi el modul de perl de la api de radare2 ‘use RCore;’

Per fer anar tot aixo haurieu d’instalar radare2 desde git,, i despres descarregar el repository radare2-bindings, tot aixo ho podeu fer aixi:

<install swig>
<install vala>
git clone https://github.com/radare/valabind
cd valabind
make
sudo make install PREFIX=/usr
cd ..
git clone https://github.com/radare/radare2
cd radare2
sys/install.sh
sys/clone-r2-bindings.sh
cd radare2-bindings
./configure —enable=perl
make
sudo make install

Podeu trobar alguns scripts d’exemple a:

radare2-bindings/perl/test-*.pl

He arreglat uns fallos que feien que no compilessin, pero ara el problema esta en que les llistes enllaçades no es tradueixen correctament amb swig. 

Un altre tema que em mosqueja es que per cridar les apis de objectes que retornen les funcions has d’especificar el tipus cada cop. Per exemple:

     my $buf = r_asmc::RAsmCode_buf_hex_get ($code);

No seria possible (o mes correcte que fos algo aixi?

     my $buf = $code->buf_hex;

Quan es crida l’interpret de perl desde #!perl no funciona. Aixo esta implementat com a plugin de RLang (radare2/libr/lang) i els plugins aquests estan aqui: radare2-bindings/libr/lang/p/lang_perl.c)

Basicament implementa dues funcionalitats:

 - beneeix un objecte RCore global sota el nom de $core
- permet evaluar expressions o fitxers perl

Ja que $core es del tipus RCore es necessari que es carreguin els bindings (use r_core) i aixi ferlos accessibles a l’script que estem executant. 

Per altra banda també he estat evaluant la opció d’escriure el meu propi generador de bindings, tal com faig amb python-ctypes o nodejs. Aixo ho faig amb ‘valabind’ que es un programa fet per mi q parseja .vapi i genera els bindings per swig, ctypes, ..

El fet de evaluar codi perl desde #!perl no funciona.. i abans si que ho feia, la veritat sq la api de perl per ser utilitzada desde C es bastnat confusa i agrairia si algu pogues donar-li un cop d’ull al radare2-bindings/libr/lang/p/lang_perl.c per veure que falla.

He trobat un projecte anomenat perl-ctypes. que no sembla gaire mantingut, pero prou complert com per poder-lo usar, el tema que no m’acaba de fer el pes es que no va amb perl estandard, aixi que hauria de dependre d’un modul extern.

No hi ha cap manera dinamica de cridar codi C en llibreries dinamiques del sistema? Algú s’animaria a fer el generador?

Merci!


Més informació sobre la llista de correu Barcelona-pm