Machine Oriented Languages
Code | Completion | Credits | Range | Language |
---|---|---|---|---|
BI-SOJ | Z,ZK | 4 | 2P+2C | Czech |
- Garant předmětu:
- Lecturer:
- Tutor:
- Supervisor:
- Department of Computer Systems
- Synopsis:
-
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.
- Requirements:
- 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:
- Note:
- Further information:
- https://courses.fit.cvut.cz/BI-SOJ/
- No time-table has been prepared for this course
- The course is a part of the following study plans:
-
- Bachelor program Informatics, unspecified branch, in Czech, 2015-2020 (elective course)
- Bachelor branch Security and Information Technology, in Czech, 2015-2020 (elective course)
- Bachelor branch Computer Science, in Czech, 2015-2020 (elective course)
- Bachelor branch Computer Engineering, in Czech, 2015-2020 (elective course)
- Bachelor branch Information Systems and Management, in Czech, 2015-2020 (elective course)
- Bachelor branch Web and Software Engineering, spec. Software Engineering, in Czech, 2015-2020 (elective course)
- Bachelor branch Web and Software Engineering, spec. Web Engineering, in Czech, 2015-2020 (elective course)
- Bachelor branch Web and Software Engineering, spec. Computer Graphics, in Czech, 2015-2020 (elective course)
- Master branch Knowledge Engineering, in Czech, 2016-2017 (elective course)
- Master branch Computer Security, in Czech, 2016-2019 (elective course)
- Master branch Computer Systems and Networks, in Czech, 2016-2019 (elective course)
- Master branch Design and Programming of Embedded Systems, in Czech, 2016-2019 (elective course)
- Master branch Web and Software Engineering, spec. Info. Systems and Management, in Czech, 2016-2019 (elective course)
- Master branch Web and Software Engineering, spec. Software Engineering, in Czech, 2016-2019 (elective course)
- Master branch Web and Software Engineering, spec. Web Engineering, in Czech, 2016-2019 (elective course)
- Master program Informatics, unspecified branch, in Czech, version 2016-2019 (elective course)
- Master branch System Programming, spec. System Programming, in Czech, 2016-2019 (elective course)
- Master branch System Programming, spec. Computer Science, in Czech, 2016-2017 (elective course)
- Master specialization Computer Science, in Czech, 2018-2019 (elective course)
- Bachelor branch Knowledge Engineering, in Czech, 2018-2020 (elective course)
- Master branch Knowledge Engineering, in Czech, 2018-2019 (elective course)
- Master specialization Computer Security, in Czech, 2020 (elective course)
- Master specialization Design and Programming of Embedded Systems, in Czech, 2020 (elective course)
- Master specialization Computer Systems and Networks, in Czech, 202 (elective course)
- Master specialization Management Informatics, in Czech, 2020 (elective course)
- Master specialization Software Engineering, in Czech, 2020 (elective course)
- Master specialization System Programming, in Czech, version from 2020 (elective course)
- Master specialization Web Engineering, in Czech, 2020 (elective course)
- Master specialization Knowledge Engineering, in Czech, 2020 (elective course)
- Master specialization Computer Science, in Czech, 2020 (elective course)
- Mgr. programme, for the phase of study without specialisation, ver. for 2020 and higher (elective course)
- Bachelor specialization Information Security, in Czech, 2021 (elective course)
- Bachelor specialization Management Informatics, in Czech, 2021 (elective course)
- Bachelor specialization Computer Graphics, in Czech, 2021 (elective course)
- Bachelor specialization Computer Engineering, in Czech, 2021 (elective course)
- Bachelor program, unspecified specialization, in Czech, 2021 (elective course)
- Bachelor specialization Web Engineering, in Czech, 2021 (elective course)
- Bachelor specialization Artificial Intelligence, in Czech, 2021 (elective course)
- Bachelor specialization Computer Science, in Czech, 2021 (elective course)
- Bachelor specialization Software Engineering, in Czech, 2021 (elective course)
- Bachelor specialization Computer Systems and Virtualization, in Czech, 2021 (elective course)
- Bachelor specialization Computer Networks and Internet, in Czech, 2021 (elective course)
- Study plan for Ukrainian refugees (elective course)
- Master specialization System Programming, in Czech, version from 2023 (elective course)
- Master specialization Computer Science, in Czech, 2023 (elective course)
- Bachelor specialization Information Security, in Czech, 2024 (elective course)
- Bachelor program, unspecified specialization, in Czech, 2024 (elective course)
- Bachelor specialization Management Informatics, in Czech, 2024 (elective course)
- Bachelor specialization Computer Graphics, in Czech, 2024 (elective course)
- Bachelor specialization Software Engineering, in Czech, 2024 (elective course)
- Bachelor specialization Web Engineering, in Czech, 2024 (elective course)
- Bachelor specialization Computer Networks and Internet, in Czech, 2024 (elective course)
- Bachelor specialization Computer Engineering, in Czech, 2024 (elective course)
- Bachelor specialization Computer Systems and Virtualization, in Czech, 2024 (elective course)
- Bachelor specialization Artificial Intelligence, in Czech, 2024 (elective course)
- Bachelor specialization Computer Science, in Czech, 20214 (elective course)