Сейчас на форуме: Rio, tyns777, zombi-vadim (+7 невидимых) |
eXeL@B —› Программирование —› Как получить список и адреса функций типа 0x0150E828 из откомпилированного DLL |
Посл.ответ | Сообщение |
|
Создано: 28 мая 2014 21:09 · Личное сообщение · #1 В качестве подопытного кролика будем использовать библиотеку NVAPI.DLL (драйвер Nvidia) Статья: http://eliang.blogspot.ru/2011/05/getting-nvidia-gpu-usage-in-c.html Code:
Вкратце смысл такой: разработчики не ввели в nvapi.h описание функции NvAPI_GPU_GetUsages, и вызвать эту секретную функцию можно через LoadLibrary и затем указать её hex адрес. Задача - получить весь список спрятанных функций |
|
Создано: 28 мая 2014 21:17 · Личное сообщение · #2 |
|
Создано: 31 мая 2014 22:55 · Личное сообщение · #3 Code:
NVidia Resource Manager, Version FCS 2.00 4.0.0.0 может это внутренние подпрограммы дллки, к которым обращаются апи функции |
|
Создано: 01 июня 2014 00:23 · Поправил: dosprog · Личное сообщение · #4 ArchiStenton пишет: В качестве подопытного кролика будем использовать библиотеку NVAPI.DLL (драйвер Nvidia) Статья: http://eliang.blogspot.ru/2011/05/getting-nvidia-gpu-usage-in-c.html Требуйте у автора статьи тот файл, который рассматривается в статье. Тот, что имеется, "NVidia Resource Manager, Version FCS 2.00 4.0.0.0", - не годится, поскольку не экспортирует функцию <nvapi_QueryInterface>. То-есть, строка программы: Code:
- приведёт к тому, что NvAPI_QueryInterface=NULL со всеми вытекающими последствиями. Этот парень - какой-то хун-лян-ханг натуральный. Без проверок тут же прыгает по этому адресу в NULL: Code:
--- ДОБАВЛЕНО --- А вот |
|
Создано: 05 июня 2014 18:33 · Личное сообщение · #5 Адреса оказывается есть в интернете: http://www.cyberforum.ru/csharp-net/thread376413.html Code:
Мой код: Code:
Выдает неправильные значения. |
|
Создано: 05 июня 2014 22:46 · Поправил: neomant · Личное сообщение · #6 |
|
Создано: 06 июня 2014 04:00 · Поправил: dosprog · Личное сообщение · #7 ArchiStenton, а где в памяти у вас расположена эта структура NV_DISPLAY_DRIVER_MEMORY_INFO? Куда указывает <PMemoryInfo> ? У меня нет ни такой карты, ни установленных драйверов для неё. Вот, проверьте у себя, будет ли работать вот это 7a60_06.06.2014_EXELAB.rU.tgz - NV_TEST.RAR |
|
Создано: 11 июня 2014 13:44 · Личное сообщение · #8 |
|
Создано: 11 июня 2014 15:06 · Поправил: Veliant · Личное сообщение · #9 Если откроете NVAPI.dll в любом hex-редакторе или дизассемблере, то увидите, что в начале секции .data идет большой массив из структур вида Code:
Поэтому можно даже без экспорта искать в памяти dll нужный dword и получать адрес соответствующей ему функции Дальше открываем Lib файл и смотрим все вызовы queryinterface, и в некоторых случаях имеем связку DWORD=имя ------------- В аттаче список функций 5b32_11.06.2014_EXELAB.rU.tgz - funcs.txt |
|
Создано: 11 июня 2014 19:06 · Личное сообщение · #10 Ну там не все функции. Вот этой например нет: NvAPI_GPU_GetCoolerSettings, адрес 0хDA141340 А для чего разработчик прячет это всё, какой смысл в этом? Есть же официальный nvapi.h , почему-то кастрированный на 60-70%, а оказывается можно и без него обойтись. И самый главный вопрос, если функция приватная, ну допустим нашел я её адрес. А прототип где взять,аргументы? Если в хидере ничего нет... |
|
Создано: 11 июня 2014 19:39 · Личное сообщение · #11 ArchiStenton пишет: А прототип где взять,аргументы? Если в хидере ничего нет... Тут надо следовать чОткому правилу - никогда не дизасмить функу, это может дать ненеужное и неверное представление о числе и типе параметров. Только хардкор, только брутфорс - по эксепшнам и резалту поймешь чего ждет и хочет функа. Это путь истенного обивана. | Сообщение посчитали полезным: dosprog, 2nd |
eXeL@B —› Программирование —› Как получить список и адреса функций типа 0x0150E828 из откомпилированного DLL |