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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2010, 17:37   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
Вопрос [DLL] Загрузка и выгрузка dll в/из чужого процесса

Собственно поиск форума не помог=)

Вопрос:
как подгрузить к чужому процессу свою dll с помощью программы-инжектора, а при отключении программы-инжектора удалять dll из памяти процесса. (Дебаггеры так работают вроде.. грузят своё в процесс)

Я просто интересуюсь=) Ничего плохого я писать не думаю=)

Про поиск и удаление указанной dll из памяти программы гугл помог, но не сильно...
Код:
function KillDll(aDllName: string): Boolean;
var
  hDLL: THandle;
  aName: array[0..10] of char;
  FoundDLL: Boolean;
begin
  StrPCopy(aName, aDllName);
  FoundDLL := False;
  repeat
    hDLL := GetModuleHandle(aName);
    if hDLL = 0 then
      Break;
    FoundDLL := True;
    FreeLibrary(hDLL);
  until False;
  if FoundDLL then
    MessageDlg('Success!', mtInformation, [mbOK], 0)
  else
    MessageDlg('DLL not found!', mtInformation, [mbOK], 0);
end;
больше интересует как подгрузить dll=)
Человек_Борща вне форума Ответить с цитированием
Старый 27.02.2010, 19:13   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Говорят поисковики по словам инжект длл помогают в таких случаях.

-------------------------------------------------

Последний раз редактировалось rpy3uH; 28.02.2010 в 17:38.
p51x вне форума Ответить с цитированием
Старый 27.02.2010, 19:51   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

увы ничего хорошего я не нашёл..
я и до этого уже искал в гугле и яндесе=)

Все нашёл то что искал=)
вот народ кому надо...
http://www.delphisources.ru/pages/so...-injector.html

Последний раз редактировалось Человек_Борща; 27.02.2010 в 20:17.
Человек_Борща вне форума Ответить с цитированием
Старый 28.02.2010, 17:43   #4
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

в этой статье написан окак загружать свою DLL в чужой процесс, вот код (описание в статье)
Код:
function LoadLibrary_Ex(ProcessID:DWORD;LibName:PChar):boolean;
var
  pLL,pDLLPath:Pointer;
  hProcess,hThr:THandle;
  LibPathLen,_WR,ThrID:DWORD;
begin
  Result:=False;
  LibPathLen:=Length(string(LibName));
  hProcess:=OpenProcess(PROCESS_ALL_ACCESS,false,ProcessID);
  if hProcess=0 then exit;
  pDLLPath:=VirtualAllocEx(hProcess,0,LibPathLen+1,MEM_COMMIT,PAGE_READWRITE);
  if DWORD(pDLLPath)=0 then exit;
  pLL:=GetProcAddress(GetModuleHandle(kernel32),'LoadLibraryA');
  WriteProcessMemory(hProcess,pDLLPath,LibName,LibPathLen+1,_WR);
  hThr:=CreateRemoteThread(hProcess,0,0,pLL,pDLLPath,0,ThrID);
  if hThr=0 then exit;
  Result:=CloseHandle(hProcess);
end;
если немного поднапрячь свою "кастрюлю", то можно придумать как выгружать DLL из памяти чужого процесса
rpy3uH вне форума Ответить с цитированием
Старый 28.02.2010, 17:47   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Спасибо, уже нашёл оба варианта=)
Человек_Борща вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка dll Колючка* Общие вопросы Delphi 3 12.02.2010 19:45
загрузка библиотеки DLL s2dentishe Помощь студентам 7 10.01.2010 17:48
Динамическая загрузка DLL ImportDLL Общие вопросы C/C++ 2 12.06.2009 11:33
загрузка .dll blackstersl Общие вопросы Delphi 1 29.04.2009 21:53
Загрузка DLL Hollander Общие вопросы Delphi 3 21.05.2007 20:19