|
|
|
|
|
|
|
|
bool tail_recursion; |
|
|
bool tail_recursion; |
|
|
}; |
|
|
}; |
|
|
public: |
|
|
public: |
|
|
AbstractHookEngine(const char* name) : name_(name) { |
|
|
|
|
|
|
|
|
AbstractHookEngine(const char* name) : |
|
|
|
|
|
name_(name), |
|
|
|
|
|
small_(false), |
|
|
|
|
|
branch(false), |
|
|
|
|
|
rip_relative(false), |
|
|
|
|
|
avx(false), |
|
|
|
|
|
rdrand(false), |
|
|
|
|
|
loop(false), |
|
|
|
|
|
tail_recursion(false) |
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
virtual bool unhook_all() = 0; |
|
|
virtual bool unhook_all() = 0; |
|
|
|
|
|
|
|
|
bool all_hooked() { |
|
|
bool all_hooked() { |
|
|
return small_ && branch && rip_relative; |
|
|
|
|
|
|
|
|
return small_ && branch && rip_relative && avx && rdrand && loop && tail_recursion; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
const char* name() { |
|
|
const char* name() { |