This course presents in a simple manner the assembly language - intel syntax - for the x86 32-bits architecture and places this in the context of a computing system. We start with a short presentation of the hardware components on which assembly code is highly reliant, how they work and what is their purpose in relation to the software. We continue with some higher level notions - data, variables, pointers, functions - as we understand them in languages such as C/C++ and we show all the steps that lead to the assembly language. By using a lot of demos and animations, we go through all the assembly language notions - registers, static memory, the stack, function calling, instructions - side by side with the more familiar concepts in higher level languages. In this process, we make use of multiple tools, both for static and dynamic analysis of binaries: GDB, objdump, nm. Towards the end, we touch on the security side of assembly. We do a deep dive into one of the most common vulnerabilities, buffer overflow and show how programs can be exploited. While on this topic, we present a binary analysis tool that is the bleeding edge in the domain of security: Ghidra.
This course presents in a simple manner the assembly language - intel syntax - for the x86 32-bits architecture and places this in the context of a computing system. We start with a short presentation of the hardware components on which assembly code is highly reliant, how they work and what is their purpose in relation to the software. We continue with some higher level notions - data, variables, pointers, functions - as we understand them in languages such as C/C++ and we show all the steps that lead to the assembly language. By using a lot of demos and animations, we go through all the assembly language notions - registers, static memory, the stack, function calling, instructions - side by side with the more familiar concepts in higher level languages. In this process, we make use of multiple tools, both for static and dynamic analysis of binaries: GDB, objdump, nm. Towards the end, we touch on the security side of assembly. We do a deep dive into one of the most common vulnerabilities, buffer overflow and show how programs can be exploited. While on this topic, we present a binary analysis tool that is the bleeding edge in the domain of security: Ghidra.
This course is for people of any level and is the direct result of a desire to explain the concepts that were most useful to my career path in the simplest manner.
OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.
Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.
Find this site helpful? Tell a friend about us.
We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.
Your purchases help us maintain our catalog and keep our servers humming without ads.
Thank you for supporting OpenCourser.