首页
社区
课程
招聘
[讨论]rundll32执行DLL中的函数的问题
发表于: 2009-1-22 17:05 8431

[讨论]rundll32执行DLL中的函数的问题

2009-1-22 17:05
8431
本人初学编程,写了个DLL,代码如下
#include <windows.h>
#pragma comment(linker,"/ENTRY:NewEntry")
_declspec(dllexport) void CALLBACK RundllTest()
{
        MessageBox(0,"dllexporttest","test",0);
}

BOOL APIENTRY NewEntry(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpservel)
{
        switch(ul_reason_for_call)
        {
case     DLL_PROCESS_ATTACH:
          MessageBox(0,"Loadtest","test",0);
          break;
case      DLL_PROCESS_DETACH:
           MessageBox(0,"BYE","BYE",0);
        break;

        }
        return TRUE;
}

直接F7编译后,在CMD下运行RUNDLL32 本程序名,RundllTest
直接提示Loadtest
点确定后,就出来个错误提示test.dll出错,丢失条目RundllTest
再点确定后,出来提示BYE

难道是我写的这个RundllTest函数的问题,这里这个函数要怎么定义才能被RUNDLL32运行呢?

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
2
分析一下RUNDLL32.exe吧
2009-1-22 17:34
0
雪    币: 220
活跃值: (701)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
楼上的大牛就直接指点下吧!到底应该这么写呢?反汇编我可不会呀,呵呵
2009-1-22 17:36
0
雪    币: 293
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
搜索一下不就好了?
内事不决问老婆,外事不决问google


http://support.microsoft.com/kb/164787/zh-cn
2009-1-22 17:45
0
雪    币: 331
活跃值: (57)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
5
http://blog.bcchinese.net/feixiangzhiyan/archive/2005/11/06/41320.aspx
2009-1-22 18:06
0
雪    币: 225
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
找个wine源代码看看
2009-1-22 20:03
0
雪    币: 220
活跃值: (701)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
多谢楼上的几位大哥的帮助!其实是VC的 编译器把函数名给改了,用LOAD_PE查看就知道变成什么了,再次感谢!
2009-1-22 20:12
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
导出的函数名不是RundllTest,导出的函数名与源程序中的函数名并不完全一样。
2009-1-24 16:49
0
雪    币: 152
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
此楼正解。
用declspec(dllexport)导出的函数是名有如下的形式FunctionName@yxyxyxyxyxy
用def文件导出的则是原本的函数名形式
2009-1-25 12:43
0
游客
登录 | 注册 方可回帖
返回
//