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

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

?? libdump.c

?? Windows 95 系統程式設計大奧秘書籍源碼
?? C
字號:
//==================================
// PEDUMP - Matt Pietrek 1995
// FILE: LIBDUMP.C
//==================================

#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include "common.h"
#include "objdump.h"
#include "libdump.h"
#include "extrnvar.h"

PSTR PszLongnames = 0;

DWORD ConvertBigEndian(DWORD bigEndian);

void DisplayArchiveMemberHeader(
    PIMAGE_ARCHIVE_MEMBER_HEADER pArchHeader,
    DWORD fileOffset )
{
    printf("Archive Member Header (%08X):\n", fileOffset);

    printf("  Name:     %.16s", pArchHeader->Name);
    if ( pArchHeader->Name[0] == '/' && isdigit(pArchHeader->Name[1]) )
        printf( "  (%s)\n", PszLongnames + atoi(pArchHeader->Name+1) );
    printf("\n");

    printf("  Date:     %.12s\n", pArchHeader->Date);
    printf("  UserID:   %.6s\n", pArchHeader->UserID);
    printf("  GroupID:  %.6s\n", pArchHeader->GroupID);
    printf("  Mode:     %.8s\n", pArchHeader->Mode);
    printf("  Size:     %.10s\n", pArchHeader->Size);
}

void DumpFirstLinkerMember(PVOID p)
{
    DWORD cSymbols = *(PDWORD)p;
    PDWORD pMemberOffsets = MakePtr( PDWORD, p, 4 );
    PSTR pSymbolName;
    unsigned i;

    cSymbols = ConvertBigEndian(cSymbols);
    pSymbolName = MakePtr( PSTR, pMemberOffsets, 4 * cSymbols );
    
    printf("First Linker Member:\n");
    printf( "  Symbols:         %08X\n", cSymbols );
    printf( "  MbrOffs   Name\n  --------  ----\n" );
        
    for ( i = 0; i < cSymbols; i++ )
    {
        DWORD offset;
        
        offset = ConvertBigEndian( *pMemberOffsets );
        
        printf("  %08X  %s\n", offset, pSymbolName);
        
        pMemberOffsets++;
        pSymbolName += strlen(pSymbolName) + 1;
    }
}

void DumpSecondLinkerMember(PVOID p)
{
    DWORD cArchiveMembers = *(PDWORD)p;
    PDWORD pMemberOffsets = MakePtr( PDWORD, p, 4 );
    DWORD cSymbols;
    PSTR pSymbolName;
    PWORD pIndices;
    unsigned i;

    cArchiveMembers = cArchiveMembers;

    // The number of symbols is in the DWORD right past the end of the
    // member offset array.
    cSymbols = pMemberOffsets[cArchiveMembers];

    pIndices = MakePtr( PWORD, p, 4 + cArchiveMembers * sizeof(DWORD) + 4 );

    pSymbolName = MakePtr( PSTR, pIndices, cSymbols * sizeof(WORD) );
    
    printf("Second Linker Member:\n");
    
    printf( "  Archive Members: %08X\n", cArchiveMembers );
    printf( "  Symbols:         %08X\n", cSymbols );
    printf( "  MbrOffs   Name\n  --------  ----\n" );

    for ( i = 0; i < cSymbols; i++ )
    {
        printf("  %08X  %s\n", pMemberOffsets[pIndices[i] - 1], pSymbolName);
        pSymbolName += strlen(pSymbolName) + 1;
    }
}

void DumpLongnamesMember(PVOID p, DWORD len)
{
    PSTR pszName = (PSTR)p;
    DWORD offset = 0;

    PszLongnames = (PSTR)p;     // Save off pointer for use when dumping
                                // out OBJ member names

    printf("Longnames:\n");
    
    // The longnames member is a series of null-terminated string.  Print
    // out the offset of each string (in decimal), followed by the string.
    while ( offset < len )
    {
        unsigned cbString = lstrlen( pszName )+1;

        printf("  %05u: %s\n", offset, pszName);
        offset += cbString;
        pszName += cbString;
    }
}

void DumpLibFile( LPVOID lpFileBase )
{
    PIMAGE_ARCHIVE_MEMBER_HEADER pArchHeader;
    BOOL fSawFirstLinkerMember = FALSE;
    BOOL fSawSecondLinkerMember = FALSE;
    BOOL fBreak = FALSE;

    if ( strncmp(lpFileBase, IMAGE_ARCHIVE_START,
                            IMAGE_ARCHIVE_START_SIZE ) )
    {
        printf("Not a valid .LIB file - signature not found\n");
        return;
    }
    
    pArchHeader = MakePtr(PIMAGE_ARCHIVE_MEMBER_HEADER, lpFileBase,
                            IMAGE_ARCHIVE_START_SIZE);

    while ( pArchHeader )
    {
        DWORD thisMemberSize;
        
        DisplayArchiveMemberHeader( pArchHeader,
                                    (PBYTE)pArchHeader - (PBYTE) lpFileBase );
        printf("\n");

        if ( !strncmp(pArchHeader->Name, IMAGE_ARCHIVE_LINKER_MEMBER, 16) )
        {
            if ( !fSawFirstLinkerMember )
            {
                DumpFirstLinkerMember( (PVOID)(pArchHeader + 1) );
                printf("\n");
                fSawFirstLinkerMember = TRUE;
            }
            else if ( !fSawSecondLinkerMember )
            {
                DumpSecondLinkerMember( (PVOID)(pArchHeader + 1) );
                printf("\n");
                fSawSecondLinkerMember = TRUE;
            }
        }
        else if(!strncmp(pArchHeader->Name,IMAGE_ARCHIVE_LONGNAMES_MEMBER,16))
        {
            DumpLongnamesMember( (PVOID)(pArchHeader + 1),
                                 atoi(pArchHeader->Size) );
            printf("\n");
        }
        else    // It's an OBJ file
        {
            DumpObjFile( (PIMAGE_FILE_HEADER)(pArchHeader + 1) );
        }

        // Calculate how big this member is (it's originally stored as 
        // as ASCII string.
        thisMemberSize = atoi(pArchHeader->Size)
                        + IMAGE_SIZEOF_ARCHIVE_MEMBER_HDR;

        thisMemberSize = (thisMemberSize+1) & ~1;   // Round up

        // Get a pointer to the next archive member
        pArchHeader = MakePtr(PIMAGE_ARCHIVE_MEMBER_HEADER, pArchHeader,
                                thisMemberSize);

        // Bail out if we don't see the EndHeader signature in the next record
        __try
        {
            if ( strncmp(pArchHeader->EndHeader, IMAGE_ARCHIVE_END, 2) )
                break;
        }
        __except( TRUE )    // Should only get here if pArchHeader is bogus
        {
            fBreak = TRUE;  // Ideally, we could just put a "break;" here,
        }                   // but BC++ doesn't like it.
        
        if ( fBreak )   // work around BC++ problem.
            break;
    }
}

