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

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

?? cexportripper.cpp

?? pe exe packer (must use vc2005 to compile)
?? CPP
字號:
// Author:   Brandon LaCombe
// Date:     February 3, 2006
// License:  Public Domain
#include "CExportRipper.h"
#include "..\..\FileTools.h"
#include "..\..\remem.h"

// user defined types

// class version of the export directory
struct _EXPORT_DIRECTORY
{
    DWORD  dwTimeDateStamp;
    PSTR   pszName;
    DWORD  dwBase;
    DWORD  dwNumberOfFunctions;
    DWORD  dwNumberOfNames;
    PDWORD pdwFunctions;
    PSTR * ppszNames;
    PWORD  pwNameOrdinals;
};

// code start

// Class constructor
CExportRipper::CExportRipper()
{
    m_hHeap = GetProcessHeap();
    m_pExportDirectory = NULL;
    m_dwHeaderSize = 0;
    m_dwStringSize = 0;
    m_bStrip = FALSE;
    m_bMoveData = TRUE;
}

// Class destructor
CExportRipper::~CExportRipper()
{
    FreeExportDirectory();
}

// Writes the export directory.
VOID CExportRipper::Export(PVOID pvOutput, DWORD dwBaseRva)
{
    DWORD                   dwSize,
                            x;
    PBYTE                   pbHeaderPtr;
    PIMAGE_EXPORT_DIRECTORY pDirectory;
    PDWORD                  pdwNames,
                            pdwFunctions;
    PSTR                    pszStringPtr;

    if(m_bStrip == FALSE)
    {
        pDirectory = (PIMAGE_EXPORT_DIRECTORY)pvOutput;
        pszStringPtr = PSTR((PBYTE)pvOutput + m_dwHeaderSize);
        pbHeaderPtr = (PBYTE)pvOutput + sizeof(IMAGE_EXPORT_DIRECTORY);

        // fill out export directory
        ZeroMemory(pDirectory, sizeof(IMAGE_EXPORT_DIRECTORY));
        pDirectory->TimeDateStamp = m_pExportDirectory->dwTimeDateStamp;
        pDirectory->Base = m_pExportDirectory->dwBase;
        pDirectory->NumberOfFunctions = m_pExportDirectory->dwNumberOfFunctions;
        pDirectory->NumberOfNames = m_pExportDirectory->dwNumberOfNames;

        // copy name
        pDirectory->Name = DWORD((PBYTE)pszStringPtr - (PBYTE)pDirectory) + dwBaseRva;
        lstrcpyA(pszStringPtr, m_pExportDirectory->pszName);
        pszStringPtr += (lstrlenA(pszStringPtr) + 1);

        // copy function array
        pDirectory->AddressOfFunctions = DWORD(pbHeaderPtr - (PBYTE)pDirectory) + dwBaseRva;
        dwSize = pDirectory->NumberOfFunctions * sizeof(DWORD);
        CopyMemory(pbHeaderPtr, m_pExportDirectory->pdwFunctions, dwSize);

        // copy forwarded function names
        pdwFunctions = (PDWORD)pbHeaderPtr;
        for(x = 0; x < pDirectory->NumberOfFunctions; x++)
        {
            if(pdwFunctions[x] & 0x80000000)
            {
                lstrcpyA(pszStringPtr, (PSTR)UlongToPtr(pdwFunctions[x] & ~0x80000000));
                pdwFunctions[x] = DWORD((PBYTE)pszStringPtr - (PBYTE)pDirectory) + dwBaseRva;
                pszStringPtr += (lstrlenA(pszStringPtr) + 1);
            }
        }
        pbHeaderPtr += dwSize;

        if(pDirectory->NumberOfNames)
        {
            // copy name array and the name strings
            pdwNames = (PDWORD)pbHeaderPtr;
            pDirectory->AddressOfNames = DWORD((PBYTE)pdwNames - (PBYTE)pDirectory) + dwBaseRva;
            for(x = 0; x < pDirectory->NumberOfNames; x++)
            {
                pdwNames[x] = DWORD((PBYTE)pszStringPtr - (PBYTE)pDirectory) + dwBaseRva;
                lstrcpyA(pszStringPtr, m_pExportDirectory->ppszNames[x]);
                pszStringPtr += (lstrlenA(pszStringPtr) + 1);
            }
            pbHeaderPtr += (pDirectory->NumberOfNames * sizeof(DWORD));

            // copy ordinal array
            pDirectory->AddressOfNameOrdinals = DWORD(pbHeaderPtr - (PBYTE)pDirectory) + dwBaseRva;
            dwSize = pDirectory->NumberOfNames * sizeof(WORD);
            CopyMemory(pbHeaderPtr, m_pExportDirectory->pwNameOrdinals, dwSize);
        }
    }
}

// Extracts export directory from the input file.
VOID CExportRipper::ExtractExportDirectory()
{
    DWORD                   dwFunctionSize,
                            dwNameSize,
                            dwOrdinalSize,
                            dwStringSize,
                            x;
    PBYTE                   pbFunction,
                            pbMem;
    PIMAGE_EXPORT_DIRECTORY pDirectory;
    PDWORD                  pdwNameRvas;
    PSTR                    pszString;

    pDirectory = PIMAGE_EXPORT_DIRECTORY(m_pbExports);

    // calculate sizes
    dwFunctionSize = sizeof(DWORD) * pDirectory->NumberOfFunctions;
    dwNameSize = sizeof(DWORD) * pDirectory->NumberOfNames;
    dwOrdinalSize = sizeof(WORD) * pDirectory->NumberOfNames;
    m_dwHeaderSize = sizeof(IMAGE_EXPORT_DIRECTORY) + dwFunctionSize + dwNameSize + dwOrdinalSize;

    // allocate our export directory
    m_pExportDirectory = (PEXPORT_DIRECTORY)HeapAlloc(m_hHeap, HEAP_ZERO_MEMORY, sizeof(EXPORT_DIRECTORY));

    // copy simple fields to our export directory
    m_pExportDirectory->dwTimeDateStamp = pDirectory->TimeDateStamp;
    m_pExportDirectory->dwBase = pDirectory->Base;
    m_pExportDirectory->dwNumberOfFunctions = pDirectory->NumberOfFunctions;
    m_pExportDirectory->dwNumberOfNames = pDirectory->NumberOfNames;

    // copy the export directory name to our export directory
    pszString = (PSTR)RvaToPointer(m_pbFile, pDirectory->Name);
    dwStringSize = lstrlenA(pszString) + 1;
    m_pExportDirectory->pszName = (PSTR)HeapAlloc(m_hHeap, 0, dwStringSize);
    lstrcpyA(m_pExportDirectory->pszName, pszString);
    m_dwStringSize = dwStringSize;

    if(m_bMoveData)
        ZeroMemory(pszString, dwStringSize);

    // copy the function array to our export directory
    m_pExportDirectory->pdwFunctions = (PDWORD)HeapAlloc(m_hHeap, 0, dwFunctionSize);
    pbMem = RvaToPointer(m_pbFile, pDirectory->AddressOfFunctions);
    CopyMemory(m_pExportDirectory->pdwFunctions, pbMem, dwFunctionSize);

    if(m_bMoveData)
        ZeroMemory(pbMem, dwFunctionSize);

    // copy any forwarded functions
    for(x = 0; x < pDirectory->NumberOfFunctions; x++)
    {
        pbFunction = RvaToPointer(m_pbFile, m_pExportDirectory->pdwFunctions[x]);
        if(pbFunction >= m_pbExports && pbFunction < m_pbExports + m_dwExportsSize)
        {
            dwStringSize = lstrlenA((PSTR)pbFunction) + 1;
            m_pExportDirectory->pdwFunctions[x] = PtrToUlong(HeapAlloc(m_hHeap, 0, dwStringSize));
            lstrcpyA((PSTR)UlongToPtr(m_pExportDirectory->pdwFunctions[x]), (PSTR)pbFunction);
            m_pExportDirectory->pdwFunctions[x] |= 0x80000000;
            m_dwStringSize += dwStringSize;

            if(m_bMoveData)
                ZeroMemory(pbFunction, dwStringSize);
        }
    }

    // ensure at least one named export exists
    if(dwNameSize)
    {
        // copy the name ordinal array to our export directory
        m_pExportDirectory->pwNameOrdinals = (PWORD)HeapAlloc(m_hHeap, 0, dwOrdinalSize);
        pbMem = RvaToPointer(m_pbFile, pDirectory->AddressOfNameOrdinals);
        CopyMemory(m_pExportDirectory->pwNameOrdinals, pbMem, dwOrdinalSize);

        if(m_bMoveData)
            ZeroMemory(pbMem, dwOrdinalSize);

        // copy each string in the name array to our export directory
        m_pExportDirectory->ppszNames = (PSTR*)HeapAlloc(m_hHeap, 0, dwNameSize);
        pdwNameRvas = (PDWORD)RvaToPointer(m_pbFile, pDirectory->AddressOfNames);
        for(x = 0; x < pDirectory->NumberOfNames; x++)
        {
            pszString = (PSTR)RvaToPointer(m_pbFile, pdwNameRvas[x]);
            dwStringSize = lstrlenA(pszString) + 1;
            m_pExportDirectory->ppszNames[x] = (PSTR)HeapAlloc(m_hHeap, 0, dwStringSize);
            lstrcpyA(m_pExportDirectory->ppszNames[x], pszString);
            m_dwStringSize += dwStringSize;

            if(m_bMoveData)
                ZeroMemory(pszString, dwStringSize);
        }
        if(m_bMoveData)
            ZeroMemory(pdwNameRvas, dwNameSize);
    }
    if(m_bMoveData)
        ZeroMemory(pDirectory, sizeof(IMAGE_EXPORT_DIRECTORY));
}

// frees the export directory
VOID CExportRipper::FreeExportDirectory()
{
    DWORD x;

    if(m_pExportDirectory)
    {
        // free forwarded functions
        for(x = 0; x < m_pExportDirectory->dwNumberOfFunctions; x++)
        {
            if(m_pExportDirectory->pdwFunctions[x] & 0x80000000)
            {
                m_pExportDirectory->pdwFunctions[x] &= ~0x80000000;
                HeapFree(m_hHeap, 0, UlongToPtr(m_pExportDirectory->pdwFunctions[x] & ~0x80000000));
            }
        }

        // free function array
        HeapFree(m_hHeap, 0, m_pExportDirectory->pdwFunctions);

        if(m_pExportDirectory->dwNumberOfNames)
        {
            // free ordinal array
            HeapFree(m_hHeap, 0, m_pExportDirectory->pwNameOrdinals);

            // free name array and their names
            for(x = 0; x < m_pExportDirectory->dwNumberOfNames; x++)
                HeapFree(m_hHeap, 0, m_pExportDirectory->ppszNames[x]);
            HeapFree(m_hHeap, 0, m_pExportDirectory->ppszNames);
        }
        HeapFree(m_hHeap, 0, m_pExportDirectory);
        m_pExportDirectory = NULL;
    }
}

// Returns size of export directory.
DWORD CExportRipper::GetSize()
{
    DWORD dwSize = 0;

    if(m_bStrip == FALSE)
        dwSize = m_dwHeaderSize + m_dwStringSize;

    return dwSize;
}

