API в Бинарнике

Тема в разделе "WASM.BEGINNERS", создана пользователем _kostik_, 28 окт 2007.

  1. _kostik_

    _kostik_ New Member

    Публикаций:
    0
    Регистрация:
    27 окт 2007
    Сообщения:
    8
    Здравствуйте. Можно ли откомпилировать код, который использует API, в *.bin?

    Например такой:
    Код (Text):
    1. %INCLUDE "win32n.inc"
    2.  
    3. [extern MessageBoxA]
    4. [extern ExitProcess]
    5.  
    6. %define MB_EXCLAMATION 48
    7.  
    8. SECTION CODE USE32 CLASS=CODE ;секция кода
    9.  
    10. ..start:
    11. push dword MB_EXCLAMATION
    12. push dword _title
    13. push dword _message
    14. push dword 0
    15. call MessageBoxA
    16.  
    17. push dword 0
    18. call ExitProcess
    19.  
    20. SECTION DATA USE32 CLASS=DATA ; секция инициализ.
    21. ; данных
    22.  
    23. _message db "Hello, World!",0
    24. _title db "I like to see you...",0
    Пробовал так:
    nasm.exe -f bin test.asm -o test.bin
    Не выходит.
    P.S. В бинарник нужно, для того чтобы потом в другом приложении вызвать через CallWindowProc.
    Спасибо.
     
  2. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    на фасме будет удобнее
    https://wasm.ru/forum/viewtopic.php?pid=160056#p160056
     
  3. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    _kostik_
    Я так понимаю, что код, вызванный через CallWindowProc, должен быть базонезависимым. Соответственно Вам придется либо почитать статью по получению адресов API в базонезависимом коде, либо передавать адреса внутри параметров CallWindowProc (причем вызвавший PE должен уже к моменту вызова CallWindowProc импортировать нужные API). Аналогично с данными: если хотите использовать данные, лежащие по абсолютным адресам в бинарнике, то придется считать дельта-смещение, а иначе храните данные в стэке (хотя для строк я бы все-таки считал дельту... ИМХО слишком уж много это - строки в стэк класть).
    А насчет совета по поводу фасма присоединяюсь к Asterix.
     
  4. serqei35

    serqei35 New Member

    Публикаций:
    0
    Регистрация:
    10 апр 2010
    Сообщения:
    5
    Файлы с расширением *.bin компилируются без участия компоновщика. В вашем же варианте кода его участие необходимо, так как стандартные функции Windows описываются в файле win32n.inc.

    Команда должна быть такой: nasm -f obj test.asm -o test.obj

    Если использовать компановщик alink, то следующей командой должна быть эта: alink -oPE test.obj win32n.inc
     
  5. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    l_inc
    Сейчас нормальный код должен быть пермутирующим(Mutation Independent). Дельта- смещение давно уже не актуально.
     
  6. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Clerk
    Какой-то одноразовый посетитель поднял со дна истории тему трёхлетней давности, а Вы прицепились. :)
    В любом случае автору абсолютно не был нужен "пермутирующий код".
    Но если хотите найти мои посты, где гарантированно есть за что зацепиться, то Вы верно выбрали временной отрезок для поиска. Хотя имеет смысл поискать "творчество" и более ранних периодов. :)
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    l_inc
    Мне незачем ваши посты искать, медитируйте на мои.
     
  8. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Clerk
    "Медитировать" — самое то слово. Потому как сематический разбор Ваших постов даётся ну крайне сложно.
     
  9. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    товарищ, Клерк, ну хватит уже правда воду лить. Вы ничего конструктивного как правило не советуете.Замечено по многим вашим постам. Как выразился l_inc, какая-то кофейная гуща.
    Хватит троллить в натуре. Без обид.
     
  10. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    neutronion
    Э-не... Это Вы зря. :) Иногда (но не всегда :)) до советов Clerk нужно дорасти. И насчёт кофейной гущи имелось в виду нечто иное.

    И тему лучше закрыть. Во избежание.
     
  11. neutronion

    neutronion New Member

    Публикаций:
    0
    Регистрация:
    31 мар 2010
    Сообщения:
    1.100
    извиняюсь, не удержался. Возможно не прав. Кофейную гущу приплел для усиления.
     
  12. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    neutronion
    За три года думаю автор нашёл ответы на свои вопросы, темболее масм бинари компилить не умеет и подключать их тоже. Фасм вроде умеет, но я его не юзаю. Конструктивное в вашем понимании это что, сурцы ?
    По мойму это у вас пять сообщений не в тему и совсем не конструктивны.