VC++6.0中的DLL源代码调试方法

[from] http://blog.youkuaiyun.com/andy8205/article/details/3859965

1.       VC++6.0中建立一个工作区workspace

2.       添加要调试的DLL工程

3.       建立一个可执行程序的工程,这个可执行程序包含了调用DLL的输出函数

4.       设置可执行程序的工程的编译Debug输出目录到DLL编译输出目录(即.exe的目录和.DLL目录一样)

5.       在project中设置active的工程为exe程序工程,编译此工程,得到exe文件

6.       在project中设置active的工程为DLL工程,编译此工程,得到DLL文件

7.       在exe源代码中,调用dll函数的地方ctrl+f10。进入调式模式,或者在DLL的源文件中设置断点,然后直接运行。

 
下面是原创的~~
 
 ----------------------------------------------------------------------------------------------------------------------------
exe文件
 

typedef void (__stdcall *TServiceMain)( int argc, wchar_t* argv[] ); // __stdcall 调用的压栈方式,函数指针为TServiceMain
//int argc 参数个数, wchar_t* argv[]指向参数数组的指针

int main(int argc, char* argv[])
{
 HINSTANCE hDll;
 //lpAddFun addFun;

 hDll = LoadLibrary("E:\\cjy_VC_Projects\\source 阅读-注释\\flybird\\服务端\\winfex(dll程序)\\Debug\\winfex.dll");
 
 /*  GetProcAddress取DLL里面函数,有两种方式,函数名与序号.
  查看DLL里有哪些函数的工具很多.可以从网上下载, 或者就用VC自带的DUMPBIN.EXE,或者DELPHI,BCB的TDUMP.EXE, 两个都是命令行工具,使用很简单
  dumpbin xxxx.dll 或 tdump xxxx.dll

  [dependency工具] input引用函数,output导出函数和扩展导出函数 */

 TServiceMain ServiceMain = (TServiceMain)GetProcAddress(hDll,"ServiceMain");

 int a[2][2]={{1,1},{2,2}};

 wchar_t inargv[3][256] = {L"dest",L"src",NULL};
 ServiceMain(2,(wchar_t**)inargv);

 return 0;
}

 

 

 ----------------------------------------------------------------------------------------------------------------------------


 

dll文件

BOOL APIENTRY DllMain(   HANDLE hModule,
       DWORD ul_reason_for_call,
       LPVOID lpReserved
       )// 伪入口,不实现功能
{
 switch (ul_reason_for_call)
 {
 case DLL_PROCESS_ATTACH:  
  printf("\n process attach succeed!");
        break;
 }
 return TRUE;
}
 
void __stdcall ServiceMain( int argc, wchar_t* argv[] ) // 主要入口,svchost服务劫持,等待调用
{
    char svcname[256];
··········································
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值