![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Функции из DCU [D7, Win2k, WinXP]
ПсихЪ © (2004-06-21 09:41:00)Как можно узнать имена функций, елси есть DCU, но нету PAS файла?
ПсихЪ_клон (2004-06-23 16:51:00) [1]Всё!!! (:
DeDe - мегарулез!!! (:
Спасибо всем, кто помогал мне советами!
Разобрался!
Нужно было написать безглючную версию этого файлика. Он был весь проглюченный и без исходников, теперь всё отлично! (:
Ещё раз всем спасибо!
Digitman (2004-06-23 15:51:00) [2]есть и иной вариант, безо всяких внешних дизассемблеров
сделай тестовое приложение, которое будет вызывать эксп.ф-цию с любыми параметрами (желательно таки знать соглашение о вызове, хотя и это необязательно)
ставь брейкпойнт на точке вызова эксп.ф-ции, стартуй хост-приложение в режиме встр.отладки. лови брейкпойнт, переходи в CPU-окно и анализируй в реальном времени, какие параметры какого типоразмера ожидаются эксп.ф-цией
Digitman (2004-06-23 15:45:00) [3]
> ПсихЪ_клон
можно и не DeDe .. если операция разовая, то можно воспользоваться практически любым иным более-менее серьезным дизассемблером ..
получаешь листинг дизассемблированной библ-ки, ищешь свою ф-цию по имени в списке эксп.имен, смотришь размеры вх.параметров и по обращению к ним в теле ф-ции по последовательности маш.инструкций определяешь хотя бы примерное их назначение.. в большинстве случаев примерное назначение и будет конкретным
ПсихЪ_клон (2004-06-23 15:37:00) [4]Название есть, его там можно обнаружить обычным поиском при открытии сего файла в ВинКоме по F3. Но кроме вышеописанного способы эти функции больше никак определить не удаётся. Вот сейчас DeDe-таки скачал, посмотрим его изнутри... (:
evvcom (2004-06-23 15:30:00) [5]Конечно, можно сделать и такое, но я бы назвал этот способ "через ж...". Если делалось как принято, то что-то здесь не так. В любом случае, можно поискать в каком-нибудь hex-редакторе название этой "стелс"-функции. Если названия нет, а реально она там присутствует, то точно "через ж..." сделано, а если есть, то функция должна быть в interface секции.
ПсихЪ_клон (2004-06-23 15:21:00) [6]
> evvcom
Дык в том-то и дело, что эти функции вероятно не доступны для других модулей, но при создании DLL с этим модулем они экспортятся...
evvcom (2004-06-23 14:54:00) [7]
> Они экспортятся в DLL.
Они не обязательно экспортятся в dll из этого dcu и в том же виде. То что доступно другим модулям (в том числе и в секции exports) должно быть обязательно в интерфейсной части модуля. А это увидишь как советовал Digitman. Tot? если курсор стоит после точки (или части набранного имени), а список скрылся, можно нажать Ctrl+Space
Amoeba (2004-06-23 14:06:00) [8]DeDe должен помочь.
ПсихЪ_клон (2004-06-23 13:20:00) [9]Спасибо, но... в том-то и дело, что dcu2pas выдаёт ошибку при декомпиляции требуемого файла, хотя его можно нормально использовать в своих программах.
> Digitman
Так и поступил, только вот там есть 2 функции, которые каким-то образом скрыты... ): Я знаю, что они там есть, но как их осмотреть, хотя бы список их параметров - не знаю... ): Они экспортятся в DLL.
Семен Сорокин (2004-06-21 11:41:00) [10]dcu2pas - увидишь заголовки
Amoeba (2004-06-21 11:35:00) [11]Можно воспользоваться утилитой DeDe.
Digitman (2004-06-21 10:26:00) [12]в дизайн-тайм набери в IDE-редакторе имя интересующего модуля (оно должен фигурировать в USES), набери "точку" следом за именем модуля - IDE откроет выпадающий список глобально доступных идентификаторов модуля