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

Сохранение куска кода с помощью CE АА/Lua


Гость GERI

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

Всем привет. Столкнулся с проблемой сохранения информации в текстовый файл. 428b3ca39af777f0909299270e929024.png

Нужно сохранить кусок кода типо того что на скриншоте, как это сделать средствами CE AA/Lua? 

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

Столкнулся с проблемой сохранения информации в текстовый файл

 

На Lua можно не делать . Через горячие клавиши скопировать в буфер выделенный текст (CTLR+C) и в блокноте через горячие клавиши вставить (CTRL+V) и сохранить файл.

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

Я немного не точно описал ситуацию) Нужно именно сделать автоматическое сохранение т.к. данные будут изменяться. Адрес начала длинна будут известны заранее.

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

Можно сделать на примере TinyDumper. Там сохраняются байты в файл. Только придется делать свой формат сохранения

 

Главное это readBytes. stringList.add(data), stringList.saveToFile(path). За подробностями main.lua

function OnCloseSaveDialog(argFrmSaveDialog)local path = argFrmSaveDialog.FileNamelocal stringList = createStringlist()for i = 1, #tableData dolocal adress = tableData[i][1]local size = tableData[i][2]local unicalName = tableData[i][3]local tablesReadBytes = tableData[i][4] --readBytes(adress, tonumber(size), true)if(tablesReadBytes == nil) thenmessageDialog('TablesReadBytes is nil', mtError, mbOK)returnendlocal strBytes = table.concat(tablesReadBytes, " ")local data = string.format("<TABLE>%s;%s;%s;%s</TABLE>", adress, size, unicalName, strBytes)stringList.add(data)endstringList.saveToFile(path)stringList.destroy()endfunction OnClickMenuItemSaveAllDumps()if (getOpenedProcessID() == 0) thenmessageDialog('No target any process', mtError, mbOK)returnendif (#tableData == 0) thenmessageDialog('Table is empty', mtWarning, mbOK)returnendif(frmSaveDialog == nil) thenfrmSaveDialog = createSaveDialog(nil)endfrmSaveDialog.DefaultExt = '.tinyDumper'frmSaveDialog.FileName = fileNamefrmSaveDialog.Filter = '*.tinyDumper'frmSaveDialog.FilterIndex = 0frmSaveDialog.OnClose = OnCloseSaveDialogfrmSaveDialog.Execute()end
Ссылка на комментарий
Поделиться на другие сайты

Можно сделать на примере TinyDumper. Там сохраняются байты в файл. Только придется делать свой формат сохранения

 

Главное это readBytes. stringList.add(data), stringList.saveToFile(path). За подробностями main.lua

 

Хорошо, спасибо. Буду разбираться.

function OnCloseSaveDialog(argFrmSaveDialog)local path = argFrmSaveDialog.FileNamelocal stringList = createStringlist()for i = 1, #tableData dolocal adress = tableData[i][1]local size = tableData[i][2]local unicalName = tableData[i][3]local tablesReadBytes = tableData[i][4] --readBytes(adress, tonumber(size), true)if(tablesReadBytes == nil) thenmessageDialog('TablesReadBytes is nil', mtError, mbOK)returnendlocal strBytes = table.concat(tablesReadBytes, " ")local data = string.format("<TABLE>%s;%s;%s;%s</TABLE>", adress, size, unicalName, strBytes)stringList.add(data)endstringList.saveToFile(path)stringList.destroy()endfunction OnClickMenuItemSaveAllDumps()if (getOpenedProcessID() == 0) thenmessageDialog('No target any process', mtError, mbOK)returnendif (#tableData == 0) thenmessageDialog('Table is empty', mtWarning, mbOK)returnendif(frmSaveDialog == nil) thenfrmSaveDialog = createSaveDialog(nil)endfrmSaveDialog.DefaultExt = '.tinyDumper'frmSaveDialog.FileName = fileNamefrmSaveDialog.Filter = '*.tinyDumper'frmSaveDialog.FilterIndex = 0frmSaveDialog.OnClose = OnCloseSaveDialogfrmSaveDialog.Execute()end
Ссылка на комментарий
Поделиться на другие сайты

Ну, что не разобрался? В общем вот решение. По адресу сохранит строку из байтов. Например строку

 

"55 8B EC 83 C4 F0 B8 C0 46 45 00 E8 40 0D FB FF A1 5C 79 45 00 8B 00 E8 4C D4 FF FF 8B 0D 74 77 45 00 A1 5C 79 45 00 8B"

 

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

 

local adress = 'test.exe+556D8'	-- адрессlocal countBytes = 40			-- количество байтов по адресу, которые нужно сохранитьlocal isBytenormalize = false	-- нужны пробелы в сигнатуре?-----------------------------------local fileName = ''function imap(t,f) local s={} for i=1,#t do s[i]=f(t[i]) end return s end function t2aob(t,sep) return table.concat(imap(t,byte2aob),type(sep)=='string' and sep or ' ') endfunction normalize(a,sep) return t2aob(aob2bt(a),type(sep)=='string' and sep or '') endfunction OnCloseSaveDialog(argFrmSaveDialog)	local path = argFrmSaveDialog.FileName	local isReturnAsTable = true	local returnAsTable = readBytes(adress, countBytes, isReturnAsTable)	local aob = t2aob(returnAsTable)	if(isBytenormalize) then aob = normalize(aob) end	local stringList = createStringlist()	stringList.add(aob)	stringList.saveToFile(path)	stringList.destroy()endif (getOpenedProcessID() == 0) then messageDialog('No target any process', mtError, mbOK) return endif(frmSaveDialog == nil) then frmSaveDialog = createSaveDialog(nil) endfrmSaveDialog.DefaultExt = '.txt'frmSaveDialog.FileName = fileNamefrmSaveDialog.Filter = '*.txt'frmSaveDialog.FilterIndex = 0frmSaveDialog.OnClose = OnCloseSaveDialogfrmSaveDialog.Execute()
Ссылка на комментарий
Поделиться на другие сайты

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

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

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