Rewrote the new vmlinuz/i386 format in a more object-oriented way. This

should hopefully also help adding support for filters and other
things.

committer: mfx <mfx> 976723821 +0000
This commit is contained in:
Markus F.X.J. Oberhumer
2000-12-13 16:10:21 +00:00
parent d266c6bff1
commit 04c3173ef3
7 changed files with 197 additions and 87 deletions
+37 -3
View File
@@ -25,15 +25,20 @@
markus.oberhumer@jk.uni-linz.ac.at ml1050@cdata.tvnet.hu
*/
#ifndef __UPX_P_VMLINZ_H
#define __UPX_P_VMLINZ_H
/*************************************************************************
// vmlinuz/i386 (zlib compressed Linux kernel image)
**************************************************************************/
class PackvmlinuzI386 : public Packer
class PackVmlinuzI386 : public Packer
{
typedef Packer super;
public:
PackvmlinuzI386(InputFile *f);
PackVmlinuzI386(InputFile *f);
virtual int getVersion() const { return 1; }
virtual int getFormat() const { return UPX_F_VMLINUZ_i386; }
virtual const char *getName() const { return "vmlinuz/386"; }
@@ -47,6 +52,9 @@ public:
virtual int canUnpack();
protected:
virtual int readHeader();
virtual bool readKernel();
// virtual const upx_byte *getLoader() const;
// virtual int getLoaderSize() const;
@@ -72,6 +80,32 @@ protected:
};
off_t setup_size;
bool bzImage;
unsigned long ulen;
};
/*************************************************************************
// bvmlinuz/i386 (zlib compressed Linux kernel image)
**************************************************************************/
class PackBvmlinuzI386 : public PackVmlinuzI386
{
typedef PackVmlinuzI386 super;
public:
PackBvmlinuzI386(InputFile *f) : super(f) { }
virtual int getFormat() const { return UPX_F_BVMLINUZ_i386; }
virtual const char *getName() const { return "bvmlinuz/386"; }
virtual void pack(OutputFile *fo);
virtual bool canPack();
};
#endif /* already included */
/*
vi:ts=4:et
*/