c/c++语言开发共享简单的C++ DLL注入

今天呢,我们来讨论一下用C++实现DLL注入的简单方法。 环境: Visual Studio 2015及以上 Windows 7及以上 入门需要了解的: DLL是什么:DLL_360百科 DLL是Dynamic Link Library的缩写,意为动态链接库。在Windows中,许多应用程序并不是一 …

今天呢,我们来讨论一下用c++实现dll注入的简单方法。

环境:

  • visual studio 2015及以上
  • windows 7及以上

入门需要了解的:

  • dll是什么:dll_360百科

dll是dynamic link library的缩写,意为动态链接库。在windows中,许多应用程序并不是一个完整的,它们被分割成一些相对独立的动态链接库,即dll文件,放置于%ignore_a_1%中。当我们执行某一个程序时,相应的dll文件就会被调用。一个应用程序可有多个dll文件,一个dll文件也可能被几个应用程序所共用,这样的dll文件被称为共享dll文件。

  • 注入是什么:注入_360百科

所谓dll注入就是将一个dll放进某个进程的里,让它成为那个进程的一部分。要实现dll注入,首先需要打开目标进程。


任务目标:将dll注入到windows计算器中,使按下home键时弹出消息框(messagebox)

1.生成dll文件:

简单的C++ DLL注入

2.代码时间!

需要了解的函数方法:

findwindow( //返回该窗体的句柄(hwnd) lpctstr lpclassname, //窗体的类名,可以为null lpctstr lpwindowname //窗体的标题 );  getwindowthreadprocessid( //返回这个线程的id(dword) hwnd hwnd, //该窗体的句柄(hwnd) 用findwindow获取 lpdword lpdwprocessid  //存放 线程的变量地址(dword) 的地址(有点绕口 = =) );   getmodulehandle( //获取一个特定的应用程序或动态链接库的模块句柄 lpctstrlpmodulename); //模块名称 也就是dll项目名  setwindowshookex( __in int idhook, //钩子类型 这里用的是键盘钩子,所以用wh_keyboard __in hookproc lpfn, //回调函数地址 处理键盘事件的方法 __in hinstance hmod, //实例句柄 也就是这个dll的句柄,用getmodulehandle获取 __in dword dwthreadid); //线程id 用getwindowthreadprocessid获取

 了解以上函数以后,事情就变得十分简单了:

直接将代码加入到初始的cpp中即可,注意更改部分的代码以兼容你自己的程序:

lresult winapi keybordproc(int code, wparam wp, lparam lp) {     if (code == hc_action && wp == vk_home && getkeystate(vk_home) < 0) {         messagebox(null,text("lol"),text("is working!"),0);         return 0;     }     return callnexthookex(null, code, wp, lp);//一定要有,否则程序可能无法正常运行 }   void _stdcall sethook() {     hwnd games;     games = ::findwindow(null, text("计算器"));      dword pid, tid;     tid = ::getwindowthreadprocessid(games, &pid);     hhook g_hook=::setwindowshookex(wh_keyboard,         keybordproc,         getmodulehandle(text("mfclibrary2.dll")),//注意这里是生成的dll名称         tid);  }

简单的C++ DLL注入

生成->编译 

 简单的C++ DLL注入

没差错的话dll就生成在了debug目录下

简单的C++ DLL注入

 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ctvol.com/c-cdevelopment/607832.html

(0)
上一篇 2021年5月14日
下一篇 2021年5月14日

精彩推荐