BlackBone
Windows memory hacking library
 All Classes Functions
AsmHelper64.h
1 #pragma once
2 
3 #include "AsmHelperBase.h"
4 #include "../Include/Macro.h"
5 
6 namespace blackbone
7 {
8 
9 class AsmHelper64 : public AsmHelperBase
10 {
11 public:
12  BLACKBONE_API AsmHelper64();
13  BLACKBONE_API ~AsmHelper64( void );
14 
19  virtual void GenPrologue( bool switchMode = false );
20 
26  virtual void GenEpilogue( bool switchMode = false, int retSize = 0 );
27 
34  virtual void GenCall( const AsmVariant& pFN, const std::vector<AsmVariant>& args, eCalligConvention cc = cc_stdcall );
35 
41  virtual void ExitThreadWithStatus( uint64_t pExitThread, size_t resultPtr = 0 );
42 
51  virtual void SaveRetValAndSignalEvent( size_t pSetEvent,
52  size_t ResultPtr,
53  size_t EventPtr,
54  size_t lastStatusPtr,
55  eReturnType rtype = rt_int32 );
56 
64  virtual void EnableX64CallStack( bool state );
65 
69  virtual void SetTebPtr()
70  {
71  // mov rdx, gs:[0x30]
72  _assembler.mov( asmjit::host::rdx, asmjit::host::dword_ptr_abs( 0x30 ).setSegment( asmjit::host::gs ) );
73  }
74 
75 private:
76  AsmHelper64( const AsmHelper64& ) = delete;
77  AsmHelper64& operator = (const AsmHelper64&) = delete;
78 
84  void PushArg( const AsmVariant& arg, size_t index );
85 
92  template<typename _Type>
93  void PushArgp( const _Type& arg, size_t index, bool fpu = false );
94 
95 private:
96  bool _stackEnabled; // if true - GenCall will allocate shadow stack space
97 };
98 
99 }
Definition: AsmHelper64.h:9
virtual void GenEpilogue(bool switchMode=false, int retSize=0)
Generate function epilogue code
Definition: AsmHelper64.cpp:46
virtual void EnableX64CallStack(bool state)
Set stack reservation policy on call generation
Definition: AsmHelper64.cpp:167
General purpose assembly variable
Definition: AsmVariant.hpp:16
virtual void GenPrologue(bool switchMode=false)
Generate function prologue code
Definition: AsmHelper64.cpp:21
virtual void SaveRetValAndSignalEvent(size_t pSetEvent, size_t ResultPtr, size_t EventPtr, size_t lastStatusPtr, eReturnType rtype=rt_int32)
Save return value and signal thread return event
Definition: AsmHelper64.cpp:132
Assembly generation helper
Definition: AsmHelperBase.h:48
virtual void GenCall(const AsmVariant &pFN, const std::vector< AsmVariant > &args, eCalligConvention cc=cc_stdcall)
Generate function call
Definition: AsmHelper64.cpp:71
virtual void SetTebPtr()
Move TEB pointer into rdx
Definition: AsmHelper64.h:69
virtual void ExitThreadWithStatus(uint64_t pExitThread, size_t resultPtr=0)
Save rax value and terminate current thread
Definition: AsmHelper64.cpp:110
Definition: AsmHelper32.cpp:6