-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
6 changed files
with
299 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
<?xml version="1.0" encoding="UTF-8" standalone="no"?> | ||
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage"> | ||
<storageModule moduleId="org.eclipse.cdt.core.settings"> | ||
<cconfiguration id="cdt.managedbuild.config.gnu.mingw.exe.debug.712266915"> | ||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.mingw.exe.debug.712266915" moduleId="org.eclipse.cdt.core.settings" name="Debug"> | ||
<externalSettings/> | ||
<extensions> | ||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> | ||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> | ||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> | ||
<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/> | ||
</extensions> | ||
</storageModule> | ||
<storageModule moduleId="cdtBuildSystem" version="4.0.0"> | ||
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.mingw.exe.debug.712266915" name="Debug" parent="cdt.managedbuild.config.gnu.mingw.exe.debug"> | ||
<folderInfo id="cdt.managedbuild.config.gnu.mingw.exe.debug.712266915." name="/" resourcePath=""> | ||
<toolChain id="cdt.managedbuild.toolchain.gnu.mingw.exe.debug.1612435356" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.exe.debug"> | ||
<targetPlatform id="cdt.managedbuild.target.gnu.platform.mingw.exe.debug.2000086192" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.mingw.exe.debug"/> | ||
<builder buildPath="${workspace_loc:/unpack}/Debug" id="cdt.managedbuild.tool.gnu.builder.mingw.base.1018387226" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CDT Internal Builder" superClass="cdt.managedbuild.tool.gnu.builder.mingw.base"/> | ||
<tool id="cdt.managedbuild.tool.gnu.assembler.mingw.exe.debug.1071451660" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.exe.debug"> | ||
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.427915782" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> | ||
</tool> | ||
<tool command="mingw32-gcc" id="cdt.managedbuild.tool.gnu.archiver.mingw.base.2089870831" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.mingw.base"/> | ||
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug.235551099" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.debug"> | ||
<option id="gnu.cpp.compiler.mingw.exe.debug.option.optimization.level.594304631" name="Optimization Level" superClass="gnu.cpp.compiler.mingw.exe.debug.option.optimization.level" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/> | ||
<option id="gnu.cpp.compiler.mingw.exe.debug.option.debugging.level.534797734" name="Debug Level" superClass="gnu.cpp.compiler.mingw.exe.debug.option.debugging.level" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/> | ||
</tool> | ||
<tool command="mingw32-gcc" id="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.411174982" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug"> | ||
<option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.mingw.exe.debug.option.optimization.level.119473135" name="Optimization Level" superClass="gnu.c.compiler.mingw.exe.debug.option.optimization.level" valueType="enumerated"/> | ||
<option id="gnu.c.compiler.mingw.exe.debug.option.debugging.level.1256525044" name="Debug Level" superClass="gnu.c.compiler.mingw.exe.debug.option.debugging.level" value="gnu.c.debugging.level.max" valueType="enumerated"/> | ||
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.480447494" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> | ||
</tool> | ||
<tool command="mingw32-gcc" id="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.debug.1881857811" name="MinGW C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.debug"> | ||
<option id="gnu.c.link.option.libs.1280392743" name="Libraries (-l)" superClass="gnu.c.link.option.libs" valueType="libs"> | ||
<listOptionValue builtIn="false" value="ntdll"/> | ||
</option> | ||
<option id="gnu.c.link.option.noshared.1184731116" name="No shared libraries (-static)" superClass="gnu.c.link.option.noshared" value="false" valueType="boolean"/> | ||
<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.1784985380" superClass="cdt.managedbuild.tool.gnu.c.linker.input"> | ||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> | ||
<additionalInput kind="additionalinput" paths="$(LIBS)"/> | ||
</inputType> | ||
</tool> | ||
<tool command="mingw32-gcc" id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.debug.693209585" name="MinGW C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.debug"/> | ||
</toolChain> | ||
</folderInfo> | ||
</configuration> | ||
</storageModule> | ||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> | ||
</cconfiguration> | ||
<cconfiguration id="cdt.managedbuild.config.gnu.mingw.exe.release.1837232181"> | ||
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.mingw.exe.release.1837232181" moduleId="org.eclipse.cdt.core.settings" name="Release"> | ||
<externalSettings/> | ||
<extensions> | ||
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> | ||
<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> | ||
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/> | ||
<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/> | ||
</extensions> | ||
</storageModule> | ||
<storageModule moduleId="cdtBuildSystem" version="4.0.0"> | ||
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release,org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.mingw.exe.release.1837232181" name="Release" parent="cdt.managedbuild.config.gnu.mingw.exe.release"> | ||
<folderInfo id="cdt.managedbuild.config.gnu.mingw.exe.release.1837232181." name="/" resourcePath=""> | ||
<toolChain id="cdt.managedbuild.toolchain.gnu.mingw.exe.release.252334013" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.exe.release"> | ||
<targetPlatform id="cdt.managedbuild.target.gnu.platform.mingw.exe.release.850919697" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.mingw.exe.release"/> | ||
<builder buildPath="${workspace_loc:/unpack}/Release" id="cdt.managedbuild.tool.gnu.builder.mingw.base.799249645" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CDT Internal Builder" superClass="cdt.managedbuild.tool.gnu.builder.mingw.base"/> | ||
<tool id="cdt.managedbuild.tool.gnu.assembler.mingw.exe.release.50398962" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.exe.release"> | ||
<inputType id="cdt.managedbuild.tool.gnu.assembler.input.91385688" superClass="cdt.managedbuild.tool.gnu.assembler.input"/> | ||
</tool> | ||
<tool command="mingw32-gcc" id="cdt.managedbuild.tool.gnu.archiver.mingw.base.1669716561" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.mingw.base"/> | ||
<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.release.960996774" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.exe.release"> | ||
<option id="gnu.cpp.compiler.mingw.exe.release.option.optimization.level.421918919" name="Optimization Level" superClass="gnu.cpp.compiler.mingw.exe.release.option.optimization.level" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/> | ||
<option id="gnu.cpp.compiler.mingw.exe.release.option.debugging.level.2070459120" name="Debug Level" superClass="gnu.cpp.compiler.mingw.exe.release.option.debugging.level" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/> | ||
</tool> | ||
<tool command="mingw32-gcc" id="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release.831293222" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release"> | ||
<option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.mingw.exe.release.option.optimization.level.989164431" name="Optimization Level" superClass="gnu.c.compiler.mingw.exe.release.option.optimization.level" valueType="enumerated"/> | ||
<option id="gnu.c.compiler.mingw.exe.release.option.debugging.level.1533114467" name="Debug Level" superClass="gnu.c.compiler.mingw.exe.release.option.debugging.level" value="gnu.c.debugging.level.none" valueType="enumerated"/> | ||
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1246671084" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/> | ||
</tool> | ||
<tool command="mingw32-gcc" id="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.release.792335893" name="MinGW C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.mingw.exe.release"> | ||
<option id="gnu.c.link.option.libs.675605539" name="Libraries (-l)" superClass="gnu.c.link.option.libs" valueType="libs"> | ||
<listOptionValue builtIn="false" value="ntdll"/> | ||
</option> | ||
<option id="gnu.c.link.option.strip.2062473552" name="Omit all symbol information (-s)" superClass="gnu.c.link.option.strip" value="true" valueType="boolean"/> | ||
<option id="gnu.c.link.option.noshared.1403905665" name="No shared libraries (-static)" superClass="gnu.c.link.option.noshared" value="true" valueType="boolean"/> | ||
<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.546592501" superClass="cdt.managedbuild.tool.gnu.c.linker.input"> | ||
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/> | ||
<additionalInput kind="additionalinput" paths="$(LIBS)"/> | ||
</inputType> | ||
</tool> | ||
<tool command="mingw32-gcc" id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.release.1385918380" name="MinGW C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.exe.release"/> | ||
</toolChain> | ||
</folderInfo> | ||
</configuration> | ||
</storageModule> | ||
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/> | ||
</cconfiguration> | ||
</storageModule> | ||
<storageModule moduleId="cdtBuildSystem" version="4.0.0"> | ||
<project id="unpack.cdt.managedbuild.target.gnu.mingw.exe.214999975" name="Executable" projectType="cdt.managedbuild.target.gnu.mingw.exe"/> | ||
</storageModule> | ||
<storageModule moduleId="scannerConfiguration"> | ||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> | ||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.release.1837232181;cdt.managedbuild.config.gnu.mingw.exe.release.1837232181.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.release.831293222;cdt.managedbuild.tool.gnu.c.compiler.input.1246671084"> | ||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> | ||
</scannerConfigBuildInfo> | ||
<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.mingw.exe.debug.712266915;cdt.managedbuild.config.gnu.mingw.exe.debug.712266915.;cdt.managedbuild.tool.gnu.c.compiler.mingw.exe.debug.411174982;cdt.managedbuild.tool.gnu.c.compiler.input.480447494"> | ||
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/> | ||
</scannerConfigBuildInfo> | ||
</storageModule> | ||
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/> | ||
<storageModule moduleId="refreshScope" versionNumber="2"> | ||
<configuration configurationName="Release"> | ||
<resource resourceType="PROJECT" workspacePath="/unpack"/> | ||
</configuration> | ||
<configuration configurationName="Debug"> | ||
<resource resourceType="PROJECT" workspacePath="/unpack"/> | ||
</configuration> | ||
</storageModule> | ||
</cproject> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
*.zip | ||
*.gz | ||
*.tmp | ||
*.out | ||
Debug/ | ||
Release/ | ||
*.sdf | ||
*.old | ||
_UpgradeReport_Files | ||
ipch | ||
UpgradeLog.XML | ||
*.suo | ||
*.exe | ||
.classpath | ||
/Servers* | ||
/.metadata | ||
.idea/ | ||
*.iml | ||
.svn | ||
.DS_Store | ||
*.log | ||
*.log.? | ||
*.log.?? | ||
composer.lock | ||
vendor/ | ||
gen/ | ||
bin/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<projectDescription> | ||
<name>unpack_lznt1</name> | ||
<comment></comment> | ||
<projects> | ||
</projects> | ||
<buildSpec> | ||
<buildCommand> | ||
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name> | ||
<triggers>clean,full,incremental,</triggers> | ||
<arguments> | ||
</arguments> | ||
</buildCommand> | ||
<buildCommand> | ||
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name> | ||
<triggers>full,incremental,</triggers> | ||
<arguments> | ||
</arguments> | ||
</buildCommand> | ||
</buildSpec> | ||
<natures> | ||
<nature>org.eclipse.cdt.core.cnature</nature> | ||
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature> | ||
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature> | ||
</natures> | ||
</projectDescription> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
eclipse.preferences.version=1 | ||
environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.712266915/CPATH/delimiter=; | ||
environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.712266915/CPATH/operation=remove | ||
environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.712266915/C_INCLUDE_PATH/delimiter=; | ||
environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.712266915/C_INCLUDE_PATH/operation=remove | ||
environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.712266915/append=true | ||
environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.debug.712266915/appendContributed=true | ||
environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.release.1837232181/CPATH/delimiter=; | ||
environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.release.1837232181/CPATH/operation=remove | ||
environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.release.1837232181/C_INCLUDE_PATH/delimiter=; | ||
environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.release.1837232181/C_INCLUDE_PATH/operation=remove | ||
environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.release.1837232181/append=true | ||
environment/buildEnvironmentInclude/cdt.managedbuild.config.gnu.mingw.exe.release.1837232181/appendContributed=true | ||
environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.712266915/LIBRARY_PATH/delimiter=; | ||
environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.712266915/LIBRARY_PATH/operation=remove | ||
environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.712266915/append=true | ||
environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.debug.712266915/appendContributed=true | ||
environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.release.1837232181/LIBRARY_PATH/delimiter=; | ||
environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.release.1837232181/LIBRARY_PATH/operation=remove | ||
environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.release.1837232181/append=true | ||
environment/buildEnvironmentLibrary/cdt.managedbuild.config.gnu.mingw.exe.release.1837232181/appendContributed=true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,7 @@ | ||
unpack_lznt1 | ||
============ | ||
|
||
Uncompressed Microsoft LZNT1 compressed files by calling RtlDecompressBuffer | ||
A simple command-line Windows tool to uncompress Microsoft LZNT1-compressed files by calling RtlDecompressBuffer. | ||
|
||
Can skip bytes at the beginning/end of the compressed input. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,102 @@ | ||
/* | ||
* unpack lznt1 command-line tool | ||
* | ||
* Author: Rustam Abdullaev | ||
* | ||
* Public domain. | ||
*/ | ||
#include <windows.h> | ||
// under mingw might complain about redefinition of PEXECUTION_STATE, if so comment it out in ntapi.h | ||
#include <ddk/ntifs.h> | ||
#include <stdio.h> | ||
#include <stdlib.h> | ||
|
||
void printLastError(const char*msg) | ||
{ | ||
DWORD lastError = GetLastError(); | ||
LPVOID lpMsgBuf; | ||
if (lastError == ERROR_SUCCESS || !FormatMessage( | ||
FORMAT_MESSAGE_ALLOCATE_BUFFER | | ||
FORMAT_MESSAGE_FROM_SYSTEM | | ||
FORMAT_MESSAGE_IGNORE_INSERTS, | ||
NULL, lastError, | ||
MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), | ||
(LPTSTR) &lpMsgBuf, 0, NULL )) | ||
{ | ||
fprintf(stderr, "ERROR! %s\n", msg); | ||
} else | ||
{ | ||
fprintf( stderr, "ERROR! %s: %s\n", msg, (char*)lpMsgBuf); | ||
LocalFree( lpMsgBuf ); | ||
} | ||
} | ||
|
||
int main(int argc, char**argv) { | ||
if (argc < 3) { | ||
printf("Usage: unpack_LZNT1 <filename> <outfile> [<begin offset> [<end offset>]]\n"); | ||
return 1; | ||
} | ||
char *in = argv[1]; | ||
char *out = argv[2]; | ||
int offset = argc > 2 ? atoi(argv[3]) : 0; | ||
int skipEnd = argc > 3 ? atoi(argv[4]) : 0; | ||
HANDLE hfile = CreateFile(in, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL); | ||
if (hfile == INVALID_HANDLE_VALUE) { | ||
printLastError(in); | ||
return 2; | ||
} | ||
int compSize = GetFileSize(hfile, NULL); | ||
if (compSize == INVALID_FILE_SIZE) { | ||
printLastError(in); | ||
return 3; | ||
} | ||
compSize -= offset + skipEnd; | ||
if (compSize <= 0) { | ||
fprintf(stderr, "ERROR! Invalid offset\n"); | ||
return 3; | ||
} | ||
SetFilePointer(hfile, offset, NULL, 0); | ||
BYTE *buf = malloc(compSize); | ||
if (!buf) { | ||
fprintf(stderr, "ERROR! Out of memory.\n"); | ||
return 4; | ||
} | ||
DWORD szout; | ||
ReadFile(hfile, buf, compSize, &szout, NULL); | ||
if (szout != compSize) { | ||
printLastError(in); | ||
free(buf); | ||
return 5; | ||
} | ||
DWORD uncbufsize = (compSize - offset) * 5; | ||
BYTE *uncbuf = malloc(uncbufsize); | ||
if (!uncbuf) { | ||
fprintf(stderr, "ERROR! Out of memory.\n"); | ||
return 4; | ||
} | ||
ULONG uncbytes = 0; | ||
RtlDecompressBuffer(COMPRESSION_FORMAT_LZNT1, uncbuf, uncbufsize, buf, compSize, &uncbytes); | ||
if (uncbytes < compSize - 100) { | ||
printLastError("LZNT1 decompression failed"); | ||
free(uncbuf); | ||
free(buf); | ||
return 6; | ||
} | ||
free(buf); | ||
CloseHandle(hfile); | ||
hfile = CreateFile(out, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); | ||
if (hfile == INVALID_HANDLE_VALUE) { | ||
printLastError(out); | ||
free(uncbuf); | ||
return 7; | ||
} | ||
WriteFile(hfile, uncbuf, uncbytes, &szout, NULL); | ||
free(uncbuf); | ||
if (szout != uncbytes) { | ||
printLastError(out); | ||
return 7; | ||
} | ||
CloseHandle(hfile); | ||
printf("Done: unpacked %d -> %d bytes.\n", compSize, (int)uncbytes); | ||
return 0; | ||
} |