Форум программистов, компьютерный форум, киберфорум
Delphi: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/16: Рейтинг темы: голосов - 16, средняя оценка - 4.75
1 / 1 / 2
Регистрация: 26.08.2013
Сообщений: 381

Dll inject в exe

16.11.2014, 21:19. Показов 3230. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Насчет того, как внедрить dll в процесс вопросов нет, но вот возможно ли внедрить dll в не запущенный exe ? вот так я внедряю dll в процесс :
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
function GetPID(ExeFileName: string): dword;
var
ContinueLoop: boolean;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
UpEFN: string;
begin
result:= 0;
UpEFN:= UpperCase(ExeFileName);
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
 
while integer(ContinueLoop) <> 0 do
begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpEFN)
or (UpperCase(FProcessEntry32.szExeFile) = UpEFN)) then
begin
result := FProcessEntry32.th32ProcessID;
break;
end;
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
 
function SetSeDebugPrivilege:boolean;
var
ht:THandle;
luid:TLargeInteger;
tkp:TTokenPrivileges;
rl:Cardinal;
begin
if OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, ht)
then begin
LookupPrivilegeValue(nil, 'SeDebugPrivilege', luid);
tkp.Privileges[0].Luid:=luid;
tkp.PrivilegeCount:=1;
tkp.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
if AdjustTokenPrivileges(ht, false, tkp, 0, nil, rl)
then result:=true
else result:=false;
end else result:=false;
end;
 
function Load_DLL(DllName: PChar; PID: dword): boolean;
var hProc: dword;
lpStartAddress, pmem: pointer;
wrb, lpThId: dword;
begin
hProc:= OpenProcess(PROCESS_ALL_ACCESS or PROCESS_VM_WRITE, true, PID);
if (hProc<>0) then
begin
lpStartAddress:= GetProcAddress(GetModuleHandle('kernel32.dll'), 'LoadLibraryA');
pmem:= VirtualAllocEx(hProc, nil, 255, MEM_COMMIT, PAGE_READWRITE);
if (pmem=nil) then result:=false else
begin
if not WriteProcessMemory(hProc, pmem, DllName, Length(DllName), wrb)
then result:=false else
if (dword(Length(DllName)) = wrb) then
begin
result:=CreateRemoteThread(hProc, nil, 0, lpStartAddress, pmem, 0, lpThId)<>0;
end else result:=false;
end;
end else result:=false;
end;
 
procedure LoadInAllActiveProcesses(DllName: PChar);
var
ContinueLoop: BOOL;
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while integer(ContinueLoop) <> 0 do
begin
Load_DLL(DllName, FProcessEntry32.th32ProcessID);
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
 
const DllName = 'Me.dll';
var PID: dword;
begin
SetSeDebugPrivilege;
PID:=GetPID('Project1.exe');
if (PID>0) then Load_DLL(DllName, PID);
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.11.2014, 21:19
Ответы с готовыми решениями:

Inject dll, а также вызов функции из этой же dll
Всем привет, заинжектить dll в другой процесс получилось, но еще необходимо вызвать функцию в этой длл, каким образом это реализовать? ...

Dll inject
Поделитесь исходником автоинжектора длл, заранее спасибо

Dll inject
Есть игра одна, хотел попробывать заинжектить туда свою dll и по выполнять ф-ции игры ) Всё подключается, GetLastError ошибок не...

6
Native x86
Эксперт Hardware
 Аватар для quwy
6853 / 3787 / 1024
Регистрация: 13.02.2013
Сообщений: 11,861
17.11.2014, 20:36
Цитата Сообщение от vuasya Посмотреть сообщение
но вот возможно ли внедрить dll в не запущенный exe ?
Внедрение происходит не в файл, а в процесс. Если EXE не запущен, то процесса нет, и внедрять некуда.
0
1 / 1 / 2
Регистрация: 26.08.2013
Сообщений: 381
17.11.2014, 22:01  [ТС]
а тогда какой метод подойдет ? нужно в не запущенный exe добавить перед ее запуском команду
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,608
17.11.2014, 23:14
Цитата Сообщение от vuasya Посмотреть сообщение
нужно в не запущенный exe добавить перед ее запуском команду
Антивирусник не даст.
0
1 / 1 / 2
Регистрация: 26.08.2013
Сообщений: 381
17.11.2014, 23:54  [ТС]
Цитата Сообщение от northener Посмотреть сообщение
Антивирусник не даст.
и все же, можете подсказать ?
0
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
18.11.2014, 09:17
Цитата Сообщение от vuasya Посмотреть сообщение
нужно в не запущенный exe добавить перед ее запуском команду
Это же не значит что нужно обязательно впендюривать dll в exe)
Модифицируешь IAT, добавляя туда ссылку на нужную либу и нужную процедуру/функцию, которую она экспортирует.
Добавляешь в exe секцию кода, в которой будет осуществляться вызов этой процедуры/функции и последующая передача управления по адресу EP
Модифицируешь EP так чтобы она указывала на адрес добавленного кода в новой секции.

Вуаля)

Все это далеко не тривиально, делается головой+ручками+соответствующими специализированными инструментальными средствами (дизассемблер+дебагер+PETools), использование которых требует довольно нехилые знания и исключает возможность победы врага кавалерийским наскоком)
1
90 / 3 / 0
Регистрация: 05.03.2013
Сообщений: 36
11.02.2015, 09:42
Нужно это еще автору или нет, но все же. Если требуется связать какую либо "либу" с программой, можно добавить эту "либу" в импорт, тем же самым CFF Explorer'ом и сохранить. Если же ваш исполняемый файл контролируется по контрольным суммам и вам его нельзя менять, то в помощь вам проксирующие дллки.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.02.2015, 09:42
Помогаю со студенческими работами здесь

Dll inject
Укажите в чем ошибка? Все проверки проходит, возвращает истину...но функции dll недоступны. bool Inject() { if (pid == NULL)...

Начало написание Inject dll
Знаю знаю, на форуме много тем, да и в интернете много примеров, но у меня не совсем обычная ситуация... Есть игра и она написана на...

Отлов ошибки в inject dll
Добрый день, есть код в dll которая инжектится: MessageBoxA(NULL, &quot;ATTACH START&quot;, &quot;TEST&quot;, MB_OK); MessageBoxA(NULL,...

Проверка процесса на inject dll
Здравствуйте,форумчане. Есть игровой процесс,нужно проверить его на инжект читерской dll. Добавлено через 3 часа 20 минут Можете...

Inject DLL в процесс браузера
Есть процедура инжекта dll . Так вот нужно заинжектить dll в процесс браузера который связан с Unity Player .


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru