импорт API функций

Тема в разделе "WASM.BEGINNERS", создана пользователем CT, 16 ноя 2006.

  1. CT

    CT New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2006
    Сообщения:
    72
    Есть ли ссылки на русскоязычную документацию по PE формату, в которой бы ЯСНО и ДОХОДЧИВО объяснялось как происходит импорт АПИ функций?

    4 Раза прочитал в "туториалах Iczelion'а" раздел, посвященный PE формату, но там лишь описание устройства секции импорта и слишком мало о том, как это все работает.

    Все документы, ссылки на которые выдал яндекс - полная профанация. Пытался даже искать все страницы на которых упоминаются структуры такие как IMAGE_IMPORT_BY_NAME, все равно бестолку.

    У Криса Касперски в книге "Техника отладки программ без исходных текстов" - вообще полупублицистика.

    Если конкретно - интересует как происходит вызов API от начала и до конца, как определяются адреса в DLL и т.п.

    Желательно с визуальными схемами, иллюстрациями и примерами )))
     
  2. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    CT
    ^)))
    Я не буду тебе говорить, но твоя тема уже не раз подниалась!

    Мэтт Питрек на rsdn.ru Просто обязан быть прочитан!!!

    Прочитаешь, далее упаковщики со статей этого сайта, а после сам найдешь че тебе надо!
     
  3. CT

    CT New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2006
    Сообщения:
    72
    EvilsInterrupt Попробую, спасибо.

    А то я нашел то, что меня частично устраивает только на английском языке (в документации wasm.ru) и если что - придется переводить.
     
  4. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    рекомендую взять фасм и попрактиковаться в "ручном" создании exe,
    пока заставишь exe'шник работать точно разберешься в формате и импорте в том числе
     
  5. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    CT
    Конкретно тема импорта там описана досконально, только без картинок.
     
  6. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    Еще можешь прочитать "От зелёного к красному 2".
     
  7. CT

    CT New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2006
    Сообщения:
    72
    У К.Касперски в одной из книг написано, что секции загруженного PE файла не могут перекрываться и образовывать дыры в виртуальном адресном пространстве. В то же время в документации от Yinrong Huang в первой же главе обращается внимание на то, что пробелы в адресном пространстве между секциями могут быть. Так кто же из них прав?
     
  8. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    Это личное дело загрузчика. Если секции будут маппиться с разрывами, то он должен будет пересчитывать релоки, так как таблица релоков предполагает, что никаких разрывов не будет, и все секции выравнены на значение NTHeaders->OptionalHeader.SectionAlignment.
     
  9. CT

    CT New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2006
    Сообщения:
    72
    Хм... причем тут загрузчик и релоки? Я имею ввиду - могут ли виртуальные адреса секций задаваться В САМОМ ФАЙЛЕ так, чтоб располагаться в памяти с разрывами? Будет ли такой файл корректным?
     
  10. ksacvet777

    ksacvet777 Александр

    Публикаций:
    0
    Регистрация:
    9 ноя 2006
    Сообщения:
    180
    Адрес:
    Кемеровская обл.
    Уважаемй СТ , загляните ещё вот сюда : http://www.smidgeonsoft.prohosting.com/pebrowse-pro-file-viewer.html

    юрл для скачки http://www.smidgeonsoft.prohosting.com/download/PEBrowse.zip

    вес 1,5 мегабайт . может эта прога поможет вам .. :))

    Ведь изучать что-то лучше глядя в программу , которая предназначена для операций с тем что изучаешь ....

    желаю удачи !!!
     
  11. CT

    CT New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2006
    Сообщения:
    72
    ksacvet777 мне не нужны "проги" выдирающие импорт из файлов. Я его и сам выдрать могу. Уже )

    Всем спасибо )
     
  12. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    Нельзя. Можно изменить выравнивание секций, но не более того. Память будет выделена непрерывной.
     
  13. CT

    CT New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2006
    Сообщения:
    72
    Читаю (как посоветовали) статью "От зеленого к красному", так возник такой вопрос:

    Код (Text):
    1. call delta
    2.  
    3. delta:
    4.  
    5. pop EBP
    6.  
    7. sub EBP,offset delta
    Будет ли (и если да, то как) работать такой способ получения дельта смещения, если образ будет загружен не по предпочтительному адресу.
     
  14. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    будет, т.к. от адреса загрузки не зависит
     
  15. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    CT
    Нет, Вы неправильно поняли автора.
     
  16. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
  17. CT

    CT New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2006
    Сообщения:
    72
    Asterix

    Не зависит? ~8-0

    А что тогда представляет собой "offset delta"? Тут же плоский режим и, как я понимаю, все смещения представляют собой абсолютные адреса и должны корректироваться через таблицу релоков при загрузке, потому как процессору понятие RVA не известно... Если я не правильно понимаю адрессацию - скажите плз. где я ошибаюсь.
     
  18. Asterix

    Asterix New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2003
    Сообщения:
    3.576
    CT
    если у файла есть релоки то будет корректироваться, иначе такой файл не запустится
    если предпочтительный адрес занят

    но это на механизм не влияет, чтобы убедиться используй отладчик
     
  19. CT

    CT New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2006
    Сообщения:
    72
    Asterix
    Я что то не понимаю, кто в зараженном файле пропишет релоки вирусному коду? Если сам вирус, то почему об этом не сказано сразу в статье?

    Проанализировал под отладчиком

    sub EBP,offset delta ==> sub EBP,00401005, в машинных кодах 81ED 05104000 ------> Это АБСОЛЮТНЫЙ адрес, на который рассчитывал линкер. В таблице релоков оригинального файла есть ссылка на это значение, оно корректируется, если имидж загружен не по предпочтительному адресу.
     
  20. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    CT
    проведи опыт
    Код (Text):
    1. lea edi,some_addr
    2. lea esi,start_block
    3. mov ecx,offset end_block- offset start block
    4. push edi
    5. rep movsb
    6. ret
    7.  
    8.  
    9.  
    10. start_block:
    11. call get_delta2
    12. get_delta:
    13. var1  dd   55h
    14. get_delta2:
    15. pop ebx
    16. sub ebx,offset get_delta
    17. mov eax,var1[ebx]           ;посмотри, куда обращается эта инструкция в перемещённом коде
    18. ret
    19. end_block:
    20.  
    21. ....
    22.  
    23. some_addr: