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