1.- Introduction.
At quals we hardly had time to analyse rev500. However, what we saw was very
appealing : interesting code obfuscation, use of fpu and random numbers, and the
string "./MathIsHard" suggested that the algorithm could be interesting. So we
decided to give it another try with more time.
A brief initial analysis doesn't bring a lot of information : The binary is a 32
bit ELF for FreeBSD that listens for connections on port 2600. When we connect
to it we receive 5 dwords containing integers, all of them below 1000.
|
$ readelf -a ./rev
ELF Header:
...
Class: ELF32
OS/ABI: UNIX - FreeBSD
ABI Version: 0
Type: EXEC (Executable file)
Machine: Intel 80386
...
Relocation section '.rel.plt' at offset 0x808 contains 43 entries:
Offset Info Type Sym.Value Sym. Name
0804e0d4 00000507 R_386_JUMP_SLOT 00000000 random
0804e0d8 00000607 R_386_JUMP_SLOT 00000000 recv
0804e0f4 00000e07 R_386_JUMP_SLOT 00000000 socket
0804e0f8 00000f07 R_386_JUMP_SLOT 00000000 send
0804e0fc 00001107 R_386_JUMP_SLOT 00000000 accept
0804e108 00001507 R_386_JUMP_SLOT 00000000 bind
... |
(more…)