Machine Oriented Languages

The course is not on the list Without time-table
Code Completion Credits Range Language
BI-SOJ Z,ZK 4 2P+2C Czech
Garant předmětu:
Department of Computer Systems

Students of the course will gain an ability to create their own programs in the assembly language of the most common PC platform focusing on optimal use of microprocessor's features and efficient cooperation of software with hardware. Next, there will be discussed x86 specifics of the majority of OSes from the application point of view linked to higher level languages. This knowledge will be used during reverse engineering, optimization, and evaluation of code security.

Syllabus of lectures:

1. Processor cycle, ISA, instruction encoding, addressing

2. Subroutine calling principles, interrupts

3. i8086 processor, ISA, registers, and a real mode

4. Software interrupts, peripherials, BIOS services, DOS functions

5. Direct access to hardware, hardware interrupts, service of the basic PC peripherials

6. i80386 processor, ISA, protected mode, memory protection, address mapping, paging, segmentation

7. Code optimization and vectorization

8. Anatomy of an x86 application, user space, executable files, libraries, and relocation

9. Relation with a high level languages and reverse analysis, calling conventions, external modules

10. Application and kernel security, core dumps, attacks, code encapsulation

11. Specifics of the x86 linux kernel, startup, memory virtualization, process management

12. Specifics of the x86 Windows kernel, memory virtualization, HAL, process management

Syllabus of tutorials:

1. Basic instructions, use of registers, relationships of the machine code and assembly language

2. Branching, subroutines, IN and OUT instructions, interaction with the user

3. Use of selected BIOSu services, COM and EXE files, working with memory

4. Interrupt handling, interrupt vector manipulation, context, and reentrance

5. Protected mode mechanisms, creation, and execution of 32-bit code

6. Optimization tasks for 16/32-bit code, pipelining, basic optimization tricks

7. Computer startup, kernel startup, analysis of basic kernel parts and (un)known errors

8. Analysis of key parts of the Windows kernel, its start. Application anatomy.

9. Calling conventions, ELF, creation of a simple int 80h application, signals, minimization

10. In-line assembly, directives, symbols and constraints, impacts of a high-level optimization

11. Root-shellcode construction, privilege escallation, security bug misuse

12. Use of unpublished instructions, code steath, and polymorphism

Study Objective:

After recapitulation of computer architecture essentials such as the processor cycle, ISA, addressing, principles of subroutines calling, and interrupts, students will get acquainted with the details of the i8086 processor and its real mode. Next part is devoted to software interrupt mechanisms and BIOS services in DOS. Another part will discuss hardware interrrupts and service of the PC peripherials. The acquired knowledge will get further extened by the i80386 processor, its ISA, protected mode, paging, segmentation, and memory protection mechanisms that are used in modern operating systems. A portion will also be dedicated to code optimization and vectorization. Next, students will leard about anatomy of a typical x86 application, libraries and their mapping into the process' virtual address space. Students will also understand the link with higher level languages and calling conventions. Finally, there will be discussed the kernel security, core dumps, attacks, and code encapsulation. A special portion of the course will be focused on specifics of Windows and Linux operating systems eg. the virtual memory, process and hardware management.

Study materials:
Further information:
No time-table has been prepared for this course
The course is a part of the following study plans:
Data valid to 2024-06-25
Aktualizace výše uvedených informací naleznete na adrese https://bilakniha.cvut.cz/en/predmet3046206.html