// Loads input file and returns TRUE if an export directory exists.
BOOL CExportRipper::LoadFile(PBYTE pbFile)
{
    BOOL              bRet;
    DWORD             dwExportRva;
    PIMAGE_NT_HEADERS pNt;

    bRet = FALSE;
    m_pbFile = pbFile;
    pNt = PIMAGE_NT_HEADERS(pbFile + PIMAGE_DOS_HEADER(pbFile)->e_lfanew);
    dwExportRva = pNt->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress;
    m_pbExports = RvaToPointer(pbFile, dwExportRva);
    m_dwExportsSize = pNt->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].Size;
    if(m_pbExports) bRet = TRUE;
    return bRet;
}

// Tells the ripper whether or not to null out the original export data.
VOID CExportRipper::MoveData(BOOL bMoveData)
{
    m_bMoveData = bMoveData;
}

// Driver for ripping the export directory from the input file.
VOID CExportRipper::Rip(PVOID pvFile)
{
    if(LoadFile((PBYTE)pvFile))
    {
        FreeExportDirectory();
        ExtractExportDirectory();
    }
}

// Sets strip flag.
VOID CExportRipper::Strip(BOOL bStrip)
{
    m_bStrip = bStrip;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩精品一区| 欧美影院一区二区| 久久久精品免费观看| 国产高清视频一区| 亚洲欧洲美洲综合色网| 色哟哟一区二区三区| 亚洲最大色网站| 欧美精品v国产精品v日韩精品 | 国产女主播在线一区二区| 韩国毛片一区二区三区| 中文字幕欧美三区| 日本二三区不卡| 日韩成人一级片| 亚洲国产精品成人综合| 91官网在线免费观看| 奇米影视一区二区三区小说| 精品福利av导航| 欧美一区二区三区免费视频| 久久av资源网| 日韩美女精品在线| 欧美性猛交xxxxxxxx| 久久精品国产**网站演员| 亚洲国产成人在线| 欧美日韩国产精选| 国产成人在线免费| 午夜久久久久久久久久一区二区| 亚洲精品一区二区三区香蕉| 99久久综合色| 麻豆成人久久精品二区三区小说| 国产精品天天看| 欧美一区二区免费视频| 粉嫩高潮美女一区二区三区| 无吗不卡中文字幕| 中文字幕在线一区二区三区| 欧美日韩亚洲综合在线| 国产成人aaa| 日日摸夜夜添夜夜添精品视频| 国产三级精品视频| 91精品欧美一区二区三区综合在| 成人免费不卡视频| 国内精品国产三级国产a久久 | 亚洲成av人影院| 国产欧美视频一区二区三区| 欧美日韩激情一区二区| av亚洲产国偷v产偷v自拍| 久久精品99国产精品日本| 亚洲综合网站在线观看| 久久精品欧美日韩| 日韩三级中文字幕| 色爱区综合激月婷婷| 国产成人精品三级| 久久国产精品99久久人人澡| 亚洲主播在线观看| 亚洲欧美国产三级| 国产精品污www在线观看| 亚洲精品一区二区三区蜜桃下载| 欧美卡1卡2卡| 欧美三电影在线| 色偷偷88欧美精品久久久| 从欧美一区二区三区| 国产一区二区不卡在线| 久久精品国产999大香线蕉| 亚洲123区在线观看| 亚洲国产视频直播| 一区二区久久久久| 亚洲欧美日韩在线| 国产精品成人一区二区三区夜夜夜| 国产亚洲欧美一区在线观看| 欧美大白屁股肥臀xxxxxx| 欧美精品亚洲一区二区在线播放| 欧美最猛性xxxxx直播| 色综合久久久久综合体| 色哟哟国产精品| 97久久精品人人澡人人爽| 99视频国产精品| 色婷婷精品久久二区二区蜜臀av| 91在线国内视频| 97久久超碰国产精品电影| 91丨porny丨户外露出| www.综合网.com| av成人老司机| 欧美在线看片a免费观看| 在线一区二区观看| 欧美三级乱人伦电影| 欧美久久久久久久久| 国产欧美va欧美不卡在线| 久久伊99综合婷婷久久伊| 久久综合丝袜日本网| 久久久久99精品一区| 国产精品视频一二三| 亚洲视频电影在线| 亚洲一区二区精品3399| 日韩va欧美va亚洲va久久| 久久91精品国产91久久小草| 国产精品一区二区91| 北条麻妃一区二区三区| 91成人国产精品| 日韩欧美国产电影| 欧美激情一区三区| 一区二区三区在线播放| 性做久久久久久免费观看 | 亚洲摸摸操操av| 午夜精品视频一区| 国产伦精一区二区三区| 91污片在线观看| 欧美肥胖老妇做爰| 日本一二三四高清不卡| 亚洲综合视频网| 国产一区在线视频| 色国产综合视频| 精品第一国产综合精品aⅴ| 国产亚洲美州欧州综合国| 亚洲永久精品大片| 激情文学综合网| 色哟哟欧美精品| 欧美大片在线观看一区二区| 中文字幕欧美一区| 免费欧美日韩国产三级电影| 波多野结衣的一区二区三区| 欧美日本一道本在线视频| 久久免费视频一区| 亚洲国产精品综合小说图片区| 国内外精品视频| 欧美亚洲免费在线一区| 久久久久国产成人精品亚洲午夜| 亚洲国产欧美日韩另类综合| 国产成人精品在线看| 555夜色666亚洲国产免| 国产精品伦理在线| 久久er99热精品一区二区| 色哟哟一区二区在线观看| 久久精品视频一区二区| 日韩电影在线免费| 色综合久久88色综合天天| 久久综合色婷婷| 亚洲1区2区3区4区| 色综合一区二区三区| 国产午夜一区二区三区| 免费观看30秒视频久久| 欧美午夜电影网| 亚洲欧洲日产国码二区| 国产九色精品成人porny| 欧美一级二级在线观看| 亚洲宅男天堂在线观看无病毒| 成人福利视频在线| 久久欧美中文字幕| 蜜臀精品一区二区三区在线观看 | 一区二区三区四区激情| 国产高清久久久| 精品国产乱码久久久久久闺蜜| 午夜精品福利久久久| 色88888久久久久久影院按摩| 久久精品人人做| 久久99精品久久久久久| 91精品国产综合久久婷婷香蕉 | 亚洲午夜免费视频| 色综合天天综合| 亚洲色欲色欲www| 337p亚洲精品色噜噜狠狠| 一区二区三区在线免费播放| 99久久综合99久久综合网站| 中文字幕在线免费不卡| jlzzjlzz国产精品久久| 国产农村妇女毛片精品久久麻豆| 精品一区二区三区在线观看 | 久久久三级国产网站| 日韩电影一区二区三区| 欧美日韩一区三区四区| 亚洲宅男天堂在线观看无病毒| 欧美在线视频日韩| 亚洲一区二区四区蜜桃| 在线看国产一区| 亚洲综合一区二区精品导航| 欧美视频中文字幕| 日韩精品久久久久久| 日韩精品最新网址| 韩国精品主播一区二区在线观看| 亚洲精品一区二区在线观看| 风流少妇一区二区| 国产精品成人一区二区三区夜夜夜| yourporn久久国产精品| 亚洲自拍另类综合| 日韩一区二区影院| 国产一区二区中文字幕| 国产精品久久久久精k8| 在线免费av一区| 免费美女久久99| 中文字幕高清不卡| 91九色最新地址| 免播放器亚洲一区| 国产精品亲子伦对白| 在线观看欧美黄色| 老司机午夜精品| 国产精品色婷婷| 色婷婷精品大视频在线蜜桃视频| 五月天视频一区| 国产日韩av一区| 欧美天天综合网| 韩国av一区二区三区四区| 亚洲欧美影音先锋|