Регистрация Главная Сообщество
Сообщения за день Справка Регистрация

Создаем собственный чит!

-

Общение и обсуждение CrossFire

- Общение и обсуждение по темам CrossFire

Ответ
 
Опции темы
Старый 01.12.2011, 13:46   #1
 Разведчик
Аватар для pochemychka
 
pochemychka никому не известный тип
Регистрация: 08.10.2011
Сообщений: 2
Популярность: 14
Сказал(а) спасибо: 0
Поблагодарили 2 раз(а) в 2 сообщениях
 
По умолчанию Создаем собственный чит!

DirectX9.0 - 11 Подключение с помощью C + +

Скрытый текст
Хорошо, таким существам, что это было предложено, я решил написать это. Я надеюсь, это поможет кому-то и если нет, то извините первых, и для большинства, этот учебник предназначен только для DirectX 9, и я гарантирую вам, что не будет работать и для других версий без некоторых крупных редактирования в обертку. В конце этого я также будет включать некоторые инструкции о том, как превратить эту вводят крючок в оболочку до точки, где можно просто скомпилировать его как d3d9.dll и поместите его в каталог игры и запустить его с помощью этого метода тоже.
(Я предлагаю "обертку" метод, поскольку большинство обмануть обнаружений не находят его как взломать из-за некоторых машинах нуждающиеся d3d9.dll в этой папке, чтобы работать.)

Я пишу это руководство для работы с C + +, но вы можете перевести его на что когда-либо язык, который вы хотите запрограммировать в качестве это довольно простой и не слишком крупный.Обертка, где большая часть работы приходит играть так что вам придется сделать это по своему усмотрению. Извините, я не знаю других языков вне С + +, MASM, и VB2010 так что вы можете самостоятельно при переводе.



Часть 1. Введение и такие

Скрытый текст
Прежде чем мы начнем, позвольте мне переправиться, что это делает и как он работает. Во-первых, это основной метод учебник через инъекции. Это нужно, создает удаленный поток в процессе в качестве отправной и вводит свой ​​крюк и вызывает его DllMain (или основная функция DLL) и крючки Direct3D9Create функции. Оттуда, когда игру или приложение DX вы используете вызовы Direct3D9Create, он вызовет ваш перехваченной функции, а не оригинала. Когда это произойдет, вместо того чтобы использовать стандартные функции DirectX, он будет использовать оболочку "прокси" функций, которые были изменены с вашими потребностями и тому подобное. Это позволяет добавить в игру или приложение, например, каркасные, цветные примитивов и т.д. Такие вещи, которые вы видите в хаки и так далее.

Вместе с тем, он открывает окно для любых других дополнительных функций (ы), вы можете придумать сами.Границы маленькие, только то, что вы в состоянии сделать и такой.

Этот учебник будет объяснить, как сделать основы, создать крюк, показать пример обертки, и объяснить несколько небольших деталей, вместе с крючком. Я буду включать полный пример, как хорошо, что я найду некоторые случайные бесплатная программа, чтобы показать вам, как это работает, и таких в а. Я добавлю каркасном режиме, чтобы клавиши переключения, чтобы показать вам, как добавить некоторые из Ваших собственных код на крюк, а также



Часть 2. Инструменты, необходимые

Скрытый текст
Это небольшой список вещей, которые вы должны иметь возможность использовать этот учебник.
Microsoft Visual Studio 2010
Вам не нужно полную версию, чтобы создавать вещи, вы можете использовать издание выразить, насколько я знаю, чтобы скомпилировать некоторые вещи, если они не являются коммерческими (от того, что мне сказали). Если нет, то найти полную версию на сайт с варезом или хорошо, и купить его
LINK MVC + +2010

Microsoft Detours библиотека 1,5
Скачать с MS
Из-за неизвестной причине, создатели библиотеки Detours удалили функций, используемых в данном учебнике из новой версии. Таким образом, вы будете должны загрузить готовую версию здесь

Microsoft DirectX 9.0c SDK
И снова, еще один бесплатно скачать с Microsoft для разработчиков. (Разве они не так приятно программистов)
LINK DirectX
Примечание: Вы должны иметь реальную версию Windows, для этого скачать так что если вы не знаете, то Google вокруг для него. Я не думаю, что версия вопросам.
Я использовал в июле 2005 г. обновления для большинства моих старых проектов, но установили Май 2009 версии и мои вещи по-прежнему отлично компилируется так как должно быть в порядке.

Разные инструменты
Мозга, терпение, готовы читать и изучать, кофе.


Part 3. Installing The Tools

Скрытый текст
Во-первых, все инструменты находятся в установщики, поэтому просто установите их на уважаемых местах. НО! Я предлагаю вам установить Visual Studio во-первых, как некоторые другие инструменты могут устанавливать переменные и пути для Вас, чтобы легко включить вещи в свой проект без много работы, дерьмо и тому подобное. Таким образом, установить VS2010, а затем других.

VS2010 устанавливается по умолчанию C: Program FilesMicrosoft Visual Studio 82010
DX SDK устанавливается по умолчанию C: Program FilesMicrosoft DirectX9 SDK (м / г)

Добавление путей к VS2010
Далее нам нужно добавить пути к дополнительной используемых файлов в объезд и DirectX SDK папки. Это, так что вам не придется долго задницу включают линии в вашем проекте, но вместо этого компилятор будет заглянуть внутрь сказал папки для включаемых файлов в проекте, в первую очередь. (Но будьте осторожны, это может привести к конфликтам, если вы используете более 1 версии то, что имеет те же имена файлов!)
Откройте Visual Studio и перейти Сервис -> Параметры, затем щелкните + рядом с VC + +. Справа, щелкните раскрывающийся список в разделе "Каталоги Показать Для" и выберите "Включить файлы. Затем щелкните значок папки, а затем кнопку, которая появляется в списке, который говорит ". . ». и указать его в папку:
C: Program FilesMicrosoft DirectX SDK (лето) включить
(Изменение пути для любого из этих, если они отличаются)

Затем выберите "Библиотека файлов с правого выпадающего списка, а затем щелкните значок папки снова, то '. . ». кнопку и укажите в нем:
C: Program FilesMicrosoft DirectX SDK (летом) Libx86
(Изменение пути, если они отличаются)



Как на картинке:

Изображение №1
[Ссылки могут видеть только зарегистрированные пользователи. ] Нажать сюда для увеличения картинки.
[Ссылки могут видеть только зарегистрированные пользователи. ]



Изображение №2
[Ссылки могут видеть только зарегистрированные пользователи. ] Нажать сюда для увеличения картинки.
[Ссылки могут видеть только зарегистрированные пользователи. ]



Изображение №3
[Ссылки могут видеть только зарегистрированные пользователи. ] Нажать сюда для увеличения картинки.
[Ссылки могут видеть только зарегистрированные пользователи. ]



Изображение №4
[Ссылки могут видеть только зарегистрированные пользователи. ] Нажать сюда для увеличения картинки.
[Ссылки могут видеть только зарегистрированные пользователи. ]



Изображение №5
[Ссылки могут видеть только зарегистрированные пользователи. ] Нажать сюда для увеличения картинки.
[Ссылки могут видеть только зарегистрированные пользователи. ]



Установка Detours

Скрытый текст
Это обновленная шаг теперь из-за проблемы с Detours 2.1. Для установки Detours, вы могли бы поставить и detours.h. Библиотека файлов, где бы Вы не хотите в вашей системе, только не забудьте добавить их пути к VS2010 IDE, как вы делали для DX SDK выше. Или, как я буду использовать в этом уроке, сделать новую папку в папке проектов с других исходных файлах (. Ч. Срр-файлы) и назовите его 'Detours "и поместить файлы туда. Вероятно, это будет самый простой способ их использовать.

Теперь ваш IDE должен быть настроен для использования DX SDK файлы с легкостью.
Если у вас возникли вопросы, в дальнейшем, просто опубликовать ошибку и я постараюсь помочь вам в меру моих способностей.
Я не Иисус, так что не ждите меня, чтобы исправить все ошибки.

Часть 4. Создание Крюк

Для начала крюка, создать новый проект DLL в VS2010. Чтобы сделать это, откройте VS2010. Затем переходим File -> New -> Project. Выберите VC + + из левого поля, то на правом выбрать Win32 Project. Выберите имя для вашего проекта и место для него.

Примечание: для этого урока я буду называть моим dxhook и местоположение будет на моем рабочем столе. Я также предлагаю оставить Создать каталог для решения проверяется.

Теперь мастера приложений Win32 должны придумать. Нажмите на параметры приложения слева, выберите DLL под типа приложения и выберите Пустой проект под Дополнительные опции. Нажмите кнопку Готово. Вы будете сбрасываться в IDE из VS2010 в новой пустой решение.

Хотя у нас будет предварительно скомпилированных заголовков выключен, мы собираемся сделать stdafx.cpp / .h файлы в любом случае, так как они хорошо иметь за что включает в себя несколько файлов будет использовать. Так что давайте пойдем дальше и добавим основные файлы, которые мы будем использовать в этом.

Для добавления новых файлов в проект, щелкните правой кнопкой мыши в обозревателе решений и выберите пункт Добавить, затем выберите пункт Новый элемент из подменю. Вы будете хотеть добавить 2 срр файлов и один файл заголовка. Итак:



Код:

Add->New Item-> Header File, name it stdafx.h
Add->New Item-> C++ File, name it stdafx.cpp
Add->New Item-> C++ File, name it main.cpp

Таким образом, вы должны иметь 3 файла в ваше решение сейчас.

stdafx.cpp
Давайте заботиться о файле легче первой. Открытое stdafx.cpp, дважды щелкнув его в обозревателе решений, чтобы открыть его в окне кода в центре IDE. Этот файл должен 1 строку кода.

Код:

#include "stdafx.h"

Сохраните и закройте этот файл сейчас. Вы не должны редактировать этот файл, когда-либо снова.

stdafx.h
Далее, позволяет заботиться о базовых потребностей в stdafx.h файл, который будет использоваться для запуска этого проекта. Так дважды щелкните на stdafx.h в Solution Explorer и позволяет добавить код.

Первое, что мы хотим сделать, это избавиться от некоторых весьма раздражающие предупреждения. Если вы похожи на меня, у меня есть набор компиляторов для лечения предупреждения как ошибки. Я люблю, чтобы все было настолько хорошим, насколько это возможно.

Первая строка кода мы хотим, чтобы добавить к stdafx.h это:

Код:

#pragma once

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

Далее, мы хотим, чтобы сообщить компилятору, какая версия DXinput использовать для SDK, а также версии для Windows, чтобы остановить раздражает фигня, что происходит, когда это не автоматически обнаружен в компилятор. Чтобы сделать это добавить:

Код:

#define DIRECTINPUT_VERSION 0x0900
#define _WIN32_WINNT 0x0500

Теперь, когда мы больше не нужны, определяет в этом файле, то мы готовы добавить наш включает в себя.Первая включает в стандартных окон включают файл, который используется для большинства программ, которые требуют определенных заголовков, которые являются производными внутри файла windows.h. Наряду с этим, мы должны будем tchar.h для некоторых макросов, а также работать с юникодом строк. (Да, я делаю свою работу в юникоде).

Так кода мы хотим добавить это:

Код:

#include <windows.h>
#include <tchar.h>

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

Сохранить и закрыть stdafx.cpp файл.

main.cpp
Затем откройте файл main.cpp. Это где подключение происходит. Мы будем использовать Detours для нашего подключения функции, потому что это бесплатный и простой в использовании. Я не гарантирую, что он будет незамеченным для вашей игры, поэтому будьте осторожны при тестировании.

Первая строка кода мы хотим добавить в этот файл должен включать файл stdafx.h как она включает в себя, которые будут необходимы для этого файла. Так что добавьте:

Код:

#include "stdafx.h"

Далее мы должны добавить нашу включать и файл библиотеки для обходных путей. Я сам предпочитаю использовать прагма параметра Thats использоваться с Visual Studio, а затем добавив Библиотека файлов в свойствах проекта, но если вы не используете VS2010 просто удалить Прагма линию я собираюсь показать и добавить Библиотека файла в окне свойств в компилятор для проекта, чтобы включить, когда он связывает и объединяет.

Код:

#pragma comment(lib, "Detours/detours.lib")
#include "Detours/detours.h"

Далее я предлагаю добавить эту переменную в верхней под включает в себя, объезды отслеживать дескриптор модуля упаковывают вам это нужно в другом месте кода. Я думаю, никто не должен когда-либо действительно в ней нуждается для своего вещь, а не быть в состоянии получить его другим способом, но это только он закончит.

Таким образом, мы добавим:

Код:

HANDLE HookHandle = NULL;

Теперь нам нужно будет добавить батут для наших перехваченной функции, Direct3DCreate9. Так во-первых, вы, вероятно, говорить WTF является трамплином в кодировании? Его так же, как код пещеру. Когда вы что-нибудь через крюк Detours, код целевой функции помещается в батут и батуты адрес помещается в указатель цели. Как сказано в книге прочел мне, мы можем либо заменить целевой функции целиком или просто добавить на него.

Код для батута выглядит следующим образом:

Код:

DETOUR_TRAMPOLINE(IDirect3D9* WINAPI Real_Direct3DCreate9(UINT SDKVersion), Direct3DCreate9);

Но так как нам нужно эту функцию, чтобы оставаться полезной после составлен мы должны сообщить компилятору не "кромсать" идентификатор. Для этого нам нужно, чтобы охватить наш код с внешних "C" код. Таким образом, наш целый блок кода для батута будет:

Код:

#ifdef __cplusplus
extern "C"
{
#endif
DETOUR_TRAMPOLINE(IDirect3D9* WINAPI Real_Direct3DCreate9(UINT SDKVersion), Direct3DCreate9);
#ifdef __cplusplus
}

Следующим шагом после создания батут будет заключаться в создании нашей новой функции для Direct3DCreate9. Что мы хотим сделать функцию вместо создания нормальных экземпляр Direct3D состоит в создании нового экземпляра нашего обертку. (Мы еще не написали оболочку, но тот еще дальше.) Итак, что мы собираемся нужно сделать, это есть функция думаю, что это создание нормальных экземпляр Direct3D, но вместо этого он создает новый экземпляр нашей обертку

Код:

IDirect3D9* WINAPI Mine_Direct3DCreate9(UINT SDKVersion)
{
IDirect3D9* Direct3D = Real_Direct3DCreate9( SDKVersion );
IDirect3D9* Mine_Direct3D = new Direct3D9Wrapper( Direct3D );
return Mine_Direct3D;
}

Что делает этот код является создает нормальные экземпляр Direct3D, потому что мы просто хотите, чтобы обернуть его, а не перекодирует все. Это позволит передать дескриптор вновь созданного интерфейс Direct3D нашим обертку, которая затем "прокси" функции, Direct3D использует.

Теперь это следующая часть является обязательным, но я предлагаю делать это, чтобы держать DllMain функция хороший, чистый и легко читается. Я создал, чтобы функции, которые вызываются из DllMain которых являются: HookAPI и UnhookAPI. Оба являются простыми функциями недействительным, так как они возвращают ничего. Для HookAPI мы имеем:

Код:

void HookAPI()
{
DetourFunctionWithTrampoline( (PBYTE)Real_Direct3DCreate9, (PBYTE)Mine_Direct3DCreate9 );
}

А для UnhookAPI мы имеем:

Код:

void UnhookAPI()
{
DetourRemove( (PBYTE)Real_Direct3DCreate9, (PBYTE)Mine_Direct3DCreate9 );
}

Теперь для последней части нашего main.cpp, мы должны функция DllMain. Для тех, которые являются новыми для C + +, каждая DLL имеет отправной точкой которого является то, что сначала вызывается при загрузке модуля. Эта точка входа вызывается DllMain функции. (Некоторые компиляторы позволит вам изменить имя, но я использую стандарт.) Внутри нашей DllMain вступления мы хотим модуль, когда его впервые загружен, чтобы позвонить HookAPI, и когда его выгрузки, называть UnhookAPI. Это очень простой и очень легко. Для этого мы используем:

Код:

BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
if (ul_reason_for_call == DLL_PROCESS_ATTACH)
{
DisableThreadLibraryCalls(hModule);
HookHandle = hModule;
HookAPI();
}
else if (ul_reason_for_call == DLL_PROCESS_DETACH)
{
UnhookAPI();
}
return TRUE;
}

Также обратите внимание на переменную HookHandle используется там? Мы храним ручку модуля, который будет использоваться в дальнейшем упаковывают вам это нужно еще где. Наряду с этим у нас в DisableThreadLibraryCalls там же. Это устраняет вызовы DLL_THREAD_ATTACH и DLL_THREAD_DETACH минимизировать рабочий код библиотеки. (Помогает сохранить размер вниз.)

Теперь наши main.cpp сделано. Но! Мы должны вернуться назад и изменить stdafx.h. Я оставил этот код, чтобы показать вам, как работать с включает в себя, что вам нужно, и добавить их в случае необходимости.

Итак, давайте вновь открыть stdafx.h В последние включают, которые должны быть tchar.h мы хотим добавить включает для DirectX 9. Они будут использоваться в нашей обертки, а также в main.cpp, как вы можете видеть из приведенного выше кода. Поэтому мы хотим добавить:

Код:

#pragma comment(lib,"d3d9.lib")
#include <d3d9.h>
#include <d3dx9.h>

Опять же, я использую # Прагма потому что это быстро и легко добавлять библиотеки к проекту без необходимости возиться с свойствах проекта. Я не думаю, что любой компилятор, но Microsoft поддерживает эту поэтому вам может понадобиться сделать это другой метод, чтобы добавить библиотеку к проекту.

Часть 5.Wrapper

В первую очередь мы собираемся нужно добавить некоторые новые файлы в проект. Точно так же как мы делали раньше вы собираетесь создать следующие новые файлы:

Код:

ID3D9Wrapper.h
ID3D9Wrapper.cpp
ID3D9Wrapper_Device.h
ID3D9Wrapper_Device.cpp

Я предлагаю сделать новый фильтр в обозревателе решений и (Новая папка) для хранения файлов обертки. Назовите его D3DWrapper или что-то легко поддерживать решение организованы и легко найти то, что нужно изменить в дальнейшем. Добавление большого количества файлов может начать, чтобы сделать его трудно найти то, что вы ищете.

Мы собираемся начать с ID3D9Wrapper.h и. Срр вот основные Direct3D обертки, где, как _Device файлы для упаковки функций устройства. (Читайте на DirectX, если вы не знаете, как все, с ним работает. Я не могу объяснить все причины, которые были бы совсем другой урок.)

ID3D9Wrapper.h
Сначала мы хотим, чтобы открыть блокнот и откройте файл расположен по адресу:
C: Program FilesMicrosoft DirectX DSDK (летом) Included3d9.h
(Могут отличаться для вашей версии SDK, но она будет называться d3d9.h)
Теперь мы закончили с этим, сохраните и закройте этот файл.

Мы открываем это, потому что этот файл содержит функции, которые нам нужно добавить в наш обертку. Это где мы получаем информацию, мы должны понимать, что каждая часть DirectX делает функция мудрым. Так прокрутите вниз в этом файле, и вы должны найти несколько вещей, которые мы уже сделали выше. Такие, как наш новый ЬурейеЕ, она также используется в этом файле, а также функция создания экземпляра Direct3D. Держите прокрутки, пока не найдете

Код:

DECLARE_INTERFACE_(IDirect3D9, IUnknown)

Это начало основного интерфейса для Direct3D9. Мы хотим использовать в основном точный код Thats Infront из нас. Во-первых, давайте создадим класс внутри нашего кода файла. Так внутри ID3D9Wrapper.h добавить:

Код:

#include "stdafx.h"

class Direct3D9Wrapper : public IDirect3D9
{
public:

Direct3D9Wrapper( LPDIRECT3D9 pDirect3D );
virual ~Direct3D9Wrapper();

IDirect3D9* Direct3D9;
};

>>>> К главе 2

[C + +] Подключение через D3D9 Detours
Глава 2




Это начало нашего класса. Мы включаем stdafx.h, поскольку она включает в себя DirectX 9 включает в себя и такие, что нам нужно в этом файле и другие скоро прийти. Далее, еще в блокнот окна d3d9.h позволяет копировать и вставлять несколько строк.

Код:

/*** IUnknown methods ***/
STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;

