msvc9-10, win32 надо чтобы при первом вызове функция импортировалась, а при последующих - вызывалась через переходник jmp rel32 как уменьшить код в переходнике на функцию (MessageBoxImp)? ExpandedWrap disabled
Тебе именно уменьшить код? Наверное никак, окромя перетещить _emit под call DoImport и избавиться от goto. Тем более, что ты забыл ещё один goto do_import; в самом начале. Или тебе всё-таки что-то другое нужно? Производительность можно поднять, например.
P.S. Интересно, что это за жёсткий код такой? Обфусцируем, пишем трояна, обманываем антивиря или готовимся работать в чужом процессе?
bootflasher, это самый обычный "ленивый" динамический импорт функции
__asm _emit 0xE9 __asm _emit 0 __asm _emit 0 __asm _emit 0 __asm _emit 0 - это jmp do_import, записано байтами, т.к. я хз как указать msvc что надо jmp near а не jmp short оно должно стоять именно в начале функции, чтобы после того как функция импортирована, она бы выглядела как "jmp MessageBoxA"
записать код компактнее - это например было бы ExpandedWrap disabled