• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

简单的C++DLL注入

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

环境:

  • Visual Studio 2015及以上
  • Windows 7及以上

入门需要了解的:

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

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


任务目标:将DLL注入到Windows计算器中,使按下Home键时弹出消息框(MessageBox)

1.生成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);

}

生成->编译 

 

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

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#控制台自定义背景颜色,字体颜色大全发布时间:2022-07-13
下一篇:
C#复制类内容发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap