DLL Injector на Delphi
|
sk0rpi0n
|
Дата: Четверг, 15.03.2012, 21:57 | Сообщение # 1
|
Участник
Зарегистрирован: 28.05.2011
Группа: Пользователи
Сообщений: 65
Статус: Offline
|
Я тут одновременно с ассемблером занялся читами для игр, и чужие инжекторы dllок меня не очень устраивают... А как вообще можно сделать свой? Нужно, чтобы он загружал dll в игру во время запуска... Может кто-нибудь что-то подсказать по этому поводу? 
Хотя я ещё попытаюсь погуглить, но во многих статьях обычно встречаются пара ошибок, которые не знаешь как решить... И всё к чертям летит... По этому и пишу тут. 
UPD: хотя я тут ещё исходник нашёл, посмотрю его. Но от советов не откажусь!
C++ - попса :D
Сообщение отредактировал sk0rpi0n - Четверг, 15.03.2012, 21:59
|
|
|
|
|
Волк-1024
|
Дата: Четверг, 15.03.2012, 22:45 | Сообщение # 2
|
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
|
Ну вот еще кодец:
Доступно только для пользователей
Тут всё фурычит. На данном коде делал прогу.
Pascal, C\C++, Assembler, Python
Сообщение отредактировал Волк-1024 - Четверг, 15.03.2012, 22:46
|
|
|
|
|
sk0rpi0n
|
Дата: Пятница, 16.03.2012, 13:41 | Сообщение # 3
|
Участник
Зарегистрирован: 28.05.2011
Группа: Пользователи
Сообщений: 65
Статус: Offline
|
Чот я не понял, а где там задаётся, в какую программу инжектить? 
Ой, сорри, туплю. 
В общем, вот я написал:
Code
var
gamestarted:hwnd;
begin
Writeln('Waiting for game starts');
gamestarted:=findwindow('Renegade',nil);
repeat
until(gamestarted<>0);
Writeln('Game started! Injecting DLL...');
InjectDLL('fun.dll',4360);
Writeln('Successfull! DLL has been injected!');
end.
И не знаю, как оптимально сделать ожидание старта игры. Эти репит унтил - ужасный код, да и не работает, к тому же. Но, как я понял, оно не будет работать и после нахождения игры, так как PID всегда разный... 
C++ - попса :D
Сообщение отредактировал sk0rpi0n - Пятница, 16.03.2012, 14:14
|
|
|
|
|
Волк-1024
|
Дата: Пятница, 16.03.2012, 14:20 | Сообщение # 4
|
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
|
Вот для получения Id'а процесса:
Доступно только для пользователей
Pascal, C\C++, Assembler, Python
Сообщение отредактировал Волк-1024 - Пятница, 16.03.2012, 14:22
|
|
|
|
|
sk0rpi0n
|
Дата: Пятница, 16.03.2012, 14:22 | Сообщение # 5
|
Участник
Зарегистрирован: 28.05.2011
Группа: Пользователи
Сообщений: 65
Статус: Offline
|
А вот такой пойдёт?
Code
GetWindowThreadProcessId(GameStarted, @ProcessId)
Я там немного переделал, теперь всё работает на ура, но DLL не инжектится почему-то(вроде как инжектится, но в игре не вижу того, что видел при её инжекте другим инъектором).
И ещё такая вещь - инъектор запускается ну очень долго. Делал как консольное приложение, добавил в uses Windows и функцию инъекции. А загружается долго как Photoshop... 
C++ - попса :D
Сообщение отредактировал sk0rpi0n - Пятница, 16.03.2012, 14:27
|
|
|
|
|
sk0rpi0n
|
Дата: Пятница, 16.03.2012, 14:28 | Сообщение # 6
|
Участник
Зарегистрирован: 28.05.2011
Группа: Пользователи
Сообщений: 65
Статус: Offline
|
Написал вот так:
Code
if InjectDLL('fun.dll',GetWindowThreadProcessId(GameStarted, @ProcessId))=true then Writeln('Successfull! DLL has been injected!')
else Writeln('Injection failed. Sorry...');
Ну и мне выдаёт Injection failed. Sorry... Пичалька, в чём может быть ошибка? 
P.S. DLL лежит в папке с программой(моей).
C++ - попса :D
Сообщение отредактировал sk0rpi0n - Пятница, 16.03.2012, 14:28
|
|
|
|
|
Волк-1024
|
Дата: Пятница, 16.03.2012, 14:31 | Сообщение # 7
|
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
|
Попробуй добавь еще вот это:
Доступно только для пользователей
Юзать: Доступно только для пользователей
Если не получится попробуй прикреплённую прогу. Она основана на этом коде.
Pascal, C\C++, Assembler, Python
Сообщение отредактировал Волк-1024 - Пятница, 16.03.2012, 14:35
|
|
|
|
|
sk0rpi0n
|
Дата: Пятница, 16.03.2012, 14:35 | Сообщение # 8
|
Участник
Зарегистрирован: 28.05.2011
Группа: Пользователи
Сообщений: 65
Статус: Offline
|
Аргх, запускается долго очень. Как запущу - отпишу результат.
UPD: Не помогает. Попробую с твоей функцией получения ID процесса.
UPD #2: С твоей функцией пишет, мол DLL Injected!, но результата в игре я опять же не вижу... 
Не, нифига он не инжектит, я попробовал левое имя дллки ввести, всё равно пишет, что инжектил...
C++ - попса :D
Сообщение отредактировал sk0rpi0n - Пятница, 16.03.2012, 14:48
|
|
|
|
|
Волк-1024
|
Дата: Пятница, 16.03.2012, 15:14 | Сообщение # 9
|
Авторитетный
Зарегистрирован: 24.07.2011
Группа: Модераторы
Сообщений: 469
Статус: Offline
|
Хммм. Очень странно. У меня всё инжектит...
Pascal, C\C++, Assembler, Python
|
|
|
|
|
sk0rpi0n
|
Дата: Пятница, 16.03.2012, 15:18 | Сообщение # 10
|
Участник
Зарегистрирован: 28.05.2011
Группа: Пользователи
Сообщений: 65
Статус: Offline
|
Quote
Хммм. Очень странно. У меня всё инжектит...
А я кажется понял. Игра на D3D, хотя... В библиотеке-то прописано всё под D3D и другими инъекторами инъектится...
C++ - попса :D
|
|
|
|
|
xXxSh@dowxXx
|
Дата: Пятница, 16.03.2012, 17:13 | Сообщение # 11
|
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
|
скажи что за игру такую ты хочешь заинжэктить досмерти?  |
|
|
|
|
sk0rpi0n
|
Дата: Пятница, 16.03.2012, 17:39 | Сообщение # 12
|
Участник
Зарегистрирован: 28.05.2011
Группа: Пользователи
Сообщений: 65
Статус: Offline
|
Quote
скажи что за игру такую ты хочешь заинжэктить досмерти? biggrin
Для начала - C&C: Renegade. А потом весь мир. 
C++ - попса :D
|
|
|
|
|
dolphin
|
Дата: Суббота, 17.03.2012, 14:50 | Сообщение # 13
|
Администратор
Сообщений: 904
Статус: Offline
|
sk0rpi0n, а не пробовал её в реестр записать в апинитдллс, кстати скорее всего библиотечку придётся регистрировать в системе. Библиотека самописная?
попробуй включить в нее следующее
Доступно только для пользователей
Система: Windows 10 x64, Windows XP
Среды программирования: Delphi 7, Delphi 10 Seattle
Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
Сообщение отредактировал dolphin - Суббота, 17.03.2012, 14:52
|
|
|
|
|
xXxSh@dowxXx
|
Дата: Суббота, 17.03.2012, 14:56 | Сообщение # 14
|
Авторитетный
Зарегистрирован: 22.01.2012
Группа: Модераторы
Сообщений: 702
Статус: Offline
|
вот попробуй может что то из этого тебе поможет:
http://www.progamercity.net/delphi/107-delphi-simple-dll-injection.html
http://www.xakep.ru/post/26796/
другие более усовершенствованные методы видел только на C++ |
|
|
|
|
sk0rpi0n
|
Дата: Воскресенье, 18.03.2012, 10:04 | Сообщение # 15
|
Участник
Зарегистрирован: 28.05.2011
Группа: Пользователи
Сообщений: 65
Статус: Offline
|
Quote
Библиотека самописная?
Да. Твой код включить попробую, но ещё раз повторюсь, что другими инъекторами она инъектится на "ура".
xXxSh@dowxXx, Спс, посмотрю эти статьи.
C++ - попса :D
|
|
|
|
|
Monkall
|
Дата: Вторник, 17.05.2016, 18:41 | Сообщение # 16
|
Новичок
Зарегистрирован: 17.05.2016
Группа: Пользователи
Сообщений: 1
Статус: Offline
|
Спасибо за статью
dsa
|
|
|
|
|
Android
|
Дата: Четверг, 29.12.2016, 11:25 | Сообщение # 17
|
Постоянный
Зарегистрирован: 13.12.2011
Группа: Пользователи
Сообщений: 100
Статус: Offline
|
ВОт пример инжекта, лови
|
|
|
|
|