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

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

?? elfo.h

?? C++寫的,提供操作ELF格式文件的API
?? H
字號:
/*
ELFO.h - ELF reader and producer.
Copyright (C) 2001 Serge Lamikhov-Center <to_serge@users.sourceforge.net>

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

#ifndef ELFO_H
#define ELFO_H

#include <string>
#include <fstream>
#include "ELFTypes.h"

// Forward declaration
class IELFO;
class IELFOSection;
class IELFOSegment;

class IELFO
{
  public:
    // Section reader's types
    enum WriterType {
        ELFO_STRING,     // Strings writer
        ELFO_SYMBOL,     // Symbol table writer
        ELFO_RELOCATION, // Relocation table writer
        ELFO_NOTE,       // Notes writer
        ELFO_DYNAMIC,    // Dynamic section writer
        ELFO_HASH        // Hash 
    };

    // Construct/destroy/initialize an object
    virtual int AddRef()  = 0;
    virtual int Release() = 0;

    virtual ELFIO_Err Save( const std::string& sFileName )     = 0;

    // ELF header functions
    virtual ELFIO_Err SetAttr( unsigned char fileClass,
                               unsigned char encoding,
                               unsigned char ELFVersion,
                               Elf32_Half    type,
                               Elf32_Half    machine,
                               Elf32_Word    version,
                               Elf32_Word    flags )   = 0;
    virtual Elf32_Addr GetEntry()                const = 0;
    virtual ELFIO_Err SetEntry( Elf32_Addr entry )     = 0;
    virtual unsigned char GetEncoding() const = 0;

    // Section provider functions
    virtual Elf32_Half    GetSectionsNum()                      const = 0;
    virtual IELFOSection* GetSection( Elf32_Half index )        const = 0;
    virtual IELFOSection* GetSection( const std::string& name ) const = 0;
    virtual IELFOSection* AddSection( const std::string& name,
                                      Elf32_Word type,
                                      Elf32_Word flags,
                                      Elf32_Word info,
                                      Elf32_Word addrAlign,
                                      Elf32_Word entrySize ) = 0;
    virtual std::streampos GetSectionFileOffset( Elf32_Half index ) const = 0;

    // Segment provider functions
    virtual Elf32_Half    GetSegmentNum()                            const = 0;
    virtual IELFOSegment* AddSegment( Elf32_Word type,  Elf32_Addr vaddr,
                                      Elf32_Addr paddr, Elf32_Word flags, Elf32_Word align ) = 0;
    virtual IELFOSegment* GetSegment( Elf32_Half index )             const = 0;

    virtual ELFIO_Err CreateSectionWriter( WriterType type,
                                           IELFOSection* pSection,
                                           void** ppObj ) const = 0;
};


class IELFOSection
{
  public:
    virtual int AddRef()  = 0;
    virtual int Release() = 0;

    virtual Elf32_Half  GetIndex()     const = 0;
    virtual std::string GetName()      const = 0;
    virtual Elf32_Word  GetType()      const = 0;
    virtual Elf32_Word  GetFlags()     const = 0;
    virtual Elf32_Word  GetInfo()      const = 0;
    virtual Elf32_Word  GetAddrAlign() const = 0;
    virtual Elf32_Word  GetEntrySize() const = 0;

    virtual Elf32_Word GetNameIndex()             const = 0;
    virtual void       SetNameIndex( Elf32_Word index ) = 0;

    virtual Elf32_Addr GetAddress()            const = 0;
    virtual void       SetAddress( Elf32_Addr addr ) = 0;

    virtual Elf32_Word GetLink()            const = 0;
    virtual void       SetLink( Elf32_Word link ) = 0;

    virtual char*      GetData()                               const = 0;
    virtual Elf32_Word GetSize()                               const = 0;
    virtual ELFIO_Err  SetData( const char* pData, Elf32_Word size ) = 0;
    virtual ELFIO_Err  SetData( const std::string& data )            = 0;
    virtual ELFIO_Err  AddData( const char* pData, Elf32_Word size ) = 0;
    virtual ELFIO_Err  AddData( const std::string& data )            = 0;
    
    virtual ELFIO_Err Save( std::ofstream& f, std::streampos posHeader,
                            std::streampos posData ) = 0;
};


class IELFOSegment
{
  public:
    virtual int AddRef()  = 0;
    virtual int Release() = 0;
    
    virtual Elf32_Word  GetType()  const = 0;
    virtual Elf32_Word  GetFlags() const = 0;
    virtual Elf32_Word  GetAlign() const = 0;

    virtual Elf32_Addr  GetVirtualAddress()  const = 0;
    virtual Elf32_Addr  GetPhysicalAddress() const = 0;
    virtual void        SetAddresses( Elf32_Addr vaddr, Elf32_Addr paddr ) = 0;

    virtual Elf32_Word  GetFileSize()        const = 0;
    virtual Elf32_Word  GetMemSize()         const = 0;

    virtual Elf32_Half AddSection( IELFOSection* pSection ) = 0;

    virtual ELFIO_Err Save( std::ofstream& f, std::streampos posHeader ) = 0;
};


// String table producer
class IELFOStringWriter
{
  public:
    virtual int AddRef()  = 0;
    virtual int Release() = 0;

    virtual const char* GetString( Elf32_Word index ) const = 0;
    virtual Elf32_Word  AddString( const char* str )        = 0;
};


// Symbol table producer
class IELFOSymbolTable
{
  public:
    virtual int AddRef()  = 0;
    virtual int Release() = 0;

    virtual Elf32_Word AddEntry( Elf32_Word name, Elf32_Addr value, Elf32_Word size,
                                 unsigned char info, unsigned char other,
                                 Elf32_Half shndx ) = 0;
    virtual Elf32_Word AddEntry( Elf32_Word name, Elf32_Addr value, Elf32_Word size,
                                 unsigned char bind, unsigned char type, unsigned char other,
                                 Elf32_Half shndx ) = 0;
    virtual Elf32_Word AddEntry( IELFOStringWriter* pStrWriter, const char* str,
                                 Elf32_Addr value, Elf32_Word size,
                                 unsigned char info, unsigned char other,
                                 Elf32_Half shndx ) = 0;
    virtual Elf32_Word AddEntry( IELFOStringWriter* pStrWriter, const char* str,
                                 Elf32_Addr value, Elf32_Word size,
                                 unsigned char bind, unsigned char type, unsigned char other,
                                 Elf32_Half shndx ) = 0;
};


// Relocation table producer
class IELFORelocationTable
{
  public:
    virtual int AddRef()  = 0;
    virtual int Release() = 0;

    virtual ELFIO_Err AddEntry( Elf32_Addr offset, Elf32_Word info )     = 0;
    virtual ELFIO_Err AddEntry( Elf32_Addr offset, Elf32_Word symbol,
                                unsigned char type )                     = 0;
    virtual ELFIO_Err AddEntry( Elf32_Addr offset, Elf32_Word info,
                                Elf32_Sword addend )                     = 0;
    virtual ELFIO_Err AddEntry( Elf32_Addr offset, Elf32_Word symbol,
                                unsigned char type, Elf32_Sword addend ) = 0;
    virtual ELFIO_Err AddEntry( IELFOStringWriter* pStrWriter, const char* str,
                                IELFOSymbolTable* pSymWriter,
                                Elf32_Addr value, Elf32_Word size,
                                unsigned char symInfo, unsigned char other,
                                Elf32_Half shndx,
                                Elf32_Addr offset, unsigned char type )     = 0;
    virtual ELFIO_Err AddEntry( IELFOStringWriter* pStrWriter, const char* str,
                                IELFOSymbolTable* pSymWriter,
                                Elf32_Addr value, Elf32_Word size,
                                unsigned char symInfo, unsigned char other,
                                Elf32_Half shndx,
                                Elf32_Addr offset, unsigned char type,
                                Elf32_Sword addend )                     = 0;
};


// Note section producer
class IELFONotesWriter
{
  public:
    virtual int AddRef()  = 0;
    virtual int Release() = 0;

    virtual ELFIO_Err AddNote( Elf32_Word type, const std::string& name,
                               const void* desc, Elf32_Word descSize ) = 0;
};


// Dynamic section producer
class IELFODynamicWriter
{
  public:
    virtual int AddRef()  = 0;
    virtual int Release() = 0;

    virtual ELFIO_Err AddEntry( Elf32_Sword tag, Elf32_Word value ) = 0;
};

#endif // ELFO_H

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久久久久久人人人人传媒| 欧美日韩精品电影| 欧美aⅴ一区二区三区视频| 亚洲免费三区一区二区| 国产亚洲一区二区在线观看| 精品久久人人做人人爰| 日韩欧美色电影| 欧美电视剧在线看免费| 精品欧美久久久| 久久蜜臀精品av| 国产蜜臀av在线一区二区三区 | 国产三级久久久| 精品乱人伦小说| 久久久久九九视频| 欧美国产综合色视频| 国产精品久久久久久久蜜臀| 中文字幕字幕中文在线中不卡视频| 国产偷国产偷精品高清尤物| 久久精品一区四区| 国产精品亲子伦对白| 国产精品传媒入口麻豆| 亚洲黄色免费电影| 蜜臀久久99精品久久久久宅男| 蜜桃av一区二区三区电影| 国产真实乱对白精彩久久| 成人精品在线视频观看| 在线中文字幕不卡| 日韩欧美中文字幕制服| 国产精品视频免费看| 一区二区三区免费观看| 久久精品免费观看| 高清免费成人av| 欧美日韩在线播放| 久久久久久97三级| 亚洲国产综合色| 国产精品伊人色| 色综合天天天天做夜夜夜夜做| 欧美酷刑日本凌虐凌虐| 久久久www成人免费毛片麻豆 | 色国产综合视频| 91精品国产欧美一区二区18| 国产午夜精品一区二区三区嫩草 | 国产亚洲精品福利| 亚洲欧美国产高清| 精品一区二区久久| 欧美写真视频网站| 国产婷婷色一区二区三区四区 | 激情丁香综合五月| 在线观看国产日韩| 欧美激情一区二区| 日本sm残虐另类| 色偷偷一区二区三区| 久久久午夜电影| 日本亚洲欧美天堂免费| 91猫先生在线| 中文字幕欧美日韩一区| 日本不卡123| 在线观看视频一区二区欧美日韩| 国产免费久久精品| 久久国产生活片100| 91成人免费网站| 国产精品久久国产精麻豆99网站| 久久激五月天综合精品| 欧美欧美欧美欧美| 亚洲一区视频在线| av一区二区不卡| 欧美韩国日本不卡| 国产剧情一区二区| 精品久久一区二区| 久草热8精品视频在线观看| 欧美精品久久99久久在免费线 | 日韩激情视频在线观看| 91国偷自产一区二区三区成为亚洲经典 | 中文字幕亚洲区| 国产精品一线二线三线| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 蜜桃91丨九色丨蝌蚪91桃色| 欧美三级在线视频| 亚洲一级在线观看| 欧美日韩综合色| 亚洲va国产va欧美va观看| 欧美亚洲一区三区| 亚洲线精品一区二区三区| 色婷婷狠狠综合| 亚洲一区欧美一区| 欧美日韩第一区日日骚| 日日骚欧美日韩| 日韩西西人体444www| 麻豆国产精品一区二区三区| 91精品国产一区二区| 蜜桃精品视频在线观看| 欧美xxxxxxxxx| 国产盗摄一区二区| 国产精品视频你懂的| 色综合久久精品| 天天做天天摸天天爽国产一区| 欧美一级二级在线观看| 经典三级视频一区| 国产精品久久久久久久久晋中| 91污片在线观看| 香蕉影视欧美成人| 久久影视一区二区| 91蜜桃免费观看视频| 亚洲成人av中文| 久久婷婷国产综合精品青草| 成人av免费在线播放| 午夜婷婷国产麻豆精品| 精品久久久久久无| 日本高清不卡一区| 裸体健美xxxx欧美裸体表演| 中文成人av在线| 欧美剧情电影在线观看完整版免费励志电影| 视频一区欧美精品| 国产欧美日韩综合| 欧美精品久久久久久久多人混战| 经典三级视频一区| 亚洲一区在线观看视频| 久久精品一级爱片| 欧美体内she精高潮| 国产一区二区三区在线观看免费 | 亚洲成a人v欧美综合天堂| 国产精品护士白丝一区av| 色哟哟在线观看一区二区三区| 奇米精品一区二区三区在线观看一| 久久久久久一二三区| 欧美日韩一区二区三区高清 | 色综合久久88色综合天天| 日韩av一二三| 亚洲精品高清在线观看| 国产日韩成人精品| 在线综合+亚洲+欧美中文字幕| 99久久久国产精品免费蜜臀| 卡一卡二国产精品 | 欧美喷水一区二区| aaa亚洲精品一二三区| 黄色成人免费在线| 石原莉奈一区二区三区在线观看| 国产精品白丝在线| 久久嫩草精品久久久久| 91精品国产综合久久福利| 一本大道综合伊人精品热热| 国产白丝网站精品污在线入口| 男人的天堂久久精品| 亚洲午夜视频在线观看| 亚洲欧美激情插 | 午夜免费欧美电影| 亚洲精品一二三四区| 国产精品久久久久久久久晋中 | 亚洲天堂成人网| 中文字幕欧美国产| 国产日韩欧美激情| 久久影院视频免费| 欧美精品一区二区三| 欧美成人女星排行榜| 日韩精品专区在线| 欧美一区二区三区小说| 欧美视频中文字幕| 欧美午夜电影一区| 欧美三级电影网站| 久久久久久99精品| 欧美顶级少妇做爰| 欧美性色aⅴ视频一区日韩精品| 亚洲精选在线视频| 国产精品网站在线| 国产日本欧洲亚洲| 国产欧美日韩综合精品一区二区| 国产视频视频一区| 国产精品久久久久婷婷二区次| 中文字幕一区在线| 亚洲美女视频在线| 亚洲高清一区二区三区| 日韩精彩视频在线观看| 美女一区二区三区在线观看| 激情综合色丁香一区二区| 国产制服丝袜一区| 欧美日韩国产中文| 欧美一级免费大片| 久久婷婷成人综合色| 国产精品欧美一区二区三区| 亚洲精品国产第一综合99久久| 亚洲国产精品久久人人爱蜜臀 | 91在线观看成人| 欧美日韩综合一区| 欧美变态tickling挠脚心| 久久久99精品久久| 一区二区三区四区视频精品免费| 日韩中文字幕亚洲一区二区va在线 | 欧美精品v日韩精品v韩国精品v| 欧美一区日韩一区| 国产精品狼人久久影院观看方式| 一区二区三区色| 国产一区二区三区日韩| 91丨九色porny丨蝌蚪| 在线播放国产精品二区一二区四区| 精品国产亚洲在线| 亚洲精品国产精品乱码不99| 久久精品国产一区二区| 91视频com| 久久色中文字幕| 亚洲一二三四在线|