📄 p_lx_elf.h
字号:
COMPILE_TIME_ASSERT_ALIGNED1(cprElfHdr2) COMPILE_TIME_ASSERT_ALIGNED1(cprElfHdr3) }};class PackLinuxElf32Be : public PackLinuxElf32{ typedef PackLinuxElf32 super;protected: PackLinuxElf32Be(InputFile *f) : super(f) { bele = &N_BELE_RTP::be_policy; } virtual acc_uint64l_t get_native64(const void *b) const { return get_be64(b); } virtual unsigned get_native32(const void *b) const { return get_be32(b); } virtual unsigned get_native16(const void *b) const { return get_be16(b); } virtual void set_native64(void *b, acc_uint64l_t v) const { set_be64(b, v); } virtual void set_native32(void *b, unsigned v) const { set_be32(b, v); } virtual void set_native16(void *b, unsigned v) const { set_be16(b, v); }};class PackLinuxElf32Le : public PackLinuxElf32{ typedef PackLinuxElf32 super;protected: PackLinuxElf32Le(InputFile *f) : super(f) { bele = &N_BELE_RTP::le_policy; } virtual acc_uint64l_t get_native64(const void *b) const { return get_le64(b); } virtual unsigned get_native32(const void *b) const { return get_le32(b); } virtual unsigned get_native16(const void *b) const { return get_le16(b); } virtual void set_native64(void *b, acc_uint64l_t v) const { set_le64(b, v); } virtual void set_native32(void *b, unsigned v) const { set_le32(b, v); } virtual void set_native16(void *b, unsigned v) const { set_le16(b, v); }};class PackLinuxElf64Le : public PackLinuxElf64{ typedef PackLinuxElf64 super;protected: PackLinuxElf64Le(InputFile *f) : super(f) { bele = &N_BELE_RTP::le_policy; } virtual acc_uint64l_t get_native64(const void *b) const { return get_le64(b); } virtual unsigned get_native32(const void *b) const { return get_le32(b); } virtual unsigned get_native16(const void *b) const { return get_le16(b); } virtual void set_native64(void *b, acc_uint64l_t v) const { set_le64(b, v); } virtual void set_native32(void *b, unsigned v) const { set_le32(b, v); } virtual void set_native16(void *b, unsigned v) const { set_le16(b, v); }};/*************************************************************************// linux/elf64amd**************************************************************************/class PackLinuxElf64amd : public PackLinuxElf64Le{ typedef PackLinuxElf64Le super;public: PackLinuxElf64amd(InputFile *f); virtual ~PackLinuxElf64amd(); virtual int getFormat() const { return UPX_F_LINUX_ELF64_AMD; } virtual const char *getName() const { return "linux/ElfAMD"; } virtual const char *getFullName(const options_t *) const { return "amd64-linux.elf"; } virtual const int *getFilters() const; virtual bool canPack();protected: virtual void pack1(OutputFile *, Filter &); // generate executable header //virtual void pack3(OutputFile *, Filter &); // append loader virtual void buildLoader(const Filter *); virtual Linker* newLinker() const; virtual void defineSymbols(Filter const *);};/*************************************************************************// linux/elf32ppc**************************************************************************/class PackLinuxElf32ppc : public PackLinuxElf32Be{ typedef PackLinuxElf32Be super;public: PackLinuxElf32ppc(InputFile *f); virtual ~PackLinuxElf32ppc(); virtual int getFormat() const { return UPX_F_LINUX_ELFPPC32; } virtual const char *getName() const { return "linux/ElfPPC"; } virtual const char *getFullName(const options_t *) const { return "powerpc-linux.elf"; } virtual const int *getFilters() const;protected: virtual void pack1(OutputFile *, Filter &); // generate executable header virtual void buildLoader(const Filter *); virtual Linker* newLinker() const;};/*************************************************************************// linux/elf386**************************************************************************/class PackLinuxElf32x86 : public PackLinuxElf32Le{ typedef PackLinuxElf32Le super;public: PackLinuxElf32x86(InputFile *f); virtual ~PackLinuxElf32x86(); virtual int getFormat() const { return UPX_F_LINUX_ELF_i386; } virtual const char *getName() const { return "linux/elf386"; } virtual const char *getFullName(const options_t *) const { return "i386-linux.elf"; } virtual const int *getFilters() const; virtual void unpack(OutputFile *fo);protected: virtual void pack1(OutputFile *, Filter &); // generate executable header virtual void buildLoader(const Filter *); virtual void addStubEntrySections(Filter const *); virtual Linker* newLinker() const; virtual void defineSymbols(Filter const *);};class PackBSDElf32x86 : public PackLinuxElf32x86{ typedef PackLinuxElf32x86 super;public: PackBSDElf32x86(InputFile *f); virtual ~PackBSDElf32x86(); virtual int getFormat() const { return UPX_F_BSD_ELF_i386; } virtual const char *getName() const { return "BSD/elf386"; }protected: virtual void pack1(OutputFile *, Filter &); // generate executable header virtual void buildLoader(const Filter *);};class PackFreeBSDElf32x86 : public PackBSDElf32x86{ typedef PackBSDElf32x86 super;public: PackFreeBSDElf32x86(InputFile *f); virtual ~PackFreeBSDElf32x86(); virtual const char *getFullName(const options_t *) const { return "i386-freebsd.elf"; }};class PackNetBSDElf32x86 : public PackBSDElf32x86{ typedef PackBSDElf32x86 super;public: PackNetBSDElf32x86(InputFile *f); virtual ~PackNetBSDElf32x86(); virtual const char *getFullName(const options_t *) const { return "i386-netbsd.elf"; }};class PackOpenBSDElf32x86 : public PackBSDElf32x86{ typedef PackBSDElf32x86 super;public: PackOpenBSDElf32x86(InputFile *f); virtual ~PackOpenBSDElf32x86(); virtual const char *getFullName(const options_t *) const { return "i386-openbsd.elf"; }protected: virtual void buildLoader(const Filter *ft); virtual void generateElfHdr( OutputFile *, void const *proto, unsigned const brka );};/*************************************************************************// linux/elfarm**************************************************************************/class PackLinuxElf32armLe : public PackLinuxElf32Le{ typedef PackLinuxElf32Le super;public: PackLinuxElf32armLe(InputFile *f); virtual ~PackLinuxElf32armLe(); virtual int getFormat() const { return UPX_F_LINUX_ELF32_ARMEL; } virtual const char *getName() const { return "linux/armel"; } virtual const char *getFullName(const options_t *) const { return "arm-linux.elf"; } virtual const int *getFilters() const;protected: virtual const int *getCompressionMethods(int method, int level) const; virtual Linker* newLinker() const; virtual void pack1(OutputFile *, Filter &); // generate executable header virtual void buildLoader(const Filter *); virtual void updateLoader(OutputFile *); virtual void defineSymbols(Filter const *);};class PackLinuxElf32armBe : public PackLinuxElf32Be{ typedef PackLinuxElf32Be super;public: PackLinuxElf32armBe(InputFile *f); virtual ~PackLinuxElf32armBe(); virtual int getFormat() const { return UPX_F_LINUX_ELF32_ARMEB; } virtual const char *getName() const { return "linux/armeb"; } virtual const char *getFullName(const options_t *) const { return "armeb-linux.elf"; } virtual const int *getFilters() const;protected: virtual const int *getCompressionMethods(int method, int level) const; virtual Linker* newLinker() const; virtual void pack1(OutputFile *, Filter &); // generate executable header virtual void buildLoader(const Filter *); virtual void updateLoader(OutputFile *); virtual void defineSymbols(Filter const *);};class PackLinuxElf32mipseb : public PackLinuxElf32Be{ typedef PackLinuxElf32Be super;public: PackLinuxElf32mipseb(InputFile *f); virtual ~PackLinuxElf32mipseb(); virtual int getFormat() const { return UPX_F_LINUX_ELF32_MIPSEB; } virtual const char *getName() const { return "linux/mipseb"; } virtual const char *getFullName(const options_t *) const { return "mips-linux.elf"; } virtual const int *getFilters() const;protected: virtual Linker* newLinker() const; virtual void pack1(OutputFile *, Filter &); // generate executable header virtual void buildLoader(const Filter *); virtual void updateLoader(OutputFile *); virtual void defineSymbols(Filter const *);};class PackLinuxElf32mipsel : public PackLinuxElf32Le{ typedef PackLinuxElf32Le super;public: PackLinuxElf32mipsel(InputFile *f); virtual ~PackLinuxElf32mipsel(); virtual int getFormat() const { return UPX_F_LINUX_ELF32_MIPSEL; } virtual const char *getName() const { return "linux/mipsel"; } virtual const char *getFullName(const options_t *) const { return "mipsel-linux.elf"; } virtual const int *getFilters() const;protected: virtual Linker* newLinker() const; virtual void pack1(OutputFile *, Filter &); // generate executable header virtual void buildLoader(const Filter *); virtual void updateLoader(OutputFile *); virtual void defineSymbols(Filter const *);};#endif /*} already included *//*vi:ts=4:et*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -