VMProfiler
v1.8
vmprofiler is a c++ library which is used to statically analyze VMProtect 2 polymorphic virtual machines. This project is inherited in vmprofiler-qt, vmprofiler-cli, and vmemu.
|
Typedefs | |
template<typename T > | |
using | transform_t = std::function< T(T, T) > |
transform function, such as ADD, SUB, BSWAP... etc... More... | |
using | map_t = std::map< transform::type, zydis_decoded_instr_t > |
map of transform type to zydis decoded instruction of the transform... More... | |
Enumerations | |
enum class | type { generic0 , rolling_key , generic1 , generic2 , generic3 , update_key } |
type of transformation... More... | |
Functions | |
template<class T > | |
T | __ROL__ (T value, int count) |
rotate left template function take from IDA SDK... More... | |
u8 | __ROL1__ (u8 value, int count) |
rotate left a one byte value... More... | |
u16 | __ROL2__ (u16 value, int count) |
rotate left a two byte value... More... | |
u32 | __ROL4__ (u32 value, int count) |
rotate left a four byte value... More... | |
u64 | __ROL8__ (u64 value, int count) |
rotate left an eight byte value... More... | |
u8 | __ROR1__ (u8 value, int count) |
rotate right a one byte value... More... | |
u16 | __ROR2__ (u16 value, int count) |
rotate right a two byte value... More... | |
u32 | __ROR4__ (u32 value, int count) |
rotate right a four byte value... More... | |
u64 | __ROR8__ (u64 value, int count) |
rotate right an eight byte value... More... | |
bool | valid (zydis_mnemonic_t op) |
determines if the given mnemonic is a valid transformation... More... | |
void | inverse_transforms (transform::map_t &transforms, transform::map_t &inverse) |
inverse operand decryption transformations... More... | |
auto | inverse_transforms (std::vector< zydis_decoded_instr_t > &instrs) -> bool |
inverse transformations given a vector of them... More... | |
auto | apply (std::uint8_t bitsize, ZydisMnemonic op, std::uint64_t a, std::uint64_t b) -> std::uint64_t |
bool | has_imm (const zydis_decoded_instr_t *instr) |
determines if a given decoded instruction has a second operand that is an immediate value... More... | |
Variables | |
template<class T > | |
const auto | _bswap |
template<class T > | |
const auto | _add = []( T a, T b ) -> T { return a + b; } |
template<class T > | |
const auto | _xor = []( T a, T b ) -> T { return a ^ b; } |
template<class T > | |
const auto | _sub = []( T a, T b ) -> T { return a - b; } |
template<class T > | |
const auto | _neg = []( T a, T b ) -> T { return a * -1; } |
template<class T > | |
const auto | _not = []( T a, T b ) -> T { return ~a; } |
template<class T > | |
const auto | _ror |
template<class T > | |
const auto | _rol |
template<class T > | |
const auto | _inc = []( T a, T b ) -> T { return a + 1; } |
template<class T > | |
const auto | _dec = []( T a, T b ) -> T { return a - 1; } |
template<class T > | |
std::map< zydis_mnemonic_t, transform_t< T > > | transforms |
std::map< zydis_mnemonic_t, zydis_mnemonic_t > | inverse |
using vm::transform::map_t = typedef std::map< transform::type, zydis_decoded_instr_t > |
map of transform type to zydis decoded instruction of the transform...
using vm::transform::transform_t = typedef std::function< T( T, T ) > |
transform function, such as ADD, SUB, BSWAP... etc...
T | returns the transform result... |
|
strong |
rotate left a one byte value...
value | byte value |
count | number of bits to rotate |
rotate left a two byte value...
value | two byte value to rotate... |
count | number of bits to rotate... |
rotate left a four byte value...
value | four byte value to rotate... |
count | number of bits to shift... |
rotate left an eight byte value...
value | eight byte value... |
count | number of bits to shift... |
|
inline |
rotate left template function take from IDA SDK...
T | type of data to rotate left... |
value | value to rotate left |
count | number of bits to rotate left... |
rotate right a one byte value...
value | one byte value... |
count | number of bits to shift... |
rotate right a two byte value...
value | two byte value to rotate... |
count | number of bits to shift... |
rotate right a four byte value...
value | four byte value to rotate... |
count | number of bits to rotate... |
rotate right an eight byte value...
value | eight byte value |
count | number of bits to rotate... |
|
inline |
|
inline |
determines if a given decoded instruction has a second operand that is an immediate value...
instr | pointer to a decoded instruction... |
|
inline |
inverse transformations given a vector of them...
instrs | reference to a vector of transformations... |
|
inline |
inverse operand decryption transformations...
transforms | reference to the transformations to be inversed... |
inverse | reference to the resulting inversed transformations... |
|
inline |
determines if the given mnemonic is a valid transformation...
op | mnemonic of the native instruction... |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |