Virtual School, Monday-Friday 01-05.03.2021
Course description:
Writing efficient code for high-performance computers requires knowledge of the inner workings of computer hardware. In this module attendees will learn to read basic x86 assembly code and understand x86 execution flow as well as the high-level structure of the Executable and Linkable Format (ELF) including static and dynamic linking mechanisms. Through a mixture of online lectures and practical activities, including a hacking challenge, you will learn how to interpret the output of debuggers and core dumps, how to use profilers for code performance analysis and generally how to modify the behaviour of a program without necessarily having to change the source code.
Requirements:
You should be familiar with unix shell commands, the C-programming language (pointers, allocations, …) and binary and hexadecimal numbers.
The lecturer:
Antonin Portelli is a world-leader in numerical and analytical studies of lattice QCD. He has contributed significantly to the widely-used code packages Hadrons (lead developer) and Grid and has many years of experience in all aspects of high-performance computing.
Timetable:
Monday 01.03.2021
10:00-12:00: Introduction to the x86-64 architecture
14:00-16:00: x86_64 executable binaries in action
Tuesday 02.03.2021
10:00-12:00: Debugging and profiling
14:00-16:00: Quick look at reverse engineering and hacking
16:00-17:00: Challenge instructions
Wednesday-Thursday 03/04.03.2021:
research time to complete the hacking challenge
Friday 05.03.2021
10:00-12:00: Challenge solution and Q&A 1
14:00-16:00: Challenge solution and Q&A 2, team rankings
Registration: Please contact us.
Course material: https://github.com/aportelli/exalat-binary-lectures