This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
labs:disassembly [2017/03/23 14:35] manuelei |
labs:disassembly [2017/03/23 16:57] manuelei |
||
---|---|---|---|
Line 18: | Line 18: | ||
* Hex editor: Bless | * Hex editor: Bless | ||
* Disassembler: objdump | * Disassembler: objdump | ||
- | * Web assembler/disassembler: https://defuse.ca/online-x86-assembler.htm (Attention: Uses Intel syntax, which has arguments in different order than objdump) | + | * Web assembler/disassembler: https://defuse.ca/online-x86-assembler.htm (Attention: Uses Intel syntax, which has arguments in different order than objdump.) |
* IA-32 cheat sheet (GNU format): http://www.cs.utsa.edu/~clark/cs3843/IA32cheatSheet.pdf | * IA-32 cheat sheet (GNU format): http://www.cs.utsa.edu/~clark/cs3843/IA32cheatSheet.pdf | ||
* Intel IA-32 instruction set reference: http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-instruction-set-reference-manual-325383.pdf | * Intel IA-32 instruction set reference: http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-instruction-set-reference-manual-325383.pdf | ||
- | * We have written a tool which allows you to insert your own machine code (produced e.g. with as) into SuperTuxKart. It is contained in the same zip folder as the other executables. \\ Usage: ./elf_tool <executable_file> <new_machine_code_file (inject_code.bin)> <insertion_address>. \\ The tool inserts the code into the executable, and writes a jump to the new code at the specified insertion_address (given in hexadecimal, e.g. 80487f0). Note that the inserted jump will **overwrite 6 bytes** of the code, so if the overwritten code is still needed, you have to repeat it in your new code. | + | ===== Hints ===== |
- | * Assembling: Write assembly in a file called inject_code.s and execute the following command to get the machine code binary file required for the elf_tool: as %%--%%32 -o inject_code.o inject_code.s && objcopy -O binary inject_code.o inject_code.bin && rm inject_code.o | + | * 1) Assembly code is not needed. |
+ | * 3) |