11 #include "../../librz/bin/pdb/pdb_downloader.h"
82 res |= RZ_CORE_BIN_ACC_SECTIONS;
85 res |= RZ_CORE_BIN_ACC_SEGMENTS;
88 res |= RZ_CORE_BIN_ACC_ENTRIES;
91 res |= RZ_CORE_BIN_ACC_INITFINI;
94 res |= RZ_CORE_BIN_ACC_MAIN;
97 res |= RZ_CORE_BIN_ACC_IMPORTS;
100 res |= RZ_CORE_BIN_ACC_CLASSES;
103 res |= RZ_CORE_BIN_ACC_SYMBOLS;
106 res |= RZ_CORE_BIN_ACC_EXPORTS;
109 res |= RZ_CORE_BIN_ACC_RESOURCES;
112 res |= RZ_CORE_BIN_ACC_STRINGS;
115 res |= RZ_CORE_BIN_ACC_INFO;
118 res |= RZ_CORE_BIN_ACC_FIELDS;
121 res |= RZ_CORE_BIN_ACC_HEADER;
124 res |= RZ_CORE_BIN_ACC_LIBS;
127 res |= RZ_CORE_BIN_ACC_RELOCS;
130 res |= RZ_CORE_BIN_ACC_DWARF;
133 res |= RZ_CORE_BIN_ACC_PDB;
136 res |= RZ_CORE_BIN_ACC_SIZE;
139 res |= RZ_CORE_BIN_ACC_VERSIONINFO;
142 res |= RZ_CORE_BIN_ACC_SIGNATURE;
145 res |= RZ_CORE_BIN_ACC_SECTIONS_MAPPING;
148 res |= RZ_CORE_BIN_ACC_BASEFIND;
154 printf(
"Usage: rz-bin [-AcdeEghHiIjlLMqrRsSUvVxzZ] [-@ at] [-a arch] [-b bits] [-B addr]\n"
155 " [-C F:C:D] [-f str] [-m addr] [-n str] [-N m:M] [-P[-P] pdb]\n"
156 " [-o str] [-O str] [-k query] [-D lang symname] file\n");
159 " -@ [addr] show section, symbol or import at addr\n"
160 " -A list sub-binaries and their arch-bits pairs\n"
161 " -a [arch] set arch (x86, arm, .. or <arch>_<bits>)\n"
162 " -b [bits] set bits (32, 64 ...)\n"
163 " -B [addr] override base address (pie bins)\n"
165 " -cc list classes in header format\n"
166 " -C [fmt:C:D] create [elf,mach0,pe] with Code and Data hexpairs (see -a)\n"
167 " -d show debug/dwarf information\n"
168 " -D lang name demangle symbol name (-D all for bin.demangle=true)\n"
170 " -ee constructor/destructor entrypoints\n"
171 " -E globally exportable symbols\n"
172 " -f [str] select sub-bin named str\n"
173 " -F [binfmt] force to use that bin plugin (ignore header check)\n"
174 " -g same as -SMZIHVResizcld -SS -SSS -ee (show all info)\n"
175 " -G [addr] load address . offset to header\n"
176 " -h this help message\n"
177 " -H header fields\n"
178 " -i imports (symbols imported from libraries)\n"
180 " -j output in json\n"
181 " -k [sdb-query] run sdb query. for example: '*'\n"
182 " -K [algo] calculate checksums (md5, sha1, ..)\n"
183 " -l linked libraries\n"
184 " -L [plugin] list supported bin plugins or plugin details\n"
185 " -m [addr] show source line at addr\n"
186 " -M main (show address of main symbol)\n"
187 " -n [str] show section, symbol or import named str\n"
188 " -N [min:max] force min:max number of chars per string (see -z and -zz)\n"
189 " -o [str] output file/folder for write operations (out by default)\n"
190 " -O [str] write/extract operations (-O help)\n"
191 " -p show physical addresses\n"
192 " -P show debug/pdb information\n"
193 " -PP download pdb file for binary\n"
194 " -q be quiet, just show fewer data\n"
195 " -qq show less info (no offset/size for -z for ex.)\n"
196 " -Q show load address used by dlopen (non-aslr libs)\n"
202 " -SSS sections mapping to segments\n"
203 " -T display file signature\n"
204 " -u unfiltered (no rename duplicated symbols/sections)\n"
206 " -v display version and quit\n"
207 " -V Show binary version information\n"
208 " -w display try/catch blocks\n"
209 " -x extract bins contained in file\n"
210 " -X [fmt] [f] .. package in fat or zip the given files and bins contained in file\n"
211 " -Y [fw file] calculates all the possibles base address candidates of a firmware bin\n"
212 " -z strings (from data section)\n"
213 " -zz strings (from raw strings from bin)\n"
214 " -zzz dump raw strings to stdout (for huge files)\n"
215 " -Z guess size of binary program\n");
219 " RZ_BIN_LANG: e bin.lang # assume lang for demangling\n"
220 " RZ_BIN_NOPLUGINS: # do not load shared plugins (speedup loading)\n"
221 " RZ_BIN_DEMANGLE=0:e bin.demangle # do not demangle symbols\n"
222 " RZ_BIN_MAXSTRBUF: e bin.maxstrbuf # specify maximum buffer size\n"
223 " RZ_BIN_STRFILTER: e bin.str.filter # rizin -qc 'e bin.str.filter=?"
225 " RZ_BIN_STRPURGE: e bin.str.purge # try to purge false positives\n"
226 " RZ_BIN_DEBASE64: e bin.debase64 # try to debase64 all strings\n"
227 " RZ_BIN_PDBSERVER: e pdb.server # use alternative PDB server\n"
228 " RZ_BIN_SYMSTORE: e pdb.symstore # path to downstream symbol store\n"
229 " RZ_BIN_PREFIX: e bin.prefix # prefix symbols/sections/relocs with a specific string\n"
230 " RZ_CONFIG: # sdb config file\n");
236 static char *stdin_buf =
NULL;
237 #define STDIN_BUF_SIZE 96096
272 if (!strcmp(
op,
"help")) {
275 if (!strcmp(
op,
"?")) {
278 if (!strcmp(
op,
"h")) {
285 ut64 bin_size = data ? data->
size : 0;
287 const char *xtr_type =
"";
288 char *
arch =
"unknown";
290 char *libname =
NULL;
304 if (!strcmp(xtr_type,
"fat") && bin_size == bf->
size && bin_size) {
305 eprintf(
"This is not a fat bin\n");
310 eprintf(
"error: BinFile buffer is empty\n");
315 eprintf(
"Couldn't read xtrdata\n");
330 eprintf(
"Error creating dir structure\n");
390 if (symbol->
size && (olen > symbol->
size || !olen)) {
392 }
else if (!symbol->
size && !olen) {
410 eprintf(
"Cannot read from buffer\n");
431 if (!strcmp(scnname,
section->name)) {
479 if ((ptr = strchr(
arg,
'/'))) {
481 if ((ptr2 = strchr(ptr,
'/'))) {
499 goto _rabin_do_operation_error;
510 goto _rabin_do_operation_error;
517 goto _rabin_do_operation_error;
551 _rabin_do_operation_error:
552 eprintf(
"Unknown operation. use -O help\n");
644 string->vaddr =
s->vaddr + (
string->paddr -
s->paddr);
648 const char *section_name =
s ?
s->name :
"";
653 pj_kn(pj,
"vaddr", vaddr);
658 pj_ks(pj,
"section", section_name);
659 pj_ks(pj,
"type", type_string);
673 section_name, type_string, string->
string);
689 const char *do_demangle =
NULL;
690 const char *query =
NULL;
691 int c,
bits = 0, actions = 0;
694 char *
tmp, *ptr, *arch_name =
NULL;
696 const char *forcebin =
NULL;
697 const char *chksum =
NULL;
731 free(oldhomeplugindir);
744 eprintf(
"Cannot open file specified in RZ_CONFIG\n");
777 #define is_active(x) (action & (x))
778 #define set_action(x) \
783 #define unset_action(x) action &= ~x
785 rz_getopt_init(&opt, argc,
argv,
"DjgAf:F:a:B:G:b:cC:k:K:dD:Mm:n:N:@:isSVIHeEUlRwO:o:pPqQrTvLhuxYXzZ");
815 case 'a':
arch = opt.
arg;
break;
820 case 'u':
bin->filter = 0;
break;
821 case 'k': query = opt.
arg;
break;
822 case 'K': chksum = opt.
arg;
break;
831 case 'f': arch_name =
strdup(opt.
arg);
break;
832 case 'F': forcebin = opt.
arg;
break;
909 printf(
"Usage: iO [expression]:\n"
910 " d/s/1024 dump symbols\n"
911 " d/S/.text dump section\n"
912 " c show Codesign data\n"
913 " C show LDID entitlements\n");
917 if (opt.
ind == argc) {
924 case 'p': core.
io->
va =
false;
break;
943 if (at == 0LL && *opt.
arg !=
'0') {
951 tmp = strchr(opt.
arg,
':');
967 const char *plugin_name =
NULL;
968 if (opt.
ind < argc) {
989 if ((argc - opt.
ind) < 2) {
996 printf(
"Language '%s' is unsupported\nList of supported languages:\n", do_demangle);
1001 if (!strcmp(
file,
"-")) {
1034 eprintf(
"Cannot open empty path\n");
1046 ptr = strchr(
arch,
'_');
1055 int datalen, codelen;
1057 char *p2, *
p = strchr(
create,
':');
1059 eprintf(
"Invalid format for -C flag. Use 'format:codehexpair:datahexpair'\n");
1064 p2 = strchr(
p,
':');
1068 data =
malloc(strlen(p2) + 1);
1094 eprintf(
"Error dumping into a.out\n");
1098 eprintf(
"Cannot create binary for this format '%s'.\n",
create);
1121 return waitpid(child,
NULL, 0);
1140 eprintf(
"rz_core: Cannot open file '%s'\n",
file);
1145 eprintf(
"rz_core: Cannot open file '%s'\n",
file);
1162 bo.xtr_idx = xtr_idx;
1166 eprintf(
"rz-bin: Cannot open file\n");
1181 eprintf(
"rz-bin: Cannot allocate buffer for json array\n");
1190 rz_list_foreach (
list, it,
string) {
1205 if (!strcmp(query,
"-")) {
1214 #define ismodejson (out_mode == RZ_MODE_JSON && actions > 0)
1215 #define run_action(n, x, y) \
1216 if (action & (x)) { \
1217 RzCmdStateOutput *st = add_header(&state, mode, n); \
1219 add_footer(&state, st); \
1281 "Cannot extract bins from '%s'. No supported "
RZ_API RzBinPlugin * rz_bin_file_cur_plugin(RzBinFile *bf)
RZ_API bool rz_bin_file_object_new_from_xtr_data(RzBin *bin, RzBinFile *bf, RzBinObjectLoadOptions *opts, RzBinXtrData *data)
RZ_API RZ_OWN RzList * rz_bin_file_strings(RZ_NONNULL RzBinFile *bf, size_t min_length, bool raw_strings)
Generates a RzList struct containing RzBinString from a given RzBinFile.
RZ_API ut64 rz_bin_get_laddr(RzBin *bin)
RZ_API bool rz_bin_plugin_add(RzBin *bin, RzBinPlugin *foo)
RZ_API void rz_bin_load_filter(RzBin *bin, ut64 rules)
RZ_API bool rz_bin_list_plugin(RzBin *bin, const char *name, PJ *pj, int json)
RZ_DEPRECATE RZ_API RZ_BORROW RzList * rz_bin_get_symbols(RZ_NONNULL RzBin *bin)
RZ_API void rz_bin_arch_options_init(RzBinArchOptions *opt, const char *arch, int bits)
RZ_API void rz_bin_force_plugin(RzBin *bin, const char *name)
RZ_API RZ_BORROW RzBinSection * rz_bin_get_section_at(RzBinObject *o, ut64 off, int va)
Find the binary section at offset off.
RZ_API RzBuffer * rz_bin_create(RzBin *bin, const char *p, const ut8 *code, int codelen, const ut8 *data, int datalen, RzBinArchOptions *opt)
RZ_API bool rz_bin_xtr_add(RzBin *bin, RzBinXtrPlugin *foo)
RZ_API void rz_bin_options_init(RzBinOptions *opt, int fd, ut64 baseaddr, ut64 loadaddr, bool patch_relocs)
RZ_API RzBinFile * rz_bin_open(RzBin *bin, const char *file, RzBinOptions *opt)
RZ_API RzBinFile * rz_bin_cur(RzBin *bin)
RZ_DEPRECATE RZ_API RZ_BORROW RzList * rz_bin_get_sections(RZ_NONNULL RzBin *bin)
RZ_API bool rz_bin_select(RzBin *bin, const char *arch, int bits, const char *name)
RZ_API void rz_bin_set_baddr(RzBin *bin, ut64 baddr)
static ut64 baddr(RzBinFile *bf)
static RzBuffer * create(RzBin *bin, const ut8 *code, int codelen, const ut8 *data, int datalen, RzBinArchOptions *opt)
RzList * symbols(RzBinFile *bf)
RzList * sections(RzBinFile *bf)
int bits(struct state *s, int need)
RZ_API ut64 rz_bin_object_get_vaddr(RzBinObject *o, ut64 paddr, ut64 vaddr)
RZ_API bool rz_core_bin_class_as_source_print(RZ_NONNULL RzCore *core, RZ_NONNULL RzBinFile *bf, const char *class_name)
RZ_API void rz_core_bin_export_info(RzCore *core, int mode)
RZ_API bool rz_core_bin_print(RzCore *core, RZ_NONNULL RzBinFile *bf, ut32 mask, RzCoreBinFilter *filter, RzCmdStateOutput *state, RzList *hashes)
Print (to RzCons or inside RzCmdStateOutput) the binary information specified in mask.
RZ_API int rz_core_bin_update_arch_bits(RzCore *r)
RZ_API bool rz_core_bin_archs_print(RZ_NONNULL RzBin *bin, RZ_NONNULL RzCmdStateOutput *state)
RZ_API RzCmdStatus rz_core_bin_plugins_print(RzBin *bin, RzCmdStateOutput *state)
RZ_API void rz_core_file_close(RzCoreFile *fh)
RZ_API RZ_BORROW RzCoreFile * rz_core_file_open(RZ_NONNULL RzCore *r, RZ_NONNULL const char *file, int flags, ut64 loadaddr)
Tries to open the file as is, otherwise tries as is a compilation of files.
RZ_API void rz_cmd_state_output_free(RZ_NONNULL RzCmdStateOutput *state)
Free the RzCmdStateOutput structure and its inner fields appropriately.
RZ_API bool rz_cmd_state_output_init(RZ_NONNULL RzCmdStateOutput *state, RzOutputMode mode)
Initialize a RzCmdStateOutput structure and its inner fields based on the provided mode.
RZ_API void rz_cmd_state_output_fini(RZ_NONNULL RzCmdStateOutput *state)
Clear the inner fields of RzCmdStateOutput structure, but do not free it.
RZ_API void rz_cmd_state_output_print(RZ_NONNULL RzCmdStateOutput *state)
Print the output accumulated in state to RzCons, if necessary.
RZ_API ut64 rz_config_get_i(RzConfig *cfg, RZ_NONNULL const char *name)
RZ_API bool rz_config_get_b(RzConfig *cfg, RZ_NONNULL const char *name)
RZ_API bool rz_config_unserialize(RZ_NONNULL RzConfig *config, RZ_NONNULL Sdb *db, RZ_NULLABLE char **err)
RZ_API RzConfigNode * rz_config_set(RzConfig *cfg, RZ_NONNULL const char *name, const char *value)
RZ_API RZ_BORROW const char * rz_config_get(RzConfig *cfg, RZ_NONNULL const char *name)
RZ_API RzCons * rz_cons_new(void)
RZ_API int rz_cons_printf(const char *format,...)
RZ_API void rz_cons_flush(void)
RZ_API void rz_cons_println(const char *str)
_Use_decl_annotations_ int __cdecl printf(const char *const _Format,...)
static static fork const void static count static fd const char const char static newpath const char static path const char path
RZ_DEPRECATE RZ_API char * rz_bin_addr2text(RzBin *bin, ut64 addr, int origin)
RZ_API void Ht_() free(HtName_(Ht) *ht)
return memset(p, 0, total)
RZ_API void rz_core_fini(RzCore *c)
RZ_API bool rz_core_init(RzCore *core)
RZ_API bool rz_demangler_plugin_add(RZ_NONNULL RzDemangler *dem, RZ_NONNULL RzDemanglerPlugin *plugin)
Adds a new demangler plugin to the plugin list.
RZ_API void rz_demangler_plugin_iterate(RZ_NONNULL RzDemangler *dem, RZ_NONNULL RzDemanglerIter iter, RZ_NULLABLE void *data)
Iterates over the plugin list.
RZ_API RZ_BORROW const RzDemanglerPlugin * rz_demangler_plugin_get(RZ_NONNULL RzDemangler *dem, RZ_NONNULL const char *language)
Returns a demangler plugin pointer based on the language that is found.
static RzOutputMode rad2outputmode(int rad)
static void print_string(RzBinFile *bf, RzBinString *string, PJ *pj, int mode)
#define run_action(n, x, y)
static RzCmdStateOutput * add_header(RzCmdStateOutput *main_state, RzOutputMode mode, const char *header)
static bool extract_binobj(const RzBinFile *bf, RzBinXtrData *data, int idx)
static int __lib_bin_cb(RzLibPlugin *pl, void *user, void *data)
static int rabin_extract(RzBin *bin, int all)
static bool __dumpSections(RzBin *bin, const char *scnname, const char *output, const char *file)
static void end_state(RzCmdStateOutput *state)
static void classes_as_source_print(RzCore *core, RzCmdStateOutput *state)
static int __lib_bin_xtr_dt(RzLibPlugin *pl, void *p, void *u)
static ut32 actions2mask(ut64 action)
static int __lib_bin_dt(RzLibPlugin *pl, void *p, void *u)
static int __lib_demangler_cb(RzLibPlugin *pl, void *user, void *data)
static void __sdb_prompt(Sdb *sdb)
static bool add_footer(RzCmdStateOutput *main_state, RzCmdStateOutput *state)
static int rabin_show_help(int v)
static bool print_demangler_info(const RzDemanglerPlugin *plugin, void *user)
static void start_state(RzCmdStateOutput *state)
static int rabin_show_srcline(RzBin *bin, ut64 at)
static int __lib_demangler_dt(RzLibPlugin *pl, void *p, void *u)
static int rabin_dump_symbols(RzBin *bin, int len)
static char * stdin_gets(bool liberate)
static int __lib_bin_xtr_cb(RzLibPlugin *pl, void *user, void *data)
static int rabin_do_operation(RzBin *bin, const char *op, int rad, const char *output, const char *file)
static bool isBinopHelp(const char *op)
static void __listPlugins(RzBin *bin, const char *plugin_name, PJ *pj, int rad)
RZ_API int rz_main_rz_bin(int argc, const char **argv)
static void list(RzEgg *egg)
RZ_API RZ_BORROW void * rz_list_get_n(RZ_NONNULL const RzList *list, ut32 n)
Returns the N-th element of the list.
RZ_API void rz_list_free(RZ_NONNULL RzList *list)
Empties the list and frees the list pointer.
RZ_API int sdb_query(Sdb *s, const char *cmd)
void * malloc(size_t size)
void * calloc(size_t number, size_t size)
static static fork const void static count static fd const char const char static newpath char char argv
return strdup("=SP r13\n" "=LR r14\n" "=PC r15\n" "=A0 r0\n" "=A1 r1\n" "=A2 r2\n" "=A3 r3\n" "=ZF zf\n" "=SF nf\n" "=OF vf\n" "=CF cf\n" "=SN or0\n" "gpr lr .32 56 0\n" "gpr pc .32 60 0\n" "gpr cpsr .32 64 0 ____tfiae_________________qvczn\n" "gpr or0 .32 68 0\n" "gpr tf .1 64.5 0 thumb\n" "gpr ef .1 64.9 0 endian\n" "gpr jf .1 64.24 0 java\n" "gpr qf .1 64.27 0 sticky_overflow\n" "gpr vf .1 64.28 0 overflow\n" "gpr cf .1 64.29 0 carry\n" "gpr zf .1 64.30 0 zero\n" "gpr nf .1 64.31 0 negative\n" "gpr itc .4 64.10 0 if_then_count\n" "gpr gef .4 64.16 0 great_or_equal\n" "gpr r0 .32 0 0\n" "gpr r1 .32 4 0\n" "gpr r2 .32 8 0\n" "gpr r3 .32 12 0\n" "gpr r4 .32 16 0\n" "gpr r5 .32 20 0\n" "gpr r6 .32 24 0\n" "gpr r7 .32 28 0\n" "gpr r8 .32 32 0\n" "gpr r9 .32 36 0\n" "gpr r10 .32 40 0\n" "gpr r11 .32 44 0\n" "gpr r12 .32 48 0\n" "gpr r13 .32 52 0\n" "gpr r14 .32 56 0\n" "gpr r15 .32 60 0\n" "gpr r16 .32 64 0\n" "gpr r17 .32 68 0\n")
#define header(is_bt, len_min, ret_op)
static bool filter(RzParse *p, ut64 addr, RzFlag *f, RzAnalysisHint *hint, char *data, char *str, int len, bool big_endian)
RZ_API int rz_bin_pdb_download(RZ_NONNULL RzBin *bin, RZ_NULLABLE PJ *pj, int isradjson, RZ_NONNULL SPDBOptions *options)
Download PDB file for currently opened RzBin file.
#define rz_warn_if_reached()
#define rz_return_if_fail(expr)
#define RZ_BIN_REQ_VERSIONINFO
#define RZ_BIN_REQ_SECTIONS_MAPPING
#define RZ_BIN_REQ_INITFINI
#define RZ_BIN_REQ_CLASSES_SOURCES
#define RZ_BIN_REQ_EXTRACT
#define RZ_BIN_REQ_RELOCS
#define RZ_BIN_REQ_SECTIONS
#define RZ_BIN_REQ_ENTRIES
#define RZ_BIN_REQ_HEADER
#define RZ_BIN_REQ_SYMBOLS
#define RZ_BIN_REQ_PDB_DWNLD
#define RZ_BIN_REQ_CLASSES
#define RZ_BIN_REQ_IMPORTS
#define RZ_BIN_REQ_BASEFIND
#define RZ_BIN_REQ_RESOURCES
#define RZ_BIN_REQ_FIELDS
#define RZ_BIN_REQ_CREATE
#define RZ_BIN_REQ_LISTPLUGINS
#define RZ_BIN_REQ_DLOPEN
#define RZ_BIN_REQ_STRINGS
#define RZ_BIN_REQ_LISTARCHS
#define RZ_BIN_REQ_SRCLINE
#define RZ_BIN_REQ_OPERATION
#define RZ_BIN_REQ_TRYCATCH
#define RZ_BIN_REQ_SIGNATURE
#define RZ_BIN_REQ_EXPORTS
#define RZ_BIN_REQ_SEGMENTS
RZ_API RZ_OWN RzBuffer * rz_buf_new_with_buf(RzBuffer *b)
Creates a new buffer from a source buffer.
RZ_API st64 rz_buf_read_at(RZ_NONNULL RzBuffer *b, ut64 addr, RZ_NONNULL RZ_OUT ut8 *buf, ut64 len)
Read len bytes of the buffer at the specified address.
RZ_API void rz_buf_free(RzBuffer *b)
Free all internal data hold by the buffer and the buffer.
RZ_DEPRECATE RZ_API RZ_BORROW ut8 * rz_buf_data(RZ_NONNULL RzBuffer *b, RZ_NONNULL RZ_OUT ut64 *size)
Return a borrowed array of bytes representing the buffer data.
RZ_API ut64 rz_buf_size(RZ_NONNULL RzBuffer *b)
Return the size of the buffer.
#define rz_demangler_plugin_demangle(x, y)
bool(* RzDemanglerIter)(const RzDemanglerPlugin *plugin, void *data)
RZ_API const char * rz_file_basename(const char *path)
RZ_API bool rz_file_dump(const char *file, const ut8 *buf, int len, bool append)
RZ_API bool rz_file_chmod(const char *file, const char *mod, int recursive)
RZ_API void rz_getopt_init(RzGetopt *go, int argc, const char **argv, const char *ostr)
RZ_API int rz_getopt_next(RzGetopt *opt)
RZ_API int rz_hex_str2bin(const char *in, ut8 *out)
Convert an input string in into the binary form in out.
RZ_API int rz_hex_bin2str(const ut8 *in, int len, char *out)
RZ_API int rz_io_fd_get_current(RzIO *io)
RZ_API void rz_lib_free(RzLib *lib)
RZ_API RzLib * rz_lib_new(const char *symname, const char *symnamefunc)
RZ_API void * rz_lib_dl_open(const char *libname)
RZ_API bool rz_lib_opendir(RzLib *lib, const char *path, bool force)
Open all the libraries in the given directory, if it wasn't already opened.
RZ_API bool rz_lib_add_handler(RzLib *lib, int type, const char *desc, RzLibCallback ct, RzLibCallback dt, void *user)
RZ_API int rz_lib_dl_close(void *handler)
RZ_API int rz_main_version_print(const char *program)
RZ_API ut64 rz_num_math(RzNum *num, const char *str)
RZ_API RZ_OWN char * rz_path_home_prefix(RZ_NULLABLE const char *path)
Return path prefixed by the home prefix.
RZ_API RZ_OWN char * rz_path_system(RZ_NULLABLE const char *path)
Return the full system path of the given subpath path.
RZ_API void pj_raw(PJ *j, const char *k)
RZ_API PJ * pj_k(PJ *j, const char *k)
RZ_API PJ * pj_end(PJ *j)
RZ_API const char * pj_string(PJ *pj)
RZ_API void pj_free(PJ *j)
RZ_API PJ * pj_ks(PJ *j, const char *k, const char *v)
RZ_API PJ * pj_kn(PJ *j, const char *k, ut64 n)
#define RZ_STR_ISNOTEMPTY(x)
RZ_API char * rz_str_newf(const char *fmt,...) RZ_PRINTF_CHECK(1
RZ_API const char * rz_str_enc_as_string(RzStrEnc enc)
#define RZ_STR_ISEMPTY(x)
RZ_API RzList * rz_str_split_duplist_n(const char *str, const char *c, int n, bool trim)
Split the string str according to the substring c and returns a RzList with the result.
RZ_API bool rz_sys_mkdirp(const char *dir)
RZ_API char * rz_sys_getenv(const char *key)
Get the value of an environment variable named key or NULL if none exists.
RZ_API int rz_sys_setenv(const char *key, const char *value)
Set an environment variable in the calling process.
RZ_API int rz_sys_fork(void)
RZ_API char * rz_table_tostring(RzTable *t)
int(* PrintfCallback)(const char *str,...) RZ_PRINTF_CHECK(1
RzOutputMode
Enum to describe the way data are printed.
@ RZ_OUTPUT_MODE_QUIETEST
@ RZ_OUTPUT_MODE_STANDARD
#define RZ_HOME_OLD_PLUGINS
RZ_API Sdb * sdb_new(const char *path, const char *name, int lock)
RZ_API bool sdb_free(Sdb *s)
const char * symbol_server
const char * symbol_store_path
ut64 baseaddr
where the linker maps the binary in memory
XX curplugin == o->plugin.
char *(* signature)(RzBinFile *bf, bool json)
Represent the output state of a command handler.
union rz_cmd_state_output_t::@259 d
const char * language
demangler language
const char * author
demangler author
const char * license
demangler license
void error(const char *msg)
ut64(WINAPI *w32_GetEnabledXStateFeatures)()
static const z80_opcode fd[]