Создаем И Инджектим Ddl В Игру Или В Что То Другое!

  • Автор темы Автор темы Lomanu4
  • Дата начала Дата начала

Lomanu4

Команда форума
Администратор
Ofline
Создание DLL и альтернативный метод внедрения в процессы.Сначала о создании:1. Открываем Delphi и создаем новый проект.File => New => Other... => Dynamic-link LibraryПосмотреть

2. Переименуем наш проект.В окне "Project Manager" ПКМ по "Project1.dll" => "Rename".Посмотреть

3. Добавим основную форму, где будем работать в дальнейшем.В окне "Project Manager" ПКМ по "Project1.dll" => "Add New" => "VCL Form" => "Yes".Посмотреть

4. Возвращаемся к начальному коду нашей DLL.Либо во вкладке переходим, либо в окне "Project Manager" выделяем наш "DLL Cheat" и жмем Ctrl+V5. Добавляем Windows и Forms в uses
Код:
uses
  System.SysUtils,
  System.Classes,
  Windows,
  Forms,
  Unit1 in 'Unit1.pas' {Form1};
6. Создаем основной поток, где будет стартовать наша форма
Код:
procedure MainThread; stdcall;
begin
  Form1 := TForm1.Create(nil);
  Form1.ShowModal;
end;
7. Запускаем этот поток, добавив выше переменную
Код:
var dwTemp: DWORD;
begin
CreateThread(nil,dwTemp,@MainThread,nil,dwTemp,dwTemp);
end.
олный листинг файла *.dpr
Код:
library DLL_Cheat;

{ Important note about DLL memory management: ShareMem must be the
  first unit in your library's USES clause AND your project's (select
  Project-View Source) USES clause if your DLL exports any procedures or
  functions that pass strings as parameters or function results. This
  applies to all strings passed to and from your DLL--even those that
  are nested in records and classes. ShareMem is the interface unit to
  the BORLNDMM.DLL shared memory manager, which must be deployed along
  with your DLL. To avoid using BORLNDMM.DLL, pass string information
  using PChar or ShortString parameters. }

uses
  System.SysUtils,
  System.Classes,
  Windows,
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

var dwTemp: DWORD;

procedure MainThread; stdcall;
begin
  Form1 := TForm1.Create(nil);
  Form1.ShowModal;
end;

begin
CreateThread(nil,dwTemp,@MainThread,nil,dwTemp,dwTemp);
end.
еперь, если мы заинжектим нашу либу, то сразу появится главная форма, но мы не будем инжектить. Бывает, что такое невозможно. Например процесс защищен внешне.Нам потребуется немного знаний в обращении со сторонним софтом.
Procmon
CFF Explorer
Запускаем Procmon => Настраиваем фильтр на нашу игру => Запускам игру. => Какие DLL она подтягивает из игровой папки.

Выбираем любую, открываем ее в CFF Explorer
6.png
Переходим в "Import Adder" => Кликаем "Add" и выбираем наш Dll Cheat =>=> Во вкладке "Exported Functions" выбираем одну единственную функцию =>=> Кликаем на "Import By Ordinal" => Кликаем на "Rebuild Import Table" => Сохраняем изменённую игровую DLL.Теперь при запуске игры у нас будет стартовать наша DLL с функционалом, который вы сами опишите.
Например, спидхак для Aion:
[HIDE=5]
Код:
BaseAddress:=GetModuleHandle('game.dll');
sp:=Ptr(Integer(Ptr(Integer(Ptr(BaseAddress + $00B45EA4)^) + $254)^) + $6C4);
sp^:=strtofloat(edit1.Text);
[/HIDE][/SPOILER]
 
Назад
Сверху Снизу