You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
31 lines
745 B
31 lines
745 B
#pragma once
|
|
#pragma section( ".xmp2" )
|
|
#pragma comment( linker, "/section:.xmp2,RWE" )
|
|
using __vmcall_t = void* (*)(...);
|
|
|
|
namespace vm
|
|
{
|
|
struct _gen_data
|
|
{
|
|
unsigned char __vmcall_shell_code[3] = {0x0, 0x0, 0x0};
|
|
} __declspec( allocate( ".xmp2" ) ) gen_data;
|
|
|
|
inline __vmcall_t __vmcall = reinterpret_cast< __vmcall_t >( gen_data.__vmcall_shell_code );
|
|
|
|
enum class calls : unsigned long long
|
|
{
|
|
get_world = 0xBFFD6FE9,
|
|
get_hello = 0xBFFD6FE9
|
|
};
|
|
|
|
template < class T, class... Ts > T call( vm::calls e_call, Ts... args )
|
|
{
|
|
return reinterpret_cast< T >( __vmcall( e_call, args ) );
|
|
}
|
|
} // namespace vm
|
|
|
|
int main()
|
|
{
|
|
vm::call<unsigned long long>( vm::calls::get_hello );
|
|
|
|
} |