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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? exedump.c

?? Windows 95 系統(tǒng)程式設(shè)計(jì)大奧秘書(shū)籍源碼
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
//==================================
// PEDUMP - Matt Pietrek 1995
// FILE: EXEDUMP.C
//==================================

#include <windows.h>
#include <stdio.h>
#pragma hdrstop
#include "common.h"
#include "extrnvar.h"

void DumpExeDebugDirectory(DWORD base, PIMAGE_NT_HEADERS pNTHeader)
{
    PIMAGE_DEBUG_DIRECTORY debugDir;
    PIMAGE_SECTION_HEADER header;
    DWORD offsetInto_rdata;
    DWORD va_debug_dir;
    DWORD size;
    
    // This line was so long that we had to break it up
    va_debug_dir = pNTHeader->OptionalHeader.
                        DataDirectory[IMAGE_DIRECTORY_ENTRY_DEBUG].
                        VirtualAddress;
    if ( va_debug_dir == 0 )
        return;

    // If we found a .debug section, and the debug directory is at the
    // beginning of this section, it looks like a Borland file
    header = GetSectionHeader(".debug", pNTHeader);
    if ( header && (header->VirtualAddress == va_debug_dir) )
    {
        debugDir = (PIMAGE_DEBUG_DIRECTORY)(header->PointerToRawData+base);
        size = pNTHeader->OptionalHeader.
                DataDirectory[IMAGE_DIRECTORY_ENTRY_DEBUG].Size *
                sizeof(IMAGE_DEBUG_DIRECTORY);
    }
    else    // Look for microsoft debug directory in the .rdata section
    {
        header = GetSectionHeader(".rdata", pNTHeader);
        if ( !header )
            return;

        size = pNTHeader->OptionalHeader.
                        DataDirectory[IMAGE_DIRECTORY_ENTRY_DEBUG].Size;
    
        offsetInto_rdata = va_debug_dir - header->VirtualAddress;
        debugDir = MakePtr(PIMAGE_DEBUG_DIRECTORY, base,
                            header->PointerToRawData + offsetInto_rdata);
    }

    DumpDebugDirectory( debugDir, size, base );
}

// Function prototype (necessary because two functions recurse)
void DumpResourceDirectory
(
    PIMAGE_RESOURCE_DIRECTORY resDir, DWORD resourceBase,
    DWORD level, DWORD resourceType
);

// The predefined resource types
char *SzResourceTypes[] = {
"???_0", "CURSOR", "BITMAP", "ICON", "MENU", "DIALOG", "STRING", "FONTDIR",
"FONT", "ACCELERATORS", "RCDATA", "MESSAGETABLE", "GROUP_CURSOR",
"???_13", "GROUP_ICON", "???_15", "VERSION"
};

// Get an ASCII string representing a resource type
void GetResourceTypeName(DWORD type, PSTR buffer, UINT cBytes)
{
    if ( type <= 16 )
        strncpy(buffer, SzResourceTypes[type], cBytes);
    else
        sprintf(buffer, "%X", type);
}

//
// If a resource entry has a string name (rather than an ID), go find
// the string and convert it from unicode to ascii.
//
void GetResourceNameFromId
(
    DWORD id, DWORD resourceBase, PSTR buffer, UINT cBytes
)
{
    PIMAGE_RESOURCE_DIR_STRING_U prdsu;

    // If it's a regular ID, just format it.
    if ( !(id & IMAGE_RESOURCE_NAME_IS_STRING) )
    {
        sprintf(buffer, "%X", id);
        return;
    }
    
    id &= 0x7FFFFFFF;
    prdsu = (PIMAGE_RESOURCE_DIR_STRING_U)(resourceBase + id);

    // prdsu->Length is the number of unicode characters
    WideCharToMultiByte(CP_ACP, 0, prdsu->NameString, prdsu->Length,
                        buffer, cBytes, 0, 0);
    buffer[ min(cBytes-1,prdsu->Length) ] = 0;  // Null terminate it!!!
}

//
// Dump the information about one resource directory entry.  If the
// entry is for a subdirectory, call the directory dumping routine
// instead of printing information in this routine.
//
void DumpResourceEntry
(
    PIMAGE_RESOURCE_DIRECTORY_ENTRY resDirEntry,
    DWORD resourceBase,
    DWORD level
)
{
    UINT i;
    char nameBuffer[128];
    PIMAGE_RESOURCE_DATA_ENTRY pResDataEntry;
    
    if ( resDirEntry->OffsetToData & IMAGE_RESOURCE_DATA_IS_DIRECTORY )
    {
        DumpResourceDirectory( (PIMAGE_RESOURCE_DIRECTORY)
            ((resDirEntry->OffsetToData & 0x7FFFFFFF) + resourceBase),
            resourceBase, level, resDirEntry->Name);
        return;
    }

    // Spit out the spacing for the level indentation
    for ( i=0; i < level; i++ )
        printf("    ");

    if ( resDirEntry->Name & IMAGE_RESOURCE_NAME_IS_STRING )
    {
        GetResourceNameFromId(resDirEntry->Name, resourceBase, nameBuffer,
                              sizeof(nameBuffer));
        printf("Name: %s  DataEntryOffs: %08X\n",
            nameBuffer, resDirEntry->OffsetToData);
    }
    else
    {
        printf("ID: %08X  DataEntryOffs: %08X\n",
                resDirEntry->Name, resDirEntry->OffsetToData);
    }
    
    // the resDirEntry->OffsetToData is a pointer to an
    // IMAGE_RESOURCE_DATA_ENTRY.  Go dump out that information.  First,
    // spit out the proper indentation
    for ( i=0; i < level; i++ )
        printf("    ");
    
    pResDataEntry = (PIMAGE_RESOURCE_DATA_ENTRY)
                    (resourceBase + resDirEntry->OffsetToData);
    printf("Offset: %05X  Size: %05X  CodePage: %X\n",
            pResDataEntry->OffsetToData, pResDataEntry->Size,
            pResDataEntry->CodePage);
}

//
// Dump the information about one resource directory.
//
void DumpResourceDirectory
(
    PIMAGE_RESOURCE_DIRECTORY resDir,
    DWORD resourceBase,
    DWORD level,
    DWORD resourceType
)
{
    PIMAGE_RESOURCE_DIRECTORY_ENTRY resDirEntry;
    char szType[64];
    UINT i;

    // Spit out the spacing for the level indentation
    for ( i=0; i < level; i++ )
        printf("    ");

    // Level 1 resources are the resource types
    if ( level == 1 && !(resourceType & IMAGE_RESOURCE_NAME_IS_STRING) )
    {
        GetResourceTypeName( resourceType, szType, sizeof(szType) );
    }
    else    // Just print out the regular id or name
    {
        GetResourceNameFromId( resourceType, resourceBase, szType,
                               sizeof(szType) );
    }
    
    printf(
        "ResDir (%s) Named:%02X ID:%02X TimeDate:%08X Vers:%u.%02u Char:%X\n",
        szType, resDir->NumberOfNamedEntries, resDir->NumberOfIdEntries,
        resDir->TimeDateStamp, resDir->MajorVersion,
        resDir->MinorVersion,resDir->Characteristics);

    resDirEntry = (PIMAGE_RESOURCE_DIRECTORY_ENTRY)(resDir+1);
    
    for ( i=0; i < resDir->NumberOfNamedEntries; i++, resDirEntry++ )
        DumpResourceEntry(resDirEntry, resourceBase, level+1);

    for ( i=0; i < resDir->NumberOfIdEntries; i++, resDirEntry++ )
        DumpResourceEntry(resDirEntry, resourceBase, level+1);
}

//
// Top level routine called to dump out the entire resource hierarchy
//
void DumpResourceSection(DWORD base, PIMAGE_NT_HEADERS pNTHeader)
{
    PIMAGE_RESOURCE_DIRECTORY resDir;
    
    resDir = GetSectionPtr(".rsrc", pNTHeader, (DWORD)base);
    if ( !resDir )
        return;
    
    printf("Resources\n");
    DumpResourceDirectory(resDir, (DWORD)resDir, 0, 0);
}

//
// Dump the imports table (the .idata section) of a PE file
//
void DumpImportsSection(DWORD base, PIMAGE_NT_HEADERS pNTHeader)
{
    PIMAGE_IMPORT_DESCRIPTOR importDesc;
    PIMAGE_SECTION_HEADER pSection;
    PIMAGE_THUNK_DATA thunk, thunkIAT=0;
    PIMAGE_IMPORT_BY_NAME pOrdinalName;
    DWORD importsStartRVA;
    INT delta = -1;

    // Look up where the imports section is (normally in the .idata section)
    // but not necessarily so.  Therefore, grab the RVA from the data dir.
    importsStartRVA = pNTHeader->OptionalHeader.DataDirectory
                            [IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress;
    if ( !importsStartRVA )
        return;

    // Get the IMAGE_SECTION_HEADER that contains the imports.  This is
    // usually the .idata section, but doesn't have to be.
    pSection = GetEnclosingSectionHeader( importsStartRVA, pNTHeader );
    if ( !pSection )
        return;

    delta = (INT)(pSection->VirtualAddress-pSection->PointerToRawData);
    
    importDesc = (PIMAGE_IMPORT_DESCRIPTOR) (importsStartRVA - delta + base);
            
    printf("Imports Table:\n");
    
    while ( 1 )
    {
        // See if we've reached an empty IMAGE_IMPORT_DESCRIPTOR
        if ( (importDesc->TimeDateStamp==0 ) && (importDesc->Name==0) )
            break;
        
        printf("  %s\n", (PBYTE)(importDesc->Name) - delta + base);

        printf("  Hint/Name Table: %08X\n", importDesc->Characteristics);
        printf("  TimeDateStamp:   %08X\n", importDesc->TimeDateStamp);
        printf("  ForwarderChain:  %08X\n", importDesc->ForwarderChain);
        printf("  First thunk RVA: %08X\n", importDesc->FirstThunk);
    
        thunk = (PIMAGE_THUNK_DATA)importDesc->Characteristics;
        thunkIAT = (PIMAGE_THUNK_DATA)importDesc->FirstThunk;

        if ( thunk == 0 )   // No Characteristics field?
        {
            // Yes! Gotta have a non-zero FirstThunk field then.
            thunk = thunkIAT;
            
            if ( thunk == 0 )   // No FirstThunk field?  Ooops!!!
                return;
        }
        
        // Adjust the pointer to point where the tables are in the
        // mem mapped file.
        thunk = (PIMAGE_THUNK_DATA)( (PBYTE)thunk - delta + base);
        thunkIAT = (PIMAGE_THUNK_DATA)( (PBYTE)thunkIAT - delta + base);
    
        printf("  Ordn  Name\n");
        
        while ( 1 ) // Loop forever (or until we break out)
        {
            if ( thunk->u1.AddressOfData == 0 )
                break;

            if ( thunk->u1.Ordinal & IMAGE_ORDINAL_FLAG )
            {
                printf( "  %4u", IMAGE_ORDINAL(thunk->u1.Ordinal) );
            }
            else
            {
                pOrdinalName = thunk->u1.AddressOfData;
                pOrdinalName = (PIMAGE_IMPORT_BY_NAME)
                                ((PBYTE)pOrdinalName - delta + base);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
综合激情网...| 高清久久久久久| 26uuu另类欧美亚洲曰本| 不卡视频在线观看| 久久久久久麻豆| 欧美撒尿777hd撒尿| 久久国内精品视频| 综合激情网...| 日韩精品中文字幕在线一区| 99久久伊人久久99| 久久精品国产999大香线蕉| 亚洲日本va午夜在线影院| 精品少妇一区二区三区| 91久久久免费一区二区| 国产精品自拍三区| 日本aⅴ免费视频一区二区三区| 中文字幕一区二| 久久新电视剧免费观看| 欧美一区二区三区啪啪| 日本韩国欧美三级| 成人午夜碰碰视频| 国产精品一级片| 久久精品国产精品亚洲精品| 性感美女极品91精品| 综合欧美亚洲日本| 国产精品无人区| 久久久久国产免费免费| 欧美大肚乱孕交hd孕妇| 欧美三级韩国三级日本一级| 91论坛在线播放| 丁香婷婷综合激情五月色| 久久激情综合网| 三级一区在线视频先锋| 亚洲一区二区欧美激情| 亚洲人成亚洲人成在线观看图片| 国产日韩av一区二区| xf在线a精品一区二区视频网站| 7777精品久久久大香线蕉| 欧美视频在线播放| 日本高清不卡在线观看| 色综合天天综合网天天狠天天 | 欧美三级日韩三级国产三级| 91年精品国产| av资源站一区| 99国产精品久久久久久久久久久| 成人黄色在线视频| 不卡电影一区二区三区| hitomi一区二区三区精品| 成人小视频免费在线观看| 成人在线视频首页| 99精品国产热久久91蜜凸| av日韩在线网站| 91在线观看成人| 91久久精品日日躁夜夜躁欧美| 日本高清视频一区二区| 欧美视频在线观看一区| 在线综合视频播放| 欧美大片免费久久精品三p| 久久婷婷国产综合精品青草| 久久精品一区蜜桃臀影院| 国产精品伦理在线| 亚洲另类在线视频| 亚欧色一区w666天堂| 蜜桃久久久久久久| 国产乱码精品一区二区三区五月婷| 激情偷乱视频一区二区三区| 福利电影一区二区三区| www.66久久| 欧美日韩国产片| 精品国产乱码久久| 中文字幕亚洲一区二区va在线| 成人欧美一区二区三区视频网页 | 国产精品入口麻豆原神| 亚洲欧美偷拍另类a∨色屁股| 亚洲小少妇裸体bbw| 老汉av免费一区二区三区 | 色婷婷精品久久二区二区蜜臀av| 欧美亚洲免费在线一区| 日韩一区二区在线观看视频| 国产视频一区在线播放| 亚洲精品国产视频| 色综合天天综合狠狠| 欧美喷水一区二区| 精品区一区二区| 亚洲日本一区二区三区| 日韩av高清在线观看| 国产精品一区二区久激情瑜伽 | 亚洲女同一区二区| 日本91福利区| 风间由美一区二区av101| 欧美主播一区二区三区| 日韩精品专区在线| 亚洲综合在线观看视频| 国内外成人在线| 欧洲精品视频在线观看| 久久久无码精品亚洲日韩按摩| 一区二区三区欧美日| 国产在线视频一区二区三区| 色美美综合视频| 国产人成一区二区三区影院| 亚洲www啪成人一区二区麻豆 | 欧美中文字幕一区二区三区| 亚洲精品一区在线观看| 亚洲一区二区三区四区不卡| 国产精品亚洲成人| 欧美一区日本一区韩国一区| 亚洲激情欧美激情| 国产激情一区二区三区| 正在播放亚洲一区| 亚洲午夜激情av| 成人免费黄色大片| 精品少妇一区二区三区免费观看| 一区二区三区在线免费播放| 国产经典欧美精品| 精品久久久久久无| 午夜精品影院在线观看| 91蝌蚪porny九色| 国产午夜精品一区二区三区四区| 人人狠狠综合久久亚洲| 欧美色图激情小说| 亚洲欧美电影一区二区| 成人精品高清在线| 久久精品在这里| 九色综合国产一区二区三区| 7777精品久久久大香线蕉| 亚洲在线免费播放| 色婷婷综合久久久中文字幕| 国产精品美女一区二区三区| 国产精品一区在线观看你懂的| 日韩一区二区三区精品视频 | 麻豆一区二区三区| 这里是久久伊人| 香蕉影视欧美成人| 欧美精品一卡二卡| 亚洲第一福利一区| 欧美日韩亚洲综合在线| 菠萝蜜视频在线观看一区| 久久老女人爱爱| 免费国产亚洲视频| 日韩欧美在线不卡| 奇米精品一区二区三区在线观看一| 欧美美女视频在线观看| 午夜av一区二区三区| 在线电影欧美成精品| 日韩黄色片在线观看| 日韩一二三区视频| 久久黄色级2电影| 久久综合色鬼综合色| 国产激情一区二区三区四区 | 欧美在线免费视屏| 亚洲黄色免费电影| 欧美日韩中字一区| 日精品一区二区| 欧美成人福利视频| 国产在线播放一区| 中文字幕不卡三区| 色国产精品一区在线观看| 亚洲国产中文字幕| 日韩无一区二区| 国产黄色成人av| 中文字幕永久在线不卡| 欧美在线小视频| 青娱乐精品在线视频| 久久午夜免费电影| a亚洲天堂av| 亚洲国产aⅴ天堂久久| 欧美一卡2卡三卡4卡5免费| 精品一区二区三区日韩| 国产精品天干天干在观线| 色婷婷香蕉在线一区二区| 日本中文在线一区| 国产亚洲欧美激情| 91美女蜜桃在线| 日本网站在线观看一区二区三区| 久久夜色精品国产欧美乱极品| 波多野结衣亚洲| 午夜天堂影视香蕉久久| 精品国产免费久久 | 91精品国产aⅴ一区二区| 黑人精品欧美一区二区蜜桃| 国产精品网站在线| 欧美久久高跟鞋激| 岛国一区二区三区| 亚洲成av人片在www色猫咪| 欧美电影免费观看高清完整版在| av爱爱亚洲一区| 日韩精品一卡二卡三卡四卡无卡| 在线播放一区二区三区| 亚洲自拍偷拍麻豆| 日韩精品一区二区三区中文不卡| 国产乱子伦一区二区三区国色天香| 亚洲天堂2016| 精品日产卡一卡二卡麻豆| 91麻豆国产在线观看| 久久精品国产在热久久| 亚洲激情男女视频| 国产亚洲欧美日韩日本| 欧美丰满美乳xxx高潮www| www.欧美色图| 精品一区二区在线看|