Diablo and Loco not loading: "Unknown object filetype ... diabloobject.c:148"

I compile the following program:

typedef enum b {false = 0, true = 1} bool;

bool check(int key_part1, int key_part2)
{
if(fun(key_part1)==key_part2)
return true;
return false;
}

int fun(int key)
{
int a=1;
if (key<1)
a=1;
else
do{
a *= key--;
}while (key>1);
return a;
}

int
main(void) {
check(10,50);
}

I am using a fedora core 4 box.
Using the toolchain I downloaded for arm I compiled

./toolchain-arm-glibc/bin/arm-linux-gcc -static -c check.c

Then I linked

./toolchain-arm-glibc/bin/arm-linux-ld -Map check.map check.o -o check

I get the following message
./toolchain-arm-glibc/bin/arm-linux-ld: warning: cannot find entry symbol _start; defaulting to 00008074

I tried using the diablo for arm that I downloaded I get the following error:
./diablo_arm check
Optimizing check
Preserving unknown section .sbss as note section
Segmentation fault

I then tried using loco. I get the following messages
./bin/loco check
Initialize Graphviz
Initialize GUI Settings
Initialize Splash
Initialize Stock
/usr/local/share/lancet_icons/gui_cg.png
Initialize Menubar
Initialize Toolbar
Initialize Toolbox
object_init started

Dump of first 10 bytes
Hex:
0x7f 0x45 0x4c 0x46 0x1 0x1 0x1 0x61 0x0 0x0
Octal:
0177 0105 0114 0106 01 01 01 0141 00 00
Decimal:
127 69 76 70 1 1 1 97 0 0

The GUI brings up the default options and when I click on "OK" I get the error message
"Unknown object filetype /home/karthik/Diablo//check! (diabloobject.c:148)"

Any suggestions on what I am doing wrong? I compiled all the libraries using the following steps
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
./configure --enable-32-bit --disable-shared
make
make install

Can you make available a sample c code along with the typical steps one would take to compile and link it? Also a sample showing how to add the instrumentation to be able to create the profiles.
For the arm binaries what simulators would you recommend?

Thank you.
Karthik.

loco compile options for arm

What should be changing in order to be able to support arm executables in Loco?
The default Loco that compiled using the get_current script only seems to work on i386 binaries compiled using the toolchain-i386-glibc.

Arm support for Loco

If you want to use Loco on the ARM platform, all the obfuscation techniques have to be ported to that architecture. You will understand that the obfuscation techniques currently available in the Diablo framework are highly architecture dependend, because instructions have to replaced, added, ... As the i386 is the most interesting architecture to focus on in our obfuscation research, we didn't implement all obfuscation techniques for every architecture supported in Diablo. If you want to have a look at the control flow graphs however, you can simply use Lancet for that. Lancet also allows you to modify the graphs by hand up to a certain level of complexity.

LudO

Loco 0.0.2 with wrong version of Diablo

Loco 0.0.2 works now.
It works only with Diablo 0.4.1 and I was previously compiling it on Diablo 0.4.2. Instead of using the get_current.bash script I tried to manually compile with the wrong versions.
Thanks a lot.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.