Инструкция за писане на обучители за DMA-DMA и игри

В тази статия ще се спра писането на обучаващия (trainer'a) за играта. В Runet много малко информация по този въпрос, но за писането на DMA-обучители, аз не намирам нищо (може да бъде, разбира се, изглеждат зле), но в тържествена клетва бе отделено на процеса на мен писмено, че при завършването й - ще напиша нормалната урока по тази тема. Исках да напиша урок, който ще засегне еднакво както в теорията и търсене на показалеца и пишат свои треньори.

Основната част, възнамерявам да го посветя DMA игри.

Така че това, което ви е нужно:

- език за програмиране. Отивам да използвате Delphi за примери. По принцип можете да използвате всеки - да се работи с процеса на паметта, ние се нуждаем само WinAPI функции.

- ArtMoney вид на програмата (за да търсят ценности в паметта). Настоятелно препоръчваме TSearch (въпреки факта, че тя тежи метра и половина), ще бъдат използвани в примерите.

- Debugger. Отново препоръчвам TSearch - то съдържа прост и интуитивен дебъгер, което е достатъчно. Ако имате SoftICE и знаете как да го използвате - знамето в ръцете си.

- Минимално владеене на асемблер, като цяло (поне теоретично) представа за отстраняване на грешки, устройство с памет.

1. Малко теория:

Pro регистър, за това, което е вътре в комина, и т.н. Нямам намерение да се каже. За да направите това, има книги, посветени на асемблер (най-общо казано, тези въпроси по един или друг засегнат по някакъв учебник по всеки език за програмиране посока).

Сега, за да практикуват.

3. DMA игри - Търсене на показалеца.

Думи, разбира се, е добра, но примерите за всяко проучване отива по-добри.

Така че, ние открихме указател. Може би това е най-трудният етап.

4. Писане треньор.

За четене и писане в паметта, ще използваме два WinAPI функция - ReadProcessMemory и WriteProcessMemory. (Всичко е лесно)

4.1. Треньор за не-DMA игри.

Да вземем например стария DOS-ovsky играчка Raptor: Покана от сенките.

4.2. Писане треньор на DMA-игри.

процедура TForm1.Button1Click (Sender: TObject);
започвам
WindowName: = FindWindow (нула, WindowTitle);
Ако WindowName = 0, тогава
започвам
MessageDlg ( "Играта трябва да се работи за обучаващия Пусни го, а след това треньор.", Mtwarning, [mbOK], 0);
приключи;
ThreadId: = GetWindowThreadProcessId (WindowName, @ ProcessId);
HandleWindow: = OpenProcess (PROCESS_ALL_ACCESS, False, ProcessId);

Също така е добра идея е да се използват клавишни комбинации. Темата на борбата с ДМА не е включена, така че всичко е на вкус на читателя.

4.3. Общи бележки

Напомням ви, че:
байт е 1 байт (8 бита е)) - брой на 0-255.
Думата е 2 байта - номер 0-65535.
DWORD е 4 байта - число между 0 и 4294967295.

Ето описание на всички използвани WinAPI функции, аз считам че не е необходимо, така че, ако проявявате интерес - виж себе си MSDN.

Е, това е всичко. Треньор и писмени работи (поне така се надявам), то остава само да ви пожелая късмет в този труден случай :)

6. Някои резервации

** - Смело замества стойността в FFFFFFFFh. Това е пътуване за SimCity 4, но като цяло да има последствия. (Стойността може да бъде 4 байта, но тази цифра не може да получи в съответствие, да се измъкнем от екрана и дори някак zaglyuchit), като цяло, е по-добре да не бъдете алчни)

7. За контакти и връзки

съобщения за грешки и неточности също са добре дошли.

Ако това - Google, за да помогне.

8. Условия за раздаване и всичко останало