/*** IDirect3D9 methods ***/
STDMETHOD(RegisterSoftwareDevice)(THIS_ void* pInitializeFunction) PURE;
STDMETHOD_(UINT, GetAdapterCount)(THIS) PURE;
STDMETHOD(GetAdapterIdentifier)(THIS_ UINT Adapter,DWORD Flags,D3DADAPTER_IDENTIFIER9* pIdentifier) PURE;
STDMETHOD_(UINT, GetAdapterModeCount)(THIS_ UINT Adapter,D3DFORMAT Format) PURE;
STDMETHOD(EnumAdapterModes)(THIS_ UINT Adapter,D3DFORMAT Format,UINT Mode,D3DDISPLAYMODE* pMode) PURE;
STDMETHOD(GetAdapterDisplayMode)(THIS_ UINT Adapter,D3DDISPLAYMODE* pMode) PURE;
STDMETHOD(CheckDeviceType)(THIS_ UINT Adapter,D3DDEVTYPE DevType,D3DFORMAT AdapterFormat,D3DFORMAT BackBufferFormat,BOOL bWindowed) PURE;
STDMETHOD(CheckDeviceFormat)(THIS_ UINT Adapter,D3DDEVTYPE DeviceType,D3DFORMAT AdapterFormat,DWORD Usage,D3DRESOURCETYPE RType,D3DFORMAT CheckFormat) PURE;
STDMETHOD(CheckDeviceMultiSampleType)(THIS_ UINT Adapter,D3DDEVTYPE DeviceType,D3DFORMAT SurfaceFormat,BOOL Windowed,D3DMULTISAMPLE_TYPE MultiSampleType,DWORD* pQualityLevels) PURE;
STDMETHOD(CheckDepthStencilMatch)(THIS_ UINT Adapter,D3DDEVTYPE DeviceType,D3DFORMAT AdapterFormat,D3DFORMAT RenderTargetFormat,D3DFORMAT DepthStencilFormat) PURE;
STDMETHOD(CheckDeviceFormatConversion)(THIS_ UINT Adapter,D3DDEVTYPE DeviceType,D3DFORMAT SourceFormat,D3DFORMAT TargetFormat) PURE;
STDMETHOD(GetDeviceCaps)(THIS_ UINT Adapter,D3DDEVTYPE DeviceType,D3DCAPS9* pCaps) PURE;
STDMETHOD_(HMONITOR, GetAdapterMonitor)(THIS_ UINT Adapter) PURE;
STDMETHOD(CreateDevice)(THIS_ UINT Adapter,D3DDEVTYPE DeviceType,HWND hFocusWindow,DWORD BehaviorFlags,D3DPRESENT_PARAMETERS* pPresentationParameters,IDirect3DDevice9** ppReturnedDeviceInterface) PURE;

И вставьте его в ID3D9Wrapper.h между виртуальной функции и IDirect3D9 * переменной. Если вы вставили в нужном месте в последнюю очередь в обертку должна быть:

Код:

IDirect3D9* Direct3D9; };

Следующим шагом мы должны сделать, это удалить PURE определить из каждой функции. Просто удалите слово PURE поэтому последнее, что на каждой линии); простой способ сделать это нажать Ctrl + H, в поле Найти, говоря: "PURE;" (без кавычек, но с пространством спереди) и в Заменить говоря: ";" (без кавычек) и убедитесь, что выбран текущий документ под Look In. Затем нажмите заменить все.

Все сделано, сохраните и закройте этот файл.

ID3D9Wrapper.cpp
Теперь для этого файла, я не пишу все, что будет в этом здесь, на форумах, потому что его дерьмо тонны кода. Вы должны переписать все функции, которые мы только что добавили. Файла ч. Но не волнуйтесь, ее очень легко. Вы просто создание функции для возвращения нормального значения, как будто это был реальный Direct3D инстанции.

Во-первых, давайте добавим наш включает в себя и создать класс конструировать / деконструировать.

Так внутри ID3D9Wrapper.cpp включает в себя вы будете хотеть, являются:

Код:

#include "ID3D9Wrapper.h"

Затем у нас есть наша конструкция класса. Мы хотим, чтобы хранить указатель Direct3D для использования внутри класса, поэтому мы используем:

Код:

Direct3D9Wrapper:irect3D9Wrapper(LPDIRECT3D9 pDirect3D)
{
Direct3D9 = pDirect3D;
}

И в наши деконструировать не нужно ничего делать так:

Код:

Direct3D9Wrapper::~Direct3D9Wrapper() {}

Далее идет функций. Вы можете просто просто идти вниз по каждой функции и добавить их сами легко. Я покажу вам пример того, как сделать это самостоятельно. (Вы также можете посмотреть в нашем примере, если вы не понимаете.)

Наша первая функция в список:

Код:

STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj);

Чтобы понять это, STDMETHOD это макрос, который что-нибудь внутри государств () будет возвращать HRESULT. Что же касается STDMETHOD_ это как расширенная версия макросов в котором говорится, первое значение внутри () является тип возвращаемого значения, а вторая является именем функции.

Так, глядя на эту линию, мы знаем, QueryInterface возвращает HRESULT. . Таким образом, наши функции внутри файла срр будет выглядеть следующим образом:

Код:

HRESULT Direct3D9Wrapper::QueryInterface(const IID &riid, void **ppvObj)
{
return Direct3D9->QueryInterface(riid, ppvObj);
}

Просто не так ли?

Примером функции, используя STDMETHOD_ будет выглядеть так

Код:

STDMETHOD_(ULONG,AddRef)(THIS);

Таким образом, наша функция будет выглядеть так:

Код:

ULONG Direct3D9Wrapper::AddRef()
{
return Direct3D9->AddRef();
}

Как только вы получите в CreateDevice, остановитесь. Это функция, мы должны изменить из исходного кода. Это потому, что, если мы не будет просто создать регулярную Direct3DDevice9 интерфейс. Вместо этого, мы хотим, чтобы создать экземпляр нашего Direct3DDevice9Wrapper класса.

Таким образом, наш CreateDevice функция будет выглядеть следующим образом:

Код:

HRESULT Direct3D9Wrapper::CreateDevice(UINT Adapter, D3DDEVTYPE DeviceType,HWND hFocusWindow, DWORD BehaviorFlags,D3DPRESENT_PARAMETERS *pPresentationParameters,IDirect3DDevice9 **ppReturnedDeviceInterface)
{
IDirect3DDevice9* pDirect3DDevice9;
HRESULT hRes = Direct3D9->CreateDevice( Adapter, DeviceType, hFocusWindow, BehaviorFlags, pPresentationParameters, &pDirect3DDevice9 );
*ppReturnedDeviceInterface = new Direct3DDevice9Wrapper( pDirect3DDevice9, this, pPresentationParameters );
return hRes;
}

Как вы можете видеть, вместо того чтобы вернуться регулярные устройства, используемого в CreateDevice, мы устанавливаем наш обертки устройство указатель, который используется в ppReturnedDeviceInterface. Это связано с тем, что она использует наши обертку вместо обычных функций Direct3DDevice.

И вы сделали с этим файлом сейчас. Таким образом, вы можете сохранить и закрыть его.

ID3D9Wrapper_Device.h
Так же, как другие. Ч файл для обертки, вам нужно найти функции, которые используются оригинальные Direct3DDevice9 интерфейс. Чтобы сделать это, вернитесь в свой ​​блокнот, который d3d9.h открытым и прокрутите вниз, дальше от последнего места мы скопировали код. Не намного дальше, вниз, откуда мы только что были в этот файл, вы должны найти:

Код:

DECLARE_INTERFACE_(IDirect3DDevice9, IUnknown)

Это начало Direct3DDevice9 интерфейс, который нам потребуется код. Как я уже сказал выше, это файл, который содержит наиболее код в этой книге и учебник. Я не буду показывать вам все, чтобы скопировать здесь причина это будет способ долго, но, я покажу вам, где для запуска и остановки:
Начать копирование по адресу:

Код:

/*** IUnknown methods ***/
STDMETHOD(QueryInterface)(THIS_ REFIID riid, void** ppvObj) PURE;
STDMETHOD_(ULONG,AddRef)(THIS) PURE;
STDMETHOD_(ULONG,Release)(THIS) PURE;

Скопируйте все, включая то, что я только что показал вам выше, вплоть до, и в том числе:

Код:

STDMETHOD(DrawTriPatch)(THIS_ UINT Handle,CONST float* pNumSegs,CONST D3DTRIPATCH_INFO* pTriPatchInfo) PURE;
STDMETHOD(DeletePatch)(THIS_ UINT Handle) PURE;
STDMETHOD(CreateQuery)(THIS_ D3DQUERYTYPE Type,IDirect3DQuery9** ppQuery) PURE;

Да, это многое, но, легко писать их. Они просто сквозной функции, поэтому вам не нужно добавлять код внутри них другие, то возвращается, если вы не изменяя их для ваших нужд.

Хорошо, что, как говорится, скопировать и вставить этот код в ID3D9Wrapper_Device.h то вам нужно, чтобы охватить эти, как и другим заголовком, в классе. Во-первых, нам нужны наши включает в себя

Код:

#pragma once
#include "stdafx.h"

Далее, класс определяют:

Код:

class Direct3DDevice9Wrapper : public IDirect3DDevice9
{
public:

Далее, построим / деконструировать, которые будут добавлены после строки, которая говорит общественности:

Код:

Direct3DDevice9Wrapper(IDirect3DDevice9* pDirect3DDevice9, IDirect3D9* pDirect3D9, D3DPRESENT_PARAMETERS *pPresentationParameters);
virtual ~Direct3DDevice9Wrapper();

Затем в конце файла, то вам нужно закрытия класса. Но вам также понадобится три переменные, которые будут использоваться внутри этого класса. Какие переменные, которые содержат указатель на устройство и переменную для отслеживания успехов.

Код:

IDirect3DDevice9* Direct3DDevice9;
IDirect3D9* Direct3D9;

UINT m_Stride;
};

Далее, вам нужно удалить чистые линии еще раз. Как и раньше, нажмите CTRL + H, в верхнем окне введите "PURE; 'в том числе пространства, но не цитаты, а в нижней,'; 'не включая кавычки. Затем нажмите Заменить все, которые должны заменить, как 115-120 вещей. Теперь вы сделали с этим файлом на данный момент, так что сохранить и закрыть.

ID3D9Wrapper_Device.cpp
Ах, мать-загрузить файл. Этот файл содержит самый код, как я сказал, но опять же, как я уже сказал, это просто передать через функции, сначала, пока вы добавляете вещи самостоятельно. Так позволяет начать работу ..

Во-первых, нам нужны наши включает в файл:

Код:

#include "ID3D9Wrapper_Device.h"

Нам нужно только это, потому что. Ч файл уже включает в себя stdafx.h, который содержит другие включает в себя, которые будут необходимы. Далее, нам необходимо построить нашу / деконструировать этого класса:

Код:

Direct3DDevice9Wrapper:irect3DDevice9Wrapper(IDi rect3DDevice9 *pDirect3DDevice9, IDirect3D9 *pDirect3D9, D3DPRESENT_PARAMETERS *pPresentationParameters)
{
Direct3DDevice9 = pDirect3DDevice9;
Direct3D9 = pDirect3D9;
}

В конструкцию, мы захват указателя на устройство и хранение, которые будут использоваться в этом классе, а затем изменить вернулся устройство указателя с нашими подключили один, так что система использует нашу завернутый функций.

Далее, вам необходимо пройти через список функций и записывать их так же, как вы делали с другой файл. Помните, STDMETHOD означает возвращение типа HRESULT и STDMETHOD_ означает возвращение тип первой переменной в круглых скобках.

Снова Херес несколько примеров, чтобы помочь вам в этом шаге:

Код:

HRESULT Direct3DDevice9Wrapper::QueryInterface(const IID &riid, void **ppvObj)
{
return Direct3DDevice9->QueryInterface( riid, ppvObj );
}

ULONG Direct3DDevice9Wrapper::AddRef()
{
return Direct3DDevice9->AddRef();
}

ULONG Direct3DDevice9Wrapper::Release()
{
return Direct3DDevice9->Release();
}

Перейти к главе 3

[C + +] Подключение через D3D9 Detours
Глава 3



Хорошо ... вплоть до

Теперь нам нужно внести некоторые правки в код, который вы только что сделали. Ничто не мажор, просто некоторые незначительные вещи. Во-первых, для Stride регистратора, вы хотите изменить SetStreamSource чтобы выглядеть следующим образом:

Код:

HRESULT Direct3DDevice9Wrapper::SetStreamSource(UINT StreamNumber, IDirect3DVertexBuffer9 *pStreamData, UINT OffsetInBytes, UINT Stride)
{
if( StreamNumber == 0 )
m_Stride = Stride;

return Direct3DDevice9->SetStreamSource(StreamNumber, pStreamData, OffsetInBytes, Stride);
}

Далее, вам необходимо изменить GetDirect3D, вместо того, чтобы позволить ему установить переменную в исходный указатель, мы хотим, чтобы установить его в нашей обертки, поэтому мы используем:

Код:

HRESULT Direct3DDevice9Wrapper::GetDirect3D(IDirect3D9 **ppD3D9)
{
*ppD3D9 = Direct3D9;
return D3D_OK;
}

И еще одна корректировка QueryInterface:

Код:

{
HRESULT hRes = Direct3DDevice9->QueryInterface(riid, ppvObj);
if( hRes == S_OK )
*ppvObj = this;
else
*ppvObj = NULL;

return hRes;
}

Хорошо, теперь мы должны покончить с этим файлом, а также. Так сохранить и закрыть. Далее, нам необходимо вернуться назад и отредактировать некоторые первые несколько файлов для обработки изменений с новой обертке. Итак, первое открытое позволяет stdafx.h

В нижней части stdafx.h нужно добавить еще включают в себя:

Код:

#include "ID3D9Wrapper_Device.h"

Затем вы можете сохранить и закрыть этот файл.

Далее, в main.cpp, вам нужно добавить включают также:

Код:

#include "ID3D9Wrapper.h"

Это надо идти под включать, stdafx.h (Приказ имеет значение в некоторых случаях.) Затем сохранить и закрыть main.cpp.

Далее нам нужно добавить определение файла в проект, чтобы сделать его так, что Direct3DCreate9 доступна программа называя его, и что его не все giberish когда компилятор связывает его. Это еще один шаг, который может понадобиться различные работы, если вы не используете VS2010. Я не знаю, если бы. DEF файлы являются стандартными для других компиляторов, но это должно быть. Возможно, вам придется работать различные собрать один в ваш проект все же.

Для людей, использующих VS2010, просто сделайте следующее:

Код:

- In the solution explorer, right click on 'Source Files' and goto:
- Add -> New Item
- Select 'Module-definition' file from the popup and name it the same name as the project. In my case, it will be called, 'dxhook.def'

Теперь, если файл не открывается уже само по себе, просто дважды щелкните по нему. Этот файл экспортировать файл, который будет содержать никаких экспорта нам нужно, чтобы и другие программы прямого доступа. В нашем случае, только один на данный момент является Direct3DCreate9. Но вместо того чтобы просто говорить, экспорт, мы хотим, чтобы установить Direct3DCreate9 нашим перехваченной функции. Таким образом, наш DEF файл кода будет

Код:

LIBRARY "dxhook"
EXPORTS
Direct3DCreate9 = Mine_Direct3DCreate9

Теперь, VS2010 следует добавить DEF файл в свойствах проекта автоматически до тех пор, как вы добавили его так, как я показал выше. Сохраните и закройте этот файл сейчас.

Поздравляю!
Крюк / обертку все готово! Возьмите передышку на несколько, прежде чем писать быстрого запуска для этой трубки.

Часть 6. Инжектор

Хорошо, прежде всего, позвольте начать с того, что это очень простой инжектор. Есть много способов, чтобы переписать и такой, и я настоятельно рекомендую, что вы делаете. Есть очень хорошие библиотеки вы должны использовать такие как ForceLib и CRC32 пере держать крючок незамеченными и такой. Это лишь небольшой пример, чтобы показать вам, как придать использованием обходных путей.

Detours поставляется с функцией, которая надстроена CreateProcessEx и внедряет модуль, который вы даете ему, для вас. Вы можете сделать это самостоятельно, а с помощью CreateProcess / Ex то паузы процесс, создавая новую тему, и потребителей инъекционных код в потоке, то вызов DllMain себя и такой. Опять же, Theres много способов сделать это, так что вы можете выбрать, какой вы хотите использовать.

Для этого я буду использовать простое приложение консоли. Ничто не мажор, 1 файл, не так много кода.

Для начала, давайте создадим новый проект, так что открыть еще один экземпляр VS2010 и перейти: File -> New -> Project выберите Win32 проекта из коробки, назовите его dxlauncher или то, что вы хотите. Снова держать "Создать каталог для решения" проверили, как он держит вещи красиво и аккуратно. Нажмите кнопку ОК.

Когда Мастер приложений появляется, нажмите на ссылку Настройки приложения слева, затем выберите следующие параметры .
Знаю работать долго сам ещё никак не научился но у кого получилось спс кидайте)))
  Ответить с цитированием
Старый 30.01.2012, 19:33   #2
 Разведчик
Аватар для KoTuK699
 
KoTuK699 никому не известный тип
Регистрация: 22.01.2012
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Создаем собственный чит!

блина спс всё работает!
  Ответить с цитированием
Старый 30.01.2012, 22:44   #3
 Разведчик
Аватар для Konusci
 
Konusci никому не известный тип
Регистрация: 06.10.2011
Сообщений: 9
Популярность: 10
Сказал(а) спасибо: 6
Поблагодарили 0 раз(а) в 0 сообщениях
Отправить сообщение для Konusci с помощью Skype™
 
По умолчанию Re: Создаем собственный чит!

Сейчас все сразу побегут делать собственный чит а через 5 минут забьют и буду юзать что есть)ыыЫ)
  Ответить с цитированием
Старый 31.01.2012, 12:55   #4
 Разведчик
Аватар для wawe_y
 
wawe_y никому не известный тип
Регистрация: 04.01.2012
Сообщений: 1
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Создаем собственный чит!

чтобы хорошо работало и вообще работало нужен обход, можно попробывать посмотреть код с проги ШЛбот или кей кф.
  Ответить с цитированием
Старый 31.01.2012, 13:53   #5
 Разведчик
Аватар для саня питерский
 
саня питерский никому не известный тип
Регистрация: 18.12.2011
Сообщений: 7
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Создаем собственный чит!

ну ты наглый копипаст! тыхоть сам в этом что нибудь разобрал? кинь чит который у тебя получился
  Ответить с цитированием
Старый 01.02.2012, 21:46   #6
Заблокирован
 Разведчик
Аватар для zhdan
 
zhdan никому не известный тип
Регистрация: 28.12.2010
Сообщений: 10
Популярность: 12
Сказал(а) спасибо: 2
Поблагодарили 1 раз в 1 сообщении
 
По умолчанию Re: Создаем собственный чит!

АХА РЖАЧКА ВОСЛИЛ
  Ответить с цитированием
Старый 01.02.2012, 22:03   #7
 Пехотинец
Аватар для ltvjyltvjy
 
ltvjyltvjy скоро будет известенltvjyltvjy скоро будет известенltvjyltvjy скоро будет известен
Регистрация: 22.04.2011
Сообщений: 83
Популярность: 292
Сказал(а) спасибо: 98
Поблагодарили 125 раз(а) в 64 сообщениях
 
По умолчанию Re: Создаем собственный чит!

pochemychka, копипаст))
  Ответить с цитированием
Старый 04.02.2012, 14:58   #8
 Разведчик
Аватар для datatfa
 
datatfa никому не известный тип
Регистрация: 02.02.2012
Сообщений: 0
Популярность: 10
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Создаем собственный чит!

ЭТО ЧАСА 2 ТОЛЬКО ЧИТАТЬ А ДЕЛАТЬ ЧАСОВ 5
  Ответить с цитированием
Старый 04.02.2012, 15:19   #9
 Разведчик
Аватар для [WTF]
 
[WTF] никому не известный тип
Регистрация: 10.12.2011
Сообщений: 8
Популярность: 10
Сказал(а) спасибо: 90
Поблагодарили 0 раз(а) в 0 сообщениях
 
По умолчанию Re: Создаем собственный чит!

нечо непонял из этого гайда!
________________
Рабочий чит на кедиты для RuCF:
V.1,0 : [Ссылки могут видеть только зарегистрированные пользователи. ]
V.2.,0: [Ссылки могут видеть только зарегистрированные пользователи. ]
  Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Руководство] Создаем собственный квест Katastrofa-2012 Фиксы / Патчи / Программы 2 03.04.2011 15:28

Заявление об ответственности / Список мошенников

Часовой пояс GMT +4, время: 21:33.

Пишите нам: [email protected]
Copyright © 2024 vBulletin Solutions, Inc.
Translate: zCarot. Webdesign by DevArt (Fox)
G-gaMe! Team production | Since 2008
Hosted by GShost.net