Парсер Либа на ФАСМе

Тема в разделе "WASM.WIN32", создана пользователем calidus, 31 май 2008.

  1. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    calidus
    от регистра в выни имена ф-лов не зависят. Дописал полные пути (с буквами дисков) во все внешние к проекту инки. все собралось без вопросов.
    1.67.21

    При чем тут? Если время не терпит делайте все понятным себе образом.
     
  2. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
  3. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
  4. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Спасибо )))) Все окей собралось , ну с либой уже ясно. Я вот что еще пытался сделать сконвертировать обж файл в дефинитион файл конвертором. Потом короче от дефинитион файла конвертором в масм инс файл. Но первый конвертор не видит паблик процедуры в обжекте ,хотя как видно мы же их обьявили.
     
  5. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    obj2def парсит таблицу символов в OBJ-файле, проверяя, чтобы тип символа был равен 0x20, а fasm тип не проставляет. В аттаче патченный obj2def (на один раз сгодится), или можно было то же самое руками сделать, или даже заставить фасм сделать большую часть работы (исходник с соответствующим макросом тоже в аттаче), можно было вообще сразу масмовые прототипы фасмом вывести, но это уже опять лениво :)

    Оффтоп: кто бы мне объяснил, как IMAGE_SYM_DTYPE_FUNCTION = 0x02, соотносится с “Microsoft tools use this field only to indicate whether the symbol is a function, so that the only two resulting values are 0x0 and 0x20 for the Type field” в типе символа в COFF?
     
  6. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    не могу ничего сказать =(

    =) Спасиб. Теперь вопрос переносимости , используются

    Код (Text):
    1. ;------------------------------------------------------------------------------;
    2. ; External symbols (imports).                                                  ;
    3. ;------------------------------------------------------------------------------;
    4. extrn   '__imp__VirtualFree@12' as VirtualFree:dword
    5. extrn   '__imp__VirtualAlloc@16' as VirtualAlloc:dword
    6. extrn   '__imp__GlobalAlloc@8' as GlobalAlloc:dword
    7. extrn   '__imp__GlobalFree@4' as GlobalFree:dword
    что если заменить коллы на просто адрес дд , скажем переменный. Например когда я подключу либу к своему коду. То вынужден буду решить проблему занесения адресов функций. Я нашел функции в кернеле записал их. А название переменных такое же куда делает колл либа?! ... Вызывая при этом уже нужную функцию апи. Какие мысли?
     
  7. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    А где проблема, зачем что-то куда-то заносить самому? Extern-ы объявлены в расчёте на использование библиотеки импорта:
    Код (Text):
    1. link whateveryouwant.obj xyzzy.obj kernel32.lib
    (не понял вопроса)
     
  8. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    =) я создал скажем код на хп , но на нт то он не пойдет! Или на виста! А так колл идет в место которое на каждой винде имеет свои данные для вызова апи , и при запуске записывает список всех апи. Короче кросплатформенность...
     
  9. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    calidus
    Странные представления у вас о кроссплатформености.
    Ничего не мудрите. Линкер + выньзагрузчик автоматом обеспечат вам кросспатформеность в рамках х86-вынь (при условии неюзанья специфичных функций).
     
  10. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    =) Млин ясный пень я могу приделать поисковик прям к либе , и пусть либа также динамически адреса апи ищет. Но не выгодно ..и не удобно. Что такое выньзагрузчик ? Это второй метод заменить адреса апи ? =) Что значит специфичные функции ?
     
  11. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    Мы друг друга не понимаем, наверное? См. выше команду линковки. Оно заработает «в рамках х86-вынь». Зачем динамически функции искать? Но если всё-таки нужно зачем-то:
    Код (Text):
    1. extrn '_MyVirtualFree' as VirtualFree:dword
    В своём коде определяешь MyVirtualFree dd ? и заполняешь как угодно адресом VirtualFree. Остальные функции аналогично.
     
  12. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Спасибо =) это и требовалось.
     
  13. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    iZzz32
    Да уж лучше после загрузки пробежаться по таблице импорта и подменить адреса у нужных функций.

    calidus
    (На возможные вопросы о таблице импорта овечаю: сперва читаем о PE формате, а затем заводим отдельную тему. Эта уже отвечена полностью. А вам еще проект сдавать.)