{{ define "index" }} {{ template "head" . }} {{ template "nav" . }} {{ if .logged_in }}{{ else }} {{ end }}

r2wa.rs

{{ if .err }}
{{ .err }}
{{ end }} This is the r2wars web platform created for r2con 2024, although it should be usable outside of the event itself. Here, you can manage your bots, battles, accounts and let them "fight" (be executed) in the same memory space against others. Under the hood, the radare2 ESIL Emulation is used to allow all fun combinations!

What is it and how does it work?

Essentially

; r2 malloc://1024                           # allocate 1KB of memory
[0x00000000]> e asm.arch = x86               # define the arch to use
[0x00000000]> e asm.bits = 32                # define the bits to use
[0x00000000]> aei                            # init vm
[0x00000000]> aeim                           # init staack
[0x00000000]> waf bot.asm                    # write bot to memory
[0x00000000]> aer PC = 0x100                 # set program counter
[0x00000000]> aer SP = SP + 0x100            # set stack pointer
[0x00000000]> e cmd.esil.todo=f theend=1     # define end condition
[0x00000000]> e cmd.esil.trap=f theend=1     # define end condition
[0x00000000]> e cmd.esil.intr=f theend=1     # define end condition
[0x00000000]> e cmd.esil.ioer=f theend=1     # define end condition
[0x00000000]> f theend=0                     # set the end flag to 0
[0x00000000]> aes                            # step
[0x00000000]> ?v 1+theend                    # check if the end cond. is met
..                                           # in a loop
[0x00000000]> aes                            # step
[0x00000000]> ?v 1+theend                    # check if the end cond. is met

More info in the following blogpost: https://emile.space/blog/2020/r2wars/

{{ template "footer" . }} {{ end }}