Перейти к содержанию

Plugin AA Maker (создание АА скриптов)


Рекомендуемые сообщения

Что то не работает.

Создает скрипт так:


[ENABLE]
alloc(newMem, 2048)
label(returnHere)

newMem:

??
??
??
??
??
jmp returnHere

00000000:
jmp newMem
returnHere:

[DISABLE]
00000000:
??
??
??
??
??

dealloc(newMem)

Поправил, все работает =)

Плагин: aamaker_2.2.3.7z

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

Новости. Справочное руководство в черновом варианте готово. Функции окна AA Maker Window описаны (+ скриншоты), редактирование шаблонов в aamaker.lua описано + пример. Завтра вечером начну собирать в chm и повторную проверку всего chm документа.

Ссылка на комментарий
Поделиться на другие сайты

Вопросик.. Кто пользуется типом "Soft" в проверочных байтах? Просто хочу убрать этот пункт, т.к. считаю, что достаточно будет типа "Hard"..

Ссылка на комментарий
Поделиться на другие сайты

Я не против. У меня к сожалению мало собранных сведений какой способ наиболее гибкий.

У софт сигны могут быть проблемы.

1. При использовании софт сигны нет механизмов с автоматической инъекцией кода (через ран тайм дизассемблирование и построении АА-кода в ран тайм). Этого механизма нет - потенциал не раскрыт.

2. Первые несколько байт сигны должны (или не должны по какой-то проверке) быть "жесткими", т.к. инъекция кода (см. пункт 1) задаётся жестко. Снова потенциал не раскрыт.

3. Если и задать несколько первых байт сигны жесткими, то я подозреваю многого этого не даст. Лишние сложности

4. Софт сигна на мой вгляд очень плохо живет с жесткой инъекций кода, которая задаётся АА-скрптами.

Учитывая 4-ре пункта, софт сигну наверно можно убрать. Это лично мое мнение.

Ссылка на комментарий
Поделиться на другие сайты

Версия 2.3!

- убрал тип поиска в aob 'soft' ибо бесполезен и врядли понадобится

- полностью переписан алгоритм aobscan'а! Теперь поиск происходит в разы быстрее! Если раньше он составлял секунд 6-10 на длинных строках байт, то теперь он всего 1-2 секунды (в зависимости от компьютера)

- добавлено отображение проверочных байтов в GetSignatureInfo

Чит AOBScan корректно находит минимальный уникальный кусок байтов. Если выделяется несколько строк кода, то этим задается минимум для поиска строки байт (в определенных ситуациях этим можно ускорить поиск нужных байтов).

Сам плагин: aamaker_2.3.zip

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

DB тоже добавил aobscan инъекцию и скрипт выглядит вот так

{ Game : cheatengine-i386.exe

Version:

Date : 2013-07-21

Author : Sergant

This script does blah blah blah

}

[ENABLE]

aobscanmodule(INJECT,cheatengine-i386.exe,C6 05 B0 59 86 00 00) // should be unique

alloc(newmem,$1000)

label(code)

label(return)

newmem:

code:

mov byte ptr [cheatengine-i386.exe+4659B0],00

jmp return

INJECT:

jmp code

nop

nop

return:

registersymbol(INJECT)

[DISABLE]

INJECT:

db C6 05 B0 59 86 00 00

unregistersymbol(INJECT)

dealloc(newmem)

{

// ORIGINAL CODE - INJECTION POINT: "cheatengine-i386.exe"+463810

"cheatengine-i386.exe"+4637F8: 00 - mov ax,[cheatengine-i386.exe+4655F0]

"cheatengine-i386.exe"+4637FD: 00 - mov byte ptr [cheatengine-i386.exe+6929E0],al

"cheatengine-i386.exe"+463802: C3 - ret

"cheatengine-i386.exe"+463803: 00 - add [eax],al

"cheatengine-i386.exe"+463805: 00 - add [eax],al

"cheatengine-i386.exe"+463807: 00 - add [eax],al

"cheatengine-i386.exe"+463809: 00 - add [eax],al

"cheatengine-i386.exe"+46380B: 00 - add [eax],al

"cheatengine-i386.exe"+46380D: 00 - add [eax],al

"cheatengine-i386.exe"+46380F: 00 - db 00 // SHORTENED TO HIT INJECTION FROM: add dh,al

// ---------- INJECTING HERE ----------

"cheatengine-i386.exe"+463810: 00 - mov byte ptr [cheatengine-i386.exe+4659B0],00

// ---------- DONE INJECTING ----------

"cheatengine-i386.exe"+463817: FF - call cheatengine-i386.exe+4637D0

"cheatengine-i386.exe"+46381C: 00 - mov eax,cheatengine-i386.exe+6929D0

"cheatengine-i386.exe"+463821: FF - call cheatengine-i386.exe+12EF0

"cheatengine-i386.exe"+463826: C3 - ret

"cheatengine-i386.exe"+463827: 00 - add [eax],al

"cheatengine-i386.exe"+463829: 00 - add [eax],al

"cheatengine-i386.exe"+46382B: 00 - add [eax],al

"cheatengine-i386.exe"+46382D: 00 - add [eax],al

"cheatengine-i386.exe"+46382F: FF - add bh,bh

"cheatengine-i386.exe"+463831: FF - db -01

}

а в AA Maker так

[ENABLE]

aobscan(address0, C6 05 B0 59 86 00 00)

alloc(newMem, 2048)

label(returnHere)

registersymbol(address0)

newMem:

mov byte ptr [008659B0],#100

jmp returnHere

address0:

jmp newMem

nop

nop

returnHere:

[DISABLE]

address0:

mov byte ptr [008659B0],00

dealloc(newMem)

unregistersymbol(address0)

А зачем скрипт сам ставит

"mov byte ptr [008659B0],#100"

Может я не простую инъекцию хочу сделать или там число не 100, или тип другой ?

Как по мне, так заменить эту строку на "//ваш чит" или, что-то в этом роде

Ссылка на комментарий
Поделиться на другие сайты

>> DB тоже добавил aobscan инъекцию и скрипт выглядит вот так

А где это добавлено, я что-то не вижу. А функция aobscanmodule разве входит в АА. Я думал, эта функция только в Lua.

>>Может я не простую инъекцию хочу сделать или там число не 100, или тип другой ?

>>Как по мне, так заменить эту строку на "//ваш чит" или, что-то в этом роде

Я думаю сделано все правильно. Для новичков самое-то. Для других случаев специально сделаны шаблоны внутри aamaker.lua.

Нужно удалить строку ->>cheatCode


AACodeTemplate = [[
[ENABLE]
alloc(newMem, 2048)
label(returnHere)
newMem:
->>cheatCode
jmp returnHere
->>address:
jmp newMem
->>nops
returnHere:
[DISABLE]
->>address:
->>originalCode
dealloc(newMem)
]]
AOBSCANCodeTemplate = [[
[ENABLE]
aobscan(->>signatureAddress, ->>arrayOfbyte)
alloc(newMem, 2048)
label(returnHere)
registersymbol(->>signatureAddress)
newMem:
->>cheatCode
jmp returnHere
->>signatureAddress:
jmp newMem
->>nops
returnHere:
[DISABLE]
->>signatureAddress:
->>originalCode
dealloc(newMem)
unregistersymbol(->>signatureAddress)
]]

По поводу копирайтов внутри разметки - их можем сделать. Пример из будущей справки редактируя шаблоны

/*

ScriptName: ...

Author: MasterGH

Date: ]]..os.date('%x')..[[

*/

3.5.2 Примеры редактирования шаблонов:

Пример. Изменение шаблона SimpleCodeTemplate.

SimpleCodeTemplate = [[

[ENABLE]

->>address:

->>cheatCode

[DISABLE]

->>address:

->>originalCode

]]

Задача. Вставка поля для названия скрипта, имени автора, текущей даты и немного форматированный текст

Решение:

function GetRightCaptionFromAuthorMasterGH()

local sTemplate = [[

/*

ScriptName: ...

Author: MasterGH

Date: ]]..os.date('%x')..[[

*/

]]

return sTemplate

end

SimpleCodeTemplate = [[

]]..GetRightCaptionFromAuthorMasterGH()..[[

[ENABLE]

->>address:

->>cheatCode

[DISABLE]

->>address:

->>originalCode

]]

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

aobscanmodule не только для lua, на форуме ещё до 6.3 Final были примеры.

А саму эту опцию DB добавил в 2000 ревизии (начиная с 1974 ревизии, по моим подсчётам, начинается уже 6.3+)

Ссылка на комментарий
Поделиться на другие сайты

ANT' timestamp='1374425203' post='15070']

А зачем скрипт сам ставит

"mov byte ptr [008659B0],#100"

Может я не простую инъекцию хочу сделать или там число не 100, или тип другой ?

Как по мне, так заменить эту строку на "//ваш чит" или, что-то в этом роде

К сведению, и значение, и тип значения спокойно можно изменить в окне AA Maker Window;

Ну а автоматическое создание читов исправлю в следующей версии плагина :ninja:

  • Плюс 1
Ссылка на комментарий
Поделиться на другие сайты

  • 2 года спустя...

Оказывается MasterGH продолжает работу над плугином (уже и для СЕ 6.5 есть) - СПАСИБО ЕМУ ОГРОМНОЕ!!!

 

ВСЕМ - срочно качать :-D : [spoiler=ТЫК]http://forum.gamehacklab.ru/files/file/329-ce-plugin-aa-maker/

Качать пока рано.


aobscan для версий игр 64 работает не правильно, проверял на Cheat Engine tutorial (64-bit).

работает корректно, т.е. делает прыжок на инъекцию при включении скрипта, и возвращает код назад при выключении скрипта.

делает прыжок не пойми куда при активации и ломает код игры при деактивации скрипта.

{ Game   : Tutorial-x86_64.exe  Version:   Date   : 2016-01-31  Author : Garik66  This script does blah blah blah}[ENABLE]aobscanmodule(TestCE6_5Tut64,Tutorial-x86_64.exe,81 BB 90 07 00 00 E8 03 00 00) // should be uniquealloc(newmem,$1000,"Tutorial-x86_64.exe"+2AA99)label(code)label(return)newmem:code:  mov [rbx+00000790],000003E8  cmp [rbx+00000790],000003E8  jmp returnTestCE6_5Tut64:  jmp code  nop  nop  nop  nop  nopreturn:registersymbol(TestCE6_5Tut64)[DISABLE]TestCE6_5Tut64:  db 81 BB 90 07 00 00 E8 03 00 00unregistersymbol(TestCE6_5Tut64)dealloc(newmem){// ORIGINAL CODE - INJECTION POINT: "Tutorial-x86_64.exe"+2AA99"Tutorial-x86_64.exe"+2AA83: C3                             -  ret "Tutorial-x86_64.exe"+2AA84: 00 00                          -  add [rax],al"Tutorial-x86_64.exe"+2AA86: 00 00                          -  add [rax],al"Tutorial-x86_64.exe"+2AA88: 00 00                          -  add [rax],al"Tutorial-x86_64.exe"+2AA8A: 00 00                          -  add [rax],al"Tutorial-x86_64.exe"+2AA8C: 00 00                          -  add [rax],al"Tutorial-x86_64.exe"+2AA8E: 00 00                          -  add [rax],al"Tutorial-x86_64.exe"+2AA90: 53                             -  push rbx"Tutorial-x86_64.exe"+2AA91: 48 8D 64 24 E0                 -  lea rsp,[rsp-20]"Tutorial-x86_64.exe"+2AA96: 48 89 CB                       -  mov rbx,rcx// ---------- INJECTING HERE ----------"Tutorial-x86_64.exe"+2AA99: 81 BB 90 07 00 00 E8 03 00 00  -  cmp [rbx+00000790],000003E8// ---------- DONE INJECTING  ----------"Tutorial-x86_64.exe"+2AAA3: 75 38                          -  jne Tutorial-x86_64.exe+2AADD"Tutorial-x86_64.exe"+2AAA5: 48 8B 8B 60 07 00 00           -  mov rcx,[rbx+00000760]"Tutorial-x86_64.exe"+2AAAC: BA 01 00 00 00                 -  mov edx,00000001"Tutorial-x86_64.exe"+2AAB1: 48 8B 83 60 07 00 00           -  mov rax,[rbx+00000760]"Tutorial-x86_64.exe"+2AAB8: 48 8B 00                       -  mov rax,[rax]"Tutorial-x86_64.exe"+2AABB: FF 90 40 04 00 00              -  call qword ptr [rax+00000440]"Tutorial-x86_64.exe"+2AAC1: 48 8B 8B 80 07 00 00           -  mov rcx,[rbx+00000780]"Tutorial-x86_64.exe"+2AAC8: BA 00 00 00 00                 -  mov edx,00000000"Tutorial-x86_64.exe"+2AACD: 48 8B 83 80 07 00 00           -  mov rax,[rbx+00000780]"Tutorial-x86_64.exe"+2AAD4: 48 8B 00                       -  mov rax,[rax]} 
[ENABLE]aobscan(address0, 81xxxxxxxxxxxxxxxxxx75xx48xxxxxxxxxxxxbaxxxxxxxx48xxxxxxxxxxxx48xxxxffxxxxxxxxxx48xxxxxxxxxxxxbaxxxxxxxx48xxxxxxxxxxxx48xxxxffxxxxxxxxxxxx48xxxxxxxxxxxx00xx00xx00xx00xx00xx00xxxx8dxxxxxx48xxxx48xxxx48)alloc(newMem, 2048)label(returnHere)registersymbol(address0)newMem:mov [rbx+00000790],000003E8cmp [rbx+00000790],000003E8jmp returnHereaddress0:jmp newMemdb 90 90 90 90 90returnHere:[DISABLE]address0:db 81 BB 90 07 00 00 E8 03 00 00unregistersymbol(address0)dealloc(newMem) 
Изменено пользователем Garik66
Ссылка на комментарий
Поделиться на другие сайты

Цель - сделать генерацию АА надежной, простой, легкой и гибкой с любой своей разметкой отступов, положением меток, наличием/отсутствием заголовка, наличием/отсутствием  "INJECTION POINT".
 
Те кто заинтересован, пишите о других ошибках (например появляющихся на 32-х разрадядном процессе) и пишите о предложениях.
 
По плану


1. Убрать маску "xx" в сигне, т.к. это даже дает больше вреда. Я делал эту маску для другого другого типа инъекции, когда регистры отличаются, а байткод команды один и тот же. Но эту штуку еще делать рано. Убрать это дело, это ускорит поиск сигнатуры и укоротит её.
 
2. Исправить ошибку выше.
 
3. Использовать aobscanmodule
 
4. Использовать комментарии заголовка типа этого
{ Game : Tutorial-x86_64.exeVersion:Date : 2016-01-31Author : Garik66This script does blah blah blah}

5. Использовать комментарии оригинального кода под  "// ORIGINAL CODE - INJECTION POINT"
 
6. Новые теги в разметке
 
7. ГУИ выбора разметки, редактирование, создание, удаления. Файл пользовательских настроек (существующих разметки, выбранная разметка), файлы пользовательских разметок.
 
У каждого может быть свой шаблон генерации АА кода, тот, который будет удобен с особенными отступами, положениями меток и другой информации. 



SnedS91, если ты еще заинтересован в улучшении плагина и хочешь его улучшить, пиши в личку.

Если будешь пользоваться репозиторием, то зарегся на БитБакед для контроля версии исходника.
 

Изменено пользователем MasterGH
Ссылка на комментарий
Поделиться на другие сайты

Awesome work, guys. I expanded on the templates a bit. I apologize for any errors.

 

Download Here

 

24611287772_2d9617e949_o.png

24433542500_324e5380f0_o.png

24433542470_ef03e6c2a2_o.png

24611288722_f6cc25087d_b.jpg

24648968761_8b5247bfe8_o.png

24374828459_35d38d7867_b.jpg

NullAlex: Pictures must be removed under the spoiler tag. It's the main rule of our forum.

Изменено пользователем NullAlex
  • Плюс 3
Ссылка на комментарий
Поделиться на другие сайты

Awesome work, guys. I expanded on the templates a bit. I apologize for any errors.

 

METHOS, отличная работа.

Но мне показалось, что убрана основная фишка Plugin AA Maker - нахождение наиболее уникальных байт, т.е. в сигнатуру раньше вставлялись только байты опкодов, а регистры и адреса заменялись на XX. Хотя может быть эта фишка и не нужна.

 

PS: Если кто знает английский - переведите моё сообщение пожалуйста. 

Изменено пользователем Garik66
Ссылка на комментарий
Поделиться на другие сайты

offtopic.gif

Он сказал так:

Dison, ты меня не понял ;) . Что он написал - я понял. :)

Я попросил перевести моё сообщение. Поправил предыдущее сообщение.

Ссылка на комментарий
Поделиться на другие сайты

METHOS,

But it seemed to me that the main feature removed Plugin AA Maker - finding the most unique bytes, ie in the signature is inserted only before the opcode byte and the registers and addresses were replaced by XX. Although this feature is not necessary.

ЗЫ: вывод формы скрипта поправить под себя не так сложно. Я себе dealloc(newMem)  опустил в самый низ скрипта.

NullAlex сенк.

Ссылка на комментарий
Поделиться на другие сайты

Garik66-

I agree that while my additions are not necessary, expanding on this plugin is important. CE has a powerful array of byte scanner already integrated, so reinventing the wheel is not necessary. Expanding on this feature to intelligently include wildcards would be good, however.

 

I think the advantage of a plugin like this, aside from the customization features, is the automation and efficiency that it offers. As SnedS91 mentioned in a previous post, incorporating universal templates for scripts like teleport, vacuum and fly mode et al. are all possible with this plugin. If all that is needed is to add a conditional jump for your filter or nop a function that handles gravity etc., this will save a lot of time and simply the process for many users.  :)

 

P.S. Sorry about the pictures in my previous post and sorry for typing in English. Thank you for this plugin.

Ссылка на комментарий
Поделиться на другие сайты

Awesome work, guys. I expanded on the templates a bit. I apologize for any errors.

 

^_^ We are waiting for you! ))

 

Very nice. I like it and I've updated the repository. ;)

METHOS, отличная работа.

Но мне показалось, что убрана основная фишка Plugin AA Maker - нахождение наиболее уникальных байт, т.е. в сигнатуру раньше вставлялись только байты опкодов, а регистры и адреса заменялись на XX. Хотя может быть эта фишка и не нужна.

 

PS: Если кто знает английский - переведите моё сообщение пожалуйста. 

 

Это актуально, когда имеем дело с опкодами jmp, je,jne и другими прыжками, а также call опкодами. После опкода команды по base relocation могут меняться смещения. Я точно не знаю, меняются ли они в exe (т.е. в регионах памяти Image типа). Я попробовал запускать приложения, не менялись. А вот в dll-ках ступудов будут меняться (хотя надо проверить, может я путаю). Но, если сигну делать подальше от этих прыжков и вызово, то все Ok.

 

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

 

offtopic.gif Я на работе ничего не успеваю, начальник делает замечания. У меня нет времени не то, что на хобби, даже на отдых. Пост пишу, а хотел вообще спать лечь. Так, что я вас покидаю, до того как разгребу свой план на работе.
Ссылка на комментарий
Поделиться на другие сайты

Вообще я такую фишку задумывал для продвинутой инъекции,

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

Ссылка на комментарий
Поделиться на другие сайты

Updated plugin to allow 'Testing Bytes' option for AOBScanModule and AOBScanModuleStealth templates.

Отлично!!! Хорошая работа!!! Мне нравится!!!  :-D

Excellent!!! Good job!!! I like!!! :-D

Плюсы - сразу все метки становятся уникальными, а это супер!!!

Plus - once all the labels are unique, and it is super !!!

PS: забыл написать, для версий игр 64 работает правильно:

 

[ENABLE]aobscanmodule(aob_TestMETHOS,Tutorial-i386.exe+23AC3,81xxxxxxxxxxxxxxxxxx75xx8bxxxxxxxxxxb2xx8bxxxxxxxxxx8bxxffxxxxxxxxxx8bxxxxxxxxxxb2xx8bxxxxxxxxxx8bxxffxxxxxxxxxxxxxx00xx00xxxx89)alloc(newmem_TestMETHOS,2048,Tutorial-i386.exe+23AC3)label(originalcode_TestMETHOS)label(returnhere_TestMETHOS)registersymbol(aob_TestMETHOS)//======================================================newmem_TestMETHOS:originalcode_TestMETHOS:cmp [ebx+00000480],000003E8jmp returnhere_TestMETHOS//TestMETHOS_enable://db 0//======================================================aob_TestMETHOS:jmp newmem_TestMETHOSdb 90 90 90 90 90returnhere_TestMETHOS:[DISABLE]dealloc(newmem_TestMETHOS)aob_TestMETHOS:db 81 BB 80 04 00 00 E8 03 00 00unregistersymbol(aob_TestMETHOS) 
[ENABLE]aobscanmodule(aob_TestMETHOS_64,Tutorial-x86_64.exe+2AA99,81xxxxxxxxxxxxxxxxxx75xx48xxxxxxxxxxxxbaxxxxxxxx48xxxxxxxxxxxx48xxxxffxxxxxxxxxx48xxxxxxxxxxxxbaxxxxxxxx48xxxxxxxxxxxx48xxxxffxxxxxxxxxxxx48xxxxxxxxxxxx00xx00xx00xx00xx00xx00xxxx8dxxxxxx48xxxx48xxxx48)alloc(newmem_TestMETHOS_64,2048,Tutorial-x86_64.exe+2AA99)label(originalcode_TestMETHOS_64)label(returnhere_TestMETHOS_64)registersymbol(aob_TestMETHOS_64)//======================================================newmem_TestMETHOS_64:originalcode_TestMETHOS_64:cmp [rbx+00000790],000003E8jmp returnhere_TestMETHOS_64//TestMETHOS_64_enable://db 0//======================================================aob_TestMETHOS_64:jmp newmem_TestMETHOS_64db 90 90 90 90 90returnhere_TestMETHOS_64:[DISABLE]dealloc(newmem_TestMETHOS_64)aob_TestMETHOS_64:db 81 BB 90 07 00 00 E8 03 00 00unregistersymbol(aob_TestMETHOS_64) 
Изменено пользователем Garik66
Ссылка на комментарий
Поделиться на другие сайты

Ребят кто нибудь может рассказать, что делает этот плагин ?

Делает много, самое главное это наиболее уникальная сигнатура и возможность сделать индивидуальный шаблон скриптов, открой плагин с помощью например Notepad++ - там всё понятно, особенно, если знаешь LUA.

 

Или где то можно про него прочитать ?

Здесь, т.е. в этой же теме, если не поленишься, почитай всю тему с самого начала. 

Авторы плагина - MasterGH и SnedS91 - можешь им задать вопросы, правда SnedS91 я давно не видел на форуме.

Ссылка на комментарий
Поделиться на другие сайты

  • Garik66 закрепил тема
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.