Intermediate Intel x86: Architecture, Assembly, Applications, & Alliteration (OST)

Offered by OpenSecurityTraining,
Intermediate Intel x86: Architecture, Assembly, Applications, & Alliteration (OST)

This class provides a distilled understanding of some OS mechanisms such as memory management, segmentation, paging, interrupts, and port IO. This knowledge is directly relevant for the future Rootkits and Advanced x86: Virtualization with Intel VT-x classes.

Building upon the Introductory Intel x86 class, this class goes into more depth on topics already learned, and introduces more advanced topics that dive deeper into how Intel-based systems work.

Topics include, but are not limited to:

•Physical and virtual memory and how a limited amount of physical memory is represented as much more virtual memory through a multilevel paging system. We will also talk about memory segmentation.
•The hardware basis for kernel versus userspace separation and how software transitions between the two. This portion answers the question of why does x86 have 4 “rings”, with ring 0 being the most privileged, and ring 3 being the least.
•Hardware and software interrupts, and how they are the basis for debugging.
•Input/Output instructions and how these allow the CPU to talk to peripherals.

Example applications include showing how hardware and memory mechanisms are used for software exploits, anti-debug techniques, rootkit hiding, and direct hardware access for keystroke logging.

This material includes labs on:

•Using WinDbg to perform kernel debugging on a virtual machine (which is equally applicable for debugging a real machine.)
•Using a custom WinDbg plugin to examine the Local (memory segment) Descriptor Table (LDT), and Global (memory segment) Descriptor Table (GDT) in order to understand how Windows sets memory segment ranges and permissions for userspace and kernel space.
•Using WinDbg and the !pte command to understand how Windows organizes its paging structures which map physical memory to virtual memory.
•Investigating where exactly the XD/NX bit is set in order to make memory as non-executable (which Microsoft calls Data Execution Prevention (DEP)), to prevent some types of exploits from succeeding.
•Using the Read Timestamp Counter (RDTSC) instruction to profile code execution time. Also, using a profile of code execution time to change a program’s behavior in the presence of a debugger (e.g. executing different code if the code appears to have been stopped at a breakpoint.)
•Printing information about task state segments, which hold information that is used to find the kernel stack when an interrupt occurs.
•Watching what does and doesn’t change when a software interrupt is used to transfer control from userspace to kernel.
•Reading the Interrupt Descriptor Table (IDT) and understanding the security implications of changes to it.
•Understanding how RedPill uses the IDT in order to detect that a system is virtualized.
•Having a process read its own memory when a software breakpoint is set, in order to see how a debugger will change memory to set the breakpoint but hide the change from the user.
•Watch how hardware-based breakpoints manipulate dedicated debug registers.
•Using port input/output to access the backdoor communications channel that VMWare uses in order to send copy/paste, mouse movement, and other events in and out of a VM.
•Using port I/O in order to talk directly to the PS2 keyboard controller in order to sniff keystrokes or flash keyboard LEDs.

Knowledge of this material is strongly encouraged for future classes such as Rootkits and Advanced x86: Virtualization with Intel VT-x.

Go to Class
MOOC List is learner-supported. When you buy through links on our site, we may earn an affiliate commission.

Related Courses

Developing Android Apps with App Inventor (Coursera) Coursera
The Hong Kong University of Science and Technology - HKUST

Developing Android Apps with App Inventor (Coursera)

The course will give students hands-on experience in developing interesting Android applications. No previous experience in programming is needed, and the course is suitable for students with any level of computing experience. MIT App Inventor will be used in the course. It is a blocks-based programming tool that allows everyone, even novices, to start programming and build fully functional apps for Android devices. Students are encouraged to use their own Android devices for hands-on testing and exploitation.

Nov 16th 2026
5-12 Weeks
Introductory Intel x86: Architecture, Assembly, Applications, & Alliteration (OST) OpenSecurityTraining
OpenSecurityTraining

Introductory Intel x86: Architecture, Assembly, Applications, & Alliteration (OST)

Intel processors have been a major force in personal computing for more than 30 years. An understanding of low level computing mechanisms used in Intel chips as taught in this course serves as a foundation upon which to better understand other hardware, as well as many technical specialties such as reverse engineering, compiler design, operating system design, code optimization, and vulnerability exploitation.

Self Paced
Self-Paced
Java程序设计 (Coursera) Coursera
Peking University

Java程序设计 (Coursera)

《Java程序设计》课程是使用Java语言进行应用程序设计的课程,针对各专业的大学本科生开设。课程的主要目标有三: 一、掌握Java语言的语法,能够较为深入理解Java语言机制,掌握Java语言面向对象的特点。 二、掌握JavaSE中基本的API,掌握在集合、线程、输入输出、图形用户界面、网络等方面的应用。三、能够编写有一定规模的应用程序,养成良好的编程习惯,会使用重构、设计模式、单元测试、日志、质量管理工具提高代码的质量。 对于学过“计算机基础、计算概论或C语言的学生”尤为适用。

Nov 16th 2026
5-12 Weeks
Internet History, Technology, and Security (Coursera) Coursera
University of Michigan

Internet History, Technology, and Security (Coursera)

The impact of technology and networks on our lives, culture, and society continues to increase. The very fact that you can take this course from anywhere in the world requires a technological infrastructure that was designed, engineered, and built over the past sixty years. To function in an information-centric world, we need to understand the workings of network technology. This course will open up the Internet and show you how it was created, who created it and how it works. Along the way we will meet many of the innovators who developed the Internet and Web technologies that we use today.

Nov 16th 2026
5-12 Weeks
Developing FPGA-accelerated cloud applications with SDAccel: Theory (Coursera) Coursera
Politecnico di Milano

Developing FPGA-accelerated cloud applications with SDAccel: Theory (Coursera)

This course is for anyone passionate in learning how to develop FPGA-accelerated applications with SDAccel! We are entering in an era in which technology progress induces paradigm shifts in computing! As a tradeoff between the two extreme characteristics of GPP and ASIC, we can find a new concept, a new idea of computing... the reconfigurable computing, which has combined the advantages of both the previous worlds.

Nov 16th 2026
4 Weeks
Programming for Data Science (Coursera) Coursera
University of Leeds

Programming for Data Science (Coursera)

Explore the basics of programming and familiarise yourself with the Python language. After completing this course, you will be able to write Python programs in Jupyter Notebook and describe basic programming. In this course, you will learn everything you need to start your programming journey. You will discover the different data types available in Python and how to use them, learn how to apply conditional and looping control structures, and write your own functions.

Nov 16th 2026
3 Weeks
Programming with Cloud IoT Platforms (Coursera) Coursera
Pohang University of Science and Technology - POSTECH

Programming with Cloud IoT Platforms (Coursera)

Internet of Things (IoT) is an emerging area of information and communications technology (ICT) involving many disciplines of computer science and engineering including sensors/actuators, communications networking, server platforms, data analytics and smart applications. IoT is considered to be an essential part of the 4th Industrial Revolution along with AI and Big Data.

Nov 16th 2026
5-12 Weeks
Aprenda a ensinar programação com o Programaê! (Coursera) Coursera
Fundação Lemann,Fundação Telefônica

Aprenda a ensinar programação com o Programaê! (Coursera)

O curso "Aprenda a ensinar programação com o Programaê!" tem como objetivo apoiar professores no desenvolvimento de suas aulas com o ‘Programaê!’, um movimento que quer aproximar a programação do cotidiano de jovens de todo o Brasil por meio de um portal prático, agregador de ideias, soluções, dicas e planos de aula estruturados para professores.

Nov 16th 2026
3 Weeks