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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2010, 17:07   #1
Dima DDM
Форумчанин
 
Аватар для Dima DDM
 
Регистрация: 09.11.2010
Сообщений: 134
Стрелка Внедрение своего Dll в чужые приложения

Есть вопрос как внедрить свою Dll в чужое приложение?
Я не знаю его исходного кода Но на до чтобы Dll запускался вместе с ним!
http://ddmsite.ucoz.ru Мой сайт.
Бесплатный Блокировщик рекламы
http://download.adguard.ru/d/1656/adguardInstaller.exe
Dima DDM вне форума Ответить с цитированием
Старый 18.12.2010, 17:25   #2
alexprey
Форумчанин
 
Регистрация: 25.05.2010
Сообщений: 169
По умолчанию

Для чего это?
PS. У меня есть код, но он как бы считается опасным
alexprey вне форума Ответить с цитированием
Старый 18.12.2010, 17:31   #3
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Внедрение своих ДЛЛ в стронние приложения как то связаны с Делфи?

PS:любое приложение можно декомпилировать в ASM как минимум... некоторое и в Delphi...
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 18.12.2010, 17:33   #4
Dima DDM
Форумчанин
 
Аватар для Dima DDM
 
Регистрация: 09.11.2010
Сообщений: 134
По умолчанию

Мне очень надо..... помогите ... а код моего dll безопасный!!)
http://ddmsite.ucoz.ru Мой сайт.
Бесплатный Блокировщик рекламы
http://download.adguard.ru/d/1656/adguardInstaller.exe
Dima DDM вне форума Ответить с цитированием
Старый 18.12.2010, 17:38   #5
alexprey
Форумчанин
 
Регистрация: 25.05.2010
Сообщений: 169
По умолчанию

дело не в твоей 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;
alexprey вне форума Ответить с цитированием
Старый 18.12.2010, 18:25   #6
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Боже ты мой! А про хуки уже все забыли?
BOBAH13 вне форума Ответить с цитированием
Старый 19.12.2010, 19:00   #7
Dima DDM
Форумчанин
 
Аватар для Dima DDM
 
Регистрация: 09.11.2010
Сообщений: 134
По умолчанию

Цитата:
Сообщение от alexprey Посмотреть сообщение
дело не в твоей 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;
Вот про это поподробнее!!!!!!!!!! как пользоваться????
http://ddmsite.ucoz.ru Мой сайт.
Бесплатный Блокировщик рекламы
http://download.adguard.ru/d/1656/adguardInstaller.exe
Dima DDM вне форума Ответить с цитированием
Старый 19.12.2010, 19:10   #8
alexprey
Форумчанин
 
Регистрация: 25.05.2010
Сообщений: 169
По умолчанию

Просто вызываешь эту функцию и указываешь название либы и ID процесса
Вот как определять ID уже не помню, ибо давно это делал
alexprey вне форума Ответить с цитированием
Старый 19.12.2010, 19:38   #9
Dima DDM
Форумчанин
 
Аватар для Dima DDM
 
Регистрация: 09.11.2010
Сообщений: 134
По умолчанию

Извините за мою тупость НО ...
1)Как должен выглядеть вызов функции
2)где надо указать имя dll которое должно внедряться!?
3) прокоментируйте пожалуйста эту функцию хочу узнать про нее поподробнее
Спасибо!
http://ddmsite.ucoz.ru Мой сайт.
Бесплатный Блокировщик рекламы
http://download.adguard.ru/d/1656/adguardInstaller.exe
Dima DDM вне форума Ответить с цитированием
Старый 19.12.2010, 21:02   #10
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Пишу на коленке:
Код:
uses TIHelp32;


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;

procedure Dosomethin;
var
SInfo:TStartupInfo;
PInfo:TprocessInformation;
PrcResult:WORD;
begin
ZeroMemory(@Pinfo,sizeOf(PInfo));
ZeroMemory(@Sinfo,sizeOf(SInfo));
SInfo.cb:=SizeOf(Sinfo);

PrcResult:=CreateProcess(
        PChar(''), //Путь до EXE программы
        PChar(''), //Параметры запуска, если нет то nil
        nil, 
        nil,
        False,
        NORMAL_PRIORITY_CLASS,
        nil,
        nil,
        SInfo, 
        PInfo);

If PrcResult then
begin
if LoadLibrary__Ex(PInfo.dwProcessId, //PID процесса созданного нами
   PChar('E:\bugoga\mySuper.dll'))  //Путь к dll которую будем подгружать
then
ShowMessage('Yeah!')
else
ShowMessage('Epic fail!');
end;
Человек_Борща вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Приоритет своего приложения SoftKoc Общие вопросы Delphi 9 13.09.2010 15:53
Внедрение DLL и перехват API-функций Doom_Rooster Win Api 4 01.04.2010 03:37
внедрение MatLab в Web-приложения Honey JavaScript, Ajax 2 27.05.2009 20:52
Запуск программы из своего приложения. sashaslam Общие вопросы Delphi 12 31.01.2009 14:23
внедрение Delphi приложения в КПК shkiper Общие вопросы Delphi 2 05.04.2007 20:59