Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.12.2008, 15:43   #1
KleoY
Пользователь
 
Регистрация: 09.12.2008
Сообщений: 16
По умолчанию Как загрузить свою DLL в атакуемый процесс, который не знает о ее существовании - Создание хуков

Коллеги, прошу помочь!
Есть 2 проблемы:
1. Каким образом загрузить свою DLL в атакуемый процесс, который не знает о ее существовании:
2. Как обращаться к блокам памяти, которыенаходятся в разделяемой памяти запущенной DLL, в сегменте между #pragma data seg

Прошу помочь! Заранее благодарю!
KleoY вне форума Ответить с цитированием
Старый 09.12.2008, 16:14   #2
Zeraim
Ra-Ra ?
Форумчанин
 
Аватар для Zeraim
 
Регистрация: 06.03.2008
Сообщений: 286
По умолчанию

Код:
program Injector;

uses
  Windows;

const DLL_INJ = 'DLL Injector (HOOKS)';

type TShp = procedure (hk: HHOOK) stdcall;

procedure InjectDLLviaHOOKS(dll_name: string);
var
   h: THandle;
   p: pointer;
   sh: TShp;
   hk: HHOOK;
begin
     h:=LoadLibrary(PAnsiChar(dll_name));
     if h=0 then
        begin
             MessageBox(0, PAnsiChar('Не могу загрузить DLL '+dll_name+'!'), DLL_INJ, MB_OK+MB_ICONERROR);
             exit;
        end;
     p:=GetProcAddress(h, 'HookProc');
     @sh:=GetProcAddress(h, 'SetHK');
     if ((p=nil) or (@sh=nil)) then
        begin
             MessageBox(0, PAnsiChar('Библиотека '+
                           dll_name+' не содержит необходимых процедур!'),
                           DLL_INJ, MB_OK+MB_ICONERROR);
             FreeLibrary(h);
             exit;
        end;
     hk:=SetWindowsHookEx(WH_CALLWNDPROC, p, h, 0);
     if hk=0 then
        begin
             MessageBox(0, PAnsiChar('Невозможно установить ловушку!'),
                           DLL_INJ, MB_OK+MB_ICONERROR);
             FreeLibrary(h);
             exit;
        end;
     sh(hk);
     MessageBox(0, 'Ловушка установлена! Нажмите OK для снятия.',
                   DLL_INJ, MB_OK);
     UnhookWindowsHookEx(hk);
     FreeLibrary(h);
end;

begin
     InjectDLLviaHOOKS('hook_dll.dll');
end.
Пример не мой, из какогото из номеров "Хакер"
Zeraim вне форума Ответить с цитированием
Старый 10.12.2008, 08:19   #3
KleoY
Пользователь
 
Регистрация: 09.12.2008
Сообщений: 16
По умолчанию

Благоддарю!!
KleoY вне форума Ответить с цитированием
Старый 12.12.2008, 10:12   #4
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от KleoY Посмотреть сообщение
2. Как обращаться к блокам памяти, которыенаходятся в разделяемой памяти запущенной DLL, в сегменте между #pragma data seg
что-то непонятно. давай поконкретнее
rpy3uH вне форума Ответить с цитированием
Старый 12.12.2008, 20:55   #5
KleoY
Пользователь
 
Регистрация: 09.12.2008
Сообщений: 16
По умолчанию

Ну вот между этими #pragma data seg я помещаю переменные, которые будут разделяемыми? общими в dll , верно? А как мне к ним обращаться, как я могу с ними работать?

и вопрос по первому вопросу: а можно ил это сделать с помощью VirtualAllocEx ? и если да, то каким образом это осуществить?

моя задача в общих словах сделать собственный графический хук, на вывод текста, например на textout
KleoY вне форума Ответить с цитированием
Старый 12.12.2008, 21:27   #6
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Ничего не знаю про диррективу #pragma в с++. Для создания разделямой области памяти используй file mapping
rpy3uH вне форума Ответить с цитированием
Старый 14.12.2008, 19:55   #7
KleoY
Пользователь
 
Регистрация: 09.12.2008
Сообщений: 16
По умолчанию

мне руководитель сказал именно прагму использовать(
KleoY вне форума Ответить с цитированием
Старый 14.12.2008, 21:24   #8
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

по-моему, эта директива ничего не даст по части разделения памяти.
rpy3uH вне форума Ответить с цитированием
Старый 15.12.2008, 20:23   #9
KleoY
Пользователь
 
Регистрация: 09.12.2008
Сообщений: 16
По умолчанию

Переменные, заключенные между этой директивой-становятся доступнымии разделяемыми. Только вот как с ними работать, вот в чем вопрос!
Ии по первому, можно ли через VirtualAllocEx?
KleoY вне форума Ответить с цитированием
Старый 15.12.2008, 22:19   #10
Д'якон
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 236
По умолчанию

по первому, подгружается библиотека в нужный процесс по названию окна.

http://programmersforum.ru/showthrea...758#post165758

Можно через слепок процессов
Д'якон вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как загрузить форму с DLL SeRhy Общие вопросы Delphi 7 18.11.2008 21:05
запрос который бы подсчитывал количество полных лет начиная с того года который указан в данных мне базах PereCCC Помощь студентам 8 15.05.2008 16:24
Как записать свою программу в другую? AngelOfDeath Общие вопросы Delphi 1 12.05.2008 06:12
В среде Delphi составить программу (процесс), который паралельно запускает два потока (нити) metamfetamin Помощь студентам 9 06.11.2007 15:26
Передача сообщения из программы в свою Dll SergeySK Общие вопросы Delphi 3 01.11.2007 14:42