首页
社区
课程
招聘
dll输出函数查询器(含源码)
发表于: 2010-12-5 17:08 12439

dll输出函数查询器(含源码)

2010-12-5 17:08
12439

软件已完成。。。源码在下面


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 7
支持
分享
最新回复 (12)
雪    币: 544
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
问题解决。呵呵!不留下痕迹了
2010-12-5 17:10
0
雪    币: 544
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
pExport=(PIMAGE_EXPORT_DIRECTORY)(dwIED);//这一步为什么出错?
得到的 PIMAGE_EXPORT_DIRECTORY 结构里所有字段均为0
三个图:左边是我软件弹出的对话框,右边是LordPE
最下面是VS2008 的调试窗口
上传的附件:
  • 1.jpg (9.19kb,373次下载)
  • 2.jpg (16.35kb,372次下载)
  • 3.jpg (43.83kb,373次下载)
2010-12-5 17:13
0
雪    币: 1149
活跃值: (888)
能力值: ( LV13,RANK:260 )
在线值:
发帖
回帖
粉丝
4
磁盘文件  映射文件  加载文件 弄清楚哈。。
2010-12-5 18:15
0
雪    币: 544
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
问题已解决。谢谢楼上。
2010-12-5 18:20
0
雪    币: 544
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
软件已完成
void CexportDlg::OnDropFiles(HDROP hDropInfo)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	UINT count;

	TCHAR filePath[200];

	count = DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0);

	if(count>1) 
	{
		AfxMessageBox(L"请不要拖入多个文件!");
		return ;
	}

	//for(UINT i=0; i<count; i++)

	//{
	//	int pathLen = DragQueryFile(hDropInfo, i, filePath, sizeof(filePath));
	//	//AfxMessageBox(filePath);
	//}
	DragQueryFile(hDropInfo, 0, filePath, sizeof(filePath));
	//AfxMessageBox(filePath);
	HANDLE hFile=CreateFile(filePath,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
	if (hFile==INVALID_HANDLE_VALUE)
	{
		AfxMessageBox(L"查询失败,本文件可能正被其他程序使用!");
		return;
	}
	HANDLE hFileMapping=CreateFileMapping(hFile,NULL,PAGE_READONLY,0,0,0);
	if (hFileMapping==NULL)
	{
		AfxMessageBox(L"查询失败,本文件可能正被其他程序使用");
		return;
	}
	PVOID pImage=(PVOID)MapViewOfFile(hFileMapping,FILE_MAP_READ,0,0,0); //得到dll的基址


	//判断是否为PE文件
	PIMAGE_DOS_HEADER pDH=NULL;
	PIMAGE_NT_HEADERS pNtH=NULL;
	pDH=(PIMAGE_DOS_HEADER)pImage;
	if (pDH->e_magic!=IMAGE_DOS_SIGNATURE)
	{
		AfxMessageBox(L"非PE文件!");
		return ;
	}
	pNtH=(PIMAGE_NT_HEADERS)(pDH->e_lfanew+(DWORD)pImage);
	if (pNtH->Signature!=IMAGE_NT_SIGNATURE)
	{
		AfxMessageBox(L"非PE文件!");
		return ;
	}
	////得到数据目录表第一项:输出表结构
	DWORD dwpIED=(DWORD)(pNtH)+0x78; //
	DWORD dwIEDSize=*(DWORD*)(dwpIED+4); //IED结构的大小
	if (dwIEDSize==0)
	{
		AfxMessageBox(L"没有通过名字输出的函数!");
		return ;
	}

	DWORD dwIEDRVA=*(DWORD*)dwpIED;//IED的RVA
	PVOID	pDirData=(PVOID)ImageRvaToVa(pNtH,pImage,dwIEDRVA,NULL);

	PIMAGE_EXPORT_DIRECTORY pExport=NULL;
	pExport=(PIMAGE_EXPORT_DIRECTORY)(pDirData);
	int num=pExport->NumberOfFunctions;
	PDWORD  pdwNames=NULL;
	PDWORD   pDllNameRNA=NULL;
	CHAR *  pDllName=NULL;
	pdwNames=(PDWORD)ImageRvaToVa(pNtH,pImage,pExport->AddressOfNames,NULL);
	/*pDllNameRNA=(PDWORD)ImageRvaToVa(pNtH,pImage,pExport->Name,NULL);
	pDllName=(char*)ImageRvaToVa(pNtH,pImage,pDllNameRNA,NULL);
	CHAR szBuf[MAX_PATH];*/
	CString tips;
	tips.Format(L"此dll可通过名字输出%d个函数!",num);

	MessageBox(tips,L"提示",0x20);
	CHAR * szFuncName=NULL;
	list.ResetContent();
	WCHAR szFunc[MAX_PATH]={0};
	CString str;
	for (int i=0;i<num;i++)
	{
		szFuncName=(char*)ImageRvaToVa(pNtH,pImage,pdwNames[i],NULL);
		int len=MultiByteToWideChar(0,0,szFuncName,-1,NULL,0);
		WCHAR szFunc[MAX_PATH]={0};
		MultiByteToWideChar(0,0,szFuncName,len,szFunc,len);
		str.Format(L"%s",szFuncName);
		list.AddString((LPCTSTR)(LPTSTR)szFunc);
	}
	UnmapViewOfFile(hFileMapping);
	CloseHandle(hFileMapping);
	CloseHandle(hFile);
	DragFinish(hDropInfo);

	CDialog::OnDropFiles(hDropInfo);
}
2010-12-5 22:32
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
感谢楼主分享!!谢谢了!!
2010-12-9 12:33
0
雪    币: 478
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
看看。。。书藏。
2010-12-15 09:38
0
雪    币: 563
活跃值: (101)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
慢慢理解!
2010-12-23 08:57
0
雪    币: 22
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
下载了。谢谢了。
2011-2-10 23:23
0
雪    币: 95
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
谢谢分享,下了学习!
2011-5-23 15:13
0
雪    币: 82
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
标记一下,有时间来分析分析!~~~
2011-5-23 15:36
0
雪    币: 3116
活跃值: (1269)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
13
不够完美。你要弄可以查一个目录下的所有PE文件的导出函数。

而且支持用户输入一个函数查找。我当时也MFC了一个这样的玩具
2011-5-23 15:40
0
游客
登录 | 注册 方可回帖
返回
//