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

Получение прототипа функции имея ее адрес - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Помогите приделать graphics.h к CodeBlocks http://www.cyberforum.ru/cpp-beginners/thread373973.html
На странице http://kpolyakov.narod.ru/school/c/faq.htm описано, как подключить библиотеки для работы с графикой. Но у меня кодеблокс. Раньше как то делал, но сейчас забыл куда нужно прописывать строчку для компилятора? И пример, тот который снизу статьи, не работает.
C++ Проблема с #include Проект состоит из нескольких классов, каждый из которых реализован в своём модуле. Есть Главный класс и Дочерний класс, экземпляр которого находится в полях Главного класса (простите мою терминологию - самоучка), но мне необходимо из Дочернего класса увидеть Главный. // A.h #include "B.h" #include "C.h" #include "D.h" class A { A(void); //конструктор private: http://www.cyberforum.ru/cpp-beginners/thread373963.html
C++ Вычислить y=15x8-2x6-13x5+4x2+1
Вычислить y=15x8-2x6-13x5+4x2+1 это выражение нужно вычислить через полином n-й степени я не могу врубиться как это сделать...
Найти минимальный элемент и его порядковый номер C++
Дан массив x1,x2,...,x10. Найти минимальный элемент и его порядковый номер.
C++ Функции http://www.cyberforum.ru/cpp-beginners/thread373949.html
Только начинаю осваивать С++ и прошу вас помочь дополнить программу. Задача : Составить программу, определяющую, в каком из данных двух чисел больше цифр. //Не пойму как обращатся с счетчиками. #include "stdafx.h" #include "iostream" #include "conio.h" using namespace std;
C++ вытянуть значение HINSTENCE из текущего потока Доброго времени суток! Подскажите как можно вытянуть значение HINSTENCE из текущего потока. Может есть какая функция. Т.е. хочу в принципе в любом месте кода уметь получить hInst, чтобы не тягать это значение из WinMain. подробнее

Показать сообщение отдельно
Mustik
56 / 56 / 2
Регистрация: 10.07.2011
Сообщений: 229
28.10.2011, 13:48     Получение прототипа функции имея ее адрес
Цитата Сообщение от webprofusa Посмотреть сообщение
здравствуйте!, писать, и разбираться в программировании на C++ только начал, поэтому если вопрос покажется глупым, не обессудьте)

Итак, у меня есть dll в которой я перехватываю функции WinApi, с перехватом все ок, но возникла необходимость капнуть глубже...
А именно, перехватить вызов функции вызывающей WinApi, затем предыдущую и тд. В общем-то сильно не хватает знаний в организации функций и их параметров в памяти, фактически, как я понимаю, задача сводиться к получению прототипа функции имея лишь ее адрес, адрес возврата перехваченной функции WinApi я получаю(в ее подмененном варианте так):

C++
1
DWORD addr=*((DWORD*)&param1-1);
Где param1 - первый параметр вызванной функции WinApi, собственно два вопроса:
1) действительно ли я получаю правильный адрес функции вызвавшей WinApi?
2) как мне получить список параметров функции по полученному адресу(ведь для перехвата мне нужен точный прототип функции и ее параметров, собственно как их можно, и можно ли в принципе получить из памяти)?

Не могу понять в какую сторону копать, что гуглить и что искать(
В addr будет записано значение по адресу param - 4 адреса (по-байтно), но никак не адрес
А вот, если убрать первую * и оставить
C++
1
((DWORD*)&param1)-1
то получите как-раз предыдущий адрес.
По вопросам ничего рассказать не могу, только догадки и то не на всё.
 
Текущее время: 02:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru