Инструкция за писане на обучители за 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. Условия за раздаване и всичко останало