DLL注入工具(远程线程技术简单的MFC CListCtrl控件知识)

DLL文件已经编写好、测试程序也很简单、现在就是解决将DLL注入到目标进程中、、

这里采用远程线程注入技术、、本来WIN32控制台就可以、、为了学习下MFC就做了一个简单的MFC框架去实现注入、、

DLL注入工具大概是这样:

1   枚举出所有进程(没做到实时不过添加了一个刷新按钮)、、

2   实现对所选中进程注入DLL、、

工具截图如下:

下面结合代码记录、、

首先运行此工具、得到当前所有进程、、、使用CreateToolhelp32Snapshot函数、、

先在初始化的函数中将列表框的风格初始化好、、

DWORD ListStyle;

ListStyle=::GetWindowLong(m_List.m_hWnd,GWL_STYLE);  //获得窗口风格

ListStyle|=LVS_REPORT | LVS_SHOWSELALWAYS | LVS_EDITLABELS;

SetWindowLong(m_List.m_hWnd,GWL_STYLE,ListStyle);

ListStyle=m_List.GetExtendedStyle(); //  CListCtrl   m_List ;

ListStyle|=LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES;  //高亮网格

m_List.SetExtendedStyle (ListStyle);

m_List.SetTextColor (RGB(0,0,0));  //字体颜色

m_List.SetTextBkColor (RGB(128,252,0)); //字体背景颜色

初始化列表框后开始获取进程填充到列表中、、、先添加好 列 名称、、

CRect RectList;

m_List.GetWindowRect (&RectList); //得List窗口的尺寸放于RectList中、、

m_List.InsertColumn(0,"序号",LVCFMT_CENTER,100);// RectList.Width()

m_List.InsertColumn(1,"进程名称",LVCFMT_LEFT,180);

m_List.InsertColumn(2,"进程ID",LVCFMT_LEFT,RectList.Width()-299);

SetWindowText("Windows当前所有进程");//程序主窗口的名称、、

获取所有进程的代码、、

char itoc[5];

CString s;

int i=0;

HANDLE  Hsnap =   CreateToolhelp32Snapshot  (TH32CS_SNAPPROCESS,  0);

for (BOOL bNext = Process32First(Hsnap,&PE32); bNext; bNext = Process32Next(Hsnap,&PE32))

{

sprintf(itoc,"%d",i);  //将int转成char[];   序号1、2、3、、、

m_List.InsertItem(i,itoc);  //向第i行写入itoc、、

s.Format("%s",PE32.szExeFile); //将char[]转换为Cstring   进程名字、、

m_List.SetItemText(i,1,s);//向第i行第1列写入s、、

sprintf(itoc,"%d",PE32.th32ProcessID);//将DWORD 转成char[];  进程ID

m_List.SetItemText(i,2,itoc);// 向第i行第2列写入itoc、、

i++;

}

CString total;

total.Format("%d",m_List.GetItemCount());//获取行数代表进程数、、格式化到total中、

SetDlgItemText(IDC_Total2,total); // 给文本框赋值Cstring类型数据、、SetDlgItemText  即界面 左下角的框框、、

CloseHandle(Hsnap);   //关闭句柄、

现在所有进程已经得到、、接下来就是对其中选中的某一进程进行注入工作、、

首先给列表框添加消息、、双击即可、、

而在此消息中我们要得到被选中的那一行所在的进程的ID、也就是那一行第二列的数据、

void CMyDllInjectDlg::OnClickList(NMHDR* pNMHDR, LRESULT* pResult)

{

bMouseDown = true;  //这个变量是用来判断用户是否选中没选中则不可进行操作、还可以用函数GetItemState判断是否选中

NM_LISTVIEW*  pNMListView  = (NM_LISTVIEW*)  pNMHDR;

// NM_LISTVIEW这个结构有以下成员(NMHDRhdr; int iItem; int iSubItem; UINT uNewState;

//UINT uOldState; UINT uChanged; POINT ptAction; LPARAM lParam;);

//转换为NM_LISTVIEW*类型、、获取选中的行号列号(这里我们不需要列号肯定是获取第二列)

CString csID  =  m_List.GetItemText  (pNMListView->iItem,2); //得到被选中的行的对应的进程ID

iID  =  atoi(csID);   //CString到int  将ID转成int类型的全局变量、、

ProcessName   =  m_List.GetItemText  (pNMListView->iItem,1); //得到进程名字、用于本进程不结束自己、(为HOOK OpenProcess  酝酿一下)

*pResult = 0; //将指针pResult所指位置的内容置0  函数自动生成的以免指针没有初始化、、

}

好了 进程ID 得到了 接下来 就可以实现对此进程 进行注入了

转载于:https://blog.51cto.com/xzv587/1361020

实现HOOK其他进程的Messagebox(2) DLL注入工具相关推荐

  1. 一个不错的Windows全平台DLL注入工具

    一个不错的Windows全平台DLL注入工具 支持WinXP-Win10 最高级权限注入,做想做和要做的事都无任何障碍 LdrLoadDll方式注入绝对稳定可靠 单文件,无任何依赖 支持32位和64位 ...

  2. dll注入工具_UnmanagedPowerShell工具分析

    简单介绍:从非托管进程执行PowerShell.通过一些修改,可以在将这些相同的技术注入到不同的进程时使用(例如,如果需要,可以让任何进程执行PowerShell) 下面借用网上的一张图来说明这个流程 ...

  3. C语言 编写的DLL注入工具,新人开源一个自己开发的DLL注入和汇编注入器(简单的讲解)...

    本帖最后由 zhaobisheng 于 2020-11-13 15:18 编辑 新人双11刚注册了帐号,来个新人贴冒一下泡 ,因为我写文章比较少,如果表达的不够清晰的话,大家可以留言哈,多多谅解,源码 ...

  4. c语言怎么编程dll,【C语言】编写的DLL注入工具

    [C] 纯文本查看 复制代码// 参数类型 typedef struct _INJECTTHREAD_PARAM { FARPROC pFunc[3]; char szBuf[2][128]; } I ...

  5. python语言编写的DLL注入工具

    一.流程 1.第一步,获取要注入进程快照: 2.第二步,在快照中比对进程名,得到进程PID: 3.第三步,用pid去打开进程获取到句柄: 4.第四步,在要注入的进程内申请一块内存: 5.第五步,把要注 ...

  6. dll注入工具_bypassUAC amp;amp; DLL劫持

    0x11 UAC简介 用户帐户控制(User Account Control,简写作UAC)是微软公司在其Windows Vista及更高版本操作系统中采用的一种控制机制.其原理是通知用户是否对应用程 ...

  7. C/C++劫持技术(函数劫持、dll注入、动态库注入、HOOK)

    目录 劫持 detours 实现劫持 步骤: 1. 安装Detours 2. 编译Detours工程 3. 把静态库和头文件引入工程 4. 函数指针与函数的定义 5.拦截 劫持QQ 实现劫持syste ...

  8. 【网络杂烩 ---> 网络安全】DLL 注入 --- c/c++ 代码实现(超 · 详细)

    麻了,之前写的博客全是收藏,没人点赞,来点赞行不行! GitHub同步更新(已分类):DLL_Injection Gitee同步更新(已分类)DLL_Injection 公众号:URLeisure 的 ...

  9. 2020-11-23(Windows系统的dll注入 )

    一.什么是dll注入 在Windows操作系统中,运行的每一个进程都生活在自己的程序空间中(保护模式),每一个进程都认为自己拥有整个机器的控制权,每个进程都认为自己拥有计算机的整个内存空间,这些假象都 ...

最新文章

  1. LED芯片,应用品,蓝宝石衬底,集成电路,UV
  2. java运行时_java编译时与运行时概念与实例详解
  3. 遇到 400、500 错误千万不要慌!
  4. LeetCode 726. 原子的数量
  5. 关于Anaconda的环境和包管理
  6. appium java api文档_Appium常用API
  7. 大数据之-Hadoop完全分布式_完全分布式模式下的集群配置---大数据之hadoop工作笔记0034
  8. 电气一次图自适应屏幕,定位精确,无参考代码,只是解决方案,技术科行,已经用于项目
  9. 富士施乐3065扫描教程_富士施乐怎么设置扫描到PC
  10. linux恢复树莓派内存卡容量,找回树莓派SD卡剩余空间
  11. [编辑本段]【通古斯大爆炸六大热门假说】
  12. java wait until_java调用ktr文件trans.waitUntilFinished()超时
  13. Good Bye 2020 E
  14. JUC源码分析16-集合-ConcurrentSkipListMap、ConcurrentSkipListSet
  15. 写作人的福音——obsidian非官方插件之senGener
  16. php如何实现验证码
  17. 智慧停车系统是怎么运行的?
  18. 树(2021.7.11晚)
  19. jquery实现字数限制,超过部分...代替,后缀点击展开,点击后展开全文
  20. 安装oracle gcc版本,安装cx_Oracle时报错:error: command 'gcc' failed with exit status 1

热门文章

  1. 蛋花花谈Web开发到底要不要加入人工智能
  2. 转 Java的各种打包方式(JAR/WAR/EAR/CAR)
  3. JQuery Basic Features Quick Walkthrough
  4. 小米澄清传闻:不存在跨境转移利润及逃避缴纳税款行为
  5. (C/C++学习)6.数组指针和指针数组
  6. 推荐11个实用的JavaScript库
  7. maven jdk 版本配置
  8. android蓝牙4.0BLE
  9. openssl 非对称加密 RSA 加密解密以及签名验证签名
  10. LVS DR模型配置示例