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

Поиск адреса сигнатуры, AOBScan()


MasterGH

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

У AOBScan могут быть параметры сканирования (ищите описание).

Пример функции возвращающей первый найденный адрес сигнатуры в типе областей памяти с защитой "выполнение кода".


function ByteScan(signature) -- return address
local results = AOBScan(signature, "+X-C-W")
if (results == nil) then
messageDialog("Ошибка. Не найден адрес внедрения.\n\rТрейнер будет закрыт!",1, 2)
closeCE()
return
end

local address = stringlist_getString(results, 0)
return address
end

Важно отметить, что можно работать с несколькими возвращаемыми адресами, а не только с первым как это было в автоассемблере.

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

  • 6 месяцев спустя...

У AOBScan могут быть параметры сканирования (ищите описание).

Пример функции возвращающей первый найденный адрес сигнатуры в типе областей памяти с защитой "выполнение кода".


function ByteScan(signature) -- return address
local results = AOBScan(signature, "+X-C-W")
if (results == nil) then
messageDialog("Ошибка. Не найден адрес внедрения.\n\rТрейнер будет закрыт!",1, 2)
closeCE()
return
end

local address = stringlist_getString(results, 0)
return address
end

Я так понимаю, что AOBScan мы можем найти заданный массив байт? У меня задача отыскать большой массив (х х х х х х х х х х х х х) и заменить его на (у у у у у у у у у у у у у) С поиском и заменой значения в адресе проблем нет, а вот как быть с массивом? Подскажите плз.

Важно отметить, что можно работать с несколькими возвращаемыми адресами, а не только с первым как это было в автоассемблере.
Как быть, если таких массивов будет несколько?

Пересмотрел операторы языка, но подходящего не разглядел. :-[

ЗЫ Если не туда запостил, сорри.

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

Для начала это.

<< Я так понимаю, что AOBScan мы можем найти заданный массив байт?

Можем. Можем найти адрес массива или адреса по которым находятся похожие массивы.

<< У меня задача отыскать большой массив (х х х х х х х х х х х х х) и заменить его на (у у у у у у у у у у у у у)

Поиск массива через AOBScan или класс MemScan

Запись байт

writeBytes(address, x,x,x,x,...) : Write the given bytes to the given address from a table

writeBytes(address, table) : Write the given bytes to the given address from a table

В Lua коде нужно написать, что дескать, если нашли адреса массива, то по каждом адресу записать такие-то байты. Или записать только по первому найденному адресу. Или ещё дописать условие,что если найденных адресов больше чем 1, то вывести сообщение об ошибке, о том что должен был найтись только один адрес.

>> Пересмотрел операторы языка, но подходящего не разглядел.

Я дал несколько подсказок, а дальше сами.

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

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

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

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

  • 2 года спустя...

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

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

В чем проблема то?

1 решение:

Просто сделай АА(авто ассемблер) скрипт например:

[ENABLE]

aobscan(namesignature, XX XX XX XX XX XX XX XX XX XX XX XX XX) /*сюда естественно вставляешь сигнатуру которую тебе надо НАЙТИ и ЗАМЕНИТЬ*/

label(_namesignature)

registersymbol(_namesignature)

namesignature:

_namesignature:

db XX XX XX XX. //Здесь пиши байты которыми будешь ЗАМЕНЯТЬ

[DISABLE]

_namesignature:

db XX XX XX XX. //Здесь стандартные байты

unregistersymbol(_namesignature)

2 решение:

Если же тебе нужно именно на Lua, то просто сделай ассемблерную вставку в Lua код.

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

  • 5 лет спустя...
В 06.04.2014 в 06:57, d0c сказал:

db XX XX XX XX. //Здесь пиши байты которыми будешь ЗАМЕНЯТЬ

а если мне нужно, чтобы в трейнере Cheat Engine, происходил поиск адреса по сигнатуре и после этого использовался как переменная со значением, например координат персонажа по оси Y - то что бы, по нажатию горячей клавиши трейнера, происходила замена значения данной переменной(значения в адресе) к примеру на Y+10 или *10, или -15% то как будет выглядеть пример такой математической строки кода?)
была бы ещё об этом конкретная отдельная тема для Cheat Engine(

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

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

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

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