首页
社区
课程
招聘
[旧帖] [原创]提取PE输入表(dll及函数名) 0.00雪花
2011-2-23 10:19 3010

[旧帖] [原创]提取PE输入表(dll及函数名) 0.00雪花

2011-2-23 10:19
3010
(全部代码附件下载:)
关键代码如下:
void ShowImportDllInfo(LPVOID ImageBase)
{
        char *szdllname;
        int i=1;
        PIMAGE_NT_HEADERS pnt=NULL;
        PIMAGE_IMPORT_DESCRIPTOR pimport=NULL;
        pnt=GetNtHead(ImageBase);
        pimport=GetFirstImportAddress(ImageBase);
        if(!pimport)
        {
                cout<<"GetFirstImportAddress() error"<<endl;
                return;
        }
        while(pimport->FirstThunk)
        {
                szdllname=(char*)RvaToPtr(pnt,ImageBase,pimport->Name);
                cout<<"NO."<<i<<": "<<szdllname<<endl;
                i++;
                pimport++;
        }
}
void ShowImportFuncInfo(LPVOID ImageBase)
{
        int i=1;
        char* funcname;
        PIMAGE_IMPORT_BY_NAME pbyname=NULL;
        DWORD *pthunk=NULL;
        DWORD dwthunk;
        PIMAGE_IMPORT_DESCRIPTOR pstart=NULL;
        PIMAGE_NT_HEADERS pnt=NULL;
        pstart=GetFirstImportAddress(ImageBase);
        dwthunk=GETTHUNK(pstart);
        pnt=GetNtHead(ImageBase);
        pthunk=(DWORD*)RvaToPtr(pnt,ImageBase,dwthunk);
        if(!pthunk)
        {
                cout<<"RvaToVa() fail"<<endl;
                return ;
        }
        cout<<endl<<">>>====FUNC INFO====<<<"<<endl;
        while(*pthunk)
        {
                if(HIWORD(*pthunk)==0x8000)
                {
                        funcname=(char*)IMAGE_ORDINAL32(*pthunk);
                }
                else
                {
                        pbyname=(PIMAGE_IMPORT_BY_NAME)RvaToPtr(pnt,ImageBase,(DWORD)(*pthunk));
                        if(pbyname)
                        {
                                funcname=(char*)pbyname->Name;
                        }
                        else
                        {
                                funcname=(char*)(DWORD*)(*pthunk);
                        }
                }
                cout<<"NO."<<i<<": "<<funcname<<endl;
                i++;
                pthunk++;
        }
}

[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

上传的附件:
收藏
点赞6
打赏
分享
最新回复 (5)
雪    币: 2362
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zapline 2011-2-23 10:37
2
0
我覺得申請邀請碼已經夠了
雪    币: 151
活跃值: (70)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
LI的夏天 2011-2-23 11:02
3
0
才24KW,早着呢
雪    币: 544
活跃值: (55)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ddsoft 2011-2-23 22:55
4
0
关键的几个函数你并没有理解。。。完全是照搬书上的代码。
雪    币: 138
活跃值: (460)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
Nermor 1 2011-3-5 20:26
5
0
服了! 在找输入表方面的知识...LZ 你居然用封装好的函数来理解 PE , 你完了!
雪    币: 151
活跃值: (70)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
LI的夏天 2011-3-7 17:12
6
0
虚心接受楼上批评...
游客
登录 | 注册 方可回帖
返回