
An introduction to the course
A quick tour of the repo
The basics of navigating Qt Creator, including a multitude of keyboard shortcuts and quick fixes.
How to use Qt Creator to add the Q_PROPERTY macro to multiple variables simultaneously, and automagically create implementations of multiple function declarations using refactoring.
Learn how to turn Qt Creator into your favorite comfy armchair!
Make your .pro file work for you, not the other way around.
Create a static build of Qt with the msvc2019_64 build kit.
How to find and fix those elusive Heisenbugs using Qt Creator and the debugging IDE. The BugHunter project application helps you ro practice wich some common defects before we get into some potentially problematic low-level coding in the projects later in the course.
Using snippets to save time, increase productivity and avoid typos.
A different take on Qt Designer - how do I navigate and change the code that Designer creates? How do I connect QWidgets without writing endless connect(...) code? How do I manage all those slots?
Create your own class template wizards.
Create your own project template wizards.
Learn how to use the command line options provided with QTest project executables, and navigate your test project on the command line.
Use the Qt Test Framework with self-testing code.
Use the Qt Test Framework with a wizard created console application.
Use the Qt Test Framework with a Qt Widgets application.
A whistle stop tour of the IFW, and how to build a working installer for Windows.
Using Qt to handle common flat file formats.
it is critical to understand the Qt memory management model and associated clases in detail, and this section will cover QPointer, QScopedPointer, QSharedPointer as well as advanced topics such as the QSharedData and QSharedDataPointer classes.
The Windows kernel is closed source, making it impossible to use Linux-based tools such as valgrind, memprof and friends. This lecture covers the use of some of the tools in the Windows debugger kit, and the integration of those tools into a Qt Test Application (test harness) project to assist in locating memory leaks.
How to build a (useful) Finite State Machine for a console application using Qt. The example uses the Lockheed Martin Cyber Kill Chain.
The ETG facility in the Qt State Machine Framework is a way to customize your State Machine with your own event types.
QPluginLoader is the principal Qt mechanism for providing an Application Binary Interface (ABI) for your software. This lecture shows how to use it to add a seamless binary extension mechanism to your products, and also introduces the QLibrary class for a simpler C-like mechanism.
QJSEngine is the Qt mechanism for providing a scripted Application Programming Interface (API). This lecture takes you through usage of this module from evaluating a simple hard coded ECMA script function, through external script files and providing custom C++ Qt objects to your programmers.
The objective is to understand how to use QVariant and QSettings, with detail on meta-object and miscellaneous good stuff along the way.
This video opens with instructions for using openssl to create and verify server certificates and keys, and goes on to demonstrate usage with QSslSocket.
This lecture looks at the emerging QHttpServer technology from Qt with focus on TLS. The QHttpServer is a Technology Preview, and so is as yet incomplete and less capable than QSslSocket (TCP) but still provides some useful functionality.
The third video in the secure networking series, we will survey support for SSL secured WebSockets with QWebSockets and build a basic C2/RAT/Post-Exploitation client-server.
Learn the essentials of threading and multi-tasking in Qt, as well as sign posts to the more sophisticated technologies in the QtConcurrent module.
Learn the basics of interacting with a SQLite database using the Qt SQL module.
The things you always wanted to know but were too afraid to ask: how does the three-way comparison operator work with Qt? How can I use concepts and constraints in templates to identify a QObject? What about move semantics? How do I use std::optional, or lambdas and variadic templates in my functions? Learn all these things and more right here . . .
Learn how to use the QCommandLineParser to set binary options, value options and positional parameters. We will also cover how to fit into a pipeline by correctly reading input from stdin and writing to stdout, along with a look at using a Magic Static (the modern C++ answer to the singleton design pattern) in conjunction with a custom QVariant to provide a representation of supplied command line parameters application-wide.
A real grab bag of miscellany, including QSysInfo, QNetworkInterface, QHostInfo, QLockFile, QFileSystemWatcher and a boat load of other mischief!
A foray into the Qt Chart API, using a Nessus scan (XML) file to survey the basics of chart creation.
Learn how to use XML Notepad and DB Browser to both interrogate and create configuration files and output files, as well as meet other storage requirements.
Learn how to use AT&T's Graphviz dot.exe tool to create process, network, UML diagrams and more. Uses Visual Studio Code extensions and integrated tools.
Using WinRAR to provide a simple simulation of deploying a dropper or other malicious software to a users system.
This video shows how to build and deploy QScintilla and its' associated Designer plugin on Windows, and how to use it to provide a code-aware text edit for your Qt Widgets applications.
Learn how to integrate OpenMP into your MSVC applications, and the basics of using the library to perform parallel processing.
Learn how to build GammaRay and KDStateMachineEditor from KDAB on Windows, with a basic introduction to running and using GammaRay with both a Qt Widgets and a Qt State Machine Framework application.
This course is about using Qt 6 and above to develop software tools for penetration testers, and starts with the basics of Qt Creator navigation and usage.
It is primarily intended as a primer for software projects for penetration test tools developed using Qt 6.
It progresses through application (CLI and GUI) design and development, and covers topics such as ingesting and using output from other pen test tools (such as nmap and nessus) and then moves through sections on integration with ECMAScript/JavaScript, and other useful libraries such as QScintilla, OpenMP and the Qt Charts API.
We will look at topics including elements of the Qt SQL module, networking, threading and advanced memory management all with a focus on developers creating tools for penetration testing.
In the process of refining our software tooling we will delve into some of the basics of refactoring, and elements of High Performance Computing (HPC) to add some final polish. We will also side bar with a look at technologies such as the Qt Test Framework, the State Machine Framework, structured text handling and using the Qt Installer Framework for Windows. Additionally, we will build Qt statically foe windows, and build the KDAB GammaRay anf KDStatemachineEditor tools introspection tools on Windows.
We will also address subjects such as integrating modern C++ with Qt, and using the development pipeline capabilities provided by qmake and Qt Creator.
This is an intermediate and above level Qt/C++ course, and I very much look forward to joining you on this voyage of discovery!