Страница: 1 | 2 |
Вопрос: API - функции любой DLL
Добавлено: 12.08.04 16:18
Автор вопроса: magish
У иеня есть DLL - которая 100% содержит API в себе. Так вот есть ли такакя программа которая читает DLL и показывает все API функции. Или как можно на VB такую программу наколякать. Заранее спасибо, кто че знает пишите...
Ответы
Всего ответов: 23
Номер ответа: 1
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #1
Добавлено: 12.08.04 17:21
>которая 100% содержит API в себе
Что значит содержит API? Если внутри DLL есть вызовы WinAPI, то показать, какие конкретно функции (их имена и точки входа), может практически любой дебаггер (к примеру OllyDbg) или любая программа, которая считает секцию импорта из твоей DLL.
Если это твои собственные API(т.е. набор твоих ф-ций), то дебаггер покажет только их адреса входа в эти ф-ции. Названий естественно не покажет.
Номер ответа: 2
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #2
Добавлено: 12.08.04 17:23
Можешь поиграться с PE-заголовком. Я как раз этим сейчас занимаюсь. Правда до таблицы экспорта пока не дошёл ещё.
Номер ответа: 3
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #3
Добавлено: 12.08.04 17:52
2 cresta:
> дебаггер (к примеру OllyDbg)
> или любая программа, которая считает
> секцию импорта из твоей DLL.
Пример, название программы "недебагера" подскажешь? Просто хорошо работотать я даже с debug не умею, есть что-то предельно простое?
2 CyRax:
Т.е. я правильно тебя понимаю, что это я смогу увидеть в простом двоичном вьювере?
Номер ответа: 4
Автор ответа:
Sur
ICQ: 1249088
Вопросов: 10
Ответов: 304
Web-сайт:
Профиль | | #4
Добавлено: 12.08.04 18:06
Показать имена функций может Dependency Walker из Visual Studio, а как их потом декларировать?...
Номер ответа: 5
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #5
Добавлено: 12.08.04 19:58
Не, ну если ты меня так буквально понял то можно и в "двоичном вьювере".
Пожалуйста:
1. Смотришь по смещению &H3C четыре байта(Dword). Там находится PE-заголовок.
2. Переходишь на него
3. Отсчитываешь 6 байт вперёд и смотришь значения двух байт(Word). Это количество таблиц секций.
4. Возвращаешся на 6 байт назад к началу PE заголовка.
5. Переходишь вперёд на &HF8 байт. Здесь заканчивается PE заголовок и начинаются таблицы секций.
6. Пропускаешь таблицы секций. Длина всех таблиц секций = Word из пункта (3) умноженный на &H28(длина одной таблицы).
Собственно я пока здесь.
7. Дальше идут сами секции.
Для того чтобы посмотреть где начинаются таблицы импорта, экспорта и ресурсов можно узнать смещение и длину в файле последней секции (сразу после неё и идут эти таблицы). Переходишь на таблицу последней секции (см. (5) и (6)) и по смещению &H10 находишь её длину(Dword или 4 байта). Следующие 4 байта (смещение &H14) на её адрес в файле. Суммируешь и переходишь по этому адресу от начала файла.
Здесь начинаются таблицы:
import info
export info
fixup info
resource info
debug info
Дальше к сожалению RTFM. Я сам пока только пункт 6 закончил. Или жди или качай мануалы по PE.
Номер ответа: 6
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #6
Добавлено: 12.08.04 21:08
To mc-black:
Не дебаггер - например PEExplorer. Он показывает все импортируемые ф-ции. У меня OllyDbg.exe и PEexplorer.exe. Другими не пользуюсь.
А пользоваться виндовым debug'ом - это всё равно как закат солнца вручную делать. Нормальный дебаггер выглядит совсем иначе. Зайди на wasm.ru, я там брал OllyDbg, скачай и попробуй, думаю понравится, особенно после debug'a
To Sur
Ну как декларировать? Он же показывает имя ф-ции и библиотеку, из которой она импортируется, ну и делай
Declare Function "имя" Lib "имя библиотеки" Alias "alias" (parameters) As (тип)
Номер ответа: 7
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #7
Добавлено: 12.08.04 22:17
Я использую для этих целей exeScope. А вот с параметрами небольшой обломчик, это COM-объекты через IDispatch говорят, что и каких типов они принимают в качестве аргументов, а обычные функции DLL - нет. Единственный вариант - если имена функций манглезированы, тогда их можно какой-то там утилиткой расшифровать и узнать, что она принимает в качестве аргументов.
Номер ответа: 8
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #8
Добавлено: 12.08.04 22:26
2CyRax: в журнале Программист помнится был цикл статей с детальным
разбором формата PE-файла...
Номер ответа: 9
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #9
Добавлено: 12.08.04 22:39
А еще у дяди Iczelion'а!
Номер ответа: 10
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #10
Добавлено: 12.08.04 23:16
Кстати, Iczeleon'a видел на роусском, полностью переведенного )
Iczeleon.chm
Номер ответа: 11
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #11
Добавлено: 12.08.04 23:33
Немного продвинулся. Ошибочка там была. Таблицы импорта и экспорта находятся не за секциями, а в самих секциях. Вот только как извлекать их я пока не понял. Вроде под эти таблицы должны выделяться отдельные секции, но например в проге на VB6 таблица импорта находится в секции .text вместе с исполняемым кодом.
А прога на PB и импорт и экспорт кидает в секцию .link
Наверное у меня источник устаревший.
----------------------------
| Version: 1.1.0 |
| Release: 30-Oct-1998y |
| Created by: Hard Wisdom |
-----------------------------
Прийдётся таки браться за старика Iczelion'а с WASM.RU
Номер ответа: 12
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #12
Добавлено: 12.08.04 23:46
Если интересно гляньте что уже есть.
http://basicproduction.nm.ru/TEMP/PeViewer.rar
Номер ответа: 13
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #13
Добавлено: 13.08.04 00:30
Всё нашёл где ссылки на импорт/экспорт. Они в самом PE заголовке.
Меня просто смутило само название Import Table RVA (опять же от Hard Wisdom).
Если я правильно понял, RVA - это смещение в памяти относительно Image Base (стартовый адрес, как правило &H400000). А тут указано смещение к таблице относительно начала файла и обозвано как RVA. Хотя RVA применяется только к памяти, а смещение в файле указывается отдельно.
Номер ответа: 14
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #14
Добавлено: 13.08.04 00:38
Павел,
- Жаль только что я его никогда не читал. А может ссылка у тебя сохранилась случайно?
Номер ответа: 15
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #15
Добавлено: 13.08.04 00:46
А я таким пользуюсь PE-Viewer'ом
http://ru.thallium-tech.com/?product=exe&page=download