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

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

?? dumprom.cpp

?? dumprom source code,use for learning the dumprom.exe tool for wince
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
DWORD MemoryMap::GetDword(DWORD offset)
{
    DWORD *p= (DWORD*)GetPtr(offset);
    if (p==NULL)
        return 0;
    return *p;
}
void *MemoryMap::GetPtr(DWORD offset)
{
    for (MemoryBlockVector::iterator i=m_blocks.begin() ; i!=m_blocks.end(); ++i)
    {
        if ((*i).InRange(offset)) {
            return (*i).data+(offset-(*i).start);
        }
    }
    printf("ERROR: could not find pointer for ofs %08lx\n", offset);
    return NULL;
}
DWORD MemoryMap::GetOfs(void *ptr)
{
    for (MemoryBlockVector::iterator i=m_blocks.begin() ; i!= m_blocks.end() ; ++i)
    {
        if ((*i).data <= ptr && ptr < (*i).data+(*i).length)
        {
            return ((BYTE*)ptr - (*i).data) + (*i).start;
        }
    }
    printf("ERROR: could not find offset for ptr %08lx\n", (DWORD)ptr);
    return 0;
}

DWORD MemoryMap::FirstAddress()
{
    MemoryBlockVector::iterator i=m_blocks.begin();

    return (*i).start;
}
DWORD MemoryMap::LastAddress()
{
    MemoryBlockVector::reverse_iterator i=m_blocks.rbegin();
    return (*i).end;
}
MemoryMapIterator MemoryMap::begin()
{
    return MemoryMapIterator(m_blocks.begin(), m_blocks.end());
}
const MemoryMapIterator MemoryMap::end()
{
    return MemoryMapIterator(m_blocks.end(), m_blocks.end());
}

// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------

MemRegion& MemRegions::MarkRange(DWORD start, DWORD end, const char *msg, ...)
{
    va_list ap;
    va_start(ap, msg);
    MemRegion& r= MarkRegion_v(start, end-start, msg, ap);
    va_end(ap);

    return r;
}
MemRegion& MemRegions::MarkRegion(DWORD start, DWORD length, const char *msg, ...)
{
    va_list ap;
    va_start(ap, msg);
    MemRegion& r= MarkRegion_v(start, length, msg, ap);
    va_end(ap);

    return r;
}
MemRegion& MemRegions::MarkRegion_v(DWORD start, DWORD length, const char *msg, va_list ap)
{
    char msgbuf[1024];
    _vsnprintf(msgbuf, 1024, msg, ap);

    if (start==0) {
        printf("start=0\n");
    }
    //printf("region %08lx-%08lx %s\n", start, length, msgbuf);

    MemRegion *m= new MemRegion(start, start+length);
    m->description= new string(msgbuf);
    if (m->description==NULL)
    {
        printf("error allocating memory\n");
    }

    m_list.push_back(*m);

    return *m;
}
void bytedump(DWORD start, DWORD end)
{
    for (DWORD ofs= start; ofs<end ; ++ofs)
        printf(" %02x", g_mem.GetByte(ofs));
}
string dworddumpasstring(DWORD start, DWORD end)
{
    string s;
    char buf[10];

    for (DWORD ofs= start ; ofs<(end&~3) ; ofs+=4)
    {
        _snprintf(buf, 10, " %08lx", g_mem.GetDword(ofs));
        s += buf;
    }
    return s;
}

