以下均以x64作为示例,如果需要x86,将x64替换为x86即可
为了一些后续的工作开展,我选择了linux来进行开发,而不是windows
- Ubuntu
- mingw-w64
- gcc
首先下载项目
git clone https://github.com/akkuman/go-dll-evil
cd go-dll-evil
- main.cpp 生成主程序 main.exe,该程序调用 add.dll 进行加法运算
make build-main-x64
- add.cpp 生成原始的
add.dll
和_add.dll
,这两个dll完全一样,_add.dll
主要是为了后面进行 dll 转发使用
make build-dll-x64
- 将 main.exe 与刚才生成的 add.dll 拷到windows,命令行执行 main.exe,可以看到正确输出了
result: 300
- 将 evil.cpp 与 functions.def 一起编译,生成转发 dll(转发至 _add.dll)
make build-build-evil-x64
- 将 _add.dll 与刚才生成的 add.dll 拷入刚才的windows目录下,执行 main.exe,可以看到正确输出了
result: 300
,转发成功
- 将 def 与 go 一起编译,生成转发 dll(转发至 _add.dll)
make build-goevil-x64
- 将 _add.dll 与刚才生成的 add.dll 拷入刚才的windows目录下,执行 main.exe,可以看到正确输出了
result: 300
,转发成功
- 进入目录 dllmain
cd dllmain
- 将 c 和 go 一起编译,链接时带上 def,生成恶意转发 dll(转发至 _add.dll)
make build-evil-x64
- 将 _add.dll 与刚才生成的 add.dll 拷入刚才的windows目录下,执行 main.exe,可以看到正确输出了
result: 300
,转发成功,同时出现了我们插入的恶意对话框示例