zoukankan      html  css  js  c++  java
  • c++ 动态设置函数

    #include <iostream>
    #include <Windows.h>
    #include <TlHelp32.h>
    
    using namespace std;
    
    typedef int(__stdcall* FUN1)();
    
    FUN1 fun1;
    
    int main()
    {
    	BYTE* newmem = (BYTE*)VirtualAlloc(0, 100, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
    	BYTE bytes[] = {
    		0xB8, 0x0A, 0x00, 0x00, 0x00, // mov eax, 0xa
    		0xC3,			      // ret
    	};
    	int len = sizeof(bytes);
    	memcpy_s(newmem, len, bytes, len);
    	fun1 = (FUN1)newmem;
    
    	cout << fun1() << endl; // 10
    	VirtualFree(newmem, 0, MEM_RELEASE);
    	return 0;
    }
    
    #include <iostream>
    #include <Windows.h>
    #include <TlHelp32.h>
    
    using namespace std;
    
    typedef int(__stdcall* FUN1)();
    
    FUN1 fun1;
    
    void setFun(uintptr_t* fun)
    {
    	BYTE* newmem = (BYTE*)VirtualAlloc(0, 100, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
    	BYTE bytes[] = {
    		0xB8, 0x0A, 0x00, 0x00, 0x00, // mov eax, 0xa
    		0xC3,			      // ret
    	};
    	int len = sizeof(bytes);
    	memcpy_s(newmem, len, bytes, len);
    	*fun = (uintptr_t)newmem;
    }
    
    int main()
    {
    	setFun((uintptr_t*)&fun1);
    	cout << fun1() << endl; // 10
    	return 0;
    }
    
  • 相关阅读:
    CTF-cookies欺骗
    CTF-速度要快100
    php实现登录注册界面
    CTF-秋名山老司机 100
    三大类型语句
    PHP运算符
    标记风格和注释
    连接串口服务器时的注意事项
    RS485转以太网的概述和应用领域
    工业级路由器的优点有哪些
  • 原文地址:https://www.cnblogs.com/ajanuw/p/13457513.html
Copyright © 2011-2022 走看看