0% found this document useful (0 votes)
25 views5 pages

C Programming With Windows and Linux ABIs

This course on C programming focuses on Windows and Linux ABIs, targeting intermediate to advanced programmers. It covers C fundamentals, advanced programming concepts, disassembly analysis, and secure coding practices, with hands-on exercises for real-world application. By the end, participants will be equipped to develop robust, platform-independent applications and understand the intricacies of both operating systems' development environments.

Uploaded by

moghimiarmin6
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
25 views5 pages

C Programming With Windows and Linux ABIs

This course on C programming focuses on Windows and Linux ABIs, targeting intermediate to advanced programmers. It covers C fundamentals, advanced programming concepts, disassembly analysis, and secure coding practices, with hands-on exercises for real-world application. By the end, participants will be equipped to develop robust, platform-independent applications and understand the intricacies of both operating systems' development environments.

Uploaded by

moghimiarmin6
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

C Programming with a focus on

Windows and Linux ABIs


Ai000 Cybernetics Qlab
Instructor: Milad Kahsari Alhadi
Last Update: 2024 May 10

http://acql.ir
Overview of the Course:
This Ai000 Cybernetics QLab comprehensive programming course delves deep into the world of C
programming, with a specific focus on understanding and leveraging the Application Binary Interfaces
(ABIs) of both Windows and Linux operating systems for low-level software development and also reverse
engineering of the binaries compiled with GCC, MSVC or even clangs. This course is designed for
intermediate to advanced programmers, this course aims to equip participants with the knowledge and
skills necessary to develop robust, platform-independent and also secure C applications.

The course begins with an overview of C programming fundamentals, including syntax, data types, control
structures, and functions with following 9899-2024 WG Standard for C language which is knowable as C23
standard. Participants will then explore the intricacies of Windows and Linux ABIs, understanding how
each operating system handles memory management, system calls, and inter-process communication.

Through a series of hands-on exercises and real-world examples, participants will learn how to write C
code that is compatible with both Windows and Linux ABIs, enabling seamless portability across different
platforms and professional backend engineering. Topics covered include dynamic memory allocation, file
I/O, multi-threading, and network programming.

Furthermore, the course will cover best practices for writing cross-platform C code, including techniques
for conditional compilation, abstraction layers, and library selection. Participants will also gain insights
into debugging and troubleshooting C programs on both Windows and Linux environments and fully
disassembly analysis.

By the end of the course, participants will have a solid understanding of C programming principles and
the nuances of Windows and Linux ABIs. Armed with this knowledge, they will be well-equipped to
develop high-performance, platform-independent applications that run seamlessly across diverse
computing environments.

Instructor: Milad Kahsari Alhadi

Instructor’s Assistant: Ai000 Cybernetics QLab Team

Table of Contents
Overview of the Course: .............................................................................................. 2
Course Overview ....................................................................................................... 3
Learning Objectives................................................................................................. 3
Course Syllabus ...................................................................................................... 3
Assessment ........................................................................................................... 5
Prerequisites ......................................................................................................... 5
Contact .................................................................................................................. 5
Course Overview
This course offers participants a rigorous exploration of the C programming language, emphasizing the
creation of portable code seamlessly compatible with both Windows APIs and Linux POSIX standards.
Enrollees will delve into the nuanced intricacies of the latest C23 standard, mastering techniques to
adeptly exploit platform-specific functionalities. Furthermore, participants will gain invaluable insights
into software security protocols, integrating industry-best practices into their C-based application
development endeavors. Guided by our seasoned instructors at ACQL, renowned for their extensive
expertise in low-level software development and backend engineering, this course provides a
comprehensive curriculum tailored to equip participants with the indispensable skills demanded by
today's dynamic computing landscape.

Learning Objectives

• Gain a comprehensive understanding of the C programming language.


• Develop proficiency in building systems for Windows and Linux development environments.
• Acquire practical skills in disassembly analysis for Windows and Linux binaries.
• Master C concepts such as statements, expressions, functions, and modular programming.
• Explore advanced topics including memory management and file I/O operations.
• Learn about communication principles in multithreaded environments.
• Familiarize themselves with low-level development using Windows ABI/APIs, including Windows
operating system architecture, Windows API documentation, and basic driver development.
• Understand Linux operating system architecture, POSIX standards, and implementation in Linux,
covering topics such as file operations, process management, inter-process communication, and
network programming.
• Gain practical experience in database integration with applications, including SQL and NoSQL
databases, connectivity, query execution, error handling, and transaction management.
• Develop secure programming practices, including understanding software security principles,
identifying common vulnerabilities in C programming, implementing mitigation techniques, and
adhering to secure coding standards and guidelines.

Course Syllabus
In the following section, you will find out what we will cover in the 12 weeks of this course:

• Week 1-2: Introduction to C Programming


• C language history and evolution
• C language paradigm and dynamics
• Build systems for Windows and Linux development
• Disassembly analysis for Windows and Linux binaries
• Basics of C statements and expressions
• Functions and modular programming
• Software development principles for a backend engineer
Week 2 Project & Exam
• Week 3-4: Advanced C Programming Concepts
• Pointers and memory management
• Unit checking for memory shits
• Arrays, strings, and pointers arithmetic
• Structs and unions
• File I/O operations
• Advanced data structures for computing
• Communication principles in a multithreaded environment
Week 4 Project & Exam
• Week 4-6: Disassembly Analysis Concepts
• Introduction to disassembly and reverse engineering
• Tools and techniques for disassembly analysis
• Identifying vulnerabilities and security threats through disassembly
• Practical exercises and case studies
Week 6 Project & Exam
• Week 6-9: Low-Level Development with Windows ABI/APIs
• Understanding the Windows operating system architecture
• Overview of Windows API architecture and documentation
• Windows data types and macros
• Handling files and directories using Windows API
• Interacting with the Windows Registry
• Process and thread management with Windows API
• Synchronization and concurrency using Windows synchronization primitives
• Windows socket programming for network communication
• Basic Windows driver development
Week 9 Project & Exam
• Week 10-12: Low-Level Development with Linux ABI/Syscalls
• Understanding the Linux operating system architecture
• Overview of POSIX standards and their implementation in Linux
• POSIX data types and macros
• File and directory operations with POSIX
• Process management and signal handling with POSIX
• POSIX threads for multi-threaded programming
• Inter-process communication using POSIX IPC mechanisms
• Network programming with POSIX sockets
• Basic Linux kernel module development
Week 12 Project & Exam
• Week 13-14: Database Integration with Application
• Introduction to database systems
• Working with SQL databases in C
• Working with No-SQL databases in C
• Database connectivity and query execution
• Error handling and transaction management
Week 14 Project & Exam
• Week 15-16: Secure Programming Practices
• Understanding software security principles
• Common vulnerabilities in C programming
• Mitigation techniques and best practices
• Secure coding standards and guidelines
Week 16 Project & Exam
Assessment

• Weekly quizzes and assignments to reinforce learning objectives


• Mid-term and final projects to demonstrate mastery of C programming concepts and
Windows/Linux API integration
• Participation in coding exercises and discussions during live sessions

Prerequisites

• Basic understanding of programming concepts


• Familiarity with the C programming language (recommended)
• Access to a computer with Windows and Linux environments for hands-on exercises

Contact
For further details regarding the course, please reach out to @clightning on Telegram. They will be able
to provide you with comprehensive information and answer any inquiries you may have.

You might also like