Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Чтение памяти из х64 процессов
Aqualon
сообщение 30.3.2024, 22:29
Сообщение #1


**

Neophyte
Сообщений: 23
Регистрация: 21.3.2023
Группа: Пользователи
Наличность: 0
Пользователь №: 20.503
Возраст: 22



Понадобилось. Нативные методы пилота для такого очевидно не работают, хотел узнать, возможно, у кого-то уже были кейсы.
Пока нашёл вот такую либу, думаю начать копать в этом направлении https://github.com/rwfpl/rewolf-wow64ext
В целом буду рад любым подсказкам)
Ну и хочу понять, туда ли я вообще взялся копать.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Aqualon
сообщение 31.3.2024, 14:23
Сообщение #2


**

Neophyte
Сообщений: 23
Регистрация: 21.3.2023
Группа: Пользователи
Наличность: 0
Пользователь №: 20.503
Возраст: 22



Нашёл вот такое.
Цитата

2.36
Добавил в команды 'readmem' и 'writemem' работу с 64 битными процессами. Новый тип данных L:long = 8b;
Добавил модульную адресацию в командах работы с памятью.

readmem <variable> <adress> <type> <size> [modulename]
writemem <variable> <adress> <type> [ModuleName] [result]


Но при попытке запустить вот такой код получаю соответственную ошибку
Код

local address = 0xFFF656770000
readmem (address, 'L')

Цитата

Lua error.
'1.406960093579e+014' is not a valid integer valueL
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Aqualon
сообщение 5.4.2024, 1:31
Сообщение #3


**

Neophyte
Сообщений: 23
Регистрация: 21.3.2023
Группа: Пользователи
Наличность: 0
Пользователь №: 20.503
Возраст: 22



Если кому интересно, разобрался.
Собственно по базовому адресу из х64 процессов пилот считать отказывается, но если читать первый офсет от названия модуля то всё ок.
Получается вот такая конструкция работает.
Код

local function getValueFromOffsetsx64(moduleName, offsets, type, handle)
    type = type or 'd'
    if handle then workwindow(handle) end
    local base = readmem(offsets[1], 'l', moduleName)
    local lastAddress = base
    for i = 2, #offsets - 1
        lastAddress = readmem(lastAddress + offsets[i], 'l')
    end

    local value = readmem(lastAddress + offsets[#offsets], type)
    return value
end
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 29.4.2024, 20:12
Designed by Nickostyle