Code
Hub
Workspaces
Following
Trending
Connect
MCP
copy
Create free account
hub
/
github.com/0xnobody/vmpattack
/ functions
Functions
116 in github.com/0xnobody/vmpattack
⨍
Functions
116
◇
Types & classes
31
↓ 41 callers
Method
fetch_vsp
Matches for instructions that fetch memory from the virtual stack. Constraints: dst: the destination register. size: the size of the destination
VMPAttack/vm_analysis_context.hpp:149
↓ 35 callers
Method
push
Matches for a PUSH %reg instruction. Constraints: %reg: the register pushed.
VMPAttack/analysis_context.hpp:249
↓ 23 callers
Function
register_base_equal
Determines whether or not the register's bases are equal. e.g. RAX == AH, as base( RAX ) == AL, and base( AH ) == AL.
VMPAttack/instruction_utilities.hpp:10
↓ 7 callers
Method
id
Match via instruction id. Optionally returns a non-owning pointer to the instruction.
VMPAttack/analysis_context.hpp:233
↓ 6 callers
Method
mov_reg_reg
Templates for double register-operand instructions.
VMPAttack/analysis_context.hpp:348
↓ 5 callers
Method
align
Aligns a given uint64_t to the given modulus.
VMPAttack/analysis_context.hpp:219
↓ 5 callers
Method
fetch_vip
Matches for instructions that fetch memory from the vip stream. Constraints: reg: the register the memory is stored in. size: the size of the mem
VMPAttack/vm_analysis_context.hpp:108
↓ 5 callers
Method
store_vsp
Matches for instructions that stores memory into the virtual stack. Constraints: src: the source register. Comparison via base. size: the size of
VMPAttack/vm_analysis_context.hpp:197
↓ 4 callers
Method
advance
Computes the next handler from the bridge, updating the context in respect. Returns the next handler's rva.
VMPAttack/vm_bridge.cpp:9
↓ 4 callers
Method
compute
Compute the output for a given input, by applying each operation on said input.
VMPAttack/arithmetic_expression.cpp:8
↓ 4 callers
Method
not_reg
Templates for single register-operand instructions.
VMPAttack/analysis_context.hpp:301
↓ 4 callers
Method
record_encryption
Generates an arithmetic expression for the given register, advancing the stream to wherever the encryption sequence ends.
VMPAttack/vm_analysis_context.hpp:333
↓ 3 callers
Method
disassemble
Disassembles at the effective address, negotating jumps according to the flags.
VMPAttack/disassembler.cpp:7
↓ 3 callers
Function
get_largest_for_arch
Gets the register's largest architecture equivalent.
VMPAttack/instruction_utilities.hpp:17
↓ 3 callers
Method
operand_type
VMPAttack/instruction.hpp:42
↓ 3 callers
Method
record_expression
Initializes the analysis context's arithmetic expression, and starts recording the given register's arithmetic operations. Then invokes the provided f
VMPAttack/analysis_context.hpp:159
↓ 3 callers
Method
set_flow
Matches an instruction that loads the "flow" (ie. the rip of the current instruction) into a register. Constraints: reg: the register the flow is w
VMPAttack/analysis_context.hpp:828
↓ 2 callers
Method
add_vsp
Matches for an instruction that adds an immediate value to the VSP register. Constraints: imm: the immediate value added.
VMPAttack/vm_analysis_context.hpp:49
↓ 2 callers
Method
base
Get the stream base
VMPAttack/instruction_stream.hpp:49
↓ 2 callers
Function
dynamic_size_cast
VMPAttack/arithmetic_utilities.hpp:8
↓ 2 callers
Method
fetch_memory
Matches for a mov / movzx of memory at a register into another register. Constraints: dst: the destination register. src: the memory source regi
VMPAttack/analysis_context.hpp:452
↓ 2 callers
Method
get_handle
Getter to the handle.
VMPAttack/disassembler.hpp:76
↓ 2 callers
Method
is_uncond_jmp
VMPAttack/instruction.hpp:44
↓ 2 callers
Method
operand_count
Useful utilities.
VMPAttack/instruction.hpp:40
↓ 2 callers
Function
operation_desc_from_instruction
Fetches the appropriate arithmetic operation descriptor for the given instruction, or nullptr otherwise.
VMPAttack/arithmetic_operations.hpp:139
↓ 2 callers
Method
rva
Disassembler bases instructions via RVA, thus base == rva.
VMPAttack/instruction_stream.hpp:56
↓ 2 callers
Method
store_ctx
Matches for instructions that stores memory into the virtual context, optionally offsetted by a register. Constraints: src: the source register. Co
VMPAttack/vm_analysis_context.hpp:288
↓ 2 callers
Method
to_string
Converts the instruction to human-readable format.
VMPAttack/vm_instruction.cpp:10
↓ 2 callers
Method
update_reg
Matches for instructions that either increment or decrement the a given register. via ADD or SUB instructions, using a immedaite value. Constraints: i
VMPAttack/analysis_context.hpp:574
↓ 1 callers
Method
add_handler
Adds a handler to the vm_instace.
VMPAttack/vm_instance.cpp:33
↓ 1 callers
Method
add_reg_reg
VMPAttack/analysis_context.hpp:350
↓ 1 callers
Method
allocate_stack
Matches an instruction that allocates the VM's stack by subtracting and immediate value from rsp. Constraints: imm: the immediate valued subtracted
VMPAttack/analysis_context.hpp:869
↓ 1 callers
Method
and_reg_reg
VMPAttack/analysis_context.hpp:354
↓ 1 callers
Method
begin_encryption
Matches for an instruction which begins an encryption/obfuscation sequence, by XORing the given register by the rolling key. Constraints: reg: the
VMPAttack/analysis_context.hpp:705
↓ 1 callers
Method
decode
Decodes and updates the context to construct a vm_instruction describing the instruction's details.
VMPAttack/vm_handler.cpp:10
↓ 1 callers
Method
disassembly_simple
Disassembles at the offset from the base, simply disassembling every instruction in order.
VMPAttack/disassembler.cpp:89
↓ 1 callers
Method
div_reg
VMPAttack/analysis_context.hpp:302
↓ 1 callers
Method
fetch_ctx
Matches for instructions that fetch memory from the virtual context, optionally displaced by a register. Constraints: dst: the destination register
VMPAttack/vm_analysis_context.hpp:238
↓ 1 callers
Method
fetch_encrypted_vip
Matches an instruction that fetches the encrypted vip ("stub") from the stack. Constraints: reg: the register the stub is written into. offset: the
VMPAttack/analysis_context.hpp:788
↓ 1 callers
Method
find_handler
Attempts to find a handler, given an rva.
VMPAttack/vm_instance.cpp:46
↓ 1 callers
Method
generic_reg_imm
Matches for a generic instruciton with 1 register and 1 immediate operand. Constraints: id: the instruction's id. reg: the first operand's regi
VMPAttack/analysis_context.hpp:417
↓ 1 callers
Method
generic_reg_reg
Matches for a generic instruciton with 2 register operands. If argument match_bases is true, reigster comparison is done via bases. Otherwise, it is d
VMPAttack/analysis_context.hpp:314
↓ 1 callers
Method
get_regs_accessed
Returns a vector of registers this instruction writes to and reads from. Read is returned in the first part of the pair, Written in the second.
VMPAttack/instruction.cpp:48
↓ 1 callers
Method
idiv_reg
VMPAttack/analysis_context.hpp:303
↓ 1 callers
Method
imul_reg
VMPAttack/analysis_context.hpp:305
↓ 1 callers
Method
initialize_context
Creates an initial vm_context for this instance, given an entry stub and the image's load delta. The created vm_context is initialized at the first ha
VMPAttack/vm_instance.cpp:9
↓ 1 callers
Method
is_branch
VMPAttack/instruction.hpp:46
↓ 1 callers
Method
lift
Performs the specified lifting job, returning a raw, unoptimized vtil routine.
VMPAttack/vmpattack.cpp:492
↓ 1 callers
Function
map_image
VMPAttack/vmpattack.cpp:129
↓ 1 callers
Method
match
VMPAttack/analysis_context.hpp:71
↓ 1 callers
Method
mul_reg
VMPAttack/analysis_context.hpp:304
↓ 1 callers
Method
next
Advances the stream, incrementing index and returning the instruction ptr.
VMPAttack/instruction_stream.cpp:8
↓ 1 callers
Method
offset_reg
Matches for instructions that offset the given register via either a lea or add instruction. Constraints: id: the id of the matched instru
VMPAttack/analysis_context.hpp:619
↓ 1 callers
Method
or_reg_reg
VMPAttack/analysis_context.hpp:353
↓ 1 callers
Method
prefix
VMPAttack/instruction.hpp:48
↓ 1 callers
Method
push_memory
Matches for a push of memory at a register Constraints: src: the memory source register. size: the size of the source.
VMPAttack/analysis_context.hpp:537
↓ 1 callers
Method
rcl_reg_reg
VMPAttack/analysis_context.hpp:355
↓ 1 callers
Method
rcr_reg_reg
VMPAttack/analysis_context.hpp:356
↓ 1 callers
Function
read_file
Still hate c++
VMPAttack/main.cpp:26
↓ 1 callers
Method
scan_for_vmentry
Scans the given code section for VM entries. Returns a list of results, of [root rva, lifting_job]
VMPAttack/vmpattack.cpp:551
↓ 1 callers
Method
shl_reg_reg
VMPAttack/analysis_context.hpp:351
↓ 1 callers
Method
shld_reg_reg_reg
Templates for triple register-operand instructions.
VMPAttack/analysis_context.hpp:409
↓ 1 callers
Method
shr_reg_reg
VMPAttack/analysis_context.hpp:352
↓ 1 callers
Method
shrd_reg_reg_reg
VMPAttack/analysis_context.hpp:410
↓ 1 callers
Method
simple_track_registers
VMPAttack/analysis_context.hpp:142
↓ 1 callers
Method
store_memory
Matches for a mov / movzx of a register into memory at another register. Constraints: dst: the destination register. src: the memory source regi
VMPAttack/analysis_context.hpp:497
↓ 1 callers
Method
track_register_pops
VMPAttack/analysis_context.hpp:195
↓ 1 callers
Method
track_register_pushes
VMPAttack/analysis_context.hpp:178
↓ 1 callers
Method
xor_reg_reg
VMPAttack/analysis_context.hpp:349
Method
add_instance
Adds the specified vm_instance to the cached list, exersizing thread-safe behaviour in doing so.
VMPAttack/vmpattack.cpp:41
Method
analysis_context
Construct the analysis_context via an instruction_stream pointer. The pointer must stay valid for the lifetime of the object.
VMPAttack/analysis_context.hpp:134
Method
analyze_entry_stub
Performs an analysis on the specified vmentry stub rva, returning relevant information.
VMPAttack/vmpattack.cpp:503
Method
arithmetic_operation
Construct via backing descriptor and additional operand vector.
VMPAttack/arithmetic_operation.hpp:23
Method
arithmetic_operation_desc
Constructor.
VMPAttack/arithmetic_operation_desc.hpp:39
Method
cast
VMPAttack/analysis_context.hpp:212
Method
disassembler
Cannot be copied or moved. Only one disassembler can exist per thread.
VMPAttack/disassembler.hpp:57
Method
end_encryption
Matches for an instruction which ends an encryption/obfuscation sequence, by either 1) pushing the rolling key for it to later be XORed, or 2) directl
VMPAttack/analysis_context.hpp:722
Method
fetch
VMPAttack/vm_context.hpp:37
Method
from_context
Construct vm_instruction from its handler and a context.
VMPAttack/vm_instruction.cpp:49
Method
from_instruction
Construct via instruction and descriptor. If construction failed, returns empty object.
VMPAttack/arithmetic_operation.cpp:9
Method
from_instruction_stream
Attempts to construct a vm_instance from the VMEntry instruction stream. If fails, returns empty {}.
VMPAttack/vm_instance.cpp:70
Method
from_instruction_stream
Construct a vm_handler from its instruction stream. Updates vm_state if required by the descriptor. If the operation fails, returns empty {}.
VMPAttack/vm_handler.cpp:37
Method
from_instruction_stream
Construct a vm_bridge from an initial state and its instruction stream. If the operation fails, returns empty {}.
VMPAttack/vm_bridge.cpp:40
Method
generic_reg
Matches for a generic instruciton with 1 register operand. If argument match_bases is true, reigster comparison is done via bases. Otherwise, it is do
VMPAttack/analysis_context.hpp:276
Method
generic_reg_reg_reg
Matches for a generic instruciton with 3 register operands. If argument match_bases is true, reigster comparison is done via bases. Otherwise, it is d
VMPAttack/analysis_context.hpp:366
Method
instruction
Copy constructor.
VMPAttack/instruction.hpp:26
Method
instruction_stream
Default constructor / move / copy.
VMPAttack/instruction_stream.hpp:36
Method
is_cond_jump
Is the instruction a conditional jump?
VMPAttack/instruction.cpp:27
Method
is_jmp
Determines whether this instruction is any type of jump.
VMPAttack/instruction.cpp:8
Method
lift_block
Lifts a single basic block, given the appropriate information.
VMPAttack/vmpattack.cpp:169
Method
lift_internal
Performs the specified lifting job, returning a raw, unoptimized vtil routine. Optionally takes in a previous block to fork. If null, creates a new bl
VMPAttack/vmpattack.cpp:56
Method
lifting_job
Constructor.
VMPAttack/vmentry.hpp:21
Method
lookup_instance
Attempts to find a vm_instance for the specified rva. If succeeded, returns said instance. Otherwise returns nullptr.
VMPAttack/vmpattack.cpp:17
Function
main
VMPAttack/main.cpp:53
Function
main
VMPAttack_Tester/VMPAttack_Tester.cpp:24
Method
offset_vip
Matches for instructions that offset the vip register via either a lea or add instruction. Constraints: id: the id of the matched instruct
VMPAttack/vm_analysis_context.hpp:87
Method
process
Processes the instruction, updating any properties that the instruction may change.
VMPAttack/analysis_context.cpp:10
Method
reset
Resets index to 0
VMPAttack/instruction_stream.hpp:63
Method
scan_result
Constructor.
VMPAttack/vmentry.hpp:40
Method
set_vip
Matches for an explicitly matched mov of another register into the vip register. Constraints: reg: the register that is mov'ed into vip.
VMPAttack/vm_analysis_context.hpp:34
next →
1–100 of 116, ranked by callers