Гость GERI Опубликовано 15 апреля, 2015 Поделиться Опубликовано 15 апреля, 2015 Всем привет. Столкнулся с проблемой сохранения информации в текстовый файл. Нужно сохранить кусок кода типо того что на скриншоте, как это сделать средствами CE AA/Lua? Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 16 апреля, 2015 Поделиться Опубликовано 16 апреля, 2015 В 15.04.2015 в 20:29, GERI сказал: Столкнулся с проблемой сохранения информации в текстовый файл На Lua можно не делать . Через горячие клавиши скопировать в буфер выделенный текст (CTLR+C) и в блокноте через горячие клавиши вставить (CTRL+V) и сохранить файл. Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость GERI Опубликовано 16 апреля, 2015 Поделиться Опубликовано 16 апреля, 2015 (изменено) Я немного не точно описал ситуацию) Нужно именно сделать автоматическое сохранение т.к. данные будут изменяться. Адрес начала длинна будут известны заранее. Изменено 16 апреля, 2015 пользователем GERI Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 16 апреля, 2015 Поделиться Опубликовано 16 апреля, 2015 Можно сделать на примере TinyDumper. Там сохраняются байты в файл. Только придется делать свой формат сохранения Показать контент Главное это readBytes. stringList.add(data), stringList.saveToFile(path). За подробностями main.luafunction 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 Ссылка на комментарий Поделиться на другие сайты Поделиться
Гость GERI Опубликовано 16 апреля, 2015 Поделиться Опубликовано 16 апреля, 2015 В 16.04.2015 в 03:57, MasterGH сказал: Можно сделать на примере 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 Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 18 апреля, 2015 Поделиться Опубликовано 18 апреля, 2015 Ну, что не разобрался? В общем вот решение. По адресу сохранит строку из байтов. Например строку "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() Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения