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

 
Ответить в эту темуОткрыть новую тему
> помогите облагородить код, чтение динамической памяти
Demergo
сообщение 25.12.2021, 18:07
Сообщение #1


**

Neophyte
Сообщений: 34
Регистрация: 22.6.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.040
Возраст: 29



В своем коде я:
1. получаю стартовый адрес программы/модуля в памяти.
2. Перемещаюсь по указателям памяти до нужного мне значения.

Код хоть и рабочий но получился грубым и не очень шустрым. Есть варианты как его причесать? может быть в lua

Код
set #s relativeaddress2absolute ("mono-2.0-bdwgc.dll") //получаю стартовый адрес в памяти, по названию программы

log clear

set #f0 #s + 3808360  //первое смещение
readmem #f1 #f0 DW   //читаем первое смещение
//log dec2hex(#f1)

set #f2 #f1 + 336 //второе смещение
readmem #f3 #f2 DW //читаю значение второго смещения
//log dec2hex(#f3)

set #f4 #f3 + 1376 //третье смещение
readmem #f5 #f4 DW //читаю третье
//log dec2hex(#f5)

set #f6 #f5 + 260 //четвертое смещение
readmem #f7 #f6 DW  //читаю четвертое
//log dec2hex(#f7)

set #f8 #f7 + 8 //пятое смещение
readmem #f9 #f8 DW //читаю пятое
//log dec2hex(#f9)

set #f10 #f9 + 148     //последнее смещение
readmem #f11 #f10 w    //окончательное значение value
log #f11

end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
cirus
сообщение 25.12.2021, 19:10
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26702
Пользователь №: 16.971
Возраст: 29



Примерно так:
Код
--lua
log 'clear' log 'mode compact'

local s = relativeaddress2absolute ("mono-2.0-bdwgc.dll")
local offset = {3808360, 336, 1376, 260, 8, 148}

local f = readmem(s + offset[1], 'D')
for i=2, #offset do
    log( f )
    f = readmem(f + offset[i], 'D')
end
log( f )
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Demergo
сообщение 25.12.2021, 19:43
Сообщение #3


**

Neophyte
Сообщений: 34
Регистрация: 22.6.2012
Группа: Пользователи
Наличность: 0
Пользователь №: 15.040
Возраст: 29



Цитата(cirus @ 25.12.2021, 20:10) *

Примерно так:
Код
--lua
log 'clear' log 'mode compact'

local s = relativeaddress2absolute ("mono-2.0-bdwgc.dll")
local offset = {3808360, 336, 1376, 260, 8, 148}

local f = readmem(s + offset[1], 'D')
for i=2, #offset do
    log( f )
    f = readmem(f + offset[i], 'D')
end
log( f )



жесть, твой вариант работает моментально
Спасибо!
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

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

 

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