Перейти к содержанию

Пишем свой DLL инжектор на Delphi 2 часть


Рекомендуемые сообщения

Всем привет форумчани ))

Сегодня хочу вам показать пример внедрение .DLL файлов в процес игры .... совсем другой способ чем первый ))

И так приступим ))

Видео снимать Влом так что выложу пару скринов и исходник :

5b96269b3e1c.jpg

76b1fcfbf7cf.jpg

Инструкция :

1)Запускаем Инжектор

2)Запускаем игру = программу (Процес нужной вам программы нужно прописать в исходнике)

3)Нажымаем кнопку "Выбрать DLL" (Выбираем ваш DLL файл)

4)Нажымаем кнопку "Внедрить DLL"

5)Если все выполнено точно как в даной инструкции ваша DLL будет внедрина в процес без каких либо проблем

P.S - Также можно довести все до автоматизма(тоисть подргужать автоматически длл которая лежыт в папке с программой и не прийдеться сворачивать игру - программу)

Как видно на скрине D3D Test программа - нашли ее ID и выбрали нашу длл (в моем случаии это Логер Текстур ) и вуаля все отлично заинжектилось!

Сам исходник:

http://yadi.sk/d/AiE_mbNv48-Ro

Ссылка на комментарий
Поделиться на другие сайты

Не плохо конечно, но честно новенького "хоцца", вот мне интересно, как инжектить через дрова? Этот способ "дравяной" ооочень мне понравился, ему глубого чихать на защиту процесса, скрытый он или системный....

Ссылка на комментарий
Поделиться на другие сайты

Не плохо конечно, но честно новенького "хоцца", вот мне интересно, как инжектить через дрова? Этот способ "дравяной" ооочень мне понравился, ему глубого чихать на защиту процесса, скрытый он или системный....

Хотя если стоит защита + которая скрывает процесс из Диспечера Задач он не найдет ее на х32 системе ...

На х64 системе он найдет любой процес))

А Через дрова возможно инжектить ну мне не дано понять как ))

Ссылка на комментарий
Поделиться на другие сайты

Хотя если стоит защита + которая скрывает процесс из Диспечера Задач он не найдет ее на х32 системе ...

На х64 системе он найдет любой процес))

А Через дрова возможно инжектить ну мне не дано понять как ))

Не всегда , иногда прав не хватает

Можно поковыряться в Дед Мазаевском абдэйторе

Ссылка на комментарий
Поделиться на другие сайты

Не всегда , иногда прав не хватает

Можно поковыряться в Дед Мазаевском абдэйторе

Разве у тебе есть его исходник ?

Да можно поковиряться ))))

Если есть то кинь на форум будет очень полезная вещь ))

Ссылка на комментарий
Поделиться на другие сайты

Исходника нет (

Но есть драйвер его есть (не спрашивай как эго достал :ninja: )

Можно пакер вскрыть это попыхтеть нужно, ну или хотя бы понять как с ним работать

Ссылка на комментарий
Поделиться на другие сайты

Исходника нет (

Но есть драйвер его есть (не спрашивай как эго достал :ninja: )

Можно пакер вскрыть это попыхтеть нужно, ну или хотя бы понять как с ним работать

Ну там мне кажеться такая же система как с Реестром ....

ну хотя я могу ошыбкаться ))

Ссылка на комментарий
Поделиться на другие сайты

у него и реестром можно, и дровами, на выбор человека

Ну вроде реестр в фиксе ))

А вот дрова очень даже кстати )))

Хотя для обычного инжекта для обычной не онлайн игры моего способа фактически хватит ....

А вот для онлайн с защитой моего способа не хватит))

Хотя можно сделать автоматическую загрузку с инжектор сразу после появление процеса в деспечере задач ))

Ссылка на комментарий
Поделиться на другие сайты

  • 1 год спустя...

Помоги, а как сделать распаковку и внедрение Dll из ресурсов?

в смысле ?

есть архив его нужно скачать и распаковать .... распакованный файл заинжектить в игру - программу ?

Ссылка на комментарий
Поделиться на другие сайты

в смысле ?

есть архив его нужно скачать и распаковать .... распакованный файл заинжектить в игру - программу ?

Нет, нужно Dll положить в ресурсы, когда программа стартрует, она распаковывает эту Dll в мной указанную папку и когда процесс игры появится то Dll должна автоинжектироватся в процесс. Тоже самое что и инжектор только Dll не лежит в папке с инжектором а распаковывается в мною указанную директорию и от туда инжектится.

Ссылка на комментарий
Поделиться на другие сайты

И в чем проблема? Пакуешь свою длл-ку в ресурсы своего приложения с типом RCDATA, затем в нужное время распаковываешь ее и уже потом инжектишь. Для распаковки тебе понадобятся функции

FindResource

SizeofResource

LockResource

FreeResource

CreatFile

WriteFile

Ну и еще могут понадобиться несколько других вспомогательных функций. Все описания можешь найти на МСДН.

Ссылка на комментарий
Поделиться на другие сайты

И в чем проблема? Пакуешь свою длл-ку в ресурсы своего приложения с типом RCDATA, затем в нужное время распаковываешь ее и уже потом инжектишь. Для распаковки тебе понадобятся функции

FindResource

SizeofResource

LockResource

FreeResource

CreatFile

WriteFile

Ну и еще могут понадобиться несколько других вспомогательных функций. Все описания можешь найти на МСДН.

