zoukankan      html  css  js  c++  java
  • .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! ";

    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>

     

  • 相关阅读:
    递延收益的主要账务处理
    少数股东权益
    一揽子交易中处置价款与净资产账面价值差额为什么计入其他综合收益
    为什么权益法下其他综合收益合并时要计入投资收益
    R语言代写实现MCMC中的Metropolis–Hastings算法与吉布斯采样
    加速R语言代码的策略
    R语言代写:EM算法和高斯混合模型的实现
    R语言代写进行网站评论文本数据挖掘聚类
    R语言代写对推特数据进行文本情感分析
    WEKA代写文本挖掘分析垃圾邮件分类模型
  • 原文地址:https://www.cnblogs.com/pangblog/p/3299282.html
Copyright © 2011-2022 走看看