Небольшое дополнение, в адресное пространство процесса в которое мы инжектируемся должна быть загружена Kernel32.dll иначе CreateRemoteThread вызовет ошибку обращения по несуществующему адресу. А с включенным ASLR такой трюк вообще не пройдет.
Согласен, то что FASM позволяет обходится без компоновщика это его один из главных минусов который и делает его «игрушечным». Еще большим недостатком FASMa является то, что он не умеет генерировать отладочную информацию абсолютно ни в каком формате.
Доклад Антона доступен на ютубе с первого дня конференции https://youtu.be/SYqpeMW8Pek