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

Авто отключения скрипта AA Cheat Engine

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

Скрипт:

Спойлер

{ Game   : Tutorial-i386.exe
  Version: 
  Date   : 2018-03-27
  Author : Garik66

  This script does blah blah blah
}

[ENABLE]
{$LUA}
memrec=getAddressList().getMemoryRecordByID("1")
memrec.color = 0x0008000
PlaySound(findTableFile([[Activate]]))
timer = createTimer(true)
timer:setInterval(100)
timer.OnTimer = function()
  sleep "10000"
  if memoryrecord_isActive(memrec) then
    memoryrecord_unfreeze(memrec)
    memrec.color = 0x00000ff
    PlaySound(findTableFile([[Deactivate]]))
  end
end

{$ASM}
aobscanmodule(INJECT,Tutorial-i386.exe,81 BB 80 04 00 00 E8 03 00 00) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
registersymbol(INJECT)

newmem:

code:
  cmp [ebx+00000480],000003E8
  jmp return

INJECT:
  jmp newmem
  db 90 90 90 90 90
return:

[DISABLE]
{$LUA}
timer:setEnabled(false)

{$ASM}
INJECT:
  db 81 BB 80 04 00 00 E8 03 00 00

unregistersymbol(INJECT)
dealloc(newmem)

{
// ORIGINAL CODE - INJECTION POINT: "Tutorial-i386.exe"+23AC3

"Tutorial-i386.exe"+23AB1: E8 0A 9D FE FF                 -  call Tutorial-i386.exe+D7C0
"Tutorial-i386.exe"+23AB6: 5E                             -  pop esi
"Tutorial-i386.exe"+23AB7: 5B                             -  pop ebx
"Tutorial-i386.exe"+23AB8: C9                             -  leave 
"Tutorial-i386.exe"+23AB9: C3                             -  ret 
"Tutorial-i386.exe"+23ABA: 00 00                          -  add [eax],al
"Tutorial-i386.exe"+23ABC: 00 00                          -  add [eax],al
"Tutorial-i386.exe"+23ABE: 00 00                          -  add [eax],al
"Tutorial-i386.exe"+23AC0: 53                             -  push ebx
"Tutorial-i386.exe"+23AC1: 89 C3                          -  mov ebx,eax
// ---------- INJECTING HERE ----------
"Tutorial-i386.exe"+23AC3: 81 BB 80 04 00 00 E8 03 00 00  -  cmp [ebx+00000480],000003E8
// ---------- DONE INJECTING  ----------
"Tutorial-i386.exe"+23ACD: 75 2C                          -  jne Tutorial-i386.exe+23AFB
"Tutorial-i386.exe"+23ACF: 8B 83 68 04 00 00              -  mov eax,[ebx+00000468]
"Tutorial-i386.exe"+23AD5: B2 01                          -  mov dl,01
"Tutorial-i386.exe"+23AD7: 8B 8B 68 04 00 00              -  mov ecx,[ebx+00000468]
"Tutorial-i386.exe"+23ADD: 8B 09                          -  mov ecx,[ecx]
"Tutorial-i386.exe"+23ADF: FF 91 20 02 00 00              -  call dword ptr [ecx+00000220]
"Tutorial-i386.exe"+23AE5: 8B 83 78 04 00 00              -  mov eax,[ebx+00000478]
"Tutorial-i386.exe"+23AEB: B2 00                          -  mov dl,00
"Tutorial-i386.exe"+23AED: 8B 8B 78 04 00 00              -  mov ecx,[ebx+00000478]
"Tutorial-i386.exe"+23AF3: 8B 09                          -  mov ecx,[ecx]
}

 

Видео:

Табличка:

For_Badger.CT

  • Понравилось 3

Поделиться сообщением


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

 sleep "10000" а это как я понимаю задаёться время отключения?

Изменено пользователем Pitronic

Поделиться сообщением


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

У меня не включается, что там не правильно? Или единицу не надо было переименовывать на 22. У меня чит 22 по счёту с верху. Вот мой, а точнее ваш скрипт, с моей редакцией.

Спойлер

[ENABLE]
{$LUA}
memrec=getAddressList().getMemoryRecordByID("22")
memrec.color = 0x0008000
PlaySound(findTableFile([[Activate]]))
timer = createTimer(true)
timer:setInterval(10)
timer.OnTimer = function()
  sleep "1000"
  if memoryrecord_isActive(memrec) then
    memoryrecord_unfreeze(memrec)
    memrec.color = 0x00000ff
    PlaySound(findTableFile([[Deactivate]]))
  end
end

aobscanmodule(GolkaOtkr,larry.exe,89 51 0C C2 04 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
newmem:
mov edx,1
code:
mov [ecx+0C],edx
ret 0004
jmp return
GolkaOtkr:
jmp newmem
nop
return:
registersymbol(GolkaOtkr)

[DISABLE]
{$LUA}
timer:setEnabled(false)
GolkaOtkr:
db 89 51 0C C2 04 00

unregistersymbol(GolkaOtkr)
dealloc(newmem)

 

 

Изменено пользователем Pitronic
Исправление грамматических ошибок

Поделиться сообщением


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

Какую тему интересную снекропостили 😁
@Garik66 , ты написал рабочий скрипт, но он очень сложный как мне кажется, и вот тут например

В 27.03.2018 в 09:43, Garik66 сказал:

timer:setEnabled(false)

таймер не уничтожается, а просто выключается, то есть как элемент он остаётся и занимает место, потому лучше писать timer.destroy(), и для других элементов в CE тоже, если нужно выключить не включая 😊
 

47 минут назад, Pitronic сказал:

У меня не включается


Попробуй вот такую вставку, вставлять можно в любое место в asm скрипте в разделе [ENABLE], всё прокомментировано

Спойлер

{$lua}
memrec = getAddressList().getMemoryRecordByDescription("AA") --поиск по имени скрипта
timer = createTimer(nil, false) --создание выключенного таймера
timer.Interval = 2000 --Время, в милисекундах до отключения
timer.OnTimer = unf --функция исполняемая таймером
timer.Enabled = true --включение таймера

function unf(timer)
 memoryrecord_unfreeze(memrec) --отключение скрипта
 timer.destroy() --уничтожение таймера
end
{$asm}

 

 

Изменено пользователем imaginary
  • Плюс 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
8 часов назад, imaginary сказал:

Попробуй вот такую вставку

Ошибка там какая та, заснял на видео,

Спойлер

 

 

Изменено пользователем Pitronic

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
9 часов назад, imaginary сказал:

поиск по имени скрипта

Кажется понял мою ошибку в этом месте надо было вписать имя из таблицы? Или как? В самом начале видео видно, выскакивает ошибка которая указывает именно на эту строчку. А если нет то какое имя там писать.

Изменено пользователем Pitronic

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, Pitronic сказал:

Кажется понял мою ошибку в этом месте надо было вписать имя из таблицы?

Да, все верно, нужно было вписать имя из таблицы.

  • Понравилось 1

Поделиться сообщением


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

странно теперь опять выдаёт ошибку но теперь я скопировал там имя из таблици, вот скрипт

Спойлер

[ENABLE]
{$lua}
memrec = getAddressList().getMemoryRecordByDescription("Cash") --поиск по имени скрипта
timer = createTimer(nil, false) --создание выключенного таймера
timer.Interval = 2000 --Время, в милисекундах до отключения
timer.OnTimer = unf --функция исполняемая таймером
timer.Enabled = true --включение таймера

function unf(timer)
 memoryrecord_unfreeze(memrec) --отключение скрипта
 timer.destroy() --уничтожение таймера
end
{$asm}
aobscanmodule(Cash,larry.exe,89 51 0C C2 04 00) // should be unique
alloc(newmem,$1000)

label(code)
label(return)
newmem:
mov edx,1
code:
mov [ecx+0C],edx
ret 0004
jmp return
GolkaOtkr:
jmp newmem
nop
return:
registersymbol(Cash)

[DISABLE]

GolkaOtkr:
db 89 51 0C C2 04 00

unregistersymbol(Cash)
dealloc(newmem)

 

Cash у меня и переменная в скрипте и описание в таблице но во второй строке какую указывается в ошибке надпись, {$lua} первый раз добавился без проблем а имя поменял добавляться отказывается, вот скриншот,

Спойлер

OSIBKA-V-STROKE-2.jpg

 

Изменено пользователем Pitronic
Исправление грамматических ошибок

Поделиться сообщением


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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
15 часов назад, Pitronic сказал:

memrec=getAddressList().getMemoryRecordByID("22")

 

В CE 6.7 Можно не искать "memrec" по "ID". memrec  — это ключевое слово в AA скриптах, которое может возвращать nil.

Просто memrec с проверкой на nil:

Спойлер

[ENABLE]
{$lua}
if memrec ~= nil then
   print(memrec.Description)
   memrec.color = 0x0008000
end

{$asm}
[DISABLE]

 

 

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

×

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

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