void dworddump(DWORD start, DWORD end)
{
    if (start&3)
    {
        bytedump(start, min(end, (start&~3)+4));

        start= min(end, (start&~3)+4);
    }
    for (DWORD ofs= start ; ofs<(end&~3) ; ofs+=4)
        printf(" %08lx", g_mem.GetDword(ofs));

    if (end&3)
        bytedump(end&~3, end);
}
void MemRegions::DumpMemoryMap()
{
    sort(m_list.begin(), m_list.end());

    DWORD offset= g_mem.FirstAddress();
    for (MemRegionVector::iterator i=m_list.begin() ; i!=m_list.end() ; ++i)
    {
        if (offset < (*i).start) {
            MemRegion m(offset, (*i).start);
            if ( ((*i).start & 3)==0 && (*i).start - offset < 4)
            {
                if (g_verbose>0) {
                    printf("\t%08lx - %08lx L%08lx alignment", m.start, m.end, m.length);
                    if (m.FirstNonzero()!=m.end)
                        bytedump(m.start, m.end);
                }
            }
            else
            {
                DWORD firstnz= max(m.start, m.FirstNonzero() & ~3);
                DWORD lastnz= min(m.end, (m.LastNonzero() & ~3)+4);
                if (firstnz==m.end)
                    printf("\n%08lx - %08lx L%08lx NUL", m.start, m.end, m.length);
                else {
                    if (firstnz != m.start)
                        printf("\n%08lx - %08lx L%08lx NUL", m.start, firstnz, firstnz-m.start);
                    printf("\n%08lx - %08lx L%08lx unknown", firstnz, lastnz, lastnz-firstnz);
                    if (lastnz-firstnz<16)
                        bytedump(firstnz, lastnz);
                    else if (lastnz-firstnz<64)
                        dworddump(firstnz, lastnz);
                    if (lastnz != m.end)
                        printf("\n%08lx - %08lx L%08lx NUL", lastnz, m.end, m.end-lastnz);
                }
            }
        }
        else if (offset > (*i).start) {
            printf("\n!!! overlap of %ld bytes\n", offset-(*i).start );
        }

        printf("\n%08lx - %08lx L%08lx %s", (*i).start, (*i).end, (*i).length, (*i).description->c_str());

        offset= (*i).end;
    }

    if (offset<g_mem.LastAddress())
    {
        printf("\n%08lx - %08lx unknown", offset, g_mem.LastAddress());
    }
    printf("\n");
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------

// from c:\local\wince420\PUBLIC/COMMON/OAK/INC/PEHDR.H
struct info {                       /* Extra information header block      */
    unsigned long   rva;            /* Virtual relative address of info    */
    unsigned long   size;           /* Size of information block           */
};

// from c:\local\wince420\PUBLIC/COMMON/OAK/INC/ROMLDR.H
#define ROM_SIGNATURE_OFFSET 64
#define ROM_SIGNATURE 0x43454345

#define ROM_EXTRA 9

typedef struct e32_rom {
    unsigned short  e32_objcnt;     /* Number of memory objects            */
    unsigned short  e32_imageflags; /* Image flags                         */
    unsigned long   e32_entryrva;   /* Relative virt. addr. of entry point */
    unsigned long   e32_vbase;      /* Virtual base address of module      */
    unsigned short  e32_subsysmajor;/* The subsystem major version number  */
    unsigned short  e32_subsysminor;/* The subsystem minor version number  */

    unsigned long   e32_stackmax;   /* Maximum stack size                  */
    unsigned long   e32_vsize;      /* Virtual size of the entire image    */
    unsigned long   e32_sect14rva;  /* section 14 rva */
    unsigned long   e32_sect14size; /* section 14 size */

    struct info     e32_unit[ROM_EXTRA]; /* Array of extra info units      */
    unsigned short  e32_subsys;     /* The subsystem type                  */
} e32_rom;

// o32_flags
#define IMAGE_SCN_COMPRESSED                 0x00002000  // Section is compressed
typedef struct o32_rom {
    unsigned long       o32_vsize;      /* Virtual memory size              */
    unsigned long       o32_rva;        /* Object relative virtual address  */
    unsigned long       o32_psize;      /* Physical file size of init. data */
    unsigned long       o32_dataptr;    /* Image pages offset               */
    unsigned long   o32_realaddr;       /* pointer to actual                */
    unsigned long       o32_flags;      /* Attribute flags for the object   */
} o32_rom;


typedef struct ROMHDR {
    ULONG   dllfirst;               // first DLL address
    ULONG   dlllast;                // last DLL address
    ULONG   physfirst;              // first physical address
    ULONG   physlast;               // highest physical address
    ULONG   nummods;                // number of TOCentry's
    ULONG   ulRAMStart;             // start of RAM
    ULONG   ulRAMFree;              // start of RAM free space
    ULONG   ulRAMEnd;               // end of RAM
    ULONG   ulCopyEntries;          // number of copy section entries
    ULONG   ulCopyOffset;           // offset to copy section
    ULONG   ulProfileLen;           // length of PROFentries RAM 
    ULONG   ulProfileOffset;        // offset to PROFentries
    ULONG   numfiles;               // number of FILES
    ULONG   ulKernelFlags;          // optional kernel flags from ROMFLAGS .bib config option
    ULONG   ulFSRamPercent;         // Percentage of RAM used for filesystem 
                                        // byte 0 = #4K chunks/Mbyte of RAM for filesystem 0-2Mbytes 0-255
                                        // byte 1 = #4K chunks/Mbyte of RAM for filesystem 2-4Mbytes 0-255
                                        // byte 2 = #4K chunks/Mbyte of RAM for filesystem 4-6Mbytes 0-255
                                        // byte 3 = #4K chunks/Mbyte of RAM for filesystem > 6Mbytes 0-255

    ULONG   ulDrivglobStart;        // device driver global starting address
    ULONG   ulDrivglobLen;          // device driver global length
    USHORT  usCPUType;              // CPU (machine) Type
    USHORT  usMiscFlags;            // Miscellaneous flags
    void    *pExtensions;           // pointer to ROM Header extensions
    ULONG   ulTrackingStart;        // tracking memory starting address
    ULONG   ulTrackingLen;          // tracking memory ending address
} ROMHDR;
// followed by nummods <TOCentry>'s
typedef struct TOCentry {           // MODULE BIB section structure
    DWORD dwFileAttributes;
    FILETIME ftTime;
    DWORD nFileSize;
    LPSTR   lpszFileName;
    ULONG   ulE32Offset;            // Offset to E32 structure
    ULONG   ulO32Offset;            // Offset to O32 structure
    ULONG   ulLoadOffset;           // MODULE load buffer offset
} TOCentry, *LPTOCentry;

// followed by numfiles <TOCentry>'s
typedef struct FILESentry {         // FILES BIB section structure
    DWORD dwFileAttributes;
    FILETIME ftTime;
    DWORD nRealFileSize;
    DWORD nCompFileSize;
    LPSTR   lpszFileName;
    ULONG   ulLoadOffset;           // FILES load buffer offset
} FILESentry, *LPFILESentry;

typedef struct COPYentry {
    ULONG   ulSource;               // copy source address
    ULONG   ulDest;                 // copy destination address
    ULONG   ulCopyLen;              // copy length
    ULONG   ulDestLen;              // copy destination length 
                                    // (zero fill to end if > ulCopyLen)
} COPYentry;

// from c:\local\wince420\PUBLIC/COMMON/OAK/INC/ROMLDR.H
#define MAX_ROM                 32      // max numbler of XIPs
#define XIP_NAMELEN             32      // max name length of XIP
#define ROM_CHAIN_OFFSET        0x100   // offset for XIPCHAIN_INFO

typedef struct _XIPCHAIN_ENTRY {
    LPVOID  pvAddr;                 // address of the XIP
    DWORD   dwLength;               // the size of the XIP
    DWORD   dwMaxLength;            // the biggest it can grow to
    USHORT  usOrder;                // where to put into ROMChain_t
    USHORT  usFlags;                // flags/status of XIP
    DWORD   dwVersion;              // version info
    CHAR    szName[XIP_NAMELEN];    // Name of XIP, typically the bin file's name, w/o .bin
    DWORD   dwAlgoFlags;            // algorithm to use for signature verification
    DWORD   dwKeyLen;               // length of key in byPublicKey
    BYTE    byPublicKey[596];       // public key data
} XIPCHAIN_ENTRY, *PXIPCHAIN_ENTRY;

typedef struct _XIPCHAIN_INFO {
    DWORD cXIPs;
    //
    // may contain more than one entry, but we only need the address of first one
    //
    XIPCHAIN_ENTRY xipEntryStart;
} XIPCHAIN_INFO, *PXIPCHAIN_INFO;

#define PID_LENGTH 10
// pointed to by ROMHDR.pExtensions
typedef struct ROMPID {
  union{
    DWORD dwPID[PID_LENGTH];        // PID
    struct {
      char  name[(PID_LENGTH - 4) * sizeof(DWORD)];
      DWORD type;
      PVOID pdata;
      DWORD length;
      DWORD reserved;
    } s;
  };
  PVOID pNextExt;                 // pointer to next extension if any
} ROMPID, EXTENSION;

//----------------output structures [ how pe-exe files are structured ]
//
//  file starts with IMAGE_DOS_HEADER
// 0000000: 5a4d  0090  0003  0000  0004  0000  ffff  0000   MZ..............
// 0000010: 00b8  0000  0000  0000  0040  0000  0000  0000   ........@.......
// 0000020: 0000  0000  0000  0000  0000  0000  0000  0000   ................
// 0000030: 0000  0000  0000  0000  0000  0000  000000c0     ................
//
// followed by some dummy code
// 0000040: 0e 1f ba 0e 00 b4 09 cd 21 b8 01 4c cd 21 54 68  ........!..L.!Th
// 0000050: 69 73 20 70 72 6f 67 72 61 6d 20 63 61 6e 6e 6f  is program canno
// 0000060: 74 20 62 65 20 72 75 6e 20 69 6e 20 44 4f 53 20  t be run in DOS 
// 0000070: 6d 6f 64 65 2e 0d 0d 0a 24 00 00 00 00 00 00 00  mode....$.......
//
// followed by something unknown
// 0000080: bf 1a f4 da fb 7b 9a 89 fb 7b 9a 89 fb 7b 9a 89  .....{...{...{..
// 0000090: fb 7b 9b 89 fa 7b 9a 89 66 5b ba 89 f8 7b 9a 89  .{...{..f[...{..
// 00000a0: 82 5a be 89 fa 7b 9a 89 52 69 63 68 fb 7b 9a 89  .Z...{..Rich.{..
// 00000b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
//
// followed by a 'e32_exe' struct
// followed by <e32_objcnt> 'o32_obj' structs
// followed by NUL's to align to next 512-byte boundary
// followed by data-sections, each NUL-padded to the next 512-byte boundary
//
// followed by the debug-directory


// also defined in c:\local\WINCE420\PUBLIC\COMMON\SDK\INC\winnt.h
#ifndef IMAGE_DOS_SIGNATURE
#define IMAGE_DOS_SIGNATURE                 0x5A4D      // MZ

typedef struct _IMAGE_DOS_HEADER {      // DOS .EXE header
    WORD   e_magic;                     // Magic number
    WORD   e_cblp;                      // Bytes on last page of file
    WORD   e_cp;                        // Pages in file
    WORD   e_crlc;                      // Relocations
    WORD   e_cparhdr;                   // Size of header in paragraphs
    WORD   e_minalloc;                  // Minimum extra paragraphs needed
    WORD   e_maxalloc;                  // Maximum extra paragraphs needed
    WORD   e_ss;                        // Initial (relative) SS value
    WORD   e_sp;                        // Initial SP value
    WORD   e_csum;                      // Checksum

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品91亚洲二区在线观看| 欧美大片在线观看| 一区二区三区高清| 91在线观看高清| 亚洲免费观看高清完整版在线观看| 成人黄色综合网站| 亚洲国产高清不卡| 欧美精品自拍偷拍动漫精品| 亚洲三级在线免费| 精品一区二区三区欧美| 大白屁股一区二区视频| 日韩精品一区国产麻豆| 国产精品久久久久久久第一福利| 91久久一区二区| 国产成人在线视频播放| 美女视频网站黄色亚洲| 亚洲一区二区精品视频| 日本一区二区动态图| 精品国产一区二区精华| 欧美区在线观看| 色琪琪一区二区三区亚洲区| 国产馆精品极品| 九九国产精品视频| 日本欧美在线观看| 性欧美疯狂xxxxbbbb| 亚洲欧美一区二区三区孕妇| 国产精品少妇自拍| 国产拍揄自揄精品视频麻豆| 日韩午夜激情电影| 欧美一区二区三区在线| 欧美男男青年gay1069videost | 日韩av电影免费观看高清完整版在线观看| 久久精品男人的天堂| 日韩三级伦理片妻子的秘密按摩| 在线观看国产91| 91久久国产最好的精华液| 97久久精品人人澡人人爽| jvid福利写真一区二区三区| 国产成人综合在线| 粉嫩在线一区二区三区视频| 国产精品一区久久久久| 国产精品一区二区无线| 国产一区二区不卡老阿姨| 精品在线观看免费| 国产一区二区免费看| 国产成人欧美日韩在线电影| 粉嫩在线一区二区三区视频| 成人免费毛片a| 91在线porny国产在线看| 99精品欧美一区二区三区综合在线| 成人性色生活片免费看爆迷你毛片| 国产一区二区在线电影| 国产乱子伦视频一区二区三区| 国产美女一区二区| 福利一区在线观看| 91天堂素人约啪| 欧美亚日韩国产aⅴ精品中极品| 欧美三级视频在线| 日韩欧美三级在线| 中文在线资源观看网站视频免费不卡 | 亚洲欧洲色图综合| 一区二区三区丝袜| 日本特黄久久久高潮| 蜜乳av一区二区三区| 黄色小说综合网站| 成人动漫视频在线| 欧美在线高清视频| 欧美大片拔萝卜| 国产嫩草影院久久久久| 亚洲精品少妇30p| 人妖欧美一区二区| 国产91丝袜在线观看| 91丨porny丨在线| 欧美精品在线一区二区| 欧美精品一区二区三区高清aⅴ| 中文字幕免费观看一区| 亚洲激情第一区| 蜜桃传媒麻豆第一区在线观看| 国产91清纯白嫩初高中在线观看| 91社区在线播放| 日韩欧美色综合网站| 国产精品不卡在线| 日本不卡一区二区| 99久久国产免费看| 51精品秘密在线观看| 国产精品久久久久久福利一牛影视| 亚洲a一区二区| 精品写真视频在线观看| 色婷婷久久久综合中文字幕| 欧美精品一区二区在线观看| 亚洲免费视频中文字幕| 国内欧美视频一区二区| 色视频成人在线观看免| 久久你懂得1024| 午夜免费久久看| www.成人在线| 亚洲精品一区二区三区影院 | 日本道在线观看一区二区| 欧美tickling网站挠脚心| 亚洲私人影院在线观看| 精品一区二区三区在线观看| 一本到不卡精品视频在线观看| 精品国产精品网麻豆系列| 樱桃视频在线观看一区| 国产成人一区在线| 欧美一区二区播放| 一区二区三区在线视频观看 | 国产精品久久久久久久久免费樱桃| 亚洲资源中文字幕| zzijzzij亚洲日本少妇熟睡| 日韩免费看网站| 亚洲国产成人porn| 色综合中文字幕| 欧美国产综合色视频| 久久99精品久久久久婷婷| 欧美日韩高清一区二区不卡 | 日本一区二区三区高清不卡 | 色综合久久天天| 欧美激情在线观看视频免费| 蜜桃91丨九色丨蝌蚪91桃色| 欧美日韩国产精品成人| 亚洲精品免费在线播放| 成人av第一页| 国产精品女同一区二区三区| 精品一区二区久久| 欧美一区二区三区人| 亚洲国产成人av| 欧美视频精品在线观看| 一区二区欧美国产| 色综合天天综合网天天看片| 国产精品久久久久久久久动漫| 国产精品 欧美精品| 精品盗摄一区二区三区| 久久疯狂做爰流白浆xx| 日韩精品一区在线| 精品一区二区三区免费毛片爱| 日韩欧美在线影院| 久久超碰97人人做人人爱| 91精品国产欧美一区二区成人| 亚洲国产视频直播| 欧美日韩精品免费观看视频| 亚洲线精品一区二区三区八戒| 99免费精品视频| 亚洲天堂久久久久久久| 91麻豆国产精品久久| 亚洲精品菠萝久久久久久久| 色久优优欧美色久优优| 亚洲大型综合色站| 欧美一级日韩一级| 九九**精品视频免费播放| 国产清纯白嫩初高生在线观看91 | 日韩激情视频网站| 日韩丝袜情趣美女图片| 美女久久久精品| 久久伊人蜜桃av一区二区| 国产高清精品久久久久| 国产精品美女久久久久av爽李琼| www.日韩av| 亚洲国产精品嫩草影院| 欧美日韩精品二区第二页| 美女在线视频一区| 国产午夜三级一区二区三| 成人免费av网站| 伊人色综合久久天天人手人婷| 欧美日韩精品综合在线| 免费成人美女在线观看| 久久久亚洲精品一区二区三区| 国产精品99久久久久久久vr| 国产精品国产自产拍高清av| 色综合久久88色综合天天免费| 午夜精品123| 久久久久久影视| 91片黄在线观看| 日本特黄久久久高潮| 国产精品污网站| 欧美日韩精品免费观看视频| 国内精品久久久久影院色| 国产精品久久国产精麻豆99网站| 91黄色免费版| 久久99国内精品| 亚洲激情男女视频| 欧美tickling网站挠脚心| 99视频一区二区| 日本中文字幕一区| 国产精品久久久久久户外露出 | 日韩欧美国产精品| 成人小视频免费在线观看| 亚洲夂夂婷婷色拍ww47| 精品国产乱码久久久久久久| 91在线丨porny丨国产| 蜜臀av亚洲一区中文字幕| 国产精品国产三级国产aⅴ入口| 精品视频全国免费看| 国产一区二区免费看| 亚洲成人第一页| 国产欧美精品一区| 欧美一区二区三区播放老司机| 成人sese在线| 精品无人区卡一卡二卡三乱码免费卡 | 精品一区二区三区在线视频|