You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+23-37
Original file line number
Diff line number
Diff line change
@@ -15,7 +15,7 @@ Interactive Disassembler GUI
15
15
About
16
16
-----
17
17
18
-
Disasm is a web application written in Flask. It allows you to disassemble ELF files into Intel x86 assembly. The assembly and analysis can be displayed in a browser so that you can click around and interact with it.
18
+
Disasm is a browser-based application, built on Flask, that allows you to disassemble ELF files into Intel x86 assembly. The assembly and analysis is displayed in a browser so that you can click around and interact with it.
19
19
20
20
Before running
21
21
-----------------
@@ -33,16 +33,15 @@ There is optional IACA integration. To use it, you must first download IACA from
33
33
34
34
[PyPy](http://pypy.org/) is an alternative implementation of python that provides a considerable speedup. To use it, there is a little more setup involved.
35
35
36
-
1. Setup the requirements for pypy using either of the following:
37
-
* Use pip_pypy
38
-
*`pip_pypy install -r requirements.pypy.txt` (regular pip doesn't install to a directory that pypy can find)
39
-
* Use virtualenv and pip
40
-
2. Ensure that you have either `c++filt` or `gc++filt` on your machine/in your `$PATH` (The demangler library we use does not work with pypy. If you know of a python demangler library that can run on pypy, let us know!)
36
+
1. Set up the requirements for pypy using either of the following methods:
37
+
*`pip_pypy install -r requirements.pypy.txt` (regular pip doesn't install to a directory that pypy can find)
38
+
* OR create a pypy virtualenv and `pip install -r requirements.pypy.txt` within that virtualenv
39
+
2. Ensure that you have either `c++filt` or `gc++filt` on your machine and in your `$PATH`. The demangler library we use does not work with pypy so we use command line tools instead. If you know of a python demangler library that can run on pypy, please let us know!
41
40
42
41
Running
43
42
-------
44
43
45
-
The best way to run the application is the following way:
44
+
You can run the application with
46
45
47
46
```python
48
47
python run.py
@@ -63,12 +62,12 @@ pypy run.py
63
62
### Options
64
63
65
64
* -f <file(s)>, --files <file(s)>
66
-
* File(s) that you want to appear on the homepage to disassemble.
65
+
* File(s) that you want to disassemble.
67
66
68
67
Features
69
68
--------
70
69
71
-
Features marked with an asterisk (*) require that the .dwarf_info and .dwarf_aranges sections be defined in order to use it.
70
+
Features marked with an asterisk (*) require that the .dwarf_info section be defined in order to use it.
72
71
73
72
### Disassembly
74
73
@@ -98,7 +97,7 @@ Whenever possible, the contents of a register will be displayed, including the o
98
97
99
98
### Register tracking *
100
99
101
-
Observe which instructions read and/or write to a particular register. To activate this feature, right click the desired register and select the appropriate option.
100
+
Observe which instructions read and/or write to a particular register by right clicking on the desired register and selecting the appropriate option from the dropdown menu.
102
101
103
102

104
103
@@ -110,13 +109,13 @@ Instructions that write to a flag(s) will display a white flag next to the mnemo
110
109
111
110
### Jump table resolution
112
111
113
-
Jump tables are parsed. Clicking on the first instruction in a jump table sequence will display a the table the mapping between value in rdi (the condition) and the address to jump to. Clicking on one of these addresses will allow you to jump to this instruction as well.
112
+
Jump tables are parsed. Clicking on the jump table instruction displays the mapping between each condition value and the address to jump to. Clicking on each of these addresses jumps to the respective instruction.
114
113
115
114

116
115
117
116
### Rip-relative address resolution and interpretation
118
117
119
-
A rip-relative adddress (e.g, "rip + 0x129d866") can be resolved into a single address by right clicking on that part of the instruction. The value at this address can also be read from the file as an 8/16/32/64-bit signed decimal/unsigned decimal/hexadecimal/binary number, single/double precision floating point number, or null-terminated C String (up to 128 bytes).
118
+
A rip-relative adddress (e.g, `rip + 0x129d866`) can be resolved into a single address by right clicking on that part of the instruction. The value at this address can also be read from the file as an 8/16/32/64-bit signed decimal/unsigned decimal/hexadecimal/binary number, single/double precision floating point number, or null-terminated C String (up to 128 bytes).
120
119
121
120

122
121
@@ -154,50 +153,37 @@ When a file is uploaded, it will be stored on the server for quicker lookup late
154
153
155
154
### NOP byte size
156
155
157
-
There are various different NOP instructions, each of which is encoded as a different operation, and each with a different size. Instead of displaying the operation (which is essentially meaningless), the size of the NOP will be displayed.
156
+
NOP operations (which are essentially meaningless) are replaced with the size of the NOP.
158
157
159
158

160
159
161
160
### Keyboard shortcuts
162
161
163
162
#### Function search
164
163
165
-
* Up/down
166
-
* Navigate through the list of functions
167
-
* Enter
168
-
* Disassemble the currently selected function
169
-
* ?
170
-
* Display the help menu
164
+
* Up/down: Navigate through the list of functions
165
+
* Enter: Disassemble the currently selected function
166
+
* ?: Display the help menu
171
167
172
168
#### Disassembly
173
169
174
-
* Up/down
175
-
* Navigate through the instructions
170
+
* Up/down: Navigate through the instructions
176
171
* Right Arrow
177
-
* On jmp/call
178
-
* Go to target address
179
-
* On ret
180
-
* Return to the calling function (only available if this function was reached by entering going through a call instruction)
172
+
* On jmp/call: Go to target address
173
+
* On ret: Return to the calling function (only available if this function was reached by entering going through a call instruction)
181
174
* Left Arrow
182
175
* Undo previous jump/call (if applicable)
183
-
* Enter
184
-
* Open the analysis window relevant to this instruction
176
+
* Enter: Open the analysis window relevant to this instruction
0 commit comments