mirror of
https://github.com/LongSoft/UEFITool.git
synced 2025-05-18 00:54:47 -04:00
First commit of the new_engine branch
- new ffsParser is done, supports FFSv3, non-UEFI data everywhere, fixed files, offsets for uncompressed data and many other things - command-line utilities are removed until the end of new engine's development
This commit is contained in:
parent
29a41e880c
commit
1f0a80d035
31 changed files with 3121 additions and 5444 deletions
|
@ -1,49 +0,0 @@
|
|||
/* uefiextract.cpp
|
||||
|
||||
Copyright (c) 2014, Nikolaj Schlej. All rights reserved.
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
*/
|
||||
|
||||
#include "uefiextract.h"
|
||||
|
||||
UEFIExtract::UEFIExtract(QObject *parent) :
|
||||
QObject(parent)
|
||||
{
|
||||
ffsEngine = new FfsEngine(this);
|
||||
}
|
||||
|
||||
UEFIExtract::~UEFIExtract()
|
||||
{
|
||||
delete ffsEngine;
|
||||
}
|
||||
|
||||
UINT8 UEFIExtract::init(const QString & path)
|
||||
{
|
||||
fileInfo = QFileInfo(path);
|
||||
|
||||
if (!fileInfo.exists())
|
||||
return ERR_FILE_OPEN;
|
||||
|
||||
QFile inputFile;
|
||||
inputFile.setFileName(path);
|
||||
|
||||
if (!inputFile.open(QFile::ReadOnly))
|
||||
return ERR_FILE_OPEN;
|
||||
|
||||
QByteArray buffer = inputFile.readAll();
|
||||
inputFile.close();
|
||||
|
||||
return ffsEngine->parseImageFile(buffer);
|
||||
}
|
||||
|
||||
UINT8 UEFIExtract::extract(QString guid)
|
||||
{
|
||||
return ffsEngine->dump(ffsEngine->treeModel()->index(0, 0), fileInfo.fileName().append(".dump"), guid);
|
||||
}
|
|
@ -1,43 +0,0 @@
|
|||
/* uefiextract.h
|
||||
|
||||
Copyright (c) 2014, Nikolaj Schlej. All rights reserved.
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
*/
|
||||
|
||||
#ifndef __UEFIEXTRACT_H__
|
||||
#define __UEFIEXTRACT_H__
|
||||
|
||||
#include <QObject>
|
||||
#include <QByteArray>
|
||||
#include <QString>
|
||||
#include <QDir>
|
||||
#include <QFileInfo>
|
||||
|
||||
#include "../basetypes.h"
|
||||
#include "../ffsengine.h"
|
||||
|
||||
class UEFIExtract : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit UEFIExtract(QObject *parent = 0);
|
||||
~UEFIExtract();
|
||||
|
||||
UINT8 init(const QString & path);
|
||||
UINT8 extract(QString guid = QString());
|
||||
|
||||
private:
|
||||
FfsEngine* ffsEngine;
|
||||
QFileInfo fileInfo;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
|
@ -1,43 +0,0 @@
|
|||
QT += core
|
||||
QT -= gui
|
||||
|
||||
TARGET = UEFIExtract
|
||||
TEMPLATE = app
|
||||
CONFIG += console
|
||||
CONFIG -= app_bundle
|
||||
DEFINES += _CONSOLE
|
||||
|
||||
SOURCES += uefiextract_main.cpp \
|
||||
uefiextract.cpp \
|
||||
../types.cpp \
|
||||
../descriptor.cpp \
|
||||
../ffs.cpp \
|
||||
../ffsengine.cpp \
|
||||
../peimage.cpp \
|
||||
../treeitem.cpp \
|
||||
../treemodel.cpp \
|
||||
../LZMA/LzmaCompress.c \
|
||||
../LZMA/LzmaDecompress.c \
|
||||
../LZMA/SDK/C/LzFind.c \
|
||||
../LZMA/SDK/C/LzmaDec.c \
|
||||
../LZMA/SDK/C/LzmaEnc.c \
|
||||
../Tiano/EfiTianoDecompress.c \
|
||||
../Tiano/EfiTianoCompress.c \
|
||||
../Tiano/EfiTianoCompressLegacy.c
|
||||
|
||||
HEADERS += uefiextract.h \
|
||||
../basetypes.h \
|
||||
../descriptor.h \
|
||||
../gbe.h \
|
||||
../me.h \
|
||||
../ffs.h \
|
||||
../peimage.h \
|
||||
../types.h \
|
||||
../ffsengine.h \
|
||||
../treeitem.h \
|
||||
../treemodel.h \
|
||||
../LZMA/LzmaCompress.h \
|
||||
../LZMA/LzmaDecompress.h \
|
||||
../Tiano/EfiTianoDecompress.h \
|
||||
../Tiano/EfiTianoCompress.h
|
||||
|
|
@ -1,60 +0,0 @@
|
|||
/* uefiextract_main.cpp
|
||||
|
||||
Copyright (c) 2015, Nikolaj Schlej. All rights reserved.
|
||||
This program and the accompanying materials
|
||||
are licensed and made available under the terms and conditions of the BSD License
|
||||
which accompanies this distribution. The full text of the license may be found at
|
||||
http://opensource.org/licenses/bsd-license.php
|
||||
|
||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||
|
||||
*/
|
||||
#include <QCoreApplication>
|
||||
#include <QString>
|
||||
#include <QStringList>
|
||||
#include <iostream>
|
||||
#include "uefiextract.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QCoreApplication a(argc, argv);
|
||||
a.setOrganizationName("CodeRush");
|
||||
a.setOrganizationDomain("coderush.me");
|
||||
a.setApplicationName("UEFIExtract");
|
||||
|
||||
UEFIExtract w;
|
||||
UINT8 result = ERR_SUCCESS;
|
||||
UINT32 returned = 0;
|
||||
|
||||
if (a.arguments().length() > 32) {
|
||||
std::cout << "Too many arguments" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (a.arguments().length() > 1 ) {
|
||||
if (w.init(a.arguments().at(1)))
|
||||
return 1;
|
||||
|
||||
if (a.arguments().length() == 2) {
|
||||
result = w.extract();
|
||||
if (result)
|
||||
return 2;
|
||||
}
|
||||
else {
|
||||
for (int i = 2; i < a.arguments().length(); i++) {
|
||||
result = w.extract(a.arguments().at(i));
|
||||
if (result)
|
||||
returned |= (1 << (i - 1));
|
||||
}
|
||||
return returned;
|
||||
}
|
||||
|
||||
}
|
||||
else {
|
||||
std::cout << "UEFIExtract 0.4.4" << std::endl << std::endl <<
|
||||
"Usage: uefiextract imagefile [FileGUID_1 FileGUID_2 ... FileGUID_31]" << std::endl <<
|
||||
"Returned value is a bit mask where 0 on position N meant File with GUID_N was found and unpacked, 1 otherwise" << std::endl;
|
||||
return 1;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue