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
6. Создаем основной поток, где будет стартовать наша форма
7. Запускаем этот поток, добавив выше переменную
олный листинг файла *.dpr
еперь, если мы заинжектим нашу либу, то сразу появится главная форма, но мы не будем инжектить. Бывает, что такое невозможно. Например процесс защищен внешне.Нам потребуется немного знаний в обращении со сторонним софтом.
Procmon
CFF Explorer
Запускаем Procmon => Настраиваем фильтр на нашу игру => Запускам игру. => Какие DLL она подтягивает из игровой папки.
Выбираем любую, открываем ее в CFF Explorer
Переходим в "Import Adder" => Кликаем "Add" и выбираем наш Dll Cheat =>=> Во вкладке "Exported Functions" выбираем одну единственную функцию =>=> Кликаем на "Import By Ordinal" => Кликаем на "Rebuild Import Table" => Сохраняем изменённую игровую DLL.Теперь при запуске игры у нас будет стартовать наша DLL с функционалом, который вы сами опишите.
Например, спидхак для Aion:
[HIDE=5]
[/HIDE][/SPOILER]
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};
Код:
procedure MainThread; stdcall;
begin
Form1 := TForm1.Create(nil);
Form1.ShowModal;
end;
Код:
var dwTemp: DWORD;
begin
CreateThread(nil,dwTemp,@MainThread,nil,dwTemp,dwTemp);
end.
Код:
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
Например, спидхак для Aion:
[HIDE=5]
Код:
BaseAddress:=GetModuleHandle('game.dll');
sp:=Ptr(Integer(Ptr(Integer(Ptr(BaseAddress + $00B45EA4)^) + $254)^) + $6C4);
sp^:=strtofloat(edit1.Text);