Ну по-разному можно. Ведь всё дело в таблице импорта. Её обычно реализуют с помощью макросов, как здесь (только я так не делаю): [] После этого указанные API-функции могут быть использованы программой. Мой метод отличается тем, что данные берутся не из библиотек и вставляются компилятором, а на прямую в двоичном виде и записываются, компилятор ничего от себя не делает.
Что-то я много тут поместил, IceStudent ругаться будет. Только вот я не понял, а заглянуть в примеры, прилагающиеся к FASM трудно было? Ведь на основе API всё и делается.
NullSessi0n В добавок к обоснованному недовольству модератора по поводу размера кода, следует учесть ещё один немаловажный факт: этот пример в фасме не соответствует стандарту pe32, хоть и работает. Подробнее на форуме фасма, т.к. тема стара как фасм.
Да достаточно в examples посмотреть, что тут писать. Кстати, вариант без align тоже в примерах лежит, я не виноват, что он такой даже в новых версиях fasm. Смотреть примеры и особое внимание обратить на секцию импорта. Именно там указывается, из каких библиотек взять API-функции.
NullSessi0n Отсутствие выравнивания не единственный баг. Кстати, Privalov добавил align в макросы, а в свой пример так и не добавил, видимо, решив, что никто импорт ручками строить не будет.
Как раз этим я и занимаюсь постоянно. Потому что пользоваться invoke и прочей чушью просто неудобно. Единственное, что должно быть - это структуры, их описание мне необходимо, а описание API-функций - нет. Всё через push x раз и call. А там описание и не нужно, экономишь кучу времени, так как описано явно не всё.