// Routine to convert from big endian to little endian
DWORD ConvertBigEndian(DWORD bigEndian)
{
    __asm {
        mov     eax,[bigEndian]
        xchg    ah,al
        ror     eax,16
        xchg    ah,al
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品1区2区3区| 国产精品视频一二三| 国产亚洲精品久| 久久er精品视频| 国产成+人+日韩+欧美+亚洲| 欧美人与性动xxxx| 日韩美女久久久| 国产成人av电影在线| 欧美一级二级在线观看| 一个色综合网站| 成人国产在线观看| 久久久久国产精品人| 日本不卡视频一二三区| 欧美综合欧美视频| 有码一区二区三区| 成人99免费视频| 亚洲国产激情av| 福利视频网站一区二区三区| 日韩美女视频一区二区在线观看| 亚洲综合免费观看高清在线观看 | 精品国产成人在线影院 | 国产精品美女久久久久aⅴ| 蜜桃在线一区二区三区| 欧美亚州韩日在线看免费版国语版| 国产精品丝袜在线| 成人午夜av影视| 国产视频一区二区在线观看| 亚洲欧美日韩电影| 色综合久久综合网| 亚洲激情综合网| 色综合久久综合| 亚洲日本护士毛茸茸| 色噜噜偷拍精品综合在线| 最近中文字幕一区二区三区| 99视频在线精品| 亚洲免费观看在线观看| 色综合天天综合色综合av| 一区二区三区在线免费播放| 91福利视频久久久久| 亚洲国产成人tv| 欧美精品日日鲁夜夜添| 青娱乐精品视频| 亚洲精品一区二区三区影院| 国产乱色国产精品免费视频| 国产精品乱码一区二三区小蝌蚪| 欧美图区在线视频| 日本va欧美va瓶| 久久久久国产精品厨房| 国产精品综合视频| 亚洲视频一区在线观看| 在线播放中文字幕一区| 精久久久久久久久久久| 久久久久久久久久久久电影 | 欧美激情综合在线| 色综合久久久久综合| 亚洲r级在线视频| 欧美电影免费观看高清完整版| 国产一二精品视频| 亚洲精品国产无套在线观| 欧美专区在线观看一区| 麻豆精品视频在线观看视频| 久久久www免费人成精品| 97国产精品videossex| 日本一不卡视频| 国产精品久久免费看| 欧美午夜精品久久久| 国产一区二区中文字幕| 亚洲制服丝袜一区| xnxx国产精品| 欧美自拍丝袜亚洲| 丁香婷婷综合激情五月色| 亚洲高清在线视频| 国产精品三级视频| 欧美一级欧美三级在线观看| 波波电影院一区二区三区| 肉色丝袜一区二区| 亚洲日本成人在线观看| 欧美videos中文字幕| 色哟哟精品一区| 国产福利不卡视频| 丝袜美腿亚洲一区| 亚洲日本va在线观看| 久久亚洲一级片| 欧美一区二区在线免费观看| 91网站最新网址| 国产成人在线视频播放| 视频一区二区三区在线| 亚洲人成小说网站色在线| 国产亚洲精品免费| 日韩欧美电影一区| 欧美精选午夜久久久乱码6080| 成人激情午夜影院| 国产一区二区美女诱惑| 日本午夜一区二区| 亚洲不卡av一区二区三区| 一区在线播放视频| 欧美国产成人在线| 久久综合九色综合欧美亚洲| 日韩视频免费观看高清完整版| 911精品国产一区二区在线| 成人福利视频网站| 国产成人av电影在线| 国产毛片精品视频| 久久99精品国产91久久来源| 奇米影视7777精品一区二区| 亚洲一级电影视频| 亚洲www啪成人一区二区麻豆| 一区二区三区四区视频精品免费| 国产精品久久久久久亚洲毛片| 久久久国产午夜精品| 国产午夜亚洲精品羞羞网站| 欧美成人乱码一区二区三区| 欧美va亚洲va国产综合| 日韩欧美色电影| 精品粉嫩超白一线天av| 337p粉嫩大胆噜噜噜噜噜91av| 日韩一区二区三区av| 欧美电影免费提供在线观看| 日韩欧美一区二区久久婷婷| 精品三级av在线| 精品国产精品一区二区夜夜嗨| 久久综合九色综合久久久精品综合| 精品国精品自拍自在线| 久久久欧美精品sm网站| 国产精品久久久久精k8 | 成人性生交大片| 99在线精品观看| 欧美性猛交xxxx乱大交退制版 | 日韩精品最新网址| 精品国产污污免费网站入口| 久久精品亚洲精品国产欧美kt∨| 国产精品素人视频| 亚洲最新在线观看| 蜜桃久久精品一区二区| 国产毛片精品国产一区二区三区| 国产成人在线视频免费播放| 91啪九色porn原创视频在线观看| 91高清在线观看| 日韩女优制服丝袜电影| 国产亚洲成aⅴ人片在线观看 | 色综合中文综合网| 日本亚洲视频在线| 国产一区二区三区免费在线观看| 成人免费黄色在线| 欧美视频在线一区| 精品国产百合女同互慰| 亚洲欧美日韩一区| 美女脱光内衣内裤视频久久影院| 国产成人在线视频网站| 欧美综合在线视频| 国产亚洲欧美日韩日本| 亚洲国产精品视频| 国产一区二区三区视频在线播放| 一本一道综合狠狠老| 精品福利在线导航| 亚洲自拍另类综合| 国产精品综合一区二区三区| 91福利在线看| 国产午夜精品久久久久久免费视| 亚洲一区二区三区四区在线| 国产一区二区三区视频在线播放| 欧美亚洲国产一区在线观看网站| 久久久久久毛片| 婷婷久久综合九色综合伊人色| 国产福利一区二区| 日韩一区二区免费高清| 一区二区三区在线视频免费| 国产盗摄一区二区三区| 666欧美在线视频| 亚洲欧美日韩在线| 国产成人在线电影| 日韩免费在线观看| 亚洲国产成人va在线观看天堂| 丁香五精品蜜臀久久久久99网站 | 91污在线观看| 久久精品男人天堂av| 免费黄网站欧美| 欧美日韩一区二区在线视频| 成人免费小视频| 国产成人av一区二区三区在线| 91精品国产福利| 视频一区视频二区中文| 在线一区二区三区| 亚洲人成小说网站色在线| 国产69精品久久久久777| 精品国产免费久久| 美国三级日本三级久久99| 717成人午夜免费福利电影| 亚洲一区二区不卡免费| 一本一本大道香蕉久在线精品 | 蜜桃视频在线观看一区| 欧美三级三级三级| 亚洲尤物视频在线| 91免费观看视频在线| 亚洲视频资源在线| 91亚洲精品久久久蜜桃| 亚洲欧美日韩一区二区三区在线观看| 大陆成人av片| 亚洲女同一区二区| 色94色欧美sute亚洲线路一ni|