Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: basicproduction.nm.ru
 Профиль | | #2
Добавлено: 12.08.04 17:23
 Можешь поиграться с PE-заголовком. Я как раз этим сейчас занимаюсь. Правда до таблицы экспорта пока не дошёл ещё.

Ответить

Номер ответа: 3
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #3
Добавлено: 12.08.04 17:52
2 cresta:

> дебаггер (к примеру OllyDbg)
> или любая программа, которая считает
> секцию импорта из твоей DLL.

Пример, название программы "недебагера" подскажешь? Просто хорошо работотать я даже с debug не умею, есть что-то предельно простое?

2 CyRax:

Т.е. я правильно тебя понимаю, что это я смогу увидеть в простом двоичном вьювере?

Ответить

Номер ответа: 4
Автор ответа:
 Sur



ICQ: 1249088 

Вопросов: 10
Ответов: 304
 Web-сайт: sur.hotbox.ru/
 Профиль | | #4
Добавлено: 12.08.04 18:06
Показать имена функций может Dependency Walker из Visual Studio, а как их потом декларировать?...

Ответить

Номер ответа: 5
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #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-сайт: sharpc.livejournal.com
 Профиль | | #7
Добавлено: 12.08.04 22:17
Я использую для этих целей exeScope. А вот с параметрами небольшой обломчик, это COM-объекты через IDispatch говорят, что и каких типов они принимают в качестве аргументов, а обычные функции DLL - нет. Единственный вариант - если имена функций манглезированы, тогда их можно какой-то там утилиткой расшифровать и узнать, что она принимает в качестве аргументов.

Ответить

Номер ответа: 8
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #8
Добавлено: 12.08.04 22:26
2CyRax: в журнале Программист помнится был цикл статей с детальным
разбором формата PE-файла...

Ответить

Номер ответа: 9
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #9
Добавлено: 12.08.04 22:39
А еще у дяди Iczelion'а!

Ответить

Номер ответа: 10
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #10
Добавлено: 12.08.04 23:16
Кстати, Iczeleon'a видел на роусском, полностью переведенного :))

Iczeleon.chm :)

Ответить

Номер ответа: 11
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #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-сайт: basicproduction.nm.ru
 Профиль | | #12
Добавлено: 12.08.04 23:46
 Если интересно гляньте что уже есть.
http://basicproduction.nm.ru/TEMP/PeViewer.rar

Ответить

Номер ответа: 13
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #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-сайт: basicproduction.nm.ru
 Профиль | | #14
Добавлено: 13.08.04 00:38
 Павел,
 - Жаль только что я его никогда не читал. А может ссылка у тебя сохранилась случайно?

Ответить

Номер ответа: 15
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #15
Добавлено: 13.08.04 00:46
 А я таким пользуюсь PE-Viewer'ом
http://ru.thallium-tech.com/?product=exe&page=download

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам