mirror of
https://gitlab.com/BinaryHardening/cfgrip
synced 2026-07-26 12:41:08 +00:00
29 lines
968 B
C++
29 lines
968 B
C++
#pragma once
|
|
#include "types.hpp"
|
|
#include "loader/binary.hpp"
|
|
#include <capstone/capstone.h>
|
|
|
|
class Disassembler
|
|
{
|
|
public:
|
|
Disassembler();
|
|
~Disassembler();
|
|
|
|
bool init(Arch arch);
|
|
vector<Instruction> disassemble(const vector<uint8_t>& bytes, addr_t base, size_t count = 0);
|
|
bool isProlog(const vector<Instruction>& insts) const;
|
|
bool isEpilog(const Instruction& inst) const;
|
|
bool isReturn(const Instruction& inst) const;
|
|
bool isTrap(const Instruction& inst) const;
|
|
bool isCall(const Instruction& inst) const;
|
|
bool isUnconditionalBranch(const Instruction& inst) const;
|
|
bool isConditionalBranch(const Instruction& inst) const;
|
|
bool isIndirectBranch(const Instruction& inst) const;
|
|
addr_t getBranchTarget(const Instruction& inst) const;
|
|
int64_t getRIPDisp(const Instruction& inst) const;
|
|
|
|
private:
|
|
csh m_handle;
|
|
bool m_initialized;
|
|
};
|