Как узнать, какие параметры требует АПИ?

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Как узнать, какие параметры требует АПИ?

Сообщение arthur2 » 01.07.2009 (Ср) 13:59

Есть библиотека, в которой есть экспортируемые функции. Как узнать, какие и сколько параметров эти функции требуют?
Артур
 
   

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как узнать, какие параметры требует АПИ?

Сообщение Хакер » 01.07.2009 (Ср) 14:06

В общем случае никак.

Если имена функций замангленные — то по ним и узнать количество и тип.
Если функции stdcall-ные — по инструкции retn.
Если есть что-нибудь исползующее функции — по количеству пушей перед вызовом.
Если ничего нет — дизассемблинг и анализ.

Причём здесь VB6?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Как узнать, какие параметры требует АПИ?

Сообщение arthur2 » 01.07.2009 (Ср) 14:10

Хакер писал(а):Причём здесь VB6

Библиотека - vba6.dll :)

Это я не оставляю попыток узнать из подключенной к проекту библиотеки путь к файлу проекта :)
Артур
 
   

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как узнать, какие параметры требует АПИ?

Сообщение Хакер » 01.07.2009 (Ср) 14:19

arthur2 писал(а):
Хакер писал(а):Причём здесь VB6

Библиотека - vba6.dll :)

Язык здесь не причём. Переношу.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Как узнать, какие параметры требует АПИ?

Сообщение arthur2 » 01.07.2009 (Ср) 14:24

ну, трёп так трёп :D

Там есть такая функция: IID_IVbaProject Судя по названию, она как-то связана с объектом VbaProject ? Какие она могла бы принимать параметры? и чего возвращать?
Артур
 
   

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как узнать, какие параметры требует АПИ?

Сообщение Хакер » 01.07.2009 (Ср) 14:28

Это вообще не функция.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Как узнать, какие параметры требует АПИ?

Сообщение arthur2 » 01.07.2009 (Ср) 14:29

А что это?
Артур
 
   

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Как узнать, какие параметры требует АПИ?

Сообщение iGrok » 01.07.2009 (Ср) 17:24

arthur2 писал(а):А что это?

Судя по названию, Interface ID интерфейса IVbaProject.
label:
cli
jmp label

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Как узнать, какие параметры требует АПИ?

Сообщение arthur2 » 01.07.2009 (Ср) 17:47

В общем, видимо, опять глухо :(
Вот здесь лежит интересное исследование vba6:
viewtopic.php?p=6725643#p6725643

Но к сожалению, именно путь к проекту там и не получен
Артур
 
   

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как узнать, какие параметры требует АПИ?

Сообщение Хакер » 01.07.2009 (Ср) 18:55

arthur2 писал(а):А что это?

В данном случае это экспорт не функции, а экспорт константы.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Как узнать, какие параметры требует АПИ?

Сообщение iGrok » 01.07.2009 (Ср) 19:40

Хакер писал(а):
arthur2 писал(а):А что это?

В данном случае это экспорт не функции, а экспорт константы.

оффтоп:
Я правильно понимаю, что на самом деле это всё-таки функция, но всегда возвращающая одно и то же значение - константу? Типа GetCurrentProcess, которая всегда отдаёт -1?
label:
cli
jmp label

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как узнать, какие параметры требует АПИ?

Сообщение Хакер » 01.07.2009 (Ср) 19:42

Нет, это именно константа.
16 байт, которые образуют IID.

Поэтому глупая попытка сделать вызов ни к чему хорошему не приведёт: DEP (если включен) сработает или Invalid Instruction Exception.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Как узнать, какие параметры требует АПИ?

Сообщение arthur2 » 01.07.2009 (Ср) 20:01

А как получить эти 16 байт?
Артур
 
   

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как узнать, какие параметры требует АПИ?

Сообщение Хакер » 01.07.2009 (Ср) 20:04

Код: Выделить всё
Dim IID_IVbaProject as UUID
CopyMemory IID_IVbaProject, GetProcAddress(GetModuleHandle("vba6.dll"), "IID_IVbaProject", Len(IID_IVbaProject)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Как узнать, какие параметры требует АПИ?

Сообщение arthur2 » 01.07.2009 (Ср) 20:18

Интересно :) Хотя практического смысла, видимо, никакого

А как различить, когда экспортируется функция, а когда константа?
Артур
 
   

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как узнать, какие параметры требует АПИ?

Сообщение Хакер » 01.07.2009 (Ср) 20:59

В общем случае — никак. В общем случае нет нужды это делать.

Если ты собрался юзать экспортируемую сущность, значит у тебя есть документация к ней и уж тем более ты знаешь, функция это или константа.

Если же ты хакер, не имеющий документации, но собравшийся использовать экспортируемую сущность и поэтому изучающий её, то и определять нужно хакерскими методами.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Как узнать, какие параметры требует АПИ?

Сообщение arthur2 » 01.07.2009 (Ср) 21:07

Ну а ты как вычислил? Просто любопытно :) Раз уж мы всё равно в трёпе
Артур
 
   

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как узнать, какие параметры требует АПИ?

Сообщение Хакер » 01.07.2009 (Ср) 21:15

Я открыл функцию в отладчике и увидел, что там не код, а 16 байт данных.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

arthur2
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1688
Зарегистрирован: 23.01.2008 (Ср) 14:35

Re: Как узнать, какие параметры требует АПИ?

Сообщение arthur2 » 01.07.2009 (Ср) 22:39

Понятно :)
Артур
 
   


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16

    TopList  
cron