关于EXE\DLL文件捆绑问题????HELP!

zhoujianhei 2003-08-22 12:10:09
我想用ImageHlp Api解决这个问题,但苦于不知道此类Api的具体用法,关于这方面的文章也很少。
不过使用其他方法也可呀。
...全文
106 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoujianhei 2003-08-23
  • 打赏
  • 举报
回复
经过研究我写了读取引入表的代码,对于其他表的读取类似,只是格式不同而已。
void CPeBindDoc::ApiBindFileImport()
{
PLOADED_IMAGE pbload;
pbload = ImageLoad((LPSTR )(LPCTSTR )bbindname, NULL);
DWORD size;
PVOID pimporttab = ImageDirectoryEntryToData(pbload->MappedAddress, FALSE,
IMAGE_DIRECTORY_ENTRY_IMPORT, &size);
PIMAGE_IMPORT_DESCRIPTOR pimportdescr = (PIMAGE_IMPORT_DESCRIPTOR )pimporttab;
CString name;
PIMAGE_THUNK_DATA pimportthunkdata;
PIMAGE_IMPORT_BY_NAME pimportbyname;
DWORD isordinal;
while(1)
{

name = (char* )RvaToVa(pbload, pimportdescr->Name);//DLL name

pimportthunkdata = (PIMAGE_THUNK_DATA )RvaToVa(pbload,
pimportdescr->FirstThunk);
while(1)
{
isordinal = pimportthunkdata->u1.Ordinal & 0x80000000;

if(isordinal )
{
//序号
isordinal = pimportthunkdata->u1.Ordinal & 0x7fffffff;
}
else
{
//字符
pimportbyname = (PIMAGE_IMPORT_BY_NAME )RvaToVa(pbload,
pimportthunkdata->u1.Ordinal);
name = pimportbyname->Name;//Fun name
}
pimportthunkdata = (PIMAGE_THUNK_DATA )((DWORD )pimportthunkdata
+ sizeof(IMAGE_THUNK_DATA ) );
if(pimportthunkdata->u1.AddressOfData == 0)
break;
}
pimportdescr = (PIMAGE_IMPORT_DESCRIPTOR )((DWORD )pimportdescr
+ sizeof(IMAGE_IMPORT_DESCRIPTOR ) );
if(pimportdescr->FirstThunk == 0)
break;
}
ImageUnload(pbload );

}

LPVOID CPeBindDoc::RvaToVa(PLOADED_IMAGE pbload, DWORD rva)
{
return ImageRvaToVa(pbload->FileHeader, pbload->MappedAddress,
rva, NULL);
}

hurricane 2003-08-22
  • 打赏
  • 举报
回复
看MSDN就是了
farfh 2003-08-22
  • 打赏
  • 举报
回复
可以用imagehlp 做文件捆绑吗?

2,640

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 硬件/系统
社区管理员
  • 硬件/系统社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