Module ida_diskio
File I/O functions for IDA.
You should not use standard C file I/O functions in modules. Use functions from this header, pro.h and fpro.h instead.
This file also declares a call_system() function.
Global variables
var IDA_SUBDIR_IDADIR_FIRST-
$IDADIR/subdir will be first, not last
var IDA_SUBDIR_IDP-
append the processor name as a subdirectory
var IDA_SUBDIR_ONLY_EXISTING-
only existing directories will be present
var LINPUT_GENERIC-
generic linput
var LINPUT_LOCAL-
local file
var LINPUT_NONE-
invalid linput
var LINPUT_PROCMEM-
debugged process memory (read_dbg_memory())
var LINPUT_RFILE-
remote file ( debugger_t::open_file, debugger_t::read_file)
Functions
def choose_ioport_device2(_device: qstring *, file: char const *, parse_params: choose_ioport_parser_t)-
choose_ioport_device2(_device, file, parse_params) -> bool
@param _device: qstring * @param file: char const * @param parse_params: choose_ioport_parser_t *
def close_linput(li: linput_t *)-
close_linput(li) Close loader input.
@param li: (C++: linput_t *)
def create_bytearray_linput(s: qstring const &)-
create_bytearray_linput(s) -> linput_t * Trivial memory linput.
@param s: qstring const &
def create_generic_linput(gl: generic_linput_t)-
create_generic_linput(gl) -> linput_t * Create a generic linput
@param gl: (C++: generic_linput_t *) linput description. this object will be destroyed by close_linput() using "delete gl;"
def create_memory_linput(start: ea_t, size: asize_t)-
create_memory_linput(start, size) -> linput_t * Create a linput for process memory. This linput will use read_dbg_memory() to read data.
@param start: (C++: ea_t) starting address of the input @param size: (C++: asize_t) size of the memory area to represent as linput if unknown, may be passed as 0
def enumerate_files(path: PyObject *, fname: PyObject *, callback: PyObject *)-
enumerate_files(path, fname, callback) -> PyObject * Enumerate files in the specified directory while the callback returns 0.
@param path: directory to enumerate files in @param fname: mask of file names to enumerate @param callback: a callable object that takes the filename as its first argument and it returns 0 to continue enumeration or non-zero to stop enumeration. @return: None in case of script errors tuple(code, fname) : If the callback returns non-zero
def fopenA(file: char const *)-
fopenA(file) -> FILE * Open a file for append in text mode, deny none.
@param file: (C++: const char *) char const * @return: nullptr if failure
def fopenM(file: char const *)-
fopenM(file) -> FILE * Open a file for read/write in binary mode, deny write.
@param file: (C++: const char *) char const * @return: nullptr if failure
def fopenRB(file: char const *)-
fopenRB(file) -> FILE * Open a file for read in binary mode, deny none.
@param file: (C++: const char *) char const * @return: nullptr if failure
def fopenRT(file: char const *)-
fopenRT(file) -> FILE * Open a file for read in text mode, deny none.
@param file: (C++: const char *) char const * @return: nullptr if failure
def fopenWB(file: char const *)-
fopenWB(file) -> FILE * Open a new file for write in binary mode, deny read/write. If a file exists, it will be removed.
@param file: (C++: const char *) char const * @return: nullptr if failure
def fopenWT(file: char const *)-
fopenWT(file) -> FILE * Open a new file for write in text mode, deny write. If a file exists, it will be removed.
@param file: (C++: const char *) char const * @return: nullptr if failure
def get_ida_subdirs(subdir: char const *, flags: int = 0)-
get_ida_subdirs(subdir, flags=0) -> int Get list of directories in which to find a specific IDA resource (see IDA subdirectories). The order of the resulting list is as follows: - [$IDAUSR/subdir (0..N entries)] - $IDADIR/subdir
@param subdir: (C++: const char *) name of the resource to list (can be nullptr) @param flags: (C++: int) Subdirectory modification flags bits @return: number of directories appended to 'dirs'
def get_linput_type(li: linput_t *)-
get_linput_type(li) -> linput_type_t Get linput type.
@param li: (C++: linput_t *)
def get_special_folder(csidl: int)-
get_special_folder(csidl) -> str Get a folder location by CSIDL (see Common CSIDLs). Path should be of at least MAX_PATH size
@param csidl: (C++: int)
def get_user_idadir()-
get_user_idadir() -> char const * Get user ida related directory. - if $IDAUSR is defined: - the first element in $IDAUSR - else - default user directory ($HOME/.idapro or %APPDATA%Hex-Rays/IDA Pro)
def getsysfile(filename: char const *, subdir: char const *)-
getsysfile(filename, subdir) -> str Search for IDA system file. This function searches for a file in: 1. each directory specified by IDAUSR% 2. ida directory [+ subdir] and returns the first match.
@param filename: (C++: const char ) name of file to search @param subdir: (C++: const char ) if specified, the file is looked for in the specified subdirectory of the ida directory first (see IDA subdirectories) @return: nullptr if not found, otherwise a pointer to full file name.
def idadir(subdir: char const *)-
idadir(subdir) -> char const * Get IDA directory (if subdir==nullptr) or the specified subdirectory (see IDA subdirectories)
@param subdir: (C++: const char *) char const *
def open_linput(file: char const *, remote: bool)-
open_linput(file, remote) -> linput_t * Open loader input.
@param file: (C++: const char *) char const * @param remote: (C++: bool)
def qlgetz(li: linput_t *, fpos: int64)-
qlgetz(li, fpos) -> str Read a zero-terminated string from the input. If fpos == -1 then no seek will be performed.
@param li: (C++: linput_t *) @param fpos: (C++: int64)
def read_ioports(ports: ioports_t *, device: qstring *, file: char const *, callback: ioports_fallback_t = None)-
read_ioports(ports, device, file, callback=None) -> ssize_t
@param ports: ioports_t * @param device: qstring * @param file: char const * @param callback: ioports_fallback_t *
Classes
class choose_ioport_parser_t-
Proxy of C++ choose_ioport_parser_t class.
init(self) -> choose_ioport_parser_t
@param self: PyObject *
Instance variables
var thisown-
The membership flag
Methods
def parse(self, param: qstring *, line: char const *)-
parse(self, param, line) -> bool @retval true: and fill PARAM with a displayed string @retval false: and empty PARAM to skip the current device @retval false: and fill PARAM with an error message
@param param: (C++: qstring ) @param line: (C++: const char ) char const *
class file_enumerator_t-
Proxy of C++ file_enumerator_t class.
init(self) -> file_enumerator_t
@param self: PyObject *
Instance variables
var thisown-
The membership flag
Methods
def visit_file(self, file: char const *)-
visit_file(self, file) -> int
@param file: char const *
class generic_linput_t (*args, **kwargs)-
Proxy of C++ generic_linput_t class.
Instance variables
var blocksize : uint32-
preferred block size to work with read/write sizes will be in multiples of this number. for example, 4096 is a nice value blocksize 0 means that the filesize is unknown. the internal cache will be disabled in this case. also, seeks from the file end will fail. blocksize=-1 means error.
var filesize : uint64-
input file size
var thisown-
The membership flag
Methods
def read(self, off: qoff64_t, buffer: void *, nbytes: size_t)-
read(self, off, buffer, nbytes) -> ssize_t
@param off: qoff64_t @param buffer: void * @param nbytes: size_t
class ioports_fallback_t-
Proxy of C++ ioports_fallback_t class.
init(self) -> ioports_fallback_t
@param self: PyObject *
Instance variables
var thisown-
The membership flag
Methods
def handle(self, ports: ioports_t const &, line: char const *)-
handle(self, ports, line) -> bool
@param ports: (C++: const ioports_t &) i/o port definitions @param line: (C++: const char *) input line to parse @return: success or fills ERRBUF with an error message