Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Функции из 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 откроет выпадающий список глобально доступных идентификаторов модуля


Наверх

Титульная страница Поиск, карта сайта Написать письмо