Регистрация Главная Сообщество
Сообщения за день Справка Регистрация
Навигация
Zhyk.org LIVE! Реклама на Zhyk.org Правила Форума Награды и достижения Доска "почета"

Вызов функций из чужого адресного пространства

-

Вопросы и ответы, обсуждения

- Ваши вопросы по C/C++ только в данном разделе

Ответ
 
Опции темы
Старый 01.02.2013, 18:33   #1
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Вызов функций из чужого адресного пространства

Здравствуйте, не часто я задаю вопросы, но сейчас именно такой случай.
Начну пожалуй с кода
Код:
HANDLE hProc = OpenProcess(PROCESS_ALL_ACCESS, FALSE, id); //Получаю дескриптор "чужого" процесса
DWORD dwRemoteModuleBase = dwGetModuleBaseAddress(id, "injected.dll"); //Получаю базовый адрес моей длл'ки
HMODULE hModule = LoadLibrary("injected.dll"); //гружу свою длл'ку в себя, что бы узнать смещение
DWORD offset = dwGetOffset(hModule, "Test"); //получаю смещение для функции
LPVOID lpFunc = (void*)(DWORD)(offset + dwRemoteModuleBase); // ну и наконец получаю указатель на функцию
FreeLibrary(hModule);
Все естественно работает, получаю правильный указатель, НО, я не могу вернуть результат функции, если она конечно его возвращает.
Вызываю функцию через CreateRemoteThread, вот так
Код:
BOOL RemoteExecute(HANDLE hProcess, LPVOID lpFunc, LPVOID lpParam) 
{
	
	if(!lpFunc) 
	  return FALSE; 
 
    HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)lpFunc, lpParam, 0, NULL);

	if(!hThread)
	{
		CloseHandle(hThread);
		return FALSE;
	}
	CloseHandle(hThread);
	return TRUE;
}
Так вот, может есть какие то другие способы вызывать функции, или способы вернуть результат из потока
________________
Talk is cheap. Show me the code
— Linus Torvalds
  Ответить с цитированием
Старый 02.02.2013, 02:37   #2
Бандеровец
 Лейтенант-командор
Аватар для VeTaL_UA
 
VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(VeTaL_UA сломал счётчик популярности :(
Регистрация: 12.08.2010
Сообщений: 727
Популярность: 30569
Золото Zhyk.Ru: 1
Сказал(а) спасибо: 57
Поблагодарили 645 раз(а) в 386 сообщениях
Отправить сообщение для VeTaL_UA с помощью ICQ Отправить сообщение для VeTaL_UA с помощью Skype™
 
По умолчанию Re: Вызов функций из чужого адресного пространства

А вариант прицепить ольку и посмотреть куда результат идёт принимается?
________________
Принимаются пожертвования любых размеров в фонд поддержки начинающих программистов
Для просмотра ссылок или изображений в подписях, у Вас должно быть не менее 10 сообщение(ий). Сейчас у Вас 0 сообщение(ий).

Кошельки: WMZ - Z276844220882; WMR - R231028582939; WMU - U394136909210; ЯД - 410011494605270.

Perfect World: PWDatabaseScanner, Client, PWNickRenamer, PWClientRenamer, База логинов PW, Гайд по варУ, Зарабатываем репутацию.
Delphi: Авторизация на сайте с помощью Indy, Загрузка изображений с интернета в TImage с помощью Indy, Автоматическая смена стандартной версии Indy в Delphi на Indy 10.0.76 / 10.1.5, Основы парсинга с помощью Indy, Делаем Updater до программы с помощью Indy.
Other: ShowIP, FFUUU смайлы в QIP, Как играть в Minecraft (видеокурс), Как мы захватили человечество :D, Энергия в Лицемер/TopFace, PasGen.


  Ответить с цитированием
Старый 02.02.2013, 03:16   #3
 Сержант
Аватар для Yukikaze
 
Yukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядомYukikaze в состоянии испепелить взглядом
Регистрация: 01.10.2011
Сообщений: 128
Популярность: 5723
Сказал(а) спасибо: 25
Поблагодарили 174 раз(а) в 105 сообщениях
 
По умолчанию Re: Вызов функций из чужого адресного пространства

VeTaL_UA, оказалось все на много проще, ответ можно вытащить при помощи функции GetExitCodeThread примерно вот так
Код:
HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)lpFunc, lpParam, 0, NULL);
WaitForSingleObject(hThread,INFINITE);
DWORD dwResult;
GetExitCodeThread(pHandle,&dwResult);
________________
Talk is cheap. Show me the code
— Linus Torvalds
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как искать адреса команд для Функции нажатия на кнопки (GUI функции) krukovis Разработка ПО для Perfect World 3 05.10.2012 20:45
[Помогите!] Вызов функций pia3333(4) Общение разработчиков 3 03.09.2012 17:46
WallHack:функции,описание функций. GRoooV1k Общение и обсуждение, архив Point Blank 8 20.01.2012 15:46
[Подсказка] WallHack:функции,описание функций. Rickimaru Общение и обсуждение, архив Point Blank 1 02.11.2011 22:34

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 10:10.

Пишите нам: forum@zhyk.ru
Copyright © 2025 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net