Здравствуйте. Можно ли откомпилировать код, который использует API, в *.bin? Например такой: Код (Text): %INCLUDE "win32n.inc" [extern MessageBoxA] [extern ExitProcess] %define MB_EXCLAMATION 48 SECTION CODE USE32 CLASS=CODE ;секция кода ..start: push dword MB_EXCLAMATION push dword _title push dword _message push dword 0 call MessageBoxA push dword 0 call ExitProcess SECTION DATA USE32 CLASS=DATA ; секция инициализ. ; данных _message db "Hello, World!",0 _title db "I like to see you...",0 Пробовал так: nasm.exe -f bin test.asm -o test.bin Не выходит. P.S. В бинарник нужно, для того чтобы потом в другом приложении вызвать через CallWindowProc. Спасибо.
_kostik_ Я так понимаю, что код, вызванный через CallWindowProc, должен быть базонезависимым. Соответственно Вам придется либо почитать статью по получению адресов API в базонезависимом коде, либо передавать адреса внутри параметров CallWindowProc (причем вызвавший PE должен уже к моменту вызова CallWindowProc импортировать нужные API). Аналогично с данными: если хотите использовать данные, лежащие по абсолютным адресам в бинарнике, то придется считать дельта-смещение, а иначе храните данные в стэке (хотя для строк я бы все-таки считал дельту... ИМХО слишком уж много это - строки в стэк класть). А насчет совета по поводу фасма присоединяюсь к Asterix.
Файлы с расширением *.bin компилируются без участия компоновщика. В вашем же варианте кода его участие необходимо, так как стандартные функции Windows описываются в файле win32n.inc. Команда должна быть такой: nasm -f obj test.asm -o test.obj Если использовать компановщик alink, то следующей командой должна быть эта: alink -oPE test.obj win32n.inc
l_inc Сейчас нормальный код должен быть пермутирующим(Mutation Independent). Дельта- смещение давно уже не актуально.
Clerk Какой-то одноразовый посетитель поднял со дна истории тему трёхлетней давности, а Вы прицепились. В любом случае автору абсолютно не был нужен "пермутирующий код". Но если хотите найти мои посты, где гарантированно есть за что зацепиться, то Вы верно выбрали временной отрезок для поиска. Хотя имеет смысл поискать "творчество" и более ранних периодов.
Clerk "Медитировать" — самое то слово. Потому как сематический разбор Ваших постов даётся ну крайне сложно.
товарищ, Клерк, ну хватит уже правда воду лить. Вы ничего конструктивного как правило не советуете.Замечено по многим вашим постам. Как выразился l_inc, какая-то кофейная гуща. Хватит троллить в натуре. Без обид.
neutronion Э-не... Это Вы зря. Иногда (но не всегда ) до советов Clerk нужно дорасти. И насчёт кофейной гущи имелось в виду нечто иное. И тему лучше закрыть. Во избежание.
neutronion За три года думаю автор нашёл ответы на свои вопросы, темболее масм бинари компилить не умеет и подключать их тоже. Фасм вроде умеет, но я его не юзаю. Конструктивное в вашем понимании это что, сурцы ? По мойму это у вас пять сообщений не в тему и совсем не конструктивны.