Вопросы по CLEO-скриптингу

_razor

t.me/sssecretway | ТГК: t.me/razor_code
Всефорумный модератор
1,943
3,189
пацаны честно говоря за клео не шарю, поэтому тут уже не ко мне
 
  • Нравится
Реакции: MAHEKEH

Lobber

Известный
178
57
как это в клео провернуть?
Может быть @D3.Pheonix знает?

UPD


Короче, что я делал последние несколько часов, можете не повторять, это не имеет какого-либо смысла
Считывал float с дефолтного значения оси, затем:
Вычитал - краш (логично)
Прибавлял int 1 = рандомное положение/пропадание
Прибавлял float 1.0 = аналогично тому что выше
Использовал конструкции для смещения, особого результата не принесло
Конвертация int-float-int, во всех её проявлениях - рандомное положение
Прибавление 1.0 int = краш (логично)
Прибавление 0.1 в float = 3 раза - краш
Прибавление 0.1 через конструкцию смещения в виде HEX - работает, не вызывает крашей, рандомное положение
1 в INT, перевод в float, затем в HEX - рандомное положение
Ну и конечно же, пробовал запись 1, 2 и 4 размером во всех выше перечисленных вариациях, ни-че-го

Для себя сделал вывод что данная затея в слепую не имеет смысла, ждем знающих
 
Последнее редактирование:
  • Нравится
Реакции: MAHEKEH

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,744
4,806
Может быть @D3.Pheonix знает?

UPD


Короче, что я делал последние несколько часов, можете не повторять, это не имеет какого-либо смысла
Считывал float с дефолтного значения оси, затем:
Вычитал - краш (логично)
Прибавлял int 1 = рандомное положение/пропадание
Прибавлял float 1.0 = аналогично тому что выше
Использовал конструкции для смещения, особого результата не принесло
Конвертация int-float-int, во всех её проявлениях - рандомное положение
Прибавление 1.0 int = краш (логично)
Прибавление 0.1 в float = 3 раза - краш
Прибавление 0.1 через конструкцию смещения в виде HEX - работает, не вызывает крашей, рандомное положение
1 в INT, перевод в float, затем в HEX - рандомное положение
Ну и конечно же, пробовал запись 1, 2 и 4 размером во всех выше перечисленных вариациях, ни-че-го

Для себя сделал вывод что данная затея в слепую не имеет смысла, ждем знающих
В клео тоже не силен, но подозреваю что нужно сделать так:
выделить память опкодом 0AC8
(Объявите переменную на глобальном уровне, чтобы постоянно можно было использовать ее)
Потом в эту память через опкод0A8C записать нужное значение

и потом единожды записать в нужный адрес позиции худа этот самый указатель который вы выделили опкодом 0AC8
UPD: Даже код накидал(первый раз в клео залез вообще :D)
CLEO:
0AC8: 1@ = allocate_memory_size 4
0A8C: write_memory 1@ size 4 value *здесь нужное значение* virtual_protect 0
0A8C: write_memory 5828231 size 4 value 1@ virtual_protect 1
 
Последнее редактирование:
  • Нравится
Реакции: Lobber и _razor

Lobber

Известный
178
57
В клео тоже не силен, но подозреваю что нужно сделать так:
выделить память опкодом 0AC8
(Объявите переменную на глобальном уровне, чтобы постоянно можно было использовать ее)
Потом в эту память через опкод0A8C записать нужное значение

и потом единожды записать в нужный адрес позиции худа этот самый указатель который вы выделили опкодом 0AC8
UPD: Даже код накидал(первый раз в клео залез вообще :D)
CLEO:
0AC8: 1@ = allocate_memory_size 4
0A8C: write_memory 1@ size 4 value *здесь нужное значение* virtual_protect 0
0A8C: write_memory 5828231 size 4 value 1@ virtual_protect 1

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

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,744
4,806
Мысль здравая, и крашей действительно нет, как и рандомных пропаданий. Но увы, похоже что установить координаты таким методом не выйдет, ибо положение упирается в правый угол и никуда оттуда уходить не хочет
Подозреваю что придется переводить float в hex руками
Вот сайтик есть: https://gregstoll.dyndns.org/~gregstoll/floattohex/
И потом этот hex перевести в dec, и уже dec подставлять вместо *здесь нужное значение*
Попробуй
Еще забыл уточнить 5828231 менять на адрес элемента худа
 
  • Нравится
Реакции: Lobber

Lobber

Известный
178
57
Подозреваю что придется переводить float в hex руками
Вот сайтик есть: https://gregstoll.dyndns.org/~gregstoll/floattohex/
И потом этот hex перевести в dec, и уже dec подставлять вместо *здесь нужное значение*
Попробуй
Еще забыл уточнить 5828231 менять на адрес элемента худа

Попробовал, результат аналогичен
К моему огромному сожалению кстати
Нужно узнать, по какому принципу были получены допустим данные координаты

// Default Coords
0AB1: @Health 3 X 141.0 Y 77.0 SizeX 569.0
0AB1: @armour 3 X 94.0 Y 48.0
0AB1: @WeaponIcon 3 X 0.1734304577 Y 20.0 SizeY 58.0
0AB1: @Money 2 Y 89.0 SizeX 0.5500000119

Взято с той статьи к слову
 
  • Нравится
Реакции: ARMOR

_razor

t.me/sssecretway | ТГК: t.me/razor_code
Всефорумный модератор
1,943
3,189
В клео тоже не силен, но подозреваю что нужно сделать так:
выделить память опкодом 0AC8
(Объявите переменную на глобальном уровне, чтобы постоянно можно было использовать ее)
Потом в эту память через опкод0A8C записать нужное значение

и потом единожды записать в нужный адрес позиции худа этот самый указатель который вы выделили опкодом 0AC8
UPD: Даже код накидал(первый раз в клео залез вообще :D)
CLEO:
0AC8: 1@ = allocate_memory_size 4
0A8C: write_memory 1@ size 4 value *здесь нужное значение* virtual_protect 0
0A8C: write_memory 5828231 size 4 value 1@ virtual_protect 1
После выделения памяти ее нужно освобождать через опкод:
CLEO:
0AC9: free_allocated_memory 0@
Вы хоть протекцию с адресов снимаете?
 

Lobber

Известный
178
57
После выделения памяти ее нужно освобождать через опкод:
CLEO:
0AC9: free_allocated_memory 0@
Вы хоть протекцию с адресов снимаете?
Разумеется, как же без этого. Конечно не исключен факт кривых рук с моей стороны, но пробежавшись по истории изменения клео везде протекция отключена. Ключевая цель - узнать как люди до этого узнавали координаты, через какие формулы/махинации с значениями. Я уверен что ошибка банальна, но пока не известна. Задал вопрос на форуме, откуда брал статью выше, жду реакцию
 

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,744
4,806
После выделения памяти ее нужно освобождать через опкод:
CLEO:
0AC9: free_allocated_memory 0@
Вы хоть протекцию с адресов снимаете?
Протекцию в своем коде я выключал. Если освобождать после этого память, то игра крашнет, т.к. ты обращаешься уже не к своей памяти, поэтому ее надо делать глобальной, и при потребности менять.
 

ufdhbi

Известный
Проверенный
1,459
866
CLEO:
:NONAME_358
0BE5: raknet 0@ = get_hook_param 1
if and
  0@ == 200
  15@ == 1
else_jump @NONAME_449
0BE5: raknet 1@ = get_hook_param 0
alloc 2@ 64
BitStream.ReadArray(1@, 2@, 64)
0C0D: struct 2@ offset 58 size 2 = 29@
BitStream.ResetWritePointer(1@)
BitStream.Write(1@, 2@, BS_TYPE_ARRAY, 64)
free 2@
Объясните что тут происходит...
 

kin4stat

mq-team · kin4@naebalovo.team
Всефорумный модератор
2,744
4,806
CLEO:
:NONAME_358
0BE5: raknet 0@ = get_hook_param 1
if and
  0@ == 200
  15@ == 1
else_jump @NONAME_449
0BE5: raknet 1@ = get_hook_param 0
alloc 2@ 64
BitStream.ReadArray(1@, 2@, 64)
0C0D: struct 2@ offset 58 size 2 = 29@
BitStream.ResetWritePointer(1@)
BitStream.Write(1@, 2@, BS_TYPE_ARRAY, 64)
free 2@
Объясните что тут происходит...
Хукается пакет с ID == 200(DRIVER_SYNC)
Потом считывается битстрим в структуру, и в структуре по оффсету 58(TrailerID) считывается 2 байта. И потом идет запись считанной структуры обратно в битстрим. Вроде так
 

ufdhbi

Известный
Проверенный
1,459
866
Хукается пакет с ID == 200(DRIVER_SYNC)
Потом считывается битстрим в структуру, и в структуре по оффсету 58(TrailerID) считывается 2 байта. И потом идет запись считанной структуры обратно в битстрим. Вроде так
Входящий, исходящий? И какое значение записывается
 

Lobber

Известный
178
57
Подозреваю что придется переводить float в hex руками
Вот сайтик есть: https://gregstoll.dyndns.org/~gregstoll/floattohex/
И потом этот hex перевести в dec, и уже dec подставлять вместо *здесь нужное значение*
Попробуй
Еще забыл уточнить 5828231 менять на адрес элемента худа
Бро, я нашел метод! Спасибо за наводку, как только сделаю, скину сюда сурс

UPD готово
Вот код с комментариями, кому нужно

CLEO:
wait 2000 // нужно для инициализации памяти

:1
0A8D: 0@ = read_memory 0x58DD0F size 4 virtual_protect 0
03F0: enable_text_draw 1         //сделал для мониторинга состояния
045A: draw_text_1number 7.0 344.0 GXT 'NUMBER' number 0@
wait 0
if
0ADC: test_cheat "P"                
else_jump @1

0AF0: 2@ = get_int_from_ini_file "cleo\wanted.pos.ini" section "coords" key "X"
0010: 2@ *= 32768   // Множитель - разница между значениями после перевода float в hex, затем hex в dec, в моем случае между 509 и 510

0006: 3@ = 1124073472 //Значение нулевого Х. Получено путем танцев с бубном

0A8E: 4@ = 3@ + 2@ //Прибавляем помноженное значение на нулевые коорды, получаем результат

0AC8: 1@ = allocate_memory_size 4
0A8C: write_memory 1@ size 4 value 4@ virtual_protect 0   //записываем значение в память твоим методом

0A8C: write_memory 0x58DD0F size 4 value 1@ virtual_protect 0  //получаем результат на экран
0AC9: free_allocated_memory 1@

//..................................................................................//

0AF0: 2@ = get_int_from_ini_file "cleo\wanted.pos.ini" section "coords" key "Y"
0010: 2@ *= 32768   // множитель

0006: 3@ = 1124073472 //Значение нулевого Y. Совпадает с Х. Видимо едино для структуры

0A8E: 4@ = 3@ + 2@ //добавление в память

0AC8: 1@ = allocate_memory_size 4
0A8C: write_memory 1@ size 4 value 4@ virtual_protect 0   // запись в память

0A8C: write_memory 0x58DFB3 size 4 value 1@ virtual_protect 0  //результат на экране
0AC9: free_allocated_memory 1@

jump @1
 
Последнее редактирование: