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

[CE] Вопрос по возврату значения в [DISABLE]

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

Только что, Garik66 сказал:

обычный вариант с флагом, наподобие телепорта., т.е сохранить первоначальные значения. нужных адресов

 

тогда будет  проблема  если забыл отключить через  флаг  и выключил  скрипт  то значения не  восстановяться и потеряються .

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

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


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

 

тогда будет  проблема  если забыл отключить через  флаг  и выключил  скрипт  то значения не  восстановяться и потеряються .

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

Но то. что вы творите в скрипте - у меня на лоб глаза лезут.
Выделяете где-то память. Ею не пользуетесь. туда ничего не записываете и потом пытаетесь оттуда прочитать что-то ссылаясь на другое место.
Посмотрите свой скрипт повнимательнее.

 

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


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

А обычный вариант с флагом, наподобие телепорта., т.е сохранить первоначальные значения. нужных адресов, потом записать что тебе нужно и перед отключением скрипта - восстановить, тебя не устроит? 

Не, Гарик, потому как не удобно это будет, я хочу потом это в тренер завернуть и чтобы не было лишних экшенов. Так то можно конечно это все сделать, но добавиться куча лишней логики не нужной. Да и хочется ведь развиваться и познавать новые возможные подходы. Сам понимаешь

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


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

Не, Гарик, потому как не удобно это будет, я хочу потом это в тренер завернуть и чтобы не было лишних экшенов. Так то можно конечно это все сделать, но добавиться куча лишней логики не нужной. Да и хочется ведь развиваться и познавать новые возможные подходы. Сам понимаешь

Ну тогда включай голову.
И посмотри мой видос 

Спойлер

 

может поможет - как и где сохранить, и что нужно прочитать (readmem)

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


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

может поможет - как и где сохранить, и что нужно прочитать (readmem)

ок, спасибо, гляну, но с головой вроде проблем нет. Если человек чего-то не знает, это не значит что у него "выключена" голова ;) 

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


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

Посмотрите свой скрипт повнимательнее.

 

  не понял . где я в  своем скрипте  выделял пмять и не пользуюсь ? ты не чего не путаешь ?

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


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

@Alex2411 перепробовал все варианты с readmem но так и не получилось завести, написал на офф сайте, может дарк байт поможет, ошибки на которые ты указал - я поправил, но не знаю как завести скрипт. Он просто не хочет запускаться. Возможно как написала @imaginary придется реализовать это на lua. Но я с lua не знаком от слова совсем, так что придется еще помучиться. Обидно просто весь день потратить так ничего и не добившись. А использовать вариант с флагами - вообще не хочется. Получается что при деактивации скрипта, забыв перевести флаг в 0 состояние к примеру, мы получим то же самое перманентное изменение, чего очень бы не хотелось. В общем грусть, печаль...

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


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

А использовать вариант с флагами - вообще не хочется. Получается что при деактивации скрипта, забыв перевести флаг в 0 состояние к примеру, мы получим то же самое перманентное изменение, чего очень бы не хотелось.

 

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

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


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

что бы автоматом  возвращало оригинал  когда отключаеться скрипт

да, я обычно так же делаю, но штука в том что значение статическое и не меняется нигде, в этом то и проблема. Это минимальный, максимальный дамаг оружия... и оно не изменяется. По этому и сижу парюсь. Был бы менее ответственный - установил вон перманентную максималку, а дальше как хочешь :D Но ведь для себя делаю и хочется по-человечески сделать, может из друзей кто будет использовать. В любом случае надо на совесть сделать. Сейчас с Dark Byte`ом общаюсь, может он что подскажет.

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

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


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

штука в том что значение статическое и не меняется нигде, в этом то и проблема. Это минимальный, максимальный дамаг оружия... и оно не изменяется

 

это даже лучше  что не изменяеться . у тебя  какая то инструкция  его читает когда стреляешь . куда она прочитала  там и поменять . значение дамага в памяти останеться оригинальное  , а дальше  в регистр или стек  ты подсунешь другое  и игра будет  думать что дамаг максимальный .

 

кстати у тебя в скрипте

alloc(newmem,$1000,SUPER_WPN)
alloc(original_struct,4096)

где второе выделение  памяти то же надо бы   указать адрес после 4096 . потому что игра 64 бит .

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


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

где второе выделение  памяти то же надо бы   указать адрес после 4096 . потому что игра 64 бит .

я уже чего только не указывал, уже 300 раз этот скрипт переписал, но бестолку, дарк байт задал единственный вопрос и пока пропал "are all 4096 bytes starting from the address of STORED_ADDR readable ?"

я если честно даже не совсем понимаю его вопрос и как проверить все ли данные у меня доступны для чтения, но на сколько я могу судить - да.

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

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


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

я если честно даже не совсем понимаю его вопрос

 

ты выделяешь  для SAVED_ADDR  размер 8 байт dq 0 , а читаешь память  от этого адреса   в readmem размер  4096 . после  этих 8 байт ты знаешь  что у тебя находиться  в памяти куда обращаеться readmem ?

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


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

после  этих 8 байт ты знаешь  что у тебя находиться  в памяти куда обращаеться readmem ?

понятия не имею, даже не знаю как узнать :( По логике, там находиться моя структура из RDI и она вся readable. На сколько я могу судить.... Но к сожалению я понятия не имею как посмотреть что храниться в SAVED_ADDR  после заполнения

PS. Может в дискорд переберемся?

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

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


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

мне кажеться  здесь нужно понять  что раньше срабатывает . сначала

 

mov [SAVED_ADDR],rdi

 

а потом 

 

original_struct:

readmem(SAVED_ADDR,4096)

 

или наоборот . если  сначала  сработает  readmem  то получаеться  он будет пытаться читать  из пустого  адреса . тогда  будет ошибка .

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


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

понятия не имею, даже не знаю как узнать

 

поставь для проверки  вместо  4096 число 8 . тогда размер будет одинаковый и память точно будет  читаемая .

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


Ссылка на сообщение
Поделиться на другие сайты
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 в обоих кусках кода и увидел кто первый выполнился.... 

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


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

поставь для проверки  вместо  4096 число 8 . тогда размер будет одинаковый и память точно будет  читаемая .

уже пробовал, никакого эффекта, все та же ошибка, если бы скрипт включался и можно было как-то подебажить это.....

Я наверно на сегодня все, 2-ой час ночи, нужно отдыхать, завтра как проснусь зайду на форум, может еще кто имел опыт работы с readmem и подскажет что.

В любом случае, еще раз спасибо, Леш.

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

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


Ссылка на сообщение
Поделиться на другие сайты
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 и включении скрипта при уже включённом скрипте🙃он отключался то можешь в код добавить проверку текущего значения или куска кода(смотря что ты там меняешь). Если ты хочешь чтобы что-то при включении/выключении менялось на старое что-то, то это старое что-то сначала нужно где-нибудь сохранить. Ты можешь выделить кусочек памяти и записать это что-то туда вместе с информацией о том, что это за что-то и что с этим чем-то делать😀При включении/выключении скрипта можно проверять что же там написано, и если там написано "вернуть как было", то можно взять данные, записанные после "вернуть как было" и записать куда там тебе надо, после чего написать "вернул как было". Кажется что-то подобное тут выше уже предлагали. Вообще вариантов масса, задача вроде простая, а ты такие странные вопросы задаёшь. Ты точно программист?😛

 

Спойлер

unknown.png

Как тебе такие кейсы, фень?

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

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


Ссылка на сообщение
Поделиться на другие сайты
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 прочитает как надо ..

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

я бы  все таки  посоветовал  изменять регистры куда читаеться из памяти ,  а не саму память .

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


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

в lua можно создавать файлы и записывать в них всякое.

STDOUT называется :D 

 

4 часа назад, youneuoy сказал:

Как тебе такие кейсы, фень?

ващпе огонь, только они мне не подходят :D 

 

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

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


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

я бы  все таки  посоветовал  изменять регистры куда читаеться из памяти ,  а не саму память .

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

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


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

STDOUT называется :D 

 

🤨

7 часов назад, FENIX145 сказал:

ващпе огонь, только они мне не подходят :D 

 

ну так сделай то, что подходит. Или нормально свой кейс опиши.

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

юзай асм, фень😑Там тоже файлы создавать можно и лог писать. Это наверное лучший кейс из всех кейсов в данном случае.

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

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


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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Предпросмотр

×
×
  • Создать...

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

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