Alex2411 Опубликовано 21 августа, 2020 Поделиться Опубликовано 21 августа, 2020 Только что, Garik66 сказал: обычный вариант с флагом, наподобие телепорта., т.е сохранить первоначальные значения. нужных адресов тогда будет проблема если забыл отключить через флаг и выключил скрипт то значения не восстановяться и потеряються . иногда я делаю два скрипта вложение в группу когда с начала активируеться один , а только потом второй . Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 21 августа, 2020 Поделиться Опубликовано 21 августа, 2020 1 минуту назад, Alex2411 сказал: тогда будет проблема если забыл отключить через флаг и выключил скрипт то значения не восстановяться и потеряються . иногда я делаю два скрипта вложение в группу когда с начала активируеться один , а только потом второй . Но то. что вы творите в скрипте - у меня на лоб глаза лезут. Выделяете где-то память. Ею не пользуетесь. туда ничего не записываете и потом пытаетесь оттуда прочитать что-то ссылаясь на другое место. Посмотрите свой скрипт повнимательнее. Ссылка на комментарий Поделиться на другие сайты Поделиться
FENIX145 Опубликовано 21 августа, 2020 Автор Поделиться Опубликовано 21 августа, 2020 10 минут назад, Garik66 сказал: А обычный вариант с флагом, наподобие телепорта., т.е сохранить первоначальные значения. нужных адресов, потом записать что тебе нужно и перед отключением скрипта - восстановить, тебя не устроит? Не, Гарик, потому как не удобно это будет, я хочу потом это в тренер завернуть и чтобы не было лишних экшенов. Так то можно конечно это все сделать, но добавиться куча лишней логики не нужной. Да и хочется ведь развиваться и познавать новые возможные подходы. Сам понимаешь Ссылка на комментарий Поделиться на другие сайты Поделиться
Garik66 Опубликовано 21 августа, 2020 Поделиться Опубликовано 21 августа, 2020 1 минуту назад, FENIX145 сказал: Не, Гарик, потому как не удобно это будет, я хочу потом это в тренер завернуть и чтобы не было лишних экшенов. Так то можно конечно это все сделать, но добавиться куча лишней логики не нужной. Да и хочется ведь развиваться и познавать новые возможные подходы. Сам понимаешь Ну тогда включай голову. И посмотри мой видос Спойлер может поможет - как и где сохранить, и что нужно прочитать (readmem) Ссылка на комментарий Поделиться на другие сайты Поделиться
FENIX145 Опубликовано 21 августа, 2020 Автор Поделиться Опубликовано 21 августа, 2020 Только что, Garik66 сказал: может поможет - как и где сохранить, и что нужно прочитать (readmem) ок, спасибо, гляну, но с головой вроде проблем нет. Если человек чего-то не знает, это не значит что у него "выключена" голова Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex2411 Опубликовано 21 августа, 2020 Поделиться Опубликовано 21 августа, 2020 22 минуты назад, Garik66 сказал: Посмотрите свой скрипт повнимательнее. не понял . где я в своем скрипте выделял пмять и не пользуюсь ? ты не чего не путаешь ? Ссылка на комментарий Поделиться на другие сайты Поделиться
FENIX145 Опубликовано 21 августа, 2020 Автор Поделиться Опубликовано 21 августа, 2020 @Alex2411 перепробовал все варианты с readmem но так и не получилось завести, написал на офф сайте, может дарк байт поможет, ошибки на которые ты указал - я поправил, но не знаю как завести скрипт. Он просто не хочет запускаться. Возможно как написала @imaginary придется реализовать это на lua. Но я с lua не знаком от слова совсем, так что придется еще помучиться. Обидно просто весь день потратить так ничего и не добившись. А использовать вариант с флагами - вообще не хочется. Получается что при деактивации скрипта, забыв перевести флаг в 0 состояние к примеру, мы получим то же самое перманентное изменение, чего очень бы не хотелось. В общем грусть, печаль... Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex2411 Опубликовано 21 августа, 2020 Поделиться Опубликовано 21 августа, 2020 36 минут назад, FENIX145 сказал: А использовать вариант с флагами - вообще не хочется. Получается что при деактивации скрипта, забыв перевести флаг в 0 состояние к примеру, мы получим то же самое перманентное изменение, чего очень бы не хотелось. да . я про это отвечал гарику . вообще я в таких случах стараюсь менять не значение в памяти , а регистр куда оно дальше читаеться что бы автоматом возвращало оригинал когда отключаеться скрипт . это надо дольше искать , но за то лучше для игры . при том когда меняешь регистр чтения то меняешь только нужный , а не все подряд как если изменять саму память откуда читают регистры . Ссылка на комментарий Поделиться на другие сайты Поделиться
FENIX145 Опубликовано 21 августа, 2020 Автор Поделиться Опубликовано 21 августа, 2020 (изменено) 10 минут назад, Alex2411 сказал: что бы автоматом возвращало оригинал когда отключаеться скрипт да, я обычно так же делаю, но штука в том что значение статическое и не меняется нигде, в этом то и проблема. Это минимальный, максимальный дамаг оружия... и оно не изменяется. По этому и сижу парюсь. Был бы менее ответственный - установил вон перманентную максималку, а дальше как хочешь Но ведь для себя делаю и хочется по-человечески сделать, может из друзей кто будет использовать. В любом случае надо на совесть сделать. Сейчас с Dark Byte`ом общаюсь, может он что подскажет. Изменено 21 августа, 2020 пользователем FENIX145 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex2411 Опубликовано 21 августа, 2020 Поделиться Опубликовано 21 августа, 2020 Только что, FENIX145 сказал: штука в том что значение статическое и не меняется нигде, в этом то и проблема. Это минимальный, максимальный дамаг оружия... и оно не изменяется это даже лучше что не изменяеться . у тебя какая то инструкция его читает когда стреляешь . куда она прочитала там и поменять . значение дамага в памяти останеться оригинальное , а дальше в регистр или стек ты подсунешь другое и игра будет думать что дамаг максимальный . кстати у тебя в скрипте alloc(newmem,$1000,SUPER_WPN) alloc(original_struct,4096) где второе выделение памяти то же надо бы указать адрес после 4096 . потому что игра 64 бит . Ссылка на комментарий Поделиться на другие сайты Поделиться
FENIX145 Опубликовано 21 августа, 2020 Автор Поделиться Опубликовано 21 августа, 2020 (изменено) 3 минуты назад, Alex2411 сказал: где второе выделение памяти то же надо бы указать адрес после 4096 . потому что игра 64 бит . я уже чего только не указывал, уже 300 раз этот скрипт переписал, но бестолку, дарк байт задал единственный вопрос и пока пропал "are all 4096 bytes starting from the address of STORED_ADDR readable ?" я если честно даже не совсем понимаю его вопрос и как проверить все ли данные у меня доступны для чтения, но на сколько я могу судить - да. Изменено 21 августа, 2020 пользователем FENIX145 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex2411 Опубликовано 21 августа, 2020 Поделиться Опубликовано 21 августа, 2020 5 минут назад, FENIX145 сказал: я если честно даже не совсем понимаю его вопрос ты выделяешь для SAVED_ADDR размер 8 байт dq 0 , а читаешь память от этого адреса в readmem размер 4096 . после этих 8 байт ты знаешь что у тебя находиться в памяти куда обращаеться readmem ? Ссылка на комментарий Поделиться на другие сайты Поделиться
FENIX145 Опубликовано 21 августа, 2020 Автор Поделиться Опубликовано 21 августа, 2020 (изменено) 7 минут назад, Alex2411 сказал: после этих 8 байт ты знаешь что у тебя находиться в памяти куда обращаеться readmem ? понятия не имею, даже не знаю как узнать По логике, там находиться моя структура из RDI и она вся readable. На сколько я могу судить.... Но к сожалению я понятия не имею как посмотреть что храниться в SAVED_ADDR после заполнения PS. Может в дискорд переберемся? Изменено 21 августа, 2020 пользователем FENIX145 Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex2411 Опубликовано 21 августа, 2020 Поделиться Опубликовано 21 августа, 2020 мне кажеться здесь нужно понять что раньше срабатывает . сначала mov [SAVED_ADDR],rdi а потом original_struct: readmem(SAVED_ADDR,4096) или наоборот . если сначала сработает readmem то получаеться он будет пытаться читать из пустого адреса . тогда будет ошибка . Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex2411 Опубликовано 21 августа, 2020 Поделиться Опубликовано 21 августа, 2020 4 минуты назад, FENIX145 сказал: понятия не имею, даже не знаю как узнать поставь для проверки вместо 4096 число 8 . тогда размер будет одинаковый и память точно будет читаемая . Ссылка на комментарий Поделиться на другие сайты Поделиться
FENIX145 Опубликовано 21 августа, 2020 Автор Поделиться Опубликовано 21 августа, 2020 1 минуту назад, Alex2411 сказал: мне кажеться здесь нужно понять что раньше срабатывает . сначала Спойлер [ENABLE] aobscanregion(SUPER_WPN, BoardHUD:Invalidate+615, BoardHUD:Invalidate+666, 48 8B 41 78 48 63 89 10 01 00 00) // should be unique alloc(newmem,$1000,SUPER_WPN) alloc(storedValue,4096) label(code) label(return) registersymbol(SUPER_WPN) registersymbol(STORED_ADDR) registersymbol(storedValue) newmem: push rbx push rdi mov rbx,[rcx+78] mov rdi,[rbx+20] test rdi,rdi jz @F mov [STORED_ADDR+8],rdi mov [rdi+50],#1 mov [rdi+78],#1 mov [rdi+a0],#1 mov [rdi+13c],#9999 mov [rdi+140],#9999 @@: pop rdi pop rbx code: mov rax,[rcx+78] movsxd rcx,dword ptr [rcx+00000110] jmp return STORED_ADDR: dq 0 storedValue: readmem(STORED_ADDR,4096) SUPER_WPN: jmp newmem nop 6 return: [DISABLE] STORED_ADDR: readmem(storedValue,4096) unregistersymbol(STORED_ADDR) SUPER_WPN: db 48 8B 41 78 48 63 89 10 01 00 00 unregistersymbol(SUPER_WPN) dealloc(storedValue) dealloc(newmem) текущий скрипт, чтобы мы смотрели на один энд поинт Касаемо твоего вопроса - я даже не знаю как ответить, почему здесь как во многих языках нет логирования, вывел console.log в обоих кусках кода и увидел кто первый выполнился.... Ссылка на комментарий Поделиться на другие сайты Поделиться
FENIX145 Опубликовано 21 августа, 2020 Автор Поделиться Опубликовано 21 августа, 2020 (изменено) 3 минуты назад, Alex2411 сказал: поставь для проверки вместо 4096 число 8 . тогда размер будет одинаковый и память точно будет читаемая . уже пробовал, никакого эффекта, все та же ошибка, если бы скрипт включался и можно было как-то подебажить это..... Я наверно на сегодня все, 2-ой час ночи, нужно отдыхать, завтра как проснусь зайду на форум, может еще кто имел опыт работы с readmem и подскажет что. В любом случае, еще раз спасибо, Леш. Изменено 21 августа, 2020 пользователем FENIX145 Ссылка на комментарий Поделиться на другие сайты Поделиться
youneuoy Опубликовано 22 августа, 2020 Поделиться Опубликовано 22 августа, 2020 (изменено) 7 часов назад, FENIX145 сказал: Касаемо твоего вопроса - я даже не знаю как ответить, почему здесь как во многих языках нет логирования, вывел console.log в обоих кусках кода и увидел кто первый выполнился.... в lua можно создавать файлы и записывать в них всякое. Вот так тоже можно(взял имеющийся скрипт, изменения не проверял, но вроде работать должно? Самому интересно в каком оно там порядке выполняться будет) Спойлер [ENABLE] alloc(newmem,1024) alloc(strPth,1024) registerSymbol(strPth) {$lua} s='data/models_strat/resource_mine.CAS'..string.char(0); WriteString(strPth,s) {$asm} alloc(res,1024) createthread(newmem) newmem: push 1 push 1 push 1 push 2 push 91c push strPth call 00a04f00 mov [res],eax add esp,18 ret {$lua} Print(ReadString(strPth,200)) Print(res) {$asm} [DISABLE] dealloc(newmem) Print() выводит сообщение в специальное окошко для lua скриптов. Дальше: Вообще не понял что тебе нужно, но предложенные выше варианты мне нравятся. Если ты хочешь, чтобы при закрытии/открытии CE и включении скрипта при уже включённом скрипте?он отключался то можешь в код добавить проверку текущего значения или куска кода(смотря что ты там меняешь). Если ты хочешь чтобы что-то при включении/выключении менялось на старое что-то, то это старое что-то сначала нужно где-нибудь сохранить. Ты можешь выделить кусочек памяти и записать это что-то туда вместе с информацией о том, что это за что-то и что с этим чем-то делать?При включении/выключении скрипта можно проверять что же там написано, и если там написано "вернуть как было", то можно взять данные, записанные после "вернуть как было" и записать куда там тебе надо, после чего написать "вернул как было". Кажется что-то подобное тут выше уже предлагали. Вообще вариантов масса, задача вроде простая, а ты такие странные вопросы задаёшь. Ты точно программист?? Спойлер Как тебе такие кейсы, фень? Изменено 22 августа, 2020 пользователем youneuoy Ссылка на комментарий Поделиться на другие сайты Поделиться
Alex2411 Опубликовано 22 августа, 2020 Поделиться Опубликовано 22 августа, 2020 11 часов назад, FENIX145 сказал: может еще кто имел опыт работы с readmem и подскажет что дарк байт ответил . оказалось что второй вариант Цитата readmem only executes at the time the script is injected, and it reads the bytes stored at STORED_ADDR в общем как я и подозревал Цитата если сначала сработает readmem то получаеться он будет пытаться читать из пустого адреса . тогда будет ошибка . нужно чтобы при активации скрипта с readmem в памяти уже были значания тогда readmem прочитает как надо .. это можно сделать группой из двух скритов выше я говорил . я бы все таки посоветовал изменять регистры куда читаеться из памяти , а не саму память . 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
FENIX145 Опубликовано 22 августа, 2020 Автор Поделиться Опубликовано 22 августа, 2020 4 часа назад, youneuoy сказал: в lua можно создавать файлы и записывать в них всякое. STDOUT называется 4 часа назад, youneuoy сказал: Как тебе такие кейсы, фень? ващпе огонь, только они мне не подходят 4 часа назад, youneuoy сказал: Ты точно программист?? это фейк инфа, я работаю мойщиком окон в гугле, ага @Alex2411 ответ от Dark Byte: readmem only executes at the time the script is injected, and it reads the bytes stored at STORED_ADDR, not where STORED_ADDR points to Ссылка на комментарий Поделиться на другие сайты Поделиться
FENIX145 Опубликовано 22 августа, 2020 Автор Поделиться Опубликовано 22 августа, 2020 6 минут назад, Alex2411 сказал: я бы все таки посоветовал изменять регистры куда читаеться из памяти , а не саму память . да, видимо так придется все таки сделать, ну ладно, зато разобрались с readmem Ссылка на комментарий Поделиться на другие сайты Поделиться
youneuoy Опубликовано 22 августа, 2020 Поделиться Опубликовано 22 августа, 2020 (изменено) 7 часов назад, FENIX145 сказал: STDOUT называется ? 7 часов назад, FENIX145 сказал: ващпе огонь, только они мне не подходят ну так сделай то, что подходит. Или нормально свой кейс опиши. 7 часов назад, FENIX145 сказал: это фейк инфа, я работаю мойщиком окон в гугле, ага вот так я и думал, наслушался "умных" слов и как попугай теперь повторяешь? 7 часов назад, FENIX145 сказал: readmem only executes at the time the script is injected, and it reads the bytes stored at STORED_ADDR, not where STORED_ADDR points to юзай асм, фень?Там тоже файлы создавать можно и лог писать. Это наверное лучший кейс из всех кейсов в данном случае. Изменено 22 августа, 2020 пользователем youneuoy Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения