亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? exedump.c

?? Windows 95 系統程式設計大奧秘書籍源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
                    
                printf("  %4u  %s", pOrdinalName->Hint, pOrdinalName->Name);
            }
            

            if ( fShowIATentries )
                printf( " (IAT: %08X)", thunkIAT->u1.Function );

            printf( "\n" );

            thunk++;            // Advance to next thunk
            thunkIAT++;         // advance to next thunk
        }

        importDesc++;   // advance to next IMAGE_IMPORT_DESCRIPTOR
        printf("\n");
    }
}

//
// Dump the exports table (usually the .edata section) of a PE file
//
void DumpExportsSection(DWORD base, PIMAGE_NT_HEADERS pNTHeader)
{
    PIMAGE_EXPORT_DIRECTORY exportDir;
    PIMAGE_SECTION_HEADER header;
    INT delta; 
    PSTR filename;
    DWORD i;
    PDWORD functions;
    PWORD ordinals;
    PSTR *name;
    DWORD exportsStartRVA, exportsEndRVA;
    
    exportsStartRVA = pNTHeader->OptionalHeader.DataDirectory
                            [IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress;
    exportsEndRVA = exportsStartRVA + pNTHeader->OptionalHeader.DataDirectory
                            [IMAGE_DIRECTORY_ENTRY_EXPORT].Size;

    // Get the IMAGE_SECTION_HEADER that contains the exports.  This is
    // usually the .edata section, but doesn't have to be.
    header = GetEnclosingSectionHeader( exportsStartRVA, pNTHeader );
    if ( !header )
        return;

    delta = (INT)(header->VirtualAddress - header->PointerToRawData);
        
    exportDir = MakePtr(PIMAGE_EXPORT_DIRECTORY, base,
                         exportsStartRVA - delta);
        
    filename = (PSTR)(exportDir->Name - delta + base);
        
    printf("exports table:\n\n");
    printf("  Name:            %s\n", filename);
    printf("  Characteristics: %08X\n", exportDir->Characteristics);
    printf("  TimeDateStamp:   %08X\n", exportDir->TimeDateStamp);
    printf("  Version:         %u.%02u\n", exportDir->MajorVersion,
            exportDir->MinorVersion);
    printf("  Ordinal base:    %08X\n", exportDir->Base);
    printf("  # of functions:  %08X\n", exportDir->NumberOfFunctions);
    printf("  # of Names:      %08X\n", exportDir->NumberOfNames);
    
    functions = (PDWORD)((DWORD)exportDir->AddressOfFunctions - delta + base);
    ordinals = (PWORD)((DWORD)exportDir->AddressOfNameOrdinals - delta + base);
    name = (PSTR *)((DWORD)exportDir->AddressOfNames - delta + base);

    printf("\n  Entry Pt  Ordn  Name\n");
    for ( i=0; i < exportDir->NumberOfFunctions; i++ )
    {
        DWORD entryPointRVA = functions[i];
        DWORD j;

        if ( entryPointRVA == 0 )   // Skip over gaps in exported function
            continue;               // ordinals (the entrypoint is 0 for
                                    // these functions).

        printf("  %08X  %4u", entryPointRVA, i + exportDir->Base );

        // See if this function has an associated name exported for it.
        for ( j=0; j < exportDir->NumberOfNames; j++ )
            if ( ordinals[j] == i )
                printf("  %s", name[j] - delta + base);

        // Is it a forwarder?  If so, the entry point RVA is inside the
        // .edata section, and is an RVA to the DllName.EntryPointName
        if ( (entryPointRVA >= exportsStartRVA)
             && (entryPointRVA <= exportsEndRVA) )
        {
            printf(" (forwarder -> %s)", entryPointRVA - delta + base );
        }
        
        printf("\n");
    }
}

// The names of the available base relocations
char *SzRelocTypes[] = {
"ABSOLUTE","HIGH","LOW","HIGHLOW","HIGHADJ","MIPS_JMPADDR",
"I860_BRADDR","I860_SPLIT" };

//
// Dump the base relocation table of a PE file
//
void DumpBaseRelocationsSection(DWORD base, PIMAGE_NT_HEADERS pNTHeader)
{
    PIMAGE_BASE_RELOCATION baseReloc;
    
    baseReloc = GetSectionPtr(".reloc", pNTHeader, base);
    if ( !baseReloc )
        return;

    printf("base relocations:\n\n");

    while ( baseReloc->SizeOfBlock != 0 )
    {
        unsigned i,cEntries;
        PWORD pEntry;
        char *szRelocType;
        WORD relocType;
        
        cEntries = (baseReloc->SizeOfBlock-sizeof(*baseReloc))/sizeof(WORD);
        pEntry = MakePtr( PWORD, baseReloc, sizeof(*baseReloc) );
        
        printf("Virtual Address: %08X  size: %08X\n",
                baseReloc->VirtualAddress, baseReloc->SizeOfBlock);
            
        for ( i=0; i < cEntries; i++ )
        {
            // Extract the top 4 bits of the relocation entry.  Turn those 4
            // bits into an appropriate descriptive string (szRelocType)
            relocType = (*pEntry & 0xF000) >> 12;
            szRelocType = relocType < 8 ? SzRelocTypes[relocType] : "unknown";
            
            printf("  %08X %s\n",
                    (*pEntry & 0x0FFF) + baseReloc->VirtualAddress,
                    szRelocType);
            pEntry++;   // Advance to next relocation entry
        }
        
        baseReloc = MakePtr( PIMAGE_BASE_RELOCATION, baseReloc,
                             baseReloc->SizeOfBlock);
    }
}

//
// Dump out the new IMAGE_BOUND_IMPORT_DESCRIPTOR that NT 3.51 added
//
void DumpBoundImportDescriptors( DWORD base, PIMAGE_NT_HEADERS pNTHeader )
{
    DWORD bidRVA;   // Bound import descriptors RVA
    PIMAGE_BOUND_IMPORT_DESCRIPTOR pibid;

    bidRVA = pNTHeader->OptionalHeader.DataDirectory
                        [IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT].VirtualAddress;
    if ( !bidRVA )
        return;
    
    pibid = MakePtr( PIMAGE_BOUND_IMPORT_DESCRIPTOR, base, bidRVA );
    
    printf( "Bound import descriptors:\n\n" );
    printf( "  Module        TimeDate\n" );
    printf( "  ------------  --------\n" );
    
    while ( pibid->TimeDateStamp )
    {
        unsigned i;
        PIMAGE_BOUND_FORWARDER_REF pibfr;
        
        printf( "  %-12s  %08X\n", base + bidRVA + pibid->OffsetModuleName,
                                  pibid->TimeDateStamp );
                            
        pibfr = MakePtr(PIMAGE_BOUND_FORWARDER_REF, pibid,
                            sizeof(IMAGE_BOUND_IMPORT_DESCRIPTOR));

        for ( i=0; i < pibid->NumberOfModuleForwarderRefs; i++ )
        {
            printf("    forwarder:  %-12s  %08X\n", 
                            base + bidRVA + pibfr->OffsetModuleName,
                            pibfr->TimeDateStamp );
            pibfr++;    // advance to next forwarder ref
                
            // Keep the outer loop pointer up to date too!
            pibid = MakePtr( PIMAGE_BOUND_IMPORT_DESCRIPTOR, pibid,
                             sizeof( IMAGE_BOUND_FORWARDER_REF ) );
        }

        pibid++;    // Advance to next pibid;
    }
}

//
// top level routine called from PEDUMP.C to dump the components of a PE file
//
void DumpExeFile( PIMAGE_DOS_HEADER dosHeader )
{
    PIMAGE_NT_HEADERS pNTHeader;
    DWORD base = (DWORD)dosHeader;
    
    pNTHeader = MakePtr( PIMAGE_NT_HEADERS, dosHeader,
                                dosHeader->e_lfanew );

    // First, verify that the e_lfanew field gave us a reasonable
    // pointer, then verify the PE signature.
    __try
    {
        if ( pNTHeader->Signature != IMAGE_NT_SIGNATURE )
        {
            printf("Not a Portable Executable (PE) EXE\n");
            return;
        }
    }
    __except( TRUE )    // Should only get here if pNTHeader (above) is bogus
    {
        printf( "invalid .EXE\n");
        return;
    }
    
    DumpHeader((PIMAGE_FILE_HEADER)&pNTHeader->FileHeader);
    printf("\n");

    DumpOptionalHeader((PIMAGE_OPTIONAL_HEADER)&pNTHeader->OptionalHeader);
    printf("\n");

    DumpSectionTable( IMAGE_FIRST_SECTION(pNTHeader), 
                        pNTHeader->FileHeader.NumberOfSections, TRUE);
    printf("\n");

    DumpExeDebugDirectory(base, pNTHeader);
    if ( pNTHeader->FileHeader.PointerToSymbolTable == 0 )
        PCOFFDebugInfo = 0; // Doesn't really exist!
    printf("\n");

    DumpResourceSection(base, pNTHeader);
    printf("\n");

    DumpImportsSection(base, pNTHeader);
    printf("\n");
    
    if ( pNTHeader->OptionalHeader.DataDirectory
                            [IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT]
                            .VirtualAddress )
    {
        DumpBoundImportDescriptors( base, pNTHeader );
        printf( "\n" );
    }
    
    DumpExportsSection(base, pNTHeader);
    printf("\n");

    if ( fShowRelocations )
    {
        DumpBaseRelocationsSection(base, pNTHeader);
        printf("\n");
    } 

    //
    // Initialize these vars here since we'll need them in DumpLineNumbers
    //
    PCOFFSymbolTable = MakePtr(PIMAGE_SYMBOL, base,
                        pNTHeader->FileHeader.PointerToSymbolTable);
    COFFSymbolCount = pNTHeader->FileHeader.NumberOfSymbols;

    if ( fShowSymbolTable && PCOFFDebugInfo )
    {
        DumpCOFFHeader( PCOFFDebugInfo );
        printf("\n");
    }
    
    if ( fShowLineNumbers && PCOFFDebugInfo )
    {
        DumpLineNumbers( MakePtr(PIMAGE_LINENUMBER, PCOFFDebugInfo,
                            PCOFFDebugInfo->LvaToFirstLinenumber),
                            PCOFFDebugInfo->NumberOfLinenumbers);
        printf("\n");
    }

    if ( fShowSymbolTable )
    {
        if ( pNTHeader->FileHeader.NumberOfSymbols 
            && pNTHeader->FileHeader.PointerToSymbolTable)
        {
            DumpSymbolTable(PCOFFSymbolTable, COFFSymbolCount);
            printf("\n");
        }
    }
    
    if ( fShowRawSectionData )
    {
        DumpRawSectionData( (PIMAGE_SECTION_HEADER)(pNTHeader+1),
                            dosHeader,
                            pNTHeader->FileHeader.NumberOfSections);
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美不卡视频一区| 91在线精品一区二区三区| 欧美va亚洲va| 在线观看日韩电影| 国产91在线观看| 国产在线播放一区二区三区| 午夜电影久久久| 亚洲国产成人va在线观看天堂| 国产精品不卡在线| 中文字幕一区二区三区四区| 国产精品免费aⅴ片在线观看| 国产女同性恋一区二区| 中文字幕乱码日本亚洲一区二区 | 久久蜜桃一区二区| 91精品婷婷国产综合久久竹菊| 欧美日韩久久一区| 日韩欧美一级二级| 精品粉嫩aⅴ一区二区三区四区| 欧美不卡一二三| 中文子幕无线码一区tr| 中文字幕在线不卡视频| 亚洲精品视频自拍| 日韩精品亚洲专区| 韩国v欧美v亚洲v日本v| 成人av在线一区二区三区| 成a人片国产精品| 欧美视频完全免费看| 日韩一区二区中文字幕| 国产拍欧美日韩视频二区| 亚洲婷婷综合色高清在线| 亚洲一区二区av在线| 久久国产生活片100| 大白屁股一区二区视频| 精品1区2区3区| 精品国产免费久久| 亚洲人妖av一区二区| 日本欧美大码aⅴ在线播放| 国产精品1024| 欧美裸体一区二区三区| 久久日韩精品一区二区五区| 亚洲三级电影网站| 久久福利视频一区二区| 一本色道**综合亚洲精品蜜桃冫| 欧美精品久久99| 一区二区三区在线免费视频| 亚洲电影你懂得| 成人夜色视频网站在线观看| 欧美三级三级三级| 国产精品理伦片| 久久激情综合网| 在线区一区二视频| 亚洲国产成人在线| 激情五月婷婷综合| 欧美日韩不卡一区二区| 国产精品理论片| 国内成人精品2018免费看| 欧美性大战久久| 中文字幕一区二区在线播放| 国产一区激情在线| 337p亚洲精品色噜噜| 一区二区免费看| www.性欧美| 欧美国产日韩a欧美在线观看| 天堂一区二区在线免费观看| 色综合天天综合色综合av | 欧美韩国日本不卡| 美女视频黄 久久| 91网站最新地址| 国产精品成人免费在线| 风间由美性色一区二区三区| 2023国产精品自拍| 精品一区二区三区在线视频| 欧美一区二区三区性视频| 亚洲国产裸拍裸体视频在线观看乱了| youjizz国产精品| 亚洲国产成人午夜在线一区| 成人性生交大合| 欧美国产精品一区二区| 成人亚洲一区二区一| 中文字幕亚洲精品在线观看| 成人av集中营| 日韩一区日韩二区| 91偷拍与自偷拍精品| 亚洲人成网站精品片在线观看| 成人激情黄色小说| 国产精品久久久久精k8| jizz一区二区| 亚洲综合成人在线| 9191久久久久久久久久久| 日韩av电影一区| 精品av综合导航| 成人午夜电影久久影院| 亚洲女人****多毛耸耸8| 欧洲精品中文字幕| 天天综合网天天综合色| 欧美va亚洲va在线观看蝴蝶网| 国产一区二区三区综合| 中文字幕一区二区视频| 欧美日韩国产成人在线91 | 精品国产sm最大网站免费看| 久久99久久久久| 欧美激情在线观看视频免费| 91亚洲永久精品| 美女视频一区二区三区| 国产亚洲短视频| 在线一区二区三区四区| 免费在线成人网| 中文字幕成人av| 欧美日本高清视频在线观看| 精品一区二区三区蜜桃| 亚洲欧美乱综合| 欧美大肚乱孕交hd孕妇| 91在线无精精品入口| 图片区小说区区亚洲影院| 中文字幕av一区 二区| 欧美色视频一区| 懂色av一区二区夜夜嗨| 香蕉久久夜色精品国产使用方法| 精品国产91久久久久久久妲己 | 欧美自拍偷拍一区| 国产一区二区三区久久悠悠色av| **网站欧美大片在线观看| 91精品在线免费| 91蜜桃免费观看视频| 精品制服美女久久| 亚洲国产视频一区| 亚洲天堂2014| 久久品道一品道久久精品| 欧美乱妇一区二区三区不卡视频| 成人亚洲精品久久久久软件| 蜜桃视频在线观看一区| 亚洲伊人伊色伊影伊综合网| 国产欧美一区二区精品秋霞影院| 91精品在线麻豆| 欧美网站大全在线观看| 成人h版在线观看| 国产精品亚洲人在线观看| 日日夜夜精品视频天天综合网| 自拍av一区二区三区| 精品国产91洋老外米糕| 日韩免费观看2025年上映的电影| 欧美性生活大片视频| 99久久精品国产一区| 国产成人啪午夜精品网站男同| 免费精品视频在线| 五月天精品一区二区三区| 亚洲线精品一区二区三区 | 欧美日韩一区二区欧美激情| 成人av在线影院| a在线欧美一区| 成人黄色小视频在线观看| 国产福利一区在线| 丁香天五香天堂综合| 国产成人精品亚洲午夜麻豆| 国产麻豆一精品一av一免费| 激情成人午夜视频| 国产在线一区二区综合免费视频| 免费观看在线综合| 久久精品国产99久久6| 久久99国产精品麻豆| 国产在线播放一区三区四| 国产一区二区三区香蕉| 国产激情视频一区二区三区欧美| 国产在线精品国自产拍免费| 国产成人aaaa| 色综合天天综合网天天看片| 欧美性大战久久久久久久蜜臀| 欧美日韩色综合| 精品免费国产二区三区 | 成人免费毛片高清视频| www.欧美日韩| 欧美影院一区二区| 欧美一区二区视频在线观看2020| 日韩一区二区三区四区 | 成人性生交大片免费看中文网站 | 亚洲欧美日韩中文播放| 亚洲免费高清视频在线| 日日夜夜免费精品| 国产乱子伦视频一区二区三区| 粉嫩绯色av一区二区在线观看| 波多野结衣亚洲| 91精品国产欧美一区二区| 精品91自产拍在线观看一区| 国产精品欧美久久久久一区二区 | 欧美精品一卡二卡| 欧美tk丨vk视频| 综合中文字幕亚洲| 日本va欧美va瓶| 成人91在线观看| 51午夜精品国产| 国产精品美女久久久久久久久 | 成人黄色小视频在线观看| 欧美性感一区二区三区| 欧美精品一区二区三区在线播放| 中文一区二区在线观看| 日韩精品乱码免费| heyzo一本久久综合| 欧美一级久久久久久久大片| 久久久精品天堂| 丝袜美腿高跟呻吟高潮一区|