in commands/FBCopyCommands.py [0:0]
def _copyFromData(data, defaultFilename, preferredFilename, noOpen):
directory = "/tmp/chisel_copy/"
path = directory + (preferredFilename or defaultFilename)
try:
os.makedirs(directory)
except OSError as e:
if e.errno == errno.EEXIST and os.path.isdir(directory):
pass
else:
raise
startAddress = fb.evaluateExpression("(void *)[(id)" + data + " bytes]")
length = fb.evaluateExpression("(NSUInteger)[(id)" + data + " length]")
address = int(startAddress, 16)
length = int(length)
if not (address or length):
print("Could not get data.")
return
process = lldb.debugger.GetSelectedTarget().GetProcess()
error = lldb.SBError()
mem = process.ReadMemory(address, length, error)
if error is not None and str(error) != "success":
print(error)
else:
with open(path, "wb") as file:
file.write(mem)
file.close()
print(path)
if not noOpen:
os.system("open " + path)