22.6 forum: Scripting with lua

Radare can be scripted using lua in a very simple way.

You can call the scripts in batch mode using the -i flag of radare or just calling it using the lua 'hack' plugin.

$ radare -i myscript.lua /bin/ls

or

radare /bin/ls
> H lua myscript.lua

Take care about having liblua5.1-dev installed in your system and lua.so is properly build and installed.

There's an API provided by LIBDIR/radare/radare.lua where you will easily find the way to call radare commands from lua and viceversa.

There are a lot of tutorials about lua, so I will focus on the use for radare.

I will increase this article while I have some time, ask me your questions and proposals for the scripting on this thread.

Here's a little example searching:

-- search lib and show results
Radare.seek(0)
local hits = Radare.Search.string("lib")
for i = 1, #hits do
        print(" => "..hits[i]..": "..Radare.cmd("pz @ "..hits[i]))
done

will show:

$ radare -vi search-demo.lua /bin/ls
 => 0x00000135: lib/ld-linux.so.2
 => 0x00000b71: librt.so.1
 => 0x00000f2a: libc_start_main

... more examples will come.. smile