about summary refs log tree commit diff
path: root/templates/index.html
blob: 3c29a4874010f20545354ac2b87aba040d1b42fd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
{{ define "index" }}

{{ template "head" . }}
<body>
  {{ template "nav" . }}
  {{ if .logged_in }}{{ else }}
  {{ end }}

  <span id="r2wars"></span>
  <h1><a href="#r2wars">r2wa.rs</a></h1>

  {{ if .err }}
    <div class="error">{{ .err }}</div>
  {{ end }}

  This is the r2wars web platform created for <a href="https://rada.re/con/2024/">r2con 2024</a>,
  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 <a href="https://radare.org/n/">radare2</a> <a href="https://book.rada.re/emulation/intro.html">ESIL Emulation</a> is used to allow all fun combinations!

  <span id="r2wars"></span>
  <h2><a href="#r2wars">What is it and how does it work?</a></h2>

  Essentially
  <br><br>

  <pre class="code">
  ; 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
  </pre>

  <br>
  More info in the following blogpost: <a href="https://emile.space/blog/2020/r2wars/">https://emile.space/blog/2020/r2wars/</a>
  <br>
  <br>

  <pre>
╭──╮    ╭──────────────────────╮
│ _│_   │                      │
│ O O  <  LET THE GAMES BEGIN! 
  │╷                         
  ││   ╰──────────────────────╯
 ─╯│
╰───╯
  </pre>



</body>
{{ template "footer" . }}
{{ end }}