Я то сюда и обращаюсь что знаю что тут лучше объяснят и примерчик подкинут :-D чем на мдсн :-[

Ссылка на комментарий
Поделиться на другие сайты

Я то сюда и обращаюсь что знаю что тут лучше объяснят и примерчик подкинут :-D чем на мдсн :-[

Жди через неделю появиться норм интернет .. тогда и подкину примерчик )) может до того времини сам уже додумаешься )))

Использую. Delphi XE2++ там можно пихать в программу всякие файлики и вытаскивать их .. ну или считывать ...

Ссылка на комментарий
Поделиться на другие сайты

Жди через неделю появиться норм интернет .. тогда и подкину примерчик )) может до того времини сам уже додумаешься )))

Использую. Delphi XE2++ там можно пихать в программу всякие файлики и вытаскивать их .. ну или считывать ...

Неделю? :closeyes: Сам не додумаюсь, знаю как но не получается.

Ссылка на комментарий
Поделиться на другие сайты

Так я уже почти все рассказал. Готовый код делать не стану, ибо тогда ты его просто скопипастишь, и знаний тебе это не прибавит. Даю краткий алгоритм. На его основе можно построить готовый код вообще без проблем. Предполагается, что длл-ку в ресурсы ты уже затолкал

1. Найти ресурс

2. Узнать его размер.

3. Получить на него указатель

4. Создать файл на жестком диске (пустой).

5. Скопировать весь ресурс в выделенную память (или же сразу в файл)

6. Освободить ресурс.

7. Закрыть файл

8. PROFIT.

К этому алгоритму тебе лишь остается подставить нужные функции, которые я написал выше.

Ссылка на комментарий
Поделиться на другие сайты

Неделю? :closeyes: Сам не додумаюсь, знаю как но не получается.

Старина тут все просто смотри :


Для начала нужно создать файл с расширением .rc , с таким содержанием:
Trainer EXEFILE Trainer_1.exe
Trainer - имя этого файла, может быть любым (может не совпадать с настоящим именем файла).
EXEFILE (BITMAP, CURSOR, ICON, WAVE) - тип файла
Trainer_1.exe - сам файл, т.е. путь к нему.
Далее компилим этот файл с помощью brcc32.exe (находиться в папке bin дельфи).
Скомпилированный файл (с расширением .res) копируем в папку нашей программы, после открываем дельфи, и после
{$R *.dfm}
пишем
{$R Имя_файла.res}

Теперь, чтобы распаковать куда-то наш файл используем следующую функцию:


procedure ExtractRes(ResType, ResName, ResNewName : String);
var
Res: TResourceStream;
begin
Res:=TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
Res.SavetoFile(ResNewName);
Res.Free;
end;

//использовать так:
ExtractRes('EXEFILE', 'Trainer', ('путь,_куда_распаковывать'));

Все )) Кстати в Delphi XE2 есть специальный менеджер которой упрощает первое действие .. просто нужно добавить процедуру и все ))

Ссылка на комментарий
Поделиться на другие сайты

Попробуй так


ExtractRes('RCDATA','DLL','C:\Cheats.dll');

Тоже самое "Resource DLL not found". Может я что то забыл сделать? Делал так

  • Закинул в ресурсы DLL

385be9aa52e1.png

  • В код добавил строки


procedure ExtractRes(ResType, ResName, ResNewName : String);
var
Res: TResourceStream;
begin
Res:=TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
Res.SavetoFile(ResNewName);
Res.Free;
end;

  • При старте формы (TForm1.FormCreate) написал


ExtractRes('RCDATA','DLL','C:\Cheats.dll');

Ссылка на комментарий
Поделиться на другие сайты

Тоже самое "Resource DLL not found". Может я что то забыл сделать? Делал так

  • Закинул в ресурсы DLL

385be9aa52e1.png

  • В код добавил строки


procedure ExtractRes(ResType, ResName, ResNewName : String);
var
Res: TResourceStream;
begin
Res:=TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
Res.SavetoFile(ResNewName);
Res.Free;
end;

  • При старте формы (TForm1.FormCreate) написал


ExtractRes('RCDATA','DLL','C:\Cheats.dll');

Не советую ставить при OnCreate лучше сделай при FormShow

кароче косяки с этими ресурсами ))

Переименуй Cheats.dll в Cheats.exe

и сделай

ExtractRes('EXEFILE','DLL','C:\Cheats.dll');

при выходе из нашей программе наша Cheats.exe переименовуеться в Cheats.dll

P.S - если хочешь чтобы длл извлекалась в папку с программой просто пропиши ('Cheats.dll')

думаю помог ))) если не получиться кину пример )))

Ссылка на комментарий
Поделиться на другие сайты

Не советую ставить при OnCreate лучше сделай при FormShow

кароче косяки с этими ресурсами ))

Переименуй Cheats.dll в Cheats.exe

и сделай

ExtractRes('EXEFILE','DLL','C:\Cheats.dll');

при выходе из нашей программе наша Cheats.exe переименовуеться в Cheats.dll

P.S - если хочешь чтобы длл извлекалась в папку с программой просто пропиши ('Cheats.dll')

думаю помог ))) если не получиться кину пример )))

Та же проблема.. длл не найдена. %)

Ссылка на комментарий
Поделиться на другие сайты

Первый параметр - тип ресурса. На скринах это RCDATA. Не помню, как в дельфи, а в С++ при работе с ресурсами тип такого рода указывался не строкой, а константой RT_RCDATA.

Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.