IDA C++ SDK 9.2
Loading...
Searching...
No Matches
compress.hpp
Go to the documentation of this file.
1/*
2 * Interactive disassembler (IDA).
3 * Copyright (c) 1990-2025 Hex-Rays
4 * ALL RIGHTS RESERVED.
5 *
6 */
7
8#ifndef COMPRESS_HPP
9#define COMPRESS_HPP
10
11#include <diskio.hpp>
12
18
23
24idaman THREAD_SAFE int ida_export zip_deflate(
25 void *ud,
26 ssize_t (idaapi *file_reader)(void *ud, void *buf, size_t size),
27 ssize_t (idaapi *file_writer)(void *ud, const void *buf, size_t size));
28
29
34
35idaman THREAD_SAFE int ida_export zip_inflate(
36 void *ud,
37 ssize_t (idaapi *file_reader)(void *ud, void *buf, size_t size),
38 ssize_t (idaapi *file_writer)(void *ud, const void *buf, size_t size));
39
40
52
53idaman THREAD_SAFE int ida_export process_zipfile(
54 const char *zipfile,
55 int (idaapi *callback)(
56 void *ud,
57 qoff64_t offset,
58 int method,
59 uint64 csize,
60 uint64 ucsize,
61 uint32 attributes,
62 const char *filename),
63 void *ud = nullptr);
64
65
77
78idaman THREAD_SAFE int ida_export process_zip_linput(
79 linput_t *li,
80 int (idaapi *callback)(
81 void *ud,
82 qoff64_t offset,
83 int method,
84 uint64 csize,
85 uint64 ucsize,
86 uint32 attributes,
87 const char *filename),
88 void *ud = nullptr);
89
90
105
106idaman THREAD_SAFE int ida_export process_zipfile_entry(
107 const char *zipfile,
108 const char *entry,
109 int (idaapi *callback)(
110 void *ud,
111 qoff64_t offset,
112 int method,
113 uint64 csize,
114 uint64 ucsize,
115 uint32 attributes,
116 const char *filename),
117 void *ud = nullptr,
118 bool case_sensitive = true);
119
120
124#define PKZ_OK 0
125#define PKZ_ERRNO 1
126#define PKZ_STREAM_ERROR 2
127#define PKZ_DATA_ERROR 3
128#define PKZ_MEM_ERROR 4
129#define PKZ_BUF_ERROR 5
130#define PKZ_VERSION_ERROR 6
131#define PKZ_RERR 777 // read error
132#define PKZ_WERR 778 // write error
134
138#define STORED 0
139#define SHRUNK 1
140#define REDUCED1 2
141#define REDUCED2 3
142#define REDUCED3 4
143#define REDUCED4 5
144#define IMPLODED 6
145#define TOKENIZED 7
146#define DEFLATED 8
147#define NUM_METHODS 9 /* index of last method + 1 */
149
150extern bool legacy_idb;
151
158
159idaman THREAD_SAFE linput_t *ida_export create_zip_linput(
160 linput_t *in,
161 ssize_t insize=-1,
163
164
165#endif
bool legacy_idb
for old idb files
idaman THREAD_SAFE int ida_export process_zipfile(const char *zipfile, int(idaapi *callback)(void *ud, qoff64_t offset, int method, uint64 csize, uint64 ucsize, uint32 attributes, const char *filename), void *ud=nullptr)
Process zip file and enumerate all files stored in it.
idaman THREAD_SAFE linput_t *ida_export create_zip_linput(linput_t *in, ssize_t insize=-1, linput_close_code_t loc=LOC_CLOSE)
Create a linput to read a compressed input stream.
idaman THREAD_SAFE int ida_export process_zipfile_entry(const char *zipfile, const char *entry, int(idaapi *callback)(void *ud, qoff64_t offset, int method, uint64 csize, uint64 ucsize, uint32 attributes, const char *filename), void *ud=nullptr, bool case_sensitive=true)
Search for specified entry in zip file, and calls the callback with it, if found.
idaman THREAD_SAFE int ida_export process_zip_linput(linput_t *li, int(idaapi *callback)(void *ud, qoff64_t offset, int method, uint64 csize, uint64 ucsize, uint32 attributes, const char *filename), void *ud=nullptr)
Process zip file and enumerate all files stored in it.
idaman THREAD_SAFE int ida_export zip_inflate(void *ud, ssize_t(idaapi *file_reader)(void *ud, void *buf, size_t size), ssize_t(idaapi *file_writer)(void *ud, const void *buf, size_t size))
Uncompress data.
idaman THREAD_SAFE int ida_export zip_deflate(void *ud, ssize_t(idaapi *file_reader)(void *ud, void *buf, size_t size), ssize_t(idaapi *file_writer)(void *ud, const void *buf, size_t size))
Compress data.
File I/O functions for IDA.
linput_close_code_t
Upon closing outer linput, perform one of these actions.
Definition diskio.hpp:608
@ LOC_CLOSE
close the inner linput
Definition diskio.hpp:609
asize_t size
Definition kernwin.hpp:6339
unsigned __int64 uint64
Definition llong.hpp:13
unsigned int uint32
unsigned 32 bit value
Definition pro.h:348
ptrdiff_t ssize_t
Signed size_t - used to check for size overflows when the counter becomes negative.
Definition pro.h:381