Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Список параметров функции из DLL - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Применение is_same для списка типов http://www.cyberforum.ru/cpp/thread1652384.html
Итак, std::is_same может сравнить только два типа. Написал велосипед, который сравнивает первый тип со всеми остальными. Собственно, вот код: #include <type_traits> //...
C++ Виснет графика в SDL Здравствуйте, пишу программу, которая меняет две картинки под музыку, после нескольких секунд музыка продолжает играть, но картинки не меняются и программа получает статус "не отвечает". Почему? Буду... http://www.cyberforum.ru/cpp/thread1652358.html
[mingw] не видит <codecvt> C++
всем привет. есть библиотека, которая изначально разрабатывалась в msvc2013. к библиотеке есть требование - кросс-платформа, и отсутствие внешних зависимостей. то есть, нельзя подтягивать...
C++ Обертка над boost::lexical_cast для работы с unsigned типами
Пару дней назад выяснилось, что boost::lexical_cast не удовлетворяет нескольким требованиям в моей программе. boost::lexical_cast отказывается обрабатывать и выбрасывает исключение, если имеются...
C++ Hex to Ascii http://www.cyberforum.ru/cpp/thread1650678.html
Всем привет! Работаю с АЦП, и ему надо отправить ascii код (55H 55H 00H 00H AAH). (в виде char будет (UU ª), просто так отправить не удалось) Попробовал отправить hex (55 55 00 00 AA), не...
C++ QtCipherSqlitePlugin sqlite3_rekey не шифрует Пытаюсь сменить пароль на БД. QSqlDriver *driver=myDatabase.driver(); QVariant handle=driver->handle(); Q_ASSERT_X(handle.isValid(), Q_FUNC_INFO, "Invalid handle of... подробнее

Показать сообщение отдельно
nikolay1982
93 / 93 / 38
Регистрация: 22.01.2014
Сообщений: 317
02.04.2016, 15:56
Цитата Сообщение от Izual Посмотреть сообщение
допустим 4 аргумента, все они int_32, т.е. 4х4байт=32, а return там bool - 1 байт, т.е. в сумме 33 байта
Это значит, в стэк передается четыре аргумента int32_t , а результат в регистре EAX (тип вызова stdcall,cdecl).
Для незадокументированных dll можно диассемблировать и посмотреть аргумент return. По этому значению можно угадать сколько у функции аргументов в DWORD. Но это грубое упрощение, в расчете на то, что в функции стандартный предсказуемый эпилог. Иначе надо будет учитывать другие инструкции.
Что касается стандартных dll.
Можно просмотреть загловочные файлы из-под установленного Masm-а.
Например: Masm/include/user32.inc.
Но это дает данные о том, сколько параметров у функции, и есть ли результат.
Для просмотра, какие параметры у функции придется смотреть справку WinAPI.
У меня она старая 17 Мб занимает(English), а 2 Гб справки устанавливать на компьютер не интересно.
Можно просматривать заголовочные файлы.
Можно даже хитрее сделать: Написать скрипт, который бы получал по DLL список экспортируемых функции(dumpbin,pexports в помощь), и пытался найти их определения в папке include С/С++ компилятора.
Что-то вроде:
Bash
1
2
3
4
5
6
pexports user32.dll >user32.def
echo "Function List:"> user32.lst
for n in `cat user32.def`;
do
    fgrep -r $n c:/Pograms/MinGW/Include >> user32.lst
done
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru