美文网首页
DLL注入学习笔记(2)

DLL注入学习笔记(2)

作者: Ginkgo_Alkaid | 来源:发表于2019-10-09 20:43 被阅读0次

    紧接着上次笔记,这次要用程序调用上次写的dll里的函数,需要使用上次编译好的三个文件:Win32Project1.dll,Win32Project1.lib和Win32Project1.h


    图片.png

    首先新建一个MFC项目:


    图片.png

    下一步在应用程序类型上选择基于对话框,继续下一步直到创建成功:

    图片.png

    控制下边框的大小,以及确定和取消的位置:

    图片.png

    隐式链接

    把三个文件复制到当前项目目录,双击确定,在头部加入调用声明

    pragma comment ( lib,"xxx.lib" )

    表示链接xxx.lib这个库,告诉编译器你要用到xxx.lib库
    和在工程设置里写上链入xxx.lib的效果一样,不过这种方法写的 程序别人在使用你的代码的时候就不用再设置工程settings了。


    图片.png

    在点击确定的函数里添加上之前写好的dll的输出函数fnWin32Func();


    图片.png

    编译并把dll文件放到生成的exe目录中,运行程序,点击确定可以看到运行了dll的导出函数:


    图片.png

    显式链接

    将头文件的函数声明前,加上extern “C” 表示这是一个C语言库函数,这样就不会有符号破碎的问题,由于C++的重载机制,不加函数就会被重命名

    图片.png

    之后编写代码如下所示:

    typedef int(*MyFunc)(void);
    
    void CMFCApplication1Dlg::OnBnClickedOk()
    {
        // TODO:  在此添加控件通知处理程序代码
        HMODULE hMod = LoadLibrary(_T("Win32Project1.dll"));
        if(hMod){
            MyFunc myFunc = (MyFunc)GetProcAddress("fnWin32Func");
            myFunc();
            FreeLibrary(hMod);
        }
    
        CDialogEx::OnOK();
    }
    

    编译并运行成功:


    图片.png

    相关文章

      网友评论

          本文标题:DLL注入学习笔记(2)

          本文链接:https://www.haomeiwen.com/subject/qhqnpctx.html