.idata数据的解析
每类Section代表不同的数据,不同的数据存储组织方式一定是有非常大区别的。代码段与资源段一定区别巨大,这意味着我需要一个一个的学习每个段的解析。
idata段解析
这个段主要存储的是导入符号信息。昨天花了很多时间研究符号的获取,但就在刚刚开始就卡壳了,很多人都是说读取了IMAGE_IMPORT_DESCRIPTOR,就可以获取到链接库名称,但这个字段是一个地址,我根本不能理解这个地址如何对应到文件中的偏移,后来是今天才突然恍然大悟,原来那个是相对虚拟地址,而段头结构中还有一个相对虚拟地址,用来指示段数据被加载到内存后的相对虚拟地址,用段偏移+链接库名称相对虚拟地址-段头结构中的相对虚拟地址就是链接库名称在文件中的偏移。这个计算与基地址一丁点关系都没有,不明白很多文章在将这里的时候来时说基地址问题,有啥联系,白让我浪费脑细胞。
关于地址转换问题想明白后,其余都是浮云,只要按照其它教程中提到的方法遍历就行,实在不行,看我写的代码就行了。
另外这次代码做了改动,直接将所有知道的细节都输出到xml文件中,用于以后分析,是否将文件中的每个字节都真的明白了。是否还有很多数据游离于我们分析的结构外?
代码:
#include<iostream>
#include<Windows.h>
#include<sstream>
#include<string>
#include<vector>
#include <map>
FILE* fpOutput =NULL;
// 对文件数据信息分类
//主要目的是更加准确的确定每个数据的位置
struct Section
{
intm_iStart;
intm_iEnd;
std::stringm_strSectionName;
std::map<std::string,std::string>m_mapProperties;
std::vector<Section*>vecChild;
};
std::vector<Section*>g_vecSection;
void AddSection(intiOffset,int iLen,const char* pName)
{
Section*s = new Section;
s->m_iStart= iOffset;
s->m_iEnd = iOffset + iLen;
s->m_strSectionName= pName;
g_vecSection.push_back(s);
}
void AddSection(intiOffset,int iLen,const char* pName,conststd::map<std::string,std::string>& mapProperties)
{
Section*s = new Section;
s->m_iStart= iOffset;
s->m_iEnd = iOffset + iLen;
s->m_strSectionName= pName;
s->m_mapProperties = mapProperties;
g_vecSection.push_back(s);
}
voidAddChild(std::vector<Section*>& vecChild,Section* pS)
{
for(size_ti=0; i<vecChild.size(); i++)
{
if(pS->m_iStart>=vecChild[i]->m_iStart&&
pS->m_iEnd<= vecChild[i]->m_iEnd)
{
returnAddChild(vecChild[i]->vecChild,pS);
}
}
vecChild.push_back(pS);
}
voidOutputInfo(std::vector<Section*>& vecS)
{
for(size_ti=0; i<vecS.size(); i++)
{
std::stringstreamstream;
stream<<"<SectionName=\""<<vecS[i]->m_strSectionName<<"\"Start=\""<<vecS[i]->m_iStart<<"\"End=\""<<vecS[i]->m_iEnd<<"\" ";
std::map<std::string,std::string>::iteratorit = vecS[i]->m_mapProperties.begin();
for(;it != vecS[i]->m_mapProperties.end(); it++)
{
stream<<it->first<<"=\""<<it->second<<"\"";
}
stream<<">"<<std::endl;
fprintf(fpOutput,"%s",stream.str().c_str());
OutputInfo(vecS[i]->vecChild);
std::stringstreamstream1;
stream1<<"</Section>"<<std::endl;
fprintf(fpOutput,"%s",stream1.str().c_str());
}
}
void OutputSection()
{
std::map<int,std::map<int,Section*>>mapS;
for(size_ti=0; i<g_vecSection.size(); i++)
mapS[g_vecSection[i]->m_iStart][g_vecSection[i]->m_iEnd]= g_vecSection[i];
Section*root = new Section;
root->m_iStart= -1;
root->m_iEnd = 200000000;
std::map<int,std::map<int,Section*>>::iteratorit = mapS.begin();
for(;it!=mapS.end(); it++)
{
Section*pT = NULL;
std::map<int,Section*>::iteratoritT = it->second.begin();
for(;itT != it->second.end(); itT++)
{
if(pT!= NULL)
itT->second->vecChild.push_back(pT);
pT= itT->second;
}
AddChild(root->vecChild,pT);
}
fpOutput= fopen("Output.xml","w+");
OutputInfo(root->vecChild);
fclose(fpOutput);
//销毁数据
deleteroot;
for(size_ti=0; i<g_vecSection.size(); i++)
deleteg_vecSection[i];
g_vecSection.clear();
}
int main(intargc,char** argv)
{
FILE*fp = fopen(argv[1],"rb");
if(!fp)
{
std::cerr<<"Readfile error!\n";
return-1;
}
fseek(fp,0,SEEK_END);
intiLen = ftell(fp)+1;
fseek(fp,0,SEEK_SET);
char*pC = new char[iLen];
intiRead = fread(pC,1,iLen,fp);
fclose(fp);
AddSection(0,iRead,"FileContent");
//解析
IMAGE_DOS_HEADER* m_pDOSHeader= (IMAGE_DOS_HEADER*)(pC);
intiDosHeaderSize = sizeof(IMAGE_DOS_HEADER);
AddSection(0,iDosHeaderSize,"IMAGE_DOS_HEADER");
IMAGE_NT_HEADERS* m_pNTHeaders32= (IMAGE_NT_HEADERS *) ((BYTE*)m_pDOSHeader +
m_pDOSHeader->e_lfanew);
intiNTHeaderSize = sizeof(IMAGE_NT_HEADERS);
AddSection(m_pDOSHeader->e_lfanew,iNTHeaderSize,"IMAGE_NT_HEADERS");
intiSectionStart = m_pDOSHeader->e_lfanew + iNTHeaderSize;
std::vector<IMAGE_SECTION_HEADER*>vecSectionHeaders;
for(inti=0; i<m_pNTHeaders32->FileHeader.NumberOfSections; i++)
{
IMAGE_SECTION_HEADER*pSectionHeader = (IMAGE_SECTION_HEADER*)((BYTE*)m_pDOSHeader +
iSectionStart+ i*sizeof(IMAGE_SECTION_HEADER));
vecSectionHeaders.push_back(pSectionHeader);
AddSection(iSectionStart+i*sizeof(IMAGE_SECTION_HEADER),sizeof(IMAGE_SECTION_HEADER),"IMAGE_SECTION_HEADER");
}
intiCurPos = iSectionStart +m_pNTHeaders32->FileHeader.NumberOfSections*sizeof(IMAGE_SECTION_HEADER);
AddSection(iSectionStart,m_pNTHeaders32->FileHeader.NumberOfSections*sizeof(IMAGE_SECTION_HEADER),"IMAGE_SECTION_HEADERs");
//idata
//IMAGE_IMPORT_DESCRIPTOR数组
//没有指示数组大小的信息,只有不停读取,如果读取到空信息,那么就是结束了
for(size_ti=0; i<vecSectionHeaders.size(); i++)
{
std::stringstrN = (char*)(vecSectionHeaders[i]->Name);
AddSection(vecSectionHeaders[i]->PointerToRawData,vecSectionHeaders[i]->SizeOfRawData,strN.c_str());
if(strN== ".idata")
{
intiReadNum = 0;
while(1)
{
IMAGE_IMPORT_DESCRIPTOR*pD = (IMAGE_IMPORT_DESCRIPTOR*)(pC + vecSectionHeaders[i]->PointerToRawData+ iReadNum*sizeof(IMAGE_IMPORT_DESCRIPTOR));
AddSection(vecSectionHeaders[i]->PointerToRawData+iReadNum*sizeof(IMAGE_IMPORT_DESCRIPTOR),sizeof(IMAGE_IMPORT_DESCRIPTOR),"IMAGE_IMPORT_DESCRIPTOR");
iReadNum++;
if(pD->FirstThunk== 0)
break;
//name
intiNameAddress = vecSectionHeaders[i]->PointerToRawData + pD->Name -vecSectionHeaders[i]->VirtualAddress;
std::stringstrName = pC+iNameAddress;
{
std::map<std::string,std::string>mapP;
mapP["name"]= strName;
AddSection(iNameAddress,strName.length(),"Dll_Import_Name",mapP);
}
std::vector<std::string>vecImportFuns;
//OriginalThunk
intiThunkNum = 0;
while(1)
{
//OriginalFirstThunk
intiOriginalFirstThunkAddress =iThunkNum*sizeof(IMAGE_THUNK_DATA)+vecSectionHeaders[i]->PointerToRawData +pD->OriginalFirstThunk - vecSectionHeaders[i]->VirtualAddress;
IMAGE_THUNK_DATA*pThunkData = (IMAGE_THUNK_DATA*)(pC+iOriginalFirstThunkAddress);
AddSection(iOriginalFirstThunkAddress,sizeof(IMAGE_THUNK_DATA),"IMAGE_THUNK_DATA");
iThunkNum++;
if(pThunkData->u1.AddressOfData== 0)
break;
intiHitAddress = vecSectionHeaders[i]->PointerToRawData +pThunkData->u1.AddressOfData - vecSectionHeaders[i]->VirtualAddress;
IMAGE_IMPORT_BY_NAME*pImportName = (IMAGE_IMPORT_BY_NAME*)(pC+iHitAddress);
vecImportFuns.push_back((char*)(pImportName->Name));
std::map<std::string,std::string>mapP;
mapP["name"]= vecImportFuns[vecImportFuns.size()-1];
AddSection(iHitAddress,2+vecImportFuns[vecImportFuns.size()-1].length()+1,"IMAGE_IMPORT_BY_NAME",mapP);
}
AddSection(vecSectionHeaders[i]->PointerToRawData+ pD->OriginalFirstThunk -vecSectionHeaders[i]->VirtualAddress,iThunkNum*sizeof(IMAGE_THUNK_DATA),"IMAGE_THUNK_DATAs");
//Thunk
iThunkNum= 0;
while(1)
{
//OriginalFirstThunk
intiFirstThunkAddress =iThunkNum*sizeof(IMAGE_THUNK_DATA)+vecSectionHeaders[i]->PointerToRawData +pD->FirstThunk - vecSectionHeaders[i]->VirtualAddress;
IMAGE_THUNK_DATA*pThunkData = (IMAGE_THUNK_DATA*)(pC+iFirstThunkAddress);
AddSection(iFirstThunkAddress,sizeof(IMAGE_THUNK_DATA),"Import_Address_Table");
iThunkNum++;
if(pThunkData->u1.AddressOfData== 0)
break;
}
AddSection(vecSectionHeaders[i]->PointerToRawData+ pD->FirstThunk -vecSectionHeaders[i]->VirtualAddress,iThunkNum*sizeof(IMAGE_THUNK_DATA),"Import_Address_Tables");
}
}
}
OutputSection();
return0;
}
xml输出示例:
<Section Name="FileContent" Start="0" End="27648" >
<Section Name="IMAGE_DOS_HEADER" Start="0" End="64" >
<Section Name=".textbss" Start="0" End="0" >
</Section>
</Section>
<Section Name="IMAGE_NT_HEADERS" Start="224" End="472" >
</Section>
<Section Name="IMAGE_SECTION_HEADERs" Start="472" End="752" >
<Section Name="IMAGE_SECTION_HEADER" Start="472" End="512" >
</Section>
<Section Name="IMAGE_SECTION_HEADER" Start="512" End="552" >
</Section>
<Section Name="IMAGE_SECTION_HEADER" Start="552" End="592" >
</Section>
<Section Name="IMAGE_SECTION_HEADER" Start="592" End="632" >
</Section>
<Section Name="IMAGE_SECTION_HEADER" Start="632" End="672" >
</Section>
<Section Name="IMAGE_SECTION_HEADER" Start="672" End="712" >
</Section>
<Section Name="IMAGE_SECTION_HEADER" Start="712" End="752" >
</Section>
</Section>
<Section Name=".text" Start="1024" End="13824" >
</Section>
<Section Name=".rdata" Start="13824" End="21504" >
</Section>
<Section Name=".data" Start="21504" End="22016" >
</Section>
<Section Name=".idata" Start="22016" End="24576" >
<Section Name="IMAGE_IMPORT_DESCRIPTOR" Start="22016" End="22036" >
</Section>
<Section Name="IMAGE_IMPORT_DESCRIPTOR" Start="22036" End="22056" >
</Section>
<Section Name="IMAGE_IMPORT_DESCRIPTOR" Start="22056" End="22076" >
</Section>
<Section Name="IMAGE_THUNK_DATAs" Start="22076" End="22192" >
<Section Name="IMAGE_THUNK_DATA" Start="22076" End="22080" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22080" End="22084" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22084" End="22088" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22088" End="22092" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22092" End="22096" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22096" End="22100" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22100" End="22104" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22104" End="22108" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22108" End="22112" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22112" End="22116" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22116" End="22120" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22120" End="22124" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22124" End="22128" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22128" End="22132" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22132" End="22136" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22136" End="22140" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22140" End="22144" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22144" End="22148" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22148" End="22152" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22152" End="22156" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22156" End="22160" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22160" End="22164" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22164" End="22168" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22168" End="22172" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22172" End="22176" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22176" End="22180" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22180" End="22184" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22184" End="22188" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22188" End="22192" >
</Section>
</Section>
<Section Name="IMAGE_THUNK_DATAs" Start="22252" End="22360" >
<Section Name="IMAGE_THUNK_DATA" Start="22252" End="22256" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22256" End="22260" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22260" End="22264" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22264" End="22268" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22268" End="22272" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22272" End="22276" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22276" End="22280" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22280" End="22284" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22284" End="22288" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22288" End="22292" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22292" End="22296" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22296" End="22300" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22300" End="22304" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22304" End="22308" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22308" End="22312" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22312" End="22316" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22316" End="22320" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22320" End="22324" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22324" End="22328" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22328" End="22332" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22332" End="22336" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22336" End="22340" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22340" End="22344" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22344" End="22348" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22348" End="22352" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22352" End="22356" >
</Section>
<Section Name="IMAGE_THUNK_DATA" Start="22356" End="22360" >
</Section>
</Section>
<Section Name="Import_Address_Tables" Start="22420" End="22536" >
<Section Name="Import_Address_Table" Start="22420" End="22424" >
</Section>
<Section Name="Import_Address_Table" Start="22424" End="22428" >
</Section>
<Section Name="Import_Address_Table" Start="22428" End="22432" >
</Section>
<Section Name="Import_Address_Table" Start="22432" End="22436" >
</Section>
<Section Name="Import_Address_Table" Start="22436" End="22440" >
</Section>
<Section Name="Import_Address_Table" Start="22440" End="22444" >
</Section>
<Section Name="Import_Address_Table" Start="22444" End="22448" >
</Section>
<Section Name="Import_Address_Table" Start="22448" End="22452" >
</Section>
<Section Name="Import_Address_Table" Start="22452" End="22456" >
</Section>
<Section Name="Import_Address_Table" Start="22456" End="22460" >
</Section>
<Section Name="Import_Address_Table" Start="22460" End="22464" >
</Section>
<Section Name="Import_Address_Table" Start="22464" End="22468" >
</Section>
<Section Name="Import_Address_Table" Start="22468" End="22472" >
</Section>
<Section Name="Import_Address_Table" Start="22472" End="22476" >
</Section>
<Section Name="Import_Address_Table" Start="22476" End="22480" >
</Section>
<Section Name="Import_Address_Table" Start="22480" End="22484" >
</Section>
<Section Name="Import_Address_Table" Start="22484" End="22488" >
</Section>
<Section Name="Import_Address_Table" Start="22488" End="22492" >
</Section>
<Section Name="Import_Address_Table" Start="22492" End="22496" >
</Section>
<Section Name="Import_Address_Table" Start="22496" End="22500" >
</Section>
<Section Name="Import_Address_Table" Start="22500" End="22504" >
</Section>
<Section Name="Import_Address_Table" Start="22504" End="22508" >
</Section>
<Section Name="Import_Address_Table" Start="22508" End="22512" >
</Section>
<Section Name="Import_Address_Table" Start="22512" End="22516" >
</Section>
<Section Name="Import_Address_Table" Start="22516" End="22520" >
</Section>
<Section Name="Import_Address_Table" Start="22520" End="22524" >
</Section>
<Section Name="Import_Address_Table" Start="22524" End="22528" >
</Section>
<Section Name="Import_Address_Table" Start="22528" End="22532" >
</Section>
<Section Name="Import_Address_Table" Start="22532" End="22536" >
</Section>
</Section>
<Section Name="Import_Address_Tables" Start="22596" End="22704" >
<Section Name="Import_Address_Table" Start="22596" End="22600" >
</Section>
<Section Name="Import_Address_Table" Start="22600" End="22604" >
</Section>
<Section Name="Import_Address_Table" Start="22604" End="22608" >
</Section>
<Section Name="Import_Address_Table" Start="22608" End="22612" >
</Section>
<Section Name="Import_Address_Table" Start="22612" End="22616" >
</Section>
<Section Name="Import_Address_Table" Start="22616" End="22620" >
</Section>
<Section Name="Import_Address_Table" Start="22620" End="22624" >
</Section>
<Section Name="Import_Address_Table" Start="22624" End="22628" >
</Section>
<Section Name="Import_Address_Table" Start="22628" End="22632" >
</Section>
<Section Name="Import_Address_Table" Start="22632" End="22636" >
</Section>
<Section Name="Import_Address_Table" Start="22636" End="22640" >
</Section>
<Section Name="Import_Address_Table" Start="22640" End="22644" >
</Section>
<Section Name="Import_Address_Table" Start="22644" End="22648" >
</Section>
<Section Name="Import_Address_Table" Start="22648" End="22652" >
</Section>
<Section Name="Import_Address_Table" Start="22652" End="22656" >
</Section>
<Section Name="Import_Address_Table" Start="22656" End="22660" >
</Section>
<Section Name="Import_Address_Table" Start="22660" End="22664" >
</Section>
<Section Name="Import_Address_Table" Start="22664" End="22668" >
</Section>
<Section Name="Import_Address_Table" Start="22668" End="22672" >
</Section>
<Section Name="Import_Address_Table" Start="22672" End="22676" >
</Section>
<Section Name="Import_Address_Table" Start="22676" End="22680" >
</Section>
<Section Name="Import_Address_Table" Start="22680" End="22684" >
</Section>
<Section Name="Import_Address_Table" Start="22684" End="22688" >
</Section>
<Section Name="Import_Address_Table" Start="22688" End="22692" >
</Section>
<Section Name="Import_Address_Table" Start="22692" End="22696" >
</Section>
<Section Name="Import_Address_Table" Start="22696" End="22700" >
</Section>
<Section Name="Import_Address_Table" Start="22700" End="22704" >
</Section>
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="22764" End="22781" name="_CRT_RTC_INITW" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="22782" End="22804" name="_configthreadlocale" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="22804" End="22823" name="__setusermatherr" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="22824" End="22835" name="_commode" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="22836" End="22845" name="_fmode" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="22846" End="22863" name="__set_app_type" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="22864" End="22877" name="_amsg_exit" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="22878" End="22895" name="__wgetmainargs" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="22896" End="22904" name="_exit" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="22904" End="22918" name="_XcptFilter" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="22918" End="22927" name="_cexit" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="22928" End="22935" name="exit" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="22936" End="22949" name="__winitenv" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="22950" End="22970" name="_CrtSetCheckCount" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="22970" End="22987" name="_CrtDbgReportW" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="22988" End="23000" name="_initterm" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23000" End="23014" name="_initterm_e" >
</Section>
<Section Name="Dll_Import_Name" Start="23014" End="23027" name="MSVCR100D.dll" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23028" End="23048" name="?terminate@@YAXXZ" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23048" End="23063" name="_controlfp_s" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23064" End="23081" name="_invoke_watson" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23082" End="23092" name="_unlock" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23092" End="23106" name="__dllonexit" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23106" End="23114" name="_lock" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23114" End="23124" name="_onexit" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23124" End="23150" name="_except_handler4_common" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23150" End="23171" name="_crt_debugger_hook" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23172" End="23188" name="EncodePointer" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23188" End="23210" name="InterlockedExchange" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23210" End="23218" name="Sleep" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23218" End="23247" name="InterlockedCompareExchange" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23248" End="23269" name="HeapSetInformation" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23270" End="23300" name="SetUnhandledExceptionFilter" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23300" End="23316" name="DecodePointer" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23316" End="23342" name="QueryPerformanceCounter" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23342" End="23357" name="GetTickCount" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23358" End="23379" name="GetCurrentThreadId" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23380" End="23402" name="GetCurrentProcessId" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23402" End="23428" name="GetSystemTimeAsFileTime" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23428" End="23450" name="WideCharToMultiByte" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23450" End="23470" name="IsDebuggerPresent" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23470" End="23492" name="MultiByteToWideChar" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23492" End="23509" name="RaiseException" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23510" End="23521" name="lstrlenA" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23522" End="23539" name="GetProcAddress" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23540" End="23555" name="LoadLibraryW" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23556" End="23567" name="HeapFree" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23568" End="23580" name="HeapAlloc" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23580" End="23597" name="GetProcessHeap" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23598" End="23619" name="GetModuleFileNameW" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23620" End="23635" name="VirtualQuery" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23636" End="23650" name="FreeLibrary" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23650" End="23669" name="TerminateProcess" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23670" End="23690" name="GetCurrentProcess" >
</Section>
<Section Name="IMAGE_IMPORT_BY_NAME" Start="23690" End="23717" name="UnhandledExceptionFilter" >
</Section>
<Section Name="Dll_Import_Name" Start="23718" End="23730" name="KERNEL32.dll" >
</Section>
</Section>
<Section Name=".rsrc" Start="24576" End="26112" >
</Section>
<Section Name=".reloc" Start="26112" End="27648" >
</Section>
</Section>
.idata数据的解析的更多相关文章
- NPOI操作EXCEL(三)——反射机制进行excel表格数据的解析
我们先来回忆回忆上篇文章讲到的通过xml配置文件实现excel批量模板解析的整体思路: 1.对每个excel模板制定xml配置规则集,实现xml配置文件的解析服务 2.为每个excel模板制定DTO, ...
- XML数据的解析
XML数据的解析 相比于JSON数据解析而言,XML数据解析可能会让更多的童鞋感觉到吃力,对我来说,同样认为JSON数据好像让人感觉比较友好,不过对于程序开发者来说,无非就是这两种数据解析占比较大的部 ...
- 解剖SQLSERVER 第四篇 OrcaMDF里对dates类型数据的解析(译)
解剖SQLSERVER 第四篇 OrcaMDF里对dates类型数据的解析(译) http://improve.dk/parsing-dates-in-orcamdf/ 在SQLSERVER里面有几 ...
- android基础---->JSON数据的解析
上篇博客,我们谈到了XML两种常用的解析技术,详细可以参见我的博客(android基础---->XMl数据的解析).网络传输另外一种数据格式JSON就是我们今天要讲的,它是比XML体积更小的数据 ...
- Android 之 json数据的解析(jsonReader)
json数据的解析相对而言,还是比较容易的,实现的代码也十分简单.这里用的是jsonReade方法来进行json数据解析. 1.在解析之前,大家需要知道什么是json数据. json数据存储的对象是无 ...
- Json--Android中数据文件解析(Json解析--从服务器端获取数据并且解析,显示在客户端上面)
前面学习过了使用SAX解析XML数据(点击进入:SAX解析XML数据),今天学习Json解析: 首先说一下Json数据的最基本的特点,Json数据是一系列的键值对的集合,和XML数据来比,Json数据 ...
- Android通过类对象的方式实现JSON数据的解析
1.通过主Activity的Button按钮实现数据的解析 public class MainActivity extends Activity { //定义一个包含Json格式的字符对象 priva ...
- iOS开发网络篇—JSON数据的解析
iOS开发网络篇—JSON数据的解析 iOS开发网络篇—JSON介绍 一.什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式 ...
- iOS开发网络篇—XML数据的解析
iOS开发网络篇—XML数据的解析 iOS开发网络篇—XML介绍 一.XML简单介绍 XML:全称是Extensible Markup Language,译作“可扩展标记语言” 跟JSON一样,也是 ...
随机推荐
- WCF技术剖析之二十一:WCF基本异常处理模式[下篇]
原文:WCF技术剖析之二十一:WCF基本异常处理模式[下篇] 从FaultContractAttribute的定义我们可以看出,该特性可以在同一个目标对象上面多次应用(AllowMultiple = ...
- 基于visual Studio2013解决面试题之1402选择排序
题目
- EasyUI - SplitButton 分割按钮
效果: html代码: <!--使用标签创建,直接使用即可,不必使用js代码--> <%--<a href="javascript:void(0)" id= ...
- MySQL生成-单据号不重复
需求生成一个单据编号 单据编号结构: “单据类型” + “日期” + “流水号” 例子 : GD201605230000007 代码: DELIMITER $$ CREATE PROCEDURE `y ...
- shell 调用mysql 存储过程判断真假
mysql> create table TBL_STUDENT(id int,name char(10),CLASSNO int,BIRTH datetime); Query OK, 0 row ...
- 开源力量公开课第三十期- 跟我一起玩转OpenStack
开源力量公开课第三十期- 跟我一起玩转OpenStack 开课时间:2013年9月10日 18:30 - 21:30 形式:现场(北京3W咖啡) + 线上直播, 免费报名:http://www.o ...
- Maven插件之portable-config-maven-plugin(不同环境打包)
在大型的项目组中,分不同的开发环境,测试环境,生产环境(说白了就是配置文件不同,或者数据源,或者服务器,或者数据库等);问题来了,如何使用Maven针对不同的环境来打包呢? Maven提供了Profi ...
- css怎样使顶端悬浮导航栏不遮住下面一层页面内容
在两个层之间加这个<span class="blank" style="height:20px;"></span>,其中高度可以自己设置 ...
- javascript (九)注释
单行注释,采用双斜杠 // 多行注释,采用 /* */
- MFC 对话框中动态创建N级菜单以及响应事件
创建一个基于对话框的工程,工程名为CreateMenu 为该对话框增加一个文件菜单项和测试菜单项,如下图所示 测试菜单项至少要有一个子菜单项 在对话框属性中关联该菜单 在resource.h中增加 ...