Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка чужого приложения 
:(
    Опции темы
tigger
Дата 24.5.2008, 18:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: нет
Всего: 4



Можно ли средствами Delphi запустить другую программу например notepad.exe от имени explorer.exe (т.е как будто бы запуск программы был из проводника).


--------------------
user posted image
PM MAIL   Вверх
aktuba
Дата 24.5.2008, 19:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



Цитата(tigger @  24.5.2008,  19:54 Найти цитируемый пост)
Можно ли средствами Delphi запустить другую программу например notepad.exe от имени explorer.exe (т.е как будто бы запуск программы был из проводника). 


Думаю да, но не средствами Delphi, а средствами системы. Например, внедрить dll в эксплорер, а у же эта dll запустить программу... Не факт, что сработает, но это первое, что пришло в голову...


--------------------
user posted image
PM MAIL WWW Skype   Вверх
Poseidon
Дата 25.5.2008, 01:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



tigger, позволь поинтересоваться, зачем такие извращения? Чувствуется мне что ты хочешь кое-чей HIPS надурить...


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
MadCoder
Дата 25.5.2008, 02:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 478
Регистрация: 24.8.2007
Где: Москва

Репутация: 1
Всего: 2



Можно:
Код

{
  Process Hijacking by Aphex
  http://www.iamaphex.cjb.net
  [email protected]

  Greets to dildog for giving me the idea.
}

program Project1;

{$IMAGEBASE $13140000}

uses
  Windows;

function Main(dwEntryPoint: Pointer): longword; stdcall;
begin
  {now we are in notepad}
  LoadLibrary('kernel32.dll');
  LoadLibrary('user32.dll');
  MessageBox(0, 'Hello, now I am in the memory of another process!', 'Hijacked Process', 0);
  MessageBox(0, 'Now we can do anything we want. :)', 'Hijacked Process', 0);
  MessageBox(0, 'You can even delete the original exe and these message boxes will still be here.', 'Hijacked Process', 0);
  MessageBox(0, 'See?', 'Hijacked Process', 0);
  MessageBox(0, 'Told you.', 'Hijacked Process', 0);
  MessageBox(0, 'Ok, bye.', 'Hijacked Process', 0);
  MessageBox(0, 'I''ll close notepad for you ;)', 'Hijacked Process', 0);
  ExitProcess(0);
  Result := 0;
end;

procedure Inject(ProcessHandle: longword; EntryPoint: pointer);
var
  Module, NewModule: Pointer;
  Size, BytesWritten, TID: longword;
begin
  Module := Pointer(GetModuleHandle(nil));
  Size := PImageOptionalHeader(Pointer(integer(Module) + PImageDosHeader(Module)._lfanew + SizeOf(dword) + SizeOf(TImageFileHeader))).SizeOfImage;
  VirtualFreeEx(ProcessHandle, Module, 0, MEM_RELEASE);
  NewModule := VirtualAllocEx(ProcessHandle, Module, Size, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE);
  WriteProcessMemory(ProcessHandle, NewModule, Module, Size, BytesWritten);
  CreateRemoteThread(ProcessHandle, nil, 0, EntryPoint, Module, 0, TID);
end;

var
  ProcessHandle, PID: longword;
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;

begin
  {lets make a new process}
  CreateProcess(nil, 'notepad', nil, nil, False, 0, nil, nil, StartupInfo, ProcessInfo);
  {give it some time to wake up}
  Sleep(500);
  {and hijack it!}
  GetWindowThreadProcessId(FindWindow('Notepad', nil), @PID);
  ProcessHandle := OpenProcess(PROCESS_ALL_ACCESS, False, PID);
  Inject(ProcessHandle, @Main);
  CloseHandle(ProcessHandle);
  {we have a copy of ourself running in notepad so we can exit}
end.


Описанный код внедряется в блокнот, пишет "из него" сообщения, удаляет главный exe-file и в конце закрывает блокнот. 
Все быстро и мажорно. Спасибо Aphex за предоставленные материалы (что с ним случилось кстати, вроде как посадили?)
PM WWW ICQ   Вверх
tigger
Дата 25.5.2008, 04:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 456
Регистрация: 30.4.2005

Репутация: нет
Всего: 4



Все спасибо.
Воспользовался просто ShellExecuteA.
В процесс внедряться мне не нужно, просто запуск не патч.


--------------------
user posted image
PM MAIL   Вверх
MetalFan
Дата 25.5.2008, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



MadCoder, местами туповатый код. автор кода не знает, зачем в CreateProcess последний параметр?


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
MadCoder
Дата 25.5.2008, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 478
Регистрация: 24.8.2007
Где: Москва

Репутация: 1
Всего: 2



Цитата(MetalFan @ 25.5.2008,  10:51)
MadCoder, местами туповатый код. автор кода не знает, зачем в CreateProcess последний параметр?

Главное, что работает и работает хорошо smile.
PM WWW ICQ   Вверх
MetalFan
Дата 25.5.2008, 18:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



MadCoder, ну с таким подходом конечно все норм) не дай чорт разбираться с кодом таких "писателей"


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
ama_kid
Дата 25.5.2008, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

Репутация: 15
Всего: 95



Цитата(MetalFan @  25.5.2008,  10:51 Найти цитируемый пост)
автор кода не знает, зачем в CreateProcess последний параметр? 
Я думаю он не нужен, просто сделать nil (как в С++) не даст компилятор:
Цитата
Types of actual and formal var parameters must be identical



--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
MetalFan
Дата 26.5.2008, 08:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 62
Всего: 128



Цитата(ama_kid @  25.5.2008,  18:30 Найти цитируемый пост)
Я думаю он не нужен, просто сделать nil (как в С++) не даст компилятор:

нет, как раз очень нужен...
ладно, опишу все замеченные мной недочеты данного кода:

Код

var
  ProcessHandle, PID: longword;
  StartupInfo: TStartupInfo;
  ProcessInfo: TProcessInformation;
begin
   //1. Где "очистка" структуры и установка STARTUPINFO.cb ?
  //2. здесь в ProcessInfo вернется вся необходимая информация о процессе.
  //3. Нет проверки результата функции CreateProcess
  CreateProcess(nil, 'notepad', nil, nil, False, 0, nil, nil, StartupInfo, ProcessInfo);
  //4.нах.я sleep? есть же WaitForInputIdle 
  Sleep(500);
  //5. следующие 2 строчки нах не нужны, ибо уже в ProcessInfo уже все есть
  GetWindowThreadProcessId(FindWindow('Notepad', nil), @PID);
  ProcessHandle := OpenProcess(PROCESS_ALL_ACCESS, False, PID);
  //
  Inject(ProcessHandle, @Main);
  //6. молодца, закрыли хэндл процесса, а хэндл потока из ProcessInfo?
  CloseHandle(ProcessHandle);
end;

Вот так вот... и это только по запуску процесса

Это сообщение отредактировал(а) MetalFan - 26.5.2008, 08:17


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0801 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.