16赞!VC++编程创建远程线程式调用CALL。

借箭源码:14.解密!远程CALL调用代码实现原理。

VirtualAllocEx 在指定进程里申请一块内存

LPVOID WINAPI VirtualAllocEx(

__in      HANDLE hProcess, //进程句柄

__in_opt  LPVOID lpAddress, //指定分配的内存地址 NULL 自动

__in      SIZE_T dwSize, //分配内存大小

__in      DWORD flAllocationType, //MEM_COMMIT |MEM_RESERVE

__in      DWORD flProtect  //PAGE_EXECUTE_READWRITE  可读可写权限

);

MEM_COMMIT:为特定的页面区域分配内存中或磁盘的页面文件中的物理存储。

MEM_RESERVE:保留进程的虚拟地址空间,而不分配任何物理存储。

返回的是 一块申请到的内存地址

WriteProcessMemory  向内存写入数据

BOOL WINAPI WriteProcessMemory(

__in   HANDLE hProcess, //进程句柄

__in   LPVOID lpBaseAddress,//要写入数据的内存地址

__in   LPCVOID lpBuffer,//要写入的数据

__in   SIZE_T nSize, //要写入的大小

__out  SIZE_T *lpNumberOfBytesWritten //实际写入大小。NULL

);

写入成功返回 TRUE

CreateRemoteThread  创建远程线程

HANDLE WINAPI CreateRemoteThread(

__in   HANDLE hProcess,   //进程句柄

__in   LPSECURITY_ATTRIBUTES lpThreadAttributes,//安全结构指针 NULL

__in   SIZE_T dwStackSize,  //无参数的CALL 填写0

__in   LPTHREAD_START_ROUTINE lpStartAddress, //调用的CALL

__in   LPVOID lpParameter, //传递参数的指针 NULL stdcall

__in   DWORD dwCreationFlags, //0 线程创建后立即执行

__out  LPDWORD lpThreadId  //输出一个 线程ID。&lpTId

);

返回值为null 创建进程失败

//VC以裸函数的形式内联汇编

__declspec(naked) void Fun()

{

__asm

{

....//汇编代码

}

}

在函数名前声明__declspec(naked),表示以裸函数的形式内联汇编,裸函数是指编译器生成汇编代码时不添加任何额外的指令,对于一般的函数调用,编译器都会自动生成函数初始化代码,如压入和弹出

ebp指针,分配和清理局部变量等。

WaitForSingleObject   等待线程结束

DWORD WINAPI WaitForSingleObject(

__in  HANDLE hHandle,  //线程句柄

__in  DWORD dwMilliseconds  //INFINITE 无限或-1

);

// #define INFINITE            0xFFFFFFFF  // Infinite timeout 无限超时

VirtualFreeEx 释放内存

BOOL WINAPI VirtualFreeEx(

__in  HANDLE hProcess, //进程句柄

__in  LPVOID lpAddress, //要释放的内存地址

__in  SIZE_T dwSize, //释放内存大小

__in  DWORD dwFreeType // MEM_RELEASE 释放指定页。这里填写这值,那么dwSize必须为0,否则函数会调用失败。

);

CloseHandle 关闭句柄

BOOL WINAPI CloseHandle(

__in  HANDLE hObject  //要关闭的句柄,进程句柄 or线程句柄等

);

mfc------------------------------------------------------------------

__declspec(naked) void beibaoyongwupincall()
{__asm{push ebxpush 4push 1push 0mov eax, 0x007C00B0call eaxpop ebxret}
}
void chuangjianyuanchengxiancheng()//创建远程线程
{SIZE_T xierudaxiao = 0;LPVOID calldizhi1 = ::VirtualAllocEx(jinchengjubing, NULL, 0x40900, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);if (calldizhi1 == NULL){AfxMessageBox(L"内存申请失败");}BOOL a = WriteProcessMemory(jinchengjubing, calldizhi1, beibaoyongwupincall, 0x40900, &xierudaxiao);if (a == 0){AfxMessageBox(L"数据写入失败");}DWORD id_xiancheng = 0;HANDLE xianchengjubing = ::CreateRemoteThread(jinchengjubing, NULL, 0, (LPTHREAD_START_ROUTINE)calldizhi1, NULL, 0, &id_xiancheng);//创建远程线程if (xianchengjubing==0){AfxMessageBox(_T("创建远程线程失败"));}WaitForSingleObject(xianchengjubing, INFINITE);VirtualFreeEx(jinchengjubing, calldizhi1, 0, MEM_RELEASE);
}

赞!VC++编程创建远程线程式调用CALL_VirtualAllocEx_WriteProcessMemory_CreateRemoteThread_WaitForSingleObject相关推荐

  1. 使用SharePoint Server 2007搜索对象模型编程创建搜索查询

    MOSS Visual How To 使用SharePoint Server 2007搜索对象模型编程创建搜索查询 摘要:学习如何使用Microsoft Office SharePoint Serve ...

  2. VC编程实现IE风格的界面

    使用过IE浏览器的朋友都知道IE界面上的扁平工具条.地址栏,扁平工具栏上的按钮正常状态下为扁平态,按钮上的图像为灰色,当鼠标放在按钮上时,按钮突 起(这种状态称为手柄),并且其上的图像变得鲜艳醒目,一 ...

  3. 【转】matlab与C/C++混合编程——在Windows/Linux上调用Matlab编译的动态库文件

    转自:matlab与C/C++混合编程--在Windows/Linux上调用Matlab编译的动态库文件_sinat_18131557的博客-CSDN博客 date version comments ...

  4. VC++编程中的文件操作API和CFile类

    VC++编程中的文件操作API和CFile类 在VC编程中,操作文件的方法主要有两种:利用API函数和MFC的CFile类.微软在其中封装了文件的一般操作,下面我就介绍一下如何利用这两种方法实现文件操 ...

  5. vc++ 编程 经典电子书

    完整版目录都在这里了:http://www.cctry.com/forum-46-1.html C.C++ 语言: 一个月挑战C++ http://www.cctry.com/thread-778-1 ...

  6. 《实用VC编程之玩转控件》第1课:Windows编程简介

    本文转载自: VC驿站 https://www.cctry.com/thread-297374-1-1.html 0.开发环境: 操作系统:Microsoft Windows 7 Ultimate S ...

  7. VC/MFC动态画线(橡皮线),画圆,画椭圆,画矩形

    2012年12月7日 22:42:14 今天我在csdn网站上通过学习别人的博客学习到了动态画矩形,画线的方法,这使得我对Windows的消息循环机制有了更深刻的理解.首先来总结一下我今天的收获,呵呵 ...

  8. 在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试

    from:http://m.blog.csdn.net/article/details?id=51075023 在VS2015中先创建C#项目,然后再创建要编写的动态库DLL项目,这样做的好处是整个解 ...

  9. 腾讯位置服务:有何优势?如何使用平台创建应用和服务调用的 Key?

    文章目录 前言 一.腾讯位置服务的优势 1.1.提供丰富的地图产品 1.2.提供行业解决方案 1.3.提供其他生态维度的支持 1.4.海量的数据基础 1.5.丰富的开发文档 二.初识腾讯位置服务 2. ...

最新文章

  1. 让VBCommenter支持自定义用户名
  2. iOS宏定义的使用与规范
  3. python整除表达 mod_[零基础学python]啰嗦的除法
  4. springer journal recommendation tool
  5. mysql 数据趋势,2019年8月全球数据库流行度排行--oracle、mysql增长趋势明显
  6. python利用有道词典翻译_使用Python从有道词典网页获取单词翻译
  7. Unity3D核心类型一览
  8. 我知道有中年危机,但没想到这么不堪
  9. 为什么有些工厂,3000块一个月不包吃住还能招到工人?
  10. JAVA实现的支付宝扫描二维码支付
  11. git推送项目到码云(gitee)
  12. 【数据结构和算法笔记】二叉树的概念和性质
  13. 右键新建文件夹_教你修改Windows万年不变的黄色文件夹,让文件也不枯燥
  14. C++11常用新特性
  15. python小明爬楼梯_Python3爬楼梯算法示例
  16. 如何编写干净的Java代码
  17. Bluetooth 蓝牙介绍(五):低功耗蓝牙BLE Security
  18. 别让自大成为职场绊脚石
  19. 第2次作业:微信案例分析
  20. html访问手机文件系统,eMMC真能优化成UFS?谈谈手机闪存的文件系统

热门文章

  1. 将Google Talk嵌入到网页中
  2. Pinnacle Studio Ultimate v25.0.1.211 品尼高视频剪辑软件中文版
  3. Ubuntu18.04 取消开机密码 实现自动登录
  4. 数据结构之冒泡排序(Java)
  5. SSM(Mybatis + Spring + Spring MVC)框架整合详细步骤(附jar包和项目下载,免费的)
  6. outlook过滤发件人_将联系人添加到Outlook 2007中的安全发件人
  7. 漏洞扫描工具Nessus的安装和使用
  8. 人工神经网络技术及应用,人工神经网络应用场景
  9. 快来看,我让chatGPT帮我写代码了!!!
  10. 安卓游戏红利开发更多属于巨头