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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2014, 07:24   #11
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Находим место, выделаем там память... пишем оп-коды.
Не выйдет. Релокацию всего кода делать придется.
Вообще автор конечно затеял постройку собственного ДНК в условиях биореактора.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.11.2014, 09:40   #12
StriderX
Форумчанин
 
Регистрация: 21.04.2014
Сообщений: 115
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Не выйдет. Релокацию всего кода делать придется.
...
Ну так-то можно залететь и на протекторе, проверке контрольных сумм, цифровых подписях и т.п.
Есть вероятность, что речь идёт просто "по приколу, показать друзьям". Мне кажется в этом случае можно просто спрятать настоящий ехе (переименовать\перенести), запуститься самому, показать окошко, запустить оригинал.
StriderX вне форума Ответить с цитированием
Старый 10.11.2014, 09:59   #13
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

helper999999,
Я дал пример того, как эта автоматизация делается, вместо olly или Hex'а.
Если не понятно, то вперед изучать структуру PE-формата, работу PE-загрузчика винды, понимание интеловского или AT&T ассемблера и OP-кодов, и конечно же изучить какой-нибудь асм, ближе всего будет MASM или NASM.
Без этого никак

На wasm.ru куча информации на эту тему, на exelab тоже.

Крутые вещи легкими не бывают.
Цитата:
Не выйдет. Релокацию всего кода делать придется.
Тогда свою секцию создать И сослаться на неё где-то.

Последний раз редактировалось Человек_Борща; 10.11.2014 в 10:03.
Человек_Борща вне форума Ответить с цитированием
Старый 10.11.2014, 11:00   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Тогда свою секцию создать
И перековеркать весь РЕ заголовок...
Тоже не подарок.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.11.2014, 11:15   #15
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Цитата:
И перековеркать весь РЕ заголовок...
Тоже не подарок.
так или иначе, а обновить PE-заголовок придется.
Человек_Борща вне форума Ответить с цитированием
Старый 10.11.2014, 23:42   #16
alain_m
 
Регистрация: 09.11.2014
Сообщений: 6
По умолчанию

вроде бы нашел решение (на 1 форуме) но есть проблема, при компиляции выдает ошибку, и я прав, он позволит лишь в память процесса внедриться или нет?

Код:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;
type
TMessageBox = function (hWnd: HWND; lpText, lpCaption: PChar; uType: UINT): Integer; stdcall;
PInjectRec = ^TInjectRec;
TInjectRec = record
fMessageBox : TMessageBox;
Text : array [0..255] of Char;
Caption : array [0..255] of Char;
end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function injCode(injRec: PInjectRec): DWORD;stdcall;
var
uType: Cardinal;
begin
uType := MB_ICONASTERISK;
injRec.fMessageBox(0, PChar(@injRec^.Text[0]), PChar(@injRec^.Caption[0]), uType);
Result := 0;
end;

procedure Inject(PID: Cardinal);
var
hRemoteProcess : Cardinal;
dwRemoteThreadId: DWORD;
lpData, lpCode : Pointer;
InjRec : TInjectRec;
hUser32 : Cardinal;
Dummy,Dy : Cardinal;
begin
hUser32 := GetModuleHandle('user32.dll');
InjRec.fMessageBox := GetProcAddress(hUser32, 'MessageBoxA');
InjRec.Text := 'Code successfully injected!';
InjRec.Caption := 'Code Injector';
hRemoteProcess := OpenProcess(PROCESS_ALL_ACCESS, False, PID);
lpData := VirtualAllocEx( hRemoteProcess, nil, SizeOf(TInjectRec)+128, MEM_COMMIT or MEM_RESERVE, PAGE_EXECUTE_READWRITE );
lpCode := Pointer(DWORD(lpData) + SizeOf(TInjectRec));
WriteProcessMemory(hRemoteProcess, lpData, @injRec, SizeOf(TInjectRec), Dummy);
WriteProcessMemory(hRemoteProcess, lpCode, @injCode, 128, Dummy);
CloseHandle(CreateRemoteThread(hRemoteProcess, nil, 0, lpCode, lpData, 0, dwRemoteThreadId));
CloseHandle(hRemoteProcess);
end;

end.
в этом месте ошибка:
Код:
WriteProcessMemory(hRemoteProcess, lpData, @injRec, SizeOf(TInjectRec), Dummy);
WriteProcessMemory(hRemoteProcess, lpCode, @injCode, 128, Dummy);
[dcc32 Error] Unit1.pas(57): E2033 Types of actual and formal var parameters must be identical
Не пойму, вроде типы указаны верно.
alain_m вне форума Ответить с цитированием
Старый 10.11.2014, 23:49   #17
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Цитата:
и я прав, он позволит лишь в память процесса внедриться
Именно так.

Прмведи результат SizeOf к DWORD.
Человек_Борща вне форума Ответить с цитированием
Старый 11.11.2014, 00:28   #18
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,894
По умолчанию

Цитата:
Прмведи результат SizeOf к DWORD.
Скорее всего у ТС одна из сравнительно новых Версий Дельфи. А там уже довольно давно SIZE_T
Ну и да. Ошибка у ТС из-за неверного типа переменной Dummy.

Последний раз редактировалось northener; 11.11.2014 в 01:22.
northener вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Окно не молучает/не отправляет windows сообщения Ryabinin313 Win Api 6 25.07.2012 22:38
Окно сообщения из DLL Oleg Romanchuk Общие вопросы Delphi 4 28.12.2011 15:07
В программу на Delphi поместить EXE файл _KUL Общие вопросы Delphi 18 20.06.2011 20:18
Неактивное окно не реагирует на сообщения хука. askarchic Общие вопросы Delphi 4 07.02.2011 00:33
Помогите Каждый час вылазиет окно DOS файл smd.exe не может найти папка c:\Documents and Settings\Network Carlson25 Windows 5 30.03.2009 21:27