Merge remote-tracking branch 'origin/master'

master
REDxEYE 5 years ago
commit d28fd4f512

@ -84,11 +84,36 @@
<HintPath>..\packages\DotNetZip.1.15.0\lib\net40\DotNetZip.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Joveler.Compression.ZLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\packages\Joveler.Compression.ZLib.4.0.0\lib\net451\Joveler.Compression.ZLib.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Joveler.DynLoader, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\packages\Joveler.DynLoader.2.0.0\lib\net451\Joveler.DynLoader.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="mscorlib" />
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51">
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Core" />
<Reference Include="System.Design" />
<Reference Include="System.Drawing" />
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51">
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.4.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.5.3\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Web.Extensions" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
@ -238,5 +263,14 @@
</EmbeddedResource>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\Joveler.ZLibWrapper.1.3.1\build\net45\Joveler.ZLibWrapper.targets" Condition="Exists('..\packages\Joveler.ZLibWrapper.1.3.1\build\net45\Joveler.ZLibWrapper.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105.The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Joveler.ZLibWrapper.1.3.1\build\net45\Joveler.ZLibWrapper.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Joveler.ZLibWrapper.1.3.1\build\net45\Joveler.ZLibWrapper.targets'))" />
<Error Condition="!Exists('..\packages\Joveler.Compression.ZLib.4.0.0\build\net451\Joveler.Compression.ZLib.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Joveler.Compression.ZLib.4.0.0\build\net451\Joveler.Compression.ZLib.targets'))" />
</Target>
<Import Project="..\packages\Joveler.Compression.ZLib.4.0.0\build\net451\Joveler.Compression.ZLib.targets" Condition="Exists('..\packages\Joveler.Compression.ZLib.4.0.0\build\net451\Joveler.Compression.ZLib.targets')" />
</Project>

@ -1,10 +1,12 @@
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using DotNetCTFDumper.GUI;
using DotNetCTFDumper.MMFParser.Data;
using DotNetCTFDumper.MMFParser.Decompiling;
using DotNetCTFDumper.Utils;
using Joveler.Compression.ZLib;
namespace DotNetCTFDumper
{
@ -12,7 +14,7 @@ namespace DotNetCTFDumper
{
//public static string path = @"H:\fnaf-world.exe";//test
//public static string path = @"D:\SteamLibrary\steamapps\common\Five Nights at Freddy's Sister Location\SisterLocation.exe";
public static string Path = ""; //TODO: Make Selectable
//public static string Path = ""; //TODO: Make Selectable
public static MainForm MyForm;
@ -21,14 +23,13 @@ namespace DotNetCTFDumper
{
var handle = Helper.GetConsoleWindow();
Helper.ShowWindow(handle, Helper.SW_HIDE);
InitNativeLibrary();
//MFAGenerator.BuildMFA();
//Environment.Exit(0);
var path = "";
var verbose = false;
var dumpImages = false;
var dumpSounds = true;
if (args.Length == 0)
{
Settings.UseGUI = true;
@ -73,6 +74,7 @@ namespace DotNetCTFDumper
Settings.DumpImages = dumpImages;
Settings.DumpSounds = dumpSounds;
Settings.Verbose = verbose;
var exeReader = new ByteReader(path, FileMode.OpenOrCreate);
var currentExe = new Exe();
Exe.Instance = currentExe;
@ -113,8 +115,31 @@ namespace DotNetCTFDumper
Directory.CreateDirectory($"{Settings.ChunkPath}");
Directory.CreateDirectory($"{Settings.ExtensionPath}");
}
public static void InitNativeLibrary()
{
string arch = null;
switch (RuntimeInformation.ProcessArchitecture)
{
case Architecture.X86:
arch = "x86";
break;
case Architecture.X64:
arch = "x64";
break;
case Architecture.Arm:
arch = "armhf";
break;
case Architecture.Arm64:
arch = "arm64";
break;
}
string libPath = Path.Combine(arch, "zlibwapi.dll");
if (!File.Exists(libPath))
throw new PlatformNotSupportedException($"Unable to find native library [{libPath}].");
ZLibInit.GlobalInit(libPath);
}
}
}

@ -1,5 +1,7 @@
using System;
using System.Diagnostics;
using System.IO;
using Joveler.Compression.ZLib;
namespace DotNetCTFDumper.Utils
{
@ -17,25 +19,25 @@ namespace DotNetCTFDumper.Utils
{
Int32 decompSize = exeReader.ReadInt32();
Int32 compSize = exeReader.ReadInt32();
byte[] compressedData = exeReader.ReadBytes(compSize);
byte[] actualData = Ionic.Zlib.ZlibStream.UncompressBuffer(compressedData);
Debug.Assert(actualData.Length == decompSize);
decompressed = decompSize;
return new ByteReader(actualData);
return new ByteReader(decompress_block(exeReader,compSize,decompSize));
}
public static byte[] decompress_block(ByteReader reader, int size, int decompSize)
{
byte[] compressedData = reader.ReadBytes(size);
byte[] actualData = Ionic.Zlib.ZlibStream.UncompressBuffer(compressedData);
return actualData;
}
ZLibDecompressOptions decompOpts = new ZLibDecompressOptions();
MemoryStream compressedStream = new MemoryStream(reader.ReadBytes(size));
MemoryStream decompressedStream = new MemoryStream();
using (DeflateStream zs = new DeflateStream(compressedStream, decompOpts))
{
zs.CopyTo(decompressedStream);
}
return decompressedStream.GetBuffer();
public static ByteReader decompress_asReader(ByteReader imageData, int v, int decompressedSize)
{
return new ByteReader(decompress_block(imageData, v, decompressedSize));
}
}
}

@ -3,5 +3,12 @@
<package id="Be.Windows.Forms.HexBox" version="1.6.1" targetFramework="net472" />
<package id="DotNetZip" version="1.15.0" targetFramework="net472" />
<package id="Ionic.Zlib" version="1.9.1.5" targetFramework="net472" />
<package id="Joveler.Compression.ZLib" version="4.0.0" targetFramework="net472" />
<package id="Joveler.DynLoader" version="2.0.0" targetFramework="net472" />
<package id="Joveler.ZLibWrapper" version="1.3.1" targetFramework="net472" />
<package id="SharpZipLib" version="1.3.1" targetFramework="net472" />
<package id="System.Buffers" version="4.5.1" targetFramework="net472" />
<package id="System.Memory" version="4.5.4" targetFramework="net472" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.5.3" targetFramework="net472" />
</packages>
Loading…
Cancel
Save