Q>Прога заработала после того, как я выровнял имена импортируемых функций на 2, т.е. добавил код, который дописывает нолик, если длинна имени не четная. Т.е. по факту, после MessageBoxA был добавлен один нулевой байт.
Проведем небольшой эксперимент. Поправим a.exe в a_new.exe как указал я:
>fc /b a.exe a_new.exe
Comparing files a.exe and A_NEW.EXE
00000046: 03 02
00000080: 08 05
00000088: 08 05
Пробуем — exe'шник успешно запускается