Import LIB своими руками?

Тема в разделе "WASM.ZEN", создана пользователем Arthur, 5 ноя 2008.

  1. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    Доброе время суток!

    Мне нужно собрать coff объектник, после чего пихнуть в lib фаил.
    всё что я знаю так это то что такой фаил должен содержать секции: .idata$2, .idata$4, etc...
    и что все данные о импорте раскинуты по этим секциям (.idata$n), в итоге компоновщик сам собирет
    одну секцию idata с нормальными RVA адресами.

    Допустим:
    библиотека: crtdll.dll
    функции: printf, getchar, isalnum

    как реализовать такой coff объектник(к примеру на fasm или nasm)?
     
  2. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    Не догнал что нужно. Но в либу можно добавить объектник.
    А понял, фасм же не собирает объектники. ;)
     
  3. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    Booster
    Нет, fasm как раз таки собирает объектники (elf, coff, ну кроме omf). К примеру на fasm, при создании PE программы секция idata собирается вручную (кратко и изящно благодаря макросам library/import), но при создании coff, rva не поддерживается, так как в coff не задаются основные адреса. Поэтому для компоновщика нужна либа, которая содержит один или несколько coff-объектников, те в свою очередь содержат специально организованные секции (.idata$2, .idata$4, .data$5, .idata$6) в этих секциях содержатся порции данных о импорте (секция .idata), с помощью которых в итоге компоновщик строит одну секцию импорта. Так вот мне нужен небольшой example, ручной сборки такого coff объектника, желательно на fasm/nasm.
     
  4. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    http://implib.sf.net/
     
  5. Jupiter

    Jupiter Jupiter

    Публикаций:
    0
    Регистрация:
    12 авг 2004
    Сообщения:
    532
    Адрес:
    Russia
    посмотри исходники objconv Агнера Фога
     
  6. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    Asterix
    Спасибо за ссылку, чувствую то что нужно, будем ковырять :)

    Jupiter
    Спасибо, сейчас тоже закачаю, посмотрю.
     
  7. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    форматер fasm-a
     
  8. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    Asterix
    Вещь крутая, сразу собирает lib файл :) Quantum молодца :)

    _basmp_
    Непонял. Мне нужен простой исходник(на ассемблере fasm/nasm) coff объектника(получаемого после ассемблирования) содержащий правильную информацию в секциях .idata$n. Мне не нужна спецификация самого COFF формата (если вы об этом).
     
  9. _basmp_

    _basmp_ New Member

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

    В фасмовом форматере оч простая реализация нескольких форматеров (??). И рабочая. (правда в бсс признак неправильно ставит или уже поправлено?)

    только что про идату заметил. беру свои слова назад. про импортовые либы недавно вопрос поднимался. было простое решение предложено.
     
  10. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    Мне нужно знать что, где находится:

    Код (Text):
    1. format ms coff
    2.  
    3. section '.idata$2' data
    4.    ; что здесь должно быть?
    5.  
    6. section '.idata$4' data
    7.    ; а что здесь?
    8.  
    9. section '.idata$n' data
    10.    ; и т. д.
     
  11. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    наскоко помню, секции с номерками после $ в названии собираются компоновщиком в одну (если признаки у них совпадают). Секции могут элиминироваться, если символы в них не востребовались. В описании формата от мс это описано.
     
  12. Arthur

    Arthur New Member

    Публикаций:
    0
    Регистрация:
    27 янв 2007
    Сообщения:
    494
    _basmp_
    Смотрю вот "Microsoft Portable Executable and Common Object File Format Specification" и впритык не вижу инфу о том где и что должно располагаться в этих секциях :dntknw:
     
  13. _basmp_

    _basmp_ New Member

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

    -- параграф 4.2 - про группируемые секции ($ <номер>)

    (но вообщето секции объединяются по флагам)