Dison Опубликовано 21 апреля, 2015 Поделиться Опубликовано 21 апреля, 2015 (изменено) Всем привет!Мне нужно чтобы скрипт активировался 1 раз а не постоянно.Но плюс туда нужно добавить фильтр, так то все работает незнаю как туда прилепить фильтр[ENABLE]alloc(newmem,2048)label(_money)label(_money2)label(originalcode)label(exit)label(returnhere)registersymbol(_money2)aobscan(aob_money2,8B 88 E8 00 00 00 8B 46 58 3B C8 76 2B 2B C8 89 4E 5C)newmem:cmp dword ptr [eax+00000128],1 //как этот фильтр прикрутить к скрипту, а то данная инструкция использует не один адресcmp dword ptr [_money],1 // Вот это нужно для того чтобы скрипт активировался 1 раз, чтобы не было бесконечного цикла активацииjne originalcodeadd [eax+000000E8],#10000mov [_money],0 // Это отключение, чтобы не было бесконечного цикла активацииoriginalcode:mov ecx,[eax+000000E8]exit:jmp returnhere_money: // метка если 1 активированоdd 0aob_money2:_money2:jmp newmemnopreturnhere:[DISABLE]unregistersymbol(_money2)_money2:mov ecx,[eax+000000E8]dealloc(newmem) Изменено 21 апреля, 2015 пользователем Dison Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 21 апреля, 2015 Поделиться Опубликовано 21 апреля, 2015 cmp dword ptr [_money],1 // Вот это нужно для того чтобы скрипт активировался 1 раз, чтобы не было бесконечного цикла активацииjne originalcodeПосле этой конструкции добавляй фильтр. И да, в конце записи нужных байтов обнуляй флаг, чтобы он отключался. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 21 апреля, 2015 Поделиться Опубликовано 21 апреля, 2015 Попробуй. Но у тебя там тип DWORD, а для метки его многовато, поэтому я выставил 1 байт.ИЛИ - если нужно по горячей клавише выполнять скрипт:(Добавь в таблицу переменную с именем "_money", с типом: 1 байт. Значения: 0 - выполнить скрипт, 1 - запретить выполнение)[ENABLE]alloc(newmem,2048)label(_money)label(_money2)label(originalcode)label(exit)label(returnhere)registersymbol(_money2)aobscan(aob_money2,8B 88 E8 00 00 00 8B 46 58 3B C8 76 2B 2B C8 89 4E 5C)newmem:cmp byte ptr [_money],#1 // Поверяем, активировался-ли скрипт ранееje originalcode // Если равно "1" - скрипт активировался, значит, выполняем оригинальный кодmov byte ptr [_money],#1 // Если не равно "1" - скрипт не активировался, значит выставляем единицу, и продолжаем выполнениеcmp dword ptr [eax+00000128],1 // Без понятия, что ты тут сравниваешьjne originalcode // Выходadd [eax+000000E8],#10000originalcode:mov ecx,[eax+000000E8]exit:jmp returnhere_money: // При активации скрипт выставляем значение равное нулю, что значит - скрипт еще не активировалсяdb 0aob_money2:_money2:jmp newmemnopreturnhere:[DISABLE]_money2:mov ecx,[eax+000000E8]unregistersymbol(_money2) // В твоем скрипте у тебя ошибка с отменой регистрации этой меткиdealloc(newmem)[ENABLE]alloc(newmem,2048)label(_money)label(_money2)label(originalcode)label(exit)label(returnhere)registersymbol(_money2)registersymbol(_money) // Регистрируем метку для горячей клавишиaobscan(aob_money2,8B 88 E8 00 00 00 8B 46 58 3B C8 76 2B 2B C8 89 4E 5C)newmem:cmp byte ptr [_money],#1 // Поверяем, активировался-ли скрипт ранееje originalcode // Если равно "1" - скрипт активировался, значит, выполняем оригинальный кодmov byte ptr [_money],#1 // Если не равно "1" - скрипт не активировался, значит выставляем единицу, и продолжаем выполнениеcmp dword ptr [eax+00000128],1 // Без понятия, что ты тут сравниваешьjne originalcode // Выходadd [eax+000000E8],#10000originalcode:mov ecx,[eax+000000E8]exit:jmp returnhere_money: // При активации скрипт выставляем значение равное нулю, что значит - скрипт еще не активировалсяdb 0aob_money2:_money2:jmp newmemnopreturnhere:[DISABLE]_money2:mov ecx,[eax+000000E8]unregistersymbol(_money) // Отменяем регистрацию метки для горячей клавишиunregistersymbol(_money2) // В твоем скрипте у тебя ошибка с отменой регистрации этой меткиdealloc(newmem) Ссылка на комментарий Поделиться на другие сайты Поделиться
Dison Опубликовано 21 апреля, 2015 Автор Поделиться Опубликовано 21 апреля, 2015 (изменено) После этой конструкции добавляй фильтр. Что-то не выходит, скрипт активируется но не хочет работатьПопробуй. Но у тебя там тип DWORD, а для метки его многовато, поэтому я выставил 1 байт. Не хочет работать, не знаю почему Изменено 21 апреля, 2015 пользователем Dison Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 21 апреля, 2015 Поделиться Опубликовано 21 апреля, 2015 Не хочет работать, не знаю почемуНе хочет работать, скорее всего, из-за твоего сравнения: cmp dword ptr [eax+00000128],1. Что ты там сравниваешь - я не знаю, попробуй закомментировать эту строчку, и если скрипт сработает - значит твой фильтр неверен. P.S. Только не забудь закомментировать следующую строчку после той инструкции: jne originalcode Ссылка на комментарий Поделиться на другие сайты Поделиться
Dison Опубликовано 21 апреля, 2015 Автор Поделиться Опубликовано 21 апреля, 2015 Все разобрался все работает! Спасибо за помощь!!! Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 21 апреля, 2015 Поделиться Опубликовано 21 апреля, 2015 (изменено) NullAlex, в этой строчке mov byte ptr [_money],#1 // Если не равно "1" - скрипт не активировался, значит выставляем единицу, и продолжаем выполнениеты не прав, т.к. скрипт будет выполняться постоянно, а соответственно будет переполнение денюжков. (и скорее всего вылет, если Dison, использует инструкцию, которая часто обращается к адресу. ЗЫ: Я ошибся у NullAlex правильный скрипт, просто не посмотрел значение флага и прыжок (je), а так у нас одинаковые скрипты. Dison, попробуй мой вариант:[ENABLE]alloc(newmem,128)label(_money)label(_money2)label(originalcode)label(returnhere)registersymbol(_money2)aobscan(aob_money2,8B 88 E8 00 00 00 8B 46 58 3B C8 76 2B 2B C8 89 4E 5C)newmem:cmp byte ptr [_money],1 jne originalcodemov byte ptr [_money],0 cmp dword ptr [eax+00000128],1 jne originalcode // так как я не знаю для чего 1 (для наших/или нет -ты об этом не написал), // то поставил jne (но может нужно наоборот je). add [eax+000000E8],#10000originalcode:mov ecx,[eax+000000E8]jmp returnhere_money: db 1 // для метки достаточно byteaob_money2:_money2:jmp newmemnopreturnhere:[DISABLE]_money2:mov ecx,[eax+000000E8]unregistersymbol(_money2)dealloc(newmem) Изменено 21 апреля, 2015 пользователем Garik66 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 21 апреля, 2015 Поделиться Опубликовано 21 апреля, 2015 NullAlex, в этой строчке mov byte ptr [_money],#1 // Если не равно "1" - скрипт не активировался, значит выставляем единицу, и продолжаем выполнениеты не прав, т.к. скрипт будет выполняться постоянно, а соответственно будет переполнение денюжков. (и скорее всего вылет, если Dison, использует инструкцию, которая часто обращается к адресу.Ну чегойта? Читаем скрипт:cmp byte ptr [_money],#1 // Сравниваем значение переменной _money с единицейje originalcode // Если равно единице - выполняем оригинальный кодmov byte ptr [_money],#1 // Если не равно единице - ставим единицу, и добавляем деньгиЧтобы было понятнее, вот:if (_money == 1) { // выполняем оригинальный код} else { _money = 1; // добавляем деньги, т.е. - продолжаем выполнение скрипта}И не забываем, что изначальное значение переменной _money равно нулю, то есть флаг говорит о том, что скрипт еще не был активирован. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 21 апреля, 2015 Поделиться Опубликовано 21 апреля, 2015 (изменено) NullAlex, Я одноразовых скриптов уже переделал КУЧУ. В твоём случае флаг всегда будет равен 1. Поэтому смысла в твоём скрипте во флаге - 0. ЗЫ: Я ошибся у NullAlex правильный скрипт, просто не посмотрел значение флага и прыжок (je), а так у нас одинаковые скрипты. Изменено 21 апреля, 2015 пользователем Garik66 Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость Опубликовано 21 апреля, 2015 Поделиться Опубликовано 21 апреля, 2015 NullAlex, Я одноразовых скриптов уже переделал КУЧУ. В твоём случае флаг всегда будет равен 1. Поэтому смысла в твоём скрипте во флаге - 0.Запусти на выполнение мой скрипт, для начала. Я даже повторюсь: Значение "1" (единица) значит, что скрипт активирован, и что деньги добавлять - не требуется. Значение "0" (ноль) значит, что нужно добавить деньги, но также устанавливаем значение 1, для предотвращения повторного срабатывания инструкции на добавление скрипта. Собственно, это то, чего и хотел Dison: Мне нужно чтобы скрипт активировался 1 раз а не постоянно. Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 21 апреля, 2015 Поделиться Опубликовано 21 апреля, 2015 (изменено) Запусти на выполнение мой скрипт, для начала.Посмотрел твой скрипт, да они у нас одинаковые: я не заметил, что ты поменял jne на je originalcode.У меня флаг по умолчанию равен 1. Изменено 21 апреля, 2015 пользователем Garik66 Ссылка на комментарий Поделиться на другие сайты Поделиться
Dison Опубликовано 21 апреля, 2015 Автор Поделиться Опубликовано 21 апреля, 2015 Xipho NullAlex Garik66 Все работает. Garik66 - Плюсанул Спасибо за помощь!!! Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения