Защита Трейнера
-
Понял что мне нужно дло полного эффекта.
Нужна помощь с этим скриптом[ENABLE] aobscanmodule(Step1,Tutorial-i386.exe,81 BB B0 04 00 00 E8 03 00 00) // should be unique alloc(newmem,$1000) label(code) label(return) label(flag) registersymbol(Step1) registersymbol(flag) newmem: cmp [flag],0 je code mov [ebx+000004B0],#1000 code: cmp [ebx+000004B0],000003E8 jmp return flag: dd 0 Step1: jmp newmem db 90 90 90 90 90 return:
Задача такая написать этот ассемблер код в луа без ENABLE , DISABLE чтоб всегда был включен всякий раз когда се подключается к процессу
скрипт подключение к процессу писать не надо (у меня есть уже такой скрипт), а активация деактивация будет из таблицы флагами которые в этом скрипте -
Пользователь @Pitronic написал в Защита Трейнера:
Задача такая написать этот ассемблер код в луа без ENABLE , DISABLE чтоб всегда был включен всякий раз когда се подключается к процессу
Здесь пример из документации
Здесь модифицированный пример
local scriptStr = [[ [ENABLE] {$lua} print('>ENABLE') {$asm} [DISABLE] {$lua} print('>DISABLE') {$asm} ]] local enabledOk, disableInfo = autoAssemble(scriptStr) if enabledOk then print('>The auto assembler script was enabled successfully.') else print('>There was an error enabling the auto assembler script.') end print(disableInfo) local disabledOk = autoAssemble(scriptStr, disableInfo) if disabledOk then disableInfo = nil print('>The auto assembler script was disabled successfully.') else print('>There was an error disabling the auto assembler script.') end
Здесь результат
ENABLE
The auto assembler script was enabled successfully.
DISABLE
The auto assembler script was disabled successfully.Я думаю, что тут все понятно. И сделать под твою задачу будет просто
-
Я как понял это скрипт в таблицу, мне не это надо мне в панель луа, именоо от туда переносится всё в файл с расширением lua чтоб в таблице только флаги были. У меня получился вариант влада. Скрипта lua в форме нет зато скрипты асм бери не хочу. вот сюда https://i.ibb.co/HCNNvZ4/lua.jpg мне надо скрипт асм написать
-
Пользователь @Pitronic написал в Защита Трейнера:
Я как понял это скрипт в таблицу
Этот скрипт не в таблицу. Ты можешь писать свои флаги здесь
local scriptStr = [[ [ENABLE] // здесь твой флаг [DISABLE] // здесь твой флаг ]] local enabledOk, disableInfo = autoAssemble(scriptStr) if enabledOk then print('>The auto assembler script was enabled successfully.') else print('>There was an error enabling the auto assembler script.') end print(disableInfo) local disabledOk = autoAssemble(scriptStr, disableInfo) if disabledOk then disableInfo = nil print('>The auto assembler script was disabled successfully.') else print('>There was an error disabling the auto assembler script.') end
-
Пользователь @MasterGH написал в Защита Трейнера:
// здесь твой флаг
Сюда писать АА скрипт? Если не так понял напиши вот этот скрипт в месте с твоим, без DISABLE отключатся включатся будут флагами. ```
[ENABLE]
aobscanmodule(Step1,Tutorial-i386.exe,81 BB B0 04 00 00 E8 03 00 00) // should be unique
alloc(newmem,$1000)
label(code)
label(return)
label(flag)
registersymbol(Step1)
registersymbol(flag)
newmem:
cmp [flag],0
je code
mov [ebx+000004B0],#1000
code:
cmp [ebx+000004B0],000003E8
jmp return
flag:
dd 0
Step1:
jmp newmem
db 90 90 90 90 90
return: -
У меня другая версия CE
local aa_script = [[aobscanmodule(INJECT,Tutorial-x86_64.exe,29 93 90 07 00 00) // should be unique alloc(newmem,$1000,"Tutorial-x86_64.exe"+2B2D7) alloc(newmem2,$1000,"Tutorial-x86_64.exe"+2B2D7) registersymbol(flag) label(code) label(return) newmem2: flag: dd 0 newmem: code: sub [rbx+00000790],edx jmp return INJECT: jmp newmem nop return: registersymbol(INJECT)]] autoAssemble(aa_script)
-
как я понял в метку newmem2 можно писать неограниченное число переменных. Я правильно понял?
-
Да, можно. Скорее всего, желательно для флагов отдельную память делать. Чтобы флаги были выровнены по адресам и не смешивались с опкодами. Можно, этого и не делать. На твое усмотрение.
-
Попробовал этот вариант выскакивает такая ошибка![ошибка
Где я напортачил? Или в коде ошибка, либо чегото не хватает?
Вот мой скрипт.function SetStateRecord(description, state) local addressList = getAddressList() local memoryRecord = addressList.getMemoryRecordByDescription(description) memoryRecord.Active = state end timerAutorun = createTimer(nil,true) timerAutorun.Interval = 1000 timerAutorun.OnTimer = function () if (getProcessIDFromProcessName("game.exe")~=nil) then OpenProcess("game.exe") end if (getProcessIDFromProcessName("engine.exe")~=nil) then OpenProcess("engine.exe") end if (getProcessIDFromProcessName("PetShowCraze.exe")~=nil) then OpenProcess("PetShowCraze.exe") end if (getProcessIDFromProcessName("Pet Show Craze.exe")~=nil) then OpenProcess("Pet Show Craze.exe") end end local aa_script = [[ aobscan(_level_,A1xxxxxxxx74xx83xxxx7CxxC7x) alloc(newmem_level_,$1000) alloc(constant,$1000) label(code_level_) label(return_level_) label(f_timer_) label(f_money_) label(f_love_) label(f_mashine_) label(f_bonus_) label(f_Client_) label(f_booklet_) label(f_Cofee_Poot_) registersymbol(_level_) registersymbol(code_level_) registersymbol(f_timer_) registersymbol(f_money_) registersymbol(f_love_) registersymbol(f_mashine_) registersymbol(f_bonus_) registersymbol(f_Client_) registersymbol(f_booklet_) registersymbol(f_Cofee_Poot_) constant: f_timer_: dd 0 f_money_: dd 0 f_love_: dd 0 f_mashine_: dd 0 f_bonus_: dd 0 f_Client_: dd 0 f_booklet_: dd 0 f_Cofee_Poot_: dd 0 newmem_level_: code_level_: // mov eax,[engine.exe+224B10] readmem(_level_,5) jmp return_level_ _level_: jmp newmem_level_ return_level_:
Код не писал только чистый код, метки и флаги.
-
Судя по названию ошибки нет закрывающих скобок для текста.
local aa_script =
[[
Здесь текст
]] -
У тебя какая версия се? На случай если опять будут ошибки, или не будет работать, я просто сделаю скрипт на туториале и скины табличку сюда, ты исправишь и вернёшь рабочий вариант, а у меня будет рабочий шаблон.
-
Попробовал, ошибка уже не выскакивает. Но скрипт не активируется это видно по адресам флагов которые я добавил в таблицу. одни вопросы, а если скрипт бы сработал были бы нули, вы на какой версии се? Сделаю на туториале табличку скину вам. Вы поправите чтоб я видел как правильно.
-
вот мой скрипт
function SetStateRecord(description, state) local addressList = getAddressList() local memoryRecord = addressList.getMemoryRecordByDescription(description) memoryRecord.Active = state end timerAutorun = createTimer(nil,true) timerAutorun.Interval = 5000 timerAutorun.OnTimer = function () if (getProcessIDFromProcessName("game.exe")~=nil) then OpenProcess("game.exe") end if (getProcessIDFromProcessName("engine.exe")~=nil) then OpenProcess("engine.exe") end if (getProcessIDFromProcessName("PetShowCraze.exe")~=nil) then OpenProcess("PetShowCraze.exe") end if (getProcessIDFromProcessName("Pet Show Craze.exe")~=nil) then OpenProcess("Pet Show Craze.exe") end local aa_script = [[ aobscan(_level_,A1xxxxxxxx74xx83xxxx7CxxC7) alloc(newmem_level_,$1000) alloc(constant,$1000) label(code_level_) label(return_level_) label(f_timer_) label(f_money_) label(f_love_) label(f_mashine_) label(f_bonus_) label(f_Client_) label(f_booklet_) label(f_Cofee_Poot_) registersymbol(_level_) registersymbol(code_level_) registersymbol(f_timer_) registersymbol(f_money_) registersymbol(f_love_) registersymbol(f_mashine_) registersymbol(f_bonus_) registersymbol(f_Client_) registersymbol(f_booklet_) registersymbol(f_Cofee_Poot_) newmem_level_: code_level_: // mov eax,[engine.exe+224B10] readmem(_level_,5) jmp return_level_ constant: f_timer_: dd 0 f_money_: dd 0 f_love_: dd 0 f_mashine_: dd 0 f_bonus_: dd 0 f_Client_: dd 0 f_booklet_: dd 0 f_Cofee_Poot_: dd 0 _level_: jmp newmem_level_ return_level_: ]]
что там не так?
-
Кажется понял почему не работает посмотрев внимательней ваш скрипт. Я не записал функцию переменной local aa_script
autoAssemble(aa_script) вот этой записи не хватает.
Я прав? -
Наверно CE у меня 6.8.3 была на старом ноуте, с которого писал. А сейчас я с телефона, уставший с работы. С 8ми утра кодили до позднего вечера. Позже, наверно, напишу, как отдохну. Можешь написать больше вопросов
P.s Пиши, пожалуйста, мне на "ты", а то не удобно себя чувствую.
-
Хорошо. Учту на будущее.
-
это не касается темы защиты трейнера пишу чтоб не создавать новую.
надо исправить этот скриптfunction SetStateRecord(description, state) local addressList = getAddressList() local memoryRecord = addressList.getMemoryRecordByDescription(description) memoryRecord.Active = state end timerAutorun = createTimer(nil,true) timerAutorun.Interval = 5000 timerAutorun.OnTimer = function () if (getProcessIDFromProcessName("game.exe")~=nil) then OpenProcess("game.exe") end if (getProcessIDFromProcessName("engine.exe")~=nil) then OpenProcess("engine.exe") end if (getProcessIDFromProcessName("PetShowCraze.exe")~=nil) then OpenProcess("PetShowCraze.exe") end if (getProcessIDFromProcessName("Pet Show Craze.exe")~=nil) then OpenProcess("Pet Show Craze.exe") end SetStateRecord("Activation", true) \--SetStateRecord("sty", true) \--SetStateRecord("wargus", true) \--SetStateRecord("Activation4", true) \--SetStateRecord("Activation5", true) end
скрипт Activation в таблице активируется в любом случае даже если не присоединился процесс игры,
надо исправить чит скрип Activationт в таблице активировался только тогда когда се присоединяется к процессу игры.
меня бы это не напрягало если бы в этом скрипте в талице не было бы этого кода luacall(PlaySound(findTableFile('Start.wav')))
он сообщает игроку что процесс игры найден приятной игры. Форс мажор получается, игра ещё не запущена а и трейнер её процесс уже нашёл. -
Или я портачу, или в твоём скрипте чегото не хватает. вот таблица, посмотри что там не так
Tutorial-i386.CT -
\-- если процесс не открыт, то подкючиться к нему if (getProcessIDFromProcessName("Pet Show Craze.exe")==nil) then OpenProcess("Pet Show Craze.exe") И здесь останови таймер пока end
Тем самым ты подключишь процесс.
Далее жди события подключения процесса. Как его ждать? Ищем в справке
onOpenProcess(processid):
После подключения вызввай активацию записи
function onOpenProcess(processid) SetStateRecord("Activation", true) end
Попробуй сам расписать на бумаги логику.
Сначала проверяем открыт ли процесс.
Если нет, то открыть его. Перед тем как его открыть, то, наверно, надо подождать события его открытия onOpenProcess(processid), а после этого события активировать запись.Или подожди до вечера пятницы. Как дома буду запущу ce 7.5. За 5 минут разберешься.
Я сейчас, пока не могу ответить нормально без cheat engibe с телефона
-
@Pitronic посмотрю завтра