25 if (!memcmp(
buf,
"MZ", 2)) {
28 if (!memcmp(
buf,
"PL", 2)) {
31 if (!memcmp(
buf,
"PE", 2)) {
33 return !memcmp(
buf,
"\x0b\x01", 2);
42 ut32 hdrsize, p_start, p_opthdr, p_sections, p_lsrlc,
n;
46 #define B(x, y) rz_buf_append_bytes(buf, (const ut8 *)(x), y)
47 #define H(x) rz_buf_append_ut16(buf, x)
48 #define D(x) rz_buf_append_ut32(buf, x)
49 #define Z(x) rz_buf_append_nbytes(buf, x)
50 #define W(x, y, z) rz_buf_write_at(buf, x, (const ut8 *)(y), z)
52 p_tmp = rz_buf_size(buf); \
54 W(p_tmp, y, strlen(y))
73 n = p_sections - p_opthdr;
109 if (data && datalen > 0) {
111 RZ_LOG_WARN(
"DATA section not support for PE yet\n");
138 #define ROWL(nam, siz, val, fmt) \
139 rz_list_append(ret, rz_bin_field_new(addr, addr, siz, nam, sdb_fmt("0x%08x", val), fmt, false));
142 ut64 addr =
bin->rich_header_offset ?
bin->rich_header_offset : 128;
146 rz_list_foreach (
bin->rich_entries, it, rich) {
156 ROWL(
"Signature", 4,
bin->nt_headers->Signature,
"x");
158 ROWL(
"Machine", 2,
bin->nt_headers->file_header.Machine,
"x");
160 ROWL(
"NumberOfSections", 2,
bin->nt_headers->file_header.NumberOfSections,
"x");
162 ROWL(
"TimeDateStamp", 4,
bin->nt_headers->file_header.TimeDateStamp,
"x");
164 ROWL(
"PointerToSymbolTable", 4,
bin->nt_headers->file_header.PointerToSymbolTable,
"x");
166 ROWL(
"NumberOfSymbols ", 4,
bin->nt_headers->file_header.NumberOfSymbols,
"x");
168 ROWL(
"SizeOfOptionalHeader", 2,
bin->nt_headers->file_header.SizeOfOptionalHeader,
"x");
170 ROWL(
"Characteristics", 2,
bin->nt_headers->file_header.Characteristics,
"x");
172 ROWL(
"Magic", 2,
bin->nt_headers->optional_header.Magic,
"x");
174 ROWL(
"MajorLinkerVersion", 1,
bin->nt_headers->optional_header.MajorLinkerVersion,
"x");
176 ROWL(
"MinorLinkerVersion", 1,
bin->nt_headers->optional_header.MinorLinkerVersion,
"x");
178 ROWL(
"SizeOfCode", 4,
bin->nt_headers->optional_header.SizeOfCode,
"x");
180 ROWL(
"SizeOfInitializedData", 4,
bin->nt_headers->optional_header.SizeOfInitializedData,
"x");
182 ROWL(
"SizeOfUninitializedData", 4,
bin->nt_headers->optional_header.SizeOfUninitializedData,
"x");
184 ROWL(
"AddressOfEntryPoint", 4,
bin->nt_headers->optional_header.AddressOfEntryPoint,
"x");
186 ROWL(
"BaseOfCode", 4,
bin->nt_headers->optional_header.BaseOfCode,
"x");
188 ROWL(
"BaseOfData", 4,
bin->nt_headers->optional_header.BaseOfData,
"x");
190 ROWL(
"ImageBase", 4,
bin->nt_headers->optional_header.ImageBase,
"x");
192 ROWL(
"SectionAlignment", 4,
bin->nt_headers->optional_header.SectionAlignment,
"x");
194 ROWL(
"FileAlignment", 4,
bin->nt_headers->optional_header.FileAlignment,
"x");
196 ROWL(
"MajorOperatingSystemVersion", 2,
bin->nt_headers->optional_header.MajorOperatingSystemVersion,
"x");
198 ROWL(
"MinorOperatingSystemVersion", 2,
bin->nt_headers->optional_header.MinorOperatingSystemVersion,
"x");
200 ROWL(
"MajorImageVersion", 2,
bin->nt_headers->optional_header.MajorImageVersion,
"x");
202 ROWL(
"MinorImageVersion", 2,
bin->nt_headers->optional_header.MinorImageVersion,
"x");
204 ROWL(
"MajorSubsystemVersion", 2,
bin->nt_headers->optional_header.MajorSubsystemVersion,
"x");
206 ROWL(
"MinorSubsystemVersion", 2,
bin->nt_headers->optional_header.MinorSubsystemVersion,
"x");
208 ROWL(
"Win32VersionValue", 4,
bin->nt_headers->optional_header.Win32VersionValue,
"x");
210 ROWL(
"SizeOfImage", 4,
bin->nt_headers->optional_header.SizeOfImage,
"x");
212 ROWL(
"SizeOfHeaders", 4,
bin->nt_headers->optional_header.SizeOfHeaders,
"x");
214 ROWL(
"CheckSum", 4,
bin->nt_headers->optional_header.CheckSum,
"x");
216 ROWL(
"Subsystem", 24,
bin->nt_headers->optional_header.Subsystem,
"x");
218 ROWL(
"DllCharacteristics", 2,
bin->nt_headers->optional_header.DllCharacteristics,
"x");
220 ROWL(
"SizeOfStackReserve", 4,
bin->nt_headers->optional_header.SizeOfStackReserve,
"x");
222 ROWL(
"SizeOfStackCommit", 4,
bin->nt_headers->optional_header.SizeOfStackCommit,
"x");
224 ROWL(
"SizeOfHeapReserve", 4,
bin->nt_headers->optional_header.SizeOfHeapReserve,
"x");
226 ROWL(
"SizeOfHeapCommit", 4,
bin->nt_headers->optional_header.SizeOfHeapCommit,
"x");
228 ROWL(
"LoaderFlags", 4,
bin->nt_headers->optional_header.LoaderFlags,
"x");
230 ROWL(
"NumberOfRvaAndSizes", 4,
bin->nt_headers->optional_header.NumberOfRvaAndSizes,
"x");
236 if (
bin->nt_headers->optional_header.DataDirectory[
i].Size > 0) {
240 ROWL(
"IMAGE_DIRECTORY_ENTRY_EXPORT", 4,
241 bin->nt_headers->optional_header.DataDirectory[
i].VirtualAddress,
"x");
243 ROWL(
"SIZE_IMAGE_DIRECTORY_ENTRY_EXPORT", 4,
244 bin->nt_headers->optional_header.DataDirectory[
i].Size,
"x");
247 ROWL(
"IMAGE_DIRECTORY_ENTRY_IMPORT", 4,
248 bin->nt_headers->optional_header.DataDirectory[
i].VirtualAddress,
"x");
250 ROWL(
"SIZE_IMAGE_DIRECTORY_ENTRY_IMPORT", 4,
251 bin->nt_headers->optional_header.DataDirectory[
i].Size,
"x");
254 ROWL(
"IMAGE_DIRECTORY_ENTRY_RESOURCE", 4,
255 bin->nt_headers->optional_header.DataDirectory[
i].VirtualAddress,
"x");
257 ROWL(
"SIZE_IMAGE_DIRECTORY_ENTRY_RESOURCE", 4,
258 bin->nt_headers->optional_header.DataDirectory[
i].Size,
"x");
261 ROWL(
"IMAGE_DIRECTORY_ENTRY_EXCEPTION", 4,
262 bin->nt_headers->optional_header.DataDirectory[
i].VirtualAddress,
"x");
264 ROWL(
"SIZE_IMAGE_DIRECTORY_ENTRY_EXCEPTION", 4,
265 bin->nt_headers->optional_header.DataDirectory[
i].Size,
"x");
268 ROWL(
"IMAGE_DIRECTORY_ENTRY_SECURITY", 4,
269 bin->nt_headers->optional_header.DataDirectory[
i].VirtualAddress,
"x");
271 ROWL(
"SIZE_IMAGE_DIRECTORY_ENTRY_SECURITY", 4,
272 bin->nt_headers->optional_header.DataDirectory[
i].Size,
"x");
275 ROWL(
"IMAGE_DIRECTORY_ENTRY_BASERELOC", 4,
276 bin->nt_headers->optional_header.DataDirectory[
i].VirtualAddress,
"x");
278 ROWL(
"SIZE_IMAGE_DIRECTORY_ENTRY_BASERELOC", 4,
279 bin->nt_headers->optional_header.DataDirectory[
i].Size,
"x");
282 ROWL(
"IMAGE_DIRECTORY_ENTRY_DEBUG", 4,
283 bin->nt_headers->optional_header.DataDirectory[
i].VirtualAddress,
"x");
285 ROWL(
"SIZE_IMAGE_DIRECTORY_ENTRY_DEBUG", 4,
286 bin->nt_headers->optional_header.DataDirectory[
i].Size,
"x");
289 ROWL(
"IMAGE_DIRECTORY_ENTRY_COPYRIGHT", 4,
290 bin->nt_headers->optional_header.DataDirectory[
i].VirtualAddress,
"x");
292 ROWL(
"SIZE_IMAGE_DIRECTORY_ENTRY_COPYRIGHT", 4,
293 bin->nt_headers->optional_header.DataDirectory[
i].Size,
"x");
296 ROWL(
"IMAGE_DIRECTORY_ENTRY_GLOBALPTR", 4,
297 bin->nt_headers->optional_header.DataDirectory[
i].VirtualAddress,
"x");
299 ROWL(
"SIZE_IMAGE_DIRECTORY_ENTRY_GLOBALPTR", 4,
300 bin->nt_headers->optional_header.DataDirectory[
i].Size,
"x");
303 ROWL(
"IMAGE_DIRECTORY_ENTRY_TLS", 4,
304 bin->nt_headers->optional_header.DataDirectory[
i].VirtualAddress,
"x");
306 ROWL(
"SIZE_IMAGE_DIRECTORY_ENTRY_TLS", 4,
307 bin->nt_headers->optional_header.DataDirectory[
i].Size,
"x");
310 ROWL(
"IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG", 4,
311 bin->nt_headers->optional_header.DataDirectory[
i].VirtualAddress,
"x");
313 ROWL(
"SIZE_IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG", 4,
314 bin->nt_headers->optional_header.DataDirectory[
i].Size,
"x");
317 ROWL(
"IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT", 4,
318 bin->nt_headers->optional_header.DataDirectory[
i].VirtualAddress,
"x");
320 ROWL(
"SIZE_IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT", 4,
321 bin->nt_headers->optional_header.DataDirectory[
i].Size,
"x");
324 ROWL(
"IMAGE_DIRECTORY_ENTRY_IAT", 4,
325 bin->nt_headers->optional_header.DataDirectory[
i].VirtualAddress,
"x");
327 ROWL(
"SIZE_IMAGE_DIRECTORY_ENTRY_IAT", 4,
328 bin->nt_headers->optional_header.DataDirectory[
i].Size,
"x");
331 ROWL(
"IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT", 4,
332 bin->nt_headers->optional_header.DataDirectory[
i].VirtualAddress,
"x");
334 ROWL(
"SIZE_IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT", 4,
335 bin->nt_headers->optional_header.DataDirectory[
i].Size,
"x");
338 ROWL(
"IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR", 4,
339 bin->nt_headers->optional_header.DataDirectory[
i].VirtualAddress,
"x");
341 ROWL(
"SIZE_IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR", 4,
342 bin->nt_headers->optional_header.DataDirectory[
i].Size,
"x");
356 rbin->
cb_printf(
" Signature : 0x%x\n",
bin->nt_headers->Signature);
358 rbin->
cb_printf(
" Machine : 0x%x\n",
bin->nt_headers->file_header.Machine);
359 rbin->
cb_printf(
" NumberOfSections : 0x%x\n",
bin->nt_headers->file_header.NumberOfSections);
360 rbin->
cb_printf(
" TimeDateStamp : 0x%x\n",
bin->nt_headers->file_header.TimeDateStamp);
361 rbin->
cb_printf(
" PointerToSymbolTable : 0x%x\n",
bin->nt_headers->file_header.PointerToSymbolTable);
362 rbin->
cb_printf(
" NumberOfSymbols : 0x%x\n",
bin->nt_headers->file_header.NumberOfSymbols);
363 rbin->
cb_printf(
" SizeOfOptionalHeader : 0x%x\n",
bin->nt_headers->file_header.SizeOfOptionalHeader);
364 rbin->
cb_printf(
" Characteristics : 0x%x\n",
bin->nt_headers->file_header.Characteristics);
365 rbin->
cb_printf(
"IMAGE_OPTIONAL_HEADERS\n");
366 rbin->
cb_printf(
" Magic : 0x%x\n",
bin->nt_headers->optional_header.Magic);
367 rbin->
cb_printf(
" MajorLinkerVersion : 0x%x\n",
bin->nt_headers->optional_header.MajorLinkerVersion);
368 rbin->
cb_printf(
" MinorLinkerVersion : 0x%x\n",
bin->nt_headers->optional_header.MinorLinkerVersion);
369 rbin->
cb_printf(
" SizeOfCode : 0x%x\n",
bin->nt_headers->optional_header.SizeOfCode);
370 rbin->
cb_printf(
" SizeOfInitializedData : 0x%x\n",
bin->nt_headers->optional_header.SizeOfInitializedData);
371 rbin->
cb_printf(
" SizeOfUninitializedData : 0x%x\n",
bin->nt_headers->optional_header.SizeOfUninitializedData);
372 rbin->
cb_printf(
" AddressOfEntryPoint : 0x%x\n",
bin->nt_headers->optional_header.AddressOfEntryPoint);
373 rbin->
cb_printf(
" BaseOfCode : 0x%x\n",
bin->nt_headers->optional_header.BaseOfCode);
374 rbin->
cb_printf(
" BaseOfData : 0x%x\n",
bin->nt_headers->optional_header.BaseOfData);
375 rbin->
cb_printf(
" ImageBase : 0x%x\n",
bin->nt_headers->optional_header.ImageBase);
376 rbin->
cb_printf(
" SectionAlignment : 0x%x\n",
bin->nt_headers->optional_header.SectionAlignment);
377 rbin->
cb_printf(
" FileAlignment : 0x%x\n",
bin->nt_headers->optional_header.FileAlignment);
378 rbin->
cb_printf(
" MajorOperatingSystemVersion : 0x%x\n",
bin->nt_headers->optional_header.MajorOperatingSystemVersion);
379 rbin->
cb_printf(
" MinorOperatingSystemVersion : 0x%x\n",
bin->nt_headers->optional_header.MinorOperatingSystemVersion);
380 rbin->
cb_printf(
" MajorImageVersion : 0x%x\n",
bin->nt_headers->optional_header.MajorImageVersion);
381 rbin->
cb_printf(
" MinorImageVersion : 0x%x\n",
bin->nt_headers->optional_header.MinorImageVersion);
382 rbin->
cb_printf(
" MajorSubsystemVersion : 0x%x\n",
bin->nt_headers->optional_header.MajorSubsystemVersion);
383 rbin->
cb_printf(
" MinorSubsystemVersion : 0x%x\n",
bin->nt_headers->optional_header.MinorSubsystemVersion);
384 rbin->
cb_printf(
" Win32VersionValue : 0x%x\n",
bin->nt_headers->optional_header.Win32VersionValue);
385 rbin->
cb_printf(
" SizeOfImage : 0x%x\n",
bin->nt_headers->optional_header.SizeOfImage);
386 rbin->
cb_printf(
" SizeOfHeaders : 0x%x\n",
bin->nt_headers->optional_header.SizeOfHeaders);
387 rbin->
cb_printf(
" CheckSum : 0x%x\n",
bin->nt_headers->optional_header.CheckSum);
388 rbin->
cb_printf(
" Subsystem : 0x%x\n",
bin->nt_headers->optional_header.Subsystem);
389 rbin->
cb_printf(
" DllCharacteristics : 0x%x\n",
bin->nt_headers->optional_header.DllCharacteristics);
390 rbin->
cb_printf(
" SizeOfStackReserve : 0x%x\n",
bin->nt_headers->optional_header.SizeOfStackReserve);
391 rbin->
cb_printf(
" SizeOfStackCommit : 0x%x\n",
bin->nt_headers->optional_header.SizeOfStackCommit);
392 rbin->
cb_printf(
" SizeOfHeapReserve : 0x%x\n",
bin->nt_headers->optional_header.SizeOfHeapReserve);
393 rbin->
cb_printf(
" SizeOfHeapCommit : 0x%x\n",
bin->nt_headers->optional_header.SizeOfHeapCommit);
394 rbin->
cb_printf(
" LoaderFlags : 0x%x\n",
bin->nt_headers->optional_header.LoaderFlags);
395 rbin->
cb_printf(
" NumberOfRvaAndSizes : 0x%x\n",
bin->nt_headers->optional_header.NumberOfRvaAndSizes);
399 rz_list_foreach (
bin->rich_entries, it,
entry) {
404 if (
bin->nt_headers->optional_header.DataDirectory[
i].Size > 0) {
407 rbin->
cb_printf(
"IMAGE_DIRECTORY_ENTRY_EXPORT\n");
410 rbin->
cb_printf(
"IMAGE_DIRECTORY_ENTRY_IMPORT\n");
413 rbin->
cb_printf(
"IMAGE_DIRECTORY_ENTRY_RESOURCE\n");
416 rbin->
cb_printf(
"IMAGE_DIRECTORY_ENTRY_EXCEPTION\n");
419 rbin->
cb_printf(
"IMAGE_DIRECTORY_ENTRY_SECURITY\n");
422 rbin->
cb_printf(
"IMAGE_DIRECTORY_ENTRY_BASERELOC\n");
425 rbin->
cb_printf(
"IMAGE_DIRECTORY_ENTRY_DEBUG\n");
428 rbin->
cb_printf(
"IMAGE_DIRECTORY_ENTRY_COPYRIGHT\n");
429 rbin->
cb_printf(
"IMAGE_DIRECTORY_ENTRY_ARCHITECTURE\n");
432 rbin->
cb_printf(
"IMAGE_DIRECTORY_ENTRY_GLOBALPTR\n");
435 rbin->
cb_printf(
"IMAGE_DIRECTORY_ENTRY_TLS\n");
438 rbin->
cb_printf(
"IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG\n");
441 rbin->
cb_printf(
"IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT\n");
444 rbin->
cb_printf(
"IMAGE_DIRECTORY_ENTRY_IAT\n");
447 rbin->
cb_printf(
"IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT\n");
450 rbin->
cb_printf(
"IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR\n");
453 rbin->
cb_printf(
" VirtualAddress : 0x%x\n",
bin->nt_headers->optional_header.DataDirectory[
i].VirtualAddress);
454 rbin->
cb_printf(
" Size : 0x%x\n",
bin->nt_headers->optional_header.DataDirectory[
i].Size);
461 .desc =
"PE bin plugin",
485 .hashes = &compute_hashes,
486 .resources = &resources,
490 #ifndef RZ_PLUGIN_INCORE
RZ_API void rz_bin_field_free(RzBinField *field)
RZ_API RzBinField * rz_bin_field_new(ut64 paddr, ut64 vaddr, int size, const char *name, const char *comment, const char *format, bool format_named)
static bool load_buffer(RzBinFile *bf, RzBinObject *obj, RzBuffer *buf, Sdb *sdb)
static void destroy(RzBinFile *bf)
static ut64 baddr(RzBinFile *bf)
static Sdb * get_sdb(RzBinFile *bf)
static RzList * maps(RzBinFile *bf)
static RzBinAddr * binsym(RzBinFile *bf, RzBinSpecialSymbol sym)
static RzList * libs(RzBinFile *bf)
static ut64 get_offset(RzBinFile *bf, int type, int index)
RzList * entries(RzBinFile *bf)
RzBinInfo * info(RzBinFile *bf)
RzList * symbols(RzBinFile *bf)
RzList * imports(RzBinFile *bf)
RzList * sections(RzBinFile *bf)
RzList * relocs(RzBinFile *bf)
static ut64 get_vaddr(RzBinFile *bf, ut64 baddr, ut64 paddr, ut64 vaddr)
static RzBuffer * create(RzBin *bin, const ut8 *code, int codelen, const ut8 *data, int datalen, RzBinArchOptions *opt)
static char * signature(RzBinFile *bf, bool json)
static void header(RzBinFile *bf)
RzBinPlugin rz_bin_plugin_pe
static RzList * fields(RzBinFile *bf)
RZ_API RzLibStruct rizin_plugin
static bool check_buffer(RzBuffer *b)
#define ROWL(nam, siz, val, fmt)
static static sync static getppid static getegid const char static filename char static len const char char static bufsiz static mask static vfork const void static prot static getpgrp const char static swapflags static arg static fd static protocol static who struct sockaddr static addrlen static backlog struct timeval struct timezone static tz const struct iovec static count static mode const void const struct sockaddr static tolen const char static pathname void static offset struct stat static buf void long static basep static whence static length const void static len static semflg const void static shmflg const struct timespec struct timespec static rem const char static group const void length
checking print the parsed form of the magic use in n conjunction with m to debug a new magic file n before installing it n output MIME type strings(--mime-type and\n"
" --mime-encoding)\n") OPT('s'
RZ_API RZ_OWN RzList * rz_list_newf(RzListFree f)
Returns a new initialized RzList pointer and sets the free method.
RZ_API RZ_BORROW RzListIter * rz_list_append(RZ_NONNULL RzList *list, void *data)
Appends at the end of the list a new element.
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")
RzList *MACH0_() section_flag_to_rzlist(ut64 flag)
#define PE_IMAGE_DIRECTORY_ENTRY_EXCEPTION
#define PE_IMAGE_DIRECTORY_ENTRY_COPYRIGHT
#define PE_IMAGE_DIRECTORY_ENTRY_IMPORT
#define PE_IMAGE_DIRECTORY_ENTRY_COM_DESCRIPTOR
#define PE_IMAGE_DIRECTORY_ENTRY_RESOURCE
#define PE_IMAGE_DIRECTORY_ENTRY_BASERELOC
#define PE_IMAGE_DIRECTORY_ENTRY_DEBUG
#define PE_IMAGE_DIRECTORY_ENTRY_SECURITY
#define PE_IMAGE_DIRECTORY_ENTRY_IAT
#define PE_IMAGE_DIRECTORY_ENTRY_DELAY_IMPORT
#define PE_IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT
#define PE_IMAGE_DIRECTORY_ENTRY_GLOBALPTR
#define PE_IMAGE_DIRECTORY_ENTRIES
#define PE_IMAGE_DIRECTORY_ENTRY_EXPORT
#define PE_IMAGE_DIRECTORY_ENTRY_TLS
#define PE_IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG
#define rz_buf_read_le16_at(b, addr, result)
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 RZ_OWN RzBuffer * rz_buf_new_with_bytes(RZ_NULLABLE RZ_BORROW const ut8 *bytes, ut64 len)
Creates a new buffer with a bytes array.
RZ_API ut64 rz_buf_size(RZ_NONNULL RzBuffer *b)
Return the size of the buffer.
void(* RzListFree)(void *ptr)
#define RZ_LOG_WARN(fmtstr,...)
RZ_API char * pj_drain(PJ *j)
RZ_API char * rz_pkcs7_cms_to_string(RCMS *container)
RZ_API PJ * rz_pkcs7_cms_json(RCMS *container)
XX curplugin == o->plugin.
ut64(WINAPI *w32_GetEnabledXStateFeatures)()