1
0
Fork 0
mirror of https://github.com/atom0s/Steamless.git synced 2024-12-19 23:07:41 +01:00

Updated copyright date ranges to include 2019 across the project.

Added new UseExperimentalFeatures option.
Added new dynamic offset reader for v2 stub parser to better support more files. (experimental feature)
General code cleanup.
This commit is contained in:
atom0s 2019-03-30 01:23:48 -07:00
parent a0f856a050
commit e54c95bea3
75 changed files with 218 additions and 115 deletions

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -31,7 +31,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyCompany("atom0s")]
[assembly: AssemblyProduct("ExamplePlugin")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2018")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -36,6 +36,7 @@ namespace Steamless.API.Model
this.KeepBindSection = false;
this.DumpPayloadToDisk = false;
this.DumpSteamDrmpToDisk = false;
this.UseExperimentalFeatures = false;
}
/// <summary>
@ -73,5 +74,14 @@ namespace Steamless.API.Model
get { return this.Get<bool>("DumpSteamDrmpToDisk"); }
set { this.Set("DumpSteamDrmpToDisk", value); }
}
/// <summary>
/// Gets or sets the use experimental features option value.
/// </summary>
public bool UseExperimentalFeatures
{
get { return this.Get<bool>("UseExperimentalFeatures"); }
set { this.Set("UseExperimentalFeatures", value); }
}
}
}

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -31,10 +31,10 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyCompany("atom0s")]
[assembly: AssemblyProduct("Steamless.API")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2018")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: Guid("56c95629-3b34-47fe-b988-04274409294f")]
[assembly: AssemblyVersion("1.0.0.2")]
[assembly: AssemblyFileVersion("1.0.0.2")]
[assembly: AssemblyVersion("1.0.0.3")]
[assembly: AssemblyFileVersion("1.0.0.3")]

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -325,7 +325,7 @@ namespace Steamless.Unpacker.Variant20.x86
Array.Copy(this.SteamDrmpData, drmpOffset, drmpOffsetData, 0, 1024);
// Obtain the offsets from the file data..
var drmpOffsets = this.GetSteamDrmpOffsets(drmpOffsetData);
var drmpOffsets = (this.Options.UseExperimentalFeatures) ? this.GetSteamDrmpOffsetsDynamic(drmpOffsetData) : this.GetSteamDrmpOffsets(drmpOffsetData);
if (drmpOffsets.Count != 8)
return false;
@ -615,6 +615,97 @@ namespace Steamless.Unpacker.Variant20.x86
return offsets;
}
/// <summary>
/// Obtains the needed DRM offsets from the SteamDRMP.dll file. (Dynamically via disassembling.)
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
private List<int> GetSteamDrmpOffsetsDynamic(byte[] data)
{
Disassembler disasm = null;
var offsets = new List<int>();
var count = 0;
/**
* Assumed order of the offset values:
* - Flags (mov)
* - SteamAppId (mov)
* - OEP (mov)
* - Code Section VA (mov)
* - Code Section Size (mov)
* - Code Section AES Key (lea)
* - Code Section AES IV (offset from above lea)
* - Stolen Bytes (add)
*/
try
{
var skipMov = false;
// Disassemble the incoming block of data to look for the needed offsets dynamically..
disasm = new Disassembler(data, ArchitectureMode.x86_32, 0);
foreach (var inst in disasm.Disassemble().Where(inst => !inst.Error))
{
if (count >= 8)
break;
// ex: mov eax, [eax+1234]
if (!skipMov && inst.Mnemonic == ud_mnemonic_code.UD_Imov)
{
if (inst.Operands.Length >= 2
&& inst.Operands[0].Type == ud_type.UD_OP_REG
&& inst.Operands[1].Type == ud_type.UD_OP_MEM)
{
count++;
offsets.Add(inst.Operands[1].LvalSDWord);
}
}
// ex: lea eax, [eax+1234]
if (inst.Mnemonic == ud_mnemonic_code.UD_Ilea)
{
if (inst.Operands.Length >= 2
&& inst.Operands[0].Type == ud_type.UD_OP_REG
&& inst.Operands[1].Type == ud_type.UD_OP_MEM)
{
count += 2;
offsets.Add(inst.Operands[1].LvalSDWord);
offsets.Add(inst.Operands[1].LvalSDWord + 16);
/**
* Some v2 compiled files have the order of the last offset (add inst) after a mov which loads
* GetModuleHandleA's address into a register. In order to skip that from being read as an offset
* we need this small workaround..
*/
skipMov = true;
}
}
// ex: add eax, 1234
if (inst.Mnemonic == ud_mnemonic_code.UD_Iadd)
{
if (inst.Operands.Length >= 2
&& inst.Operands[0].Type == ud_type.UD_OP_REG
&& inst.Operands[1].Type == ud_type.UD_OP_IMM)
{
count++;
offsets.Add(inst.Operands[1].LvalSDWord);
}
}
}
return offsets;
}
catch
{
return new List<int>();
}
finally
{
disasm?.Dispose();
}
}
/// <summary>
/// Gets or sets the Steamless options this file was requested to process with.
/// </summary>

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -31,10 +31,10 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyCompany("atom0s")]
[assembly: AssemblyProduct("Steamless.Unpacker.Variant20.x86")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2018")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: Guid("a40154cd-a0fd-4371-8099-ce277e0989af")]
[assembly: AssemblyVersion("1.0.0.5")]
[assembly: AssemblyFileVersion("1.0.0.5")]
[assembly: AssemblyVersion("1.0.0.6")]
[assembly: AssemblyFileVersion("1.0.0.6")]

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -31,7 +31,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyCompany("atom0s")]
[assembly: AssemblyProduct("Steamless.Unpacker.Variant30.x64")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2018")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -31,7 +31,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyCompany("atom0s")]
[assembly: AssemblyProduct("Steamless.Unpacker.Variant30.x86")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2018")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -31,7 +31,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyCompany("atom0s")]
[assembly: AssemblyProduct("Steamless.Unpacker.Variant31.x64")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2018")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -31,7 +31,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyCompany("atom0s")]
[assembly: AssemblyProduct("Steamless.Unpacker.Variant31.x86")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2018")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]

View file

@ -1,5 +1,5 @@
<!--
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
<!--
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
<!--
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
<!--
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
<!--
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
<!--
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
<!--
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -32,7 +32,7 @@ using System.Windows;
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyCompany("atom0s")]
[assembly: AssemblyProduct("Steamless")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2018")]
[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2019")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]

View file

@ -1,5 +1,5 @@
<!--
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
<!--
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -83,11 +83,13 @@
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<CheckBox Grid.Row="0" Content="Verbose Output" Margin="2" ToolTip="If enabled, Steamless will allow logging of debug messages." IsChecked="{Binding Options.VerboseOutput}" />
<CheckBox Grid.Row="1" Content="Keep Bind Section" Margin="2" ToolTip="The bind section should be kept within the file after unpacking." IsChecked="{Binding Options.KeepBindSection}" />
<CheckBox Grid.Row="2" Content="Dump Payload To Disk" Margin="2" ToolTip="Dumps the payload to disk where the target file is located. (File will be saved with the .payload extension.)" IsChecked="{Binding Options.DumpPayloadToDisk}" />
<CheckBox Grid.Row="3" Content="Dump SteamDRMP.dll To Disk" Margin="2" ToolTip="Dumps the SteamDRMP.dll to disk where the target file is located." IsChecked="{Binding Options.DumpSteamDrmpToDisk}" />
<CheckBox Grid.Row="4" Content="Use Experimental Features" Margin="2" ToolTip="Enables the use of experimental features." IsChecked="{Binding Options.UseExperimentalFeatures}" />
</Grid>
</GroupBox>

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
<!--
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
<!--
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to
@ -80,8 +80,7 @@ namespace Steamless.ViewModel
this.OnShowAboutViewCommand = new RelayCommand(() => this.ShowAboutView = !this.ShowAboutView);
this.OnOpenHyperlinkCommand = new RelayCommand<object>(o =>
{
var link = o as Hyperlink;
if (link != null)
if (o is Hyperlink link)
Process.Start(link.NavigateUri.AbsoluteUri);
});
this.OnDragDropCommand = new RelayCommand<DragEventArgs>(this.InputFileDragDrop);
@ -94,7 +93,7 @@ namespace Steamless.ViewModel
logService.AddLogMessage += this.AddLogMessage;
logService.ClearLogMessages += this.ClearLogMessages;
this.AddLogMessage(this, new LogMessageEventArgs("Steamless (c) 2015 - 2018 atom0s [atom0s@live.com]", LogMessageType.Debug));
this.AddLogMessage(this, new LogMessageEventArgs("Steamless (c) 2015 - 2019 atom0s [atom0s@live.com]", LogMessageType.Debug));
this.AddLogMessage(this, new LogMessageEventArgs("Website: http://atom0s.com/", LogMessageType.Debug));
// Initialize this model..
@ -142,8 +141,7 @@ namespace Steamless.ViewModel
while (Interlocked.CompareExchange(ref this.m_TaskThread, null, null) != null && this.State != ApplicationState.Closing)
{
// Obtain a task from the task list..
BaseTask task;
if (this.Tasks.TryTake(out task))
if (this.Tasks.TryTake(out var task))
{
this.CurrentTask = task;
await this.CurrentTask.StartTask();
@ -232,7 +230,8 @@ namespace Steamless.ViewModel
private static void WindowMinimize()
{
// Minimize the window..
Application.Current.MainWindow.WindowState = WindowState.Minimized;
if (Application.Current.MainWindow != null)
Application.Current.MainWindow.WindowState = WindowState.Minimized;
}
/// <summary>
@ -241,7 +240,8 @@ namespace Steamless.ViewModel
/// <param name="args"></param>
private static void WindowMouseDown(MouseButtonEventArgs args)
{
Application.Current.MainWindow.DragMove();
if (Application.Current.MainWindow != null)
Application.Current.MainWindow.DragMove();
}
/// <summary>
@ -401,8 +401,8 @@ namespace Steamless.ViewModel
/// </summary>
public ApplicationState State
{
get { return this.Get<ApplicationState>("State"); }
set { this.Set("State", value); }
get => this.Get<ApplicationState>("State");
set => this.Set("State", value);
}
/// <summary>
@ -410,8 +410,8 @@ namespace Steamless.ViewModel
/// </summary>
public Version SteamlessVersion
{
get { return this.Get<Version>("SteamlessVersion"); }
set { this.Set("SteamlessVersion", value); }
get => this.Get<Version>("SteamlessVersion");
set => this.Set("SteamlessVersion", value);
}
/// <summary>
@ -419,8 +419,8 @@ namespace Steamless.ViewModel
/// </summary>
public BaseTask CurrentTask
{
get { return this.Get<BaseTask>("CurrentTask"); }
set { this.Set("CurrentTask", value); }
get => this.Get<BaseTask>("CurrentTask");
set => this.Set("CurrentTask", value);
}
/// <summary>
@ -428,8 +428,8 @@ namespace Steamless.ViewModel
/// </summary>
public ConcurrentBag<BaseTask> Tasks
{
get { return this.Get<ConcurrentBag<BaseTask>>("Tasks"); }
set { this.Set("Tasks", value); }
get => this.Get<ConcurrentBag<BaseTask>>("Tasks");
set => this.Set("Tasks", value);
}
/// <summary>
@ -437,8 +437,8 @@ namespace Steamless.ViewModel
/// </summary>
public bool ShowAboutView
{
get { return this.Get<bool>("ShowAboutView"); }
set { this.Set("ShowAboutView", value); }
get => this.Get<bool>("ShowAboutView");
set => this.Set("ShowAboutView", value);
}
#endregion
@ -448,8 +448,8 @@ namespace Steamless.ViewModel
/// </summary>
public ObservableCollection<SteamlessPlugin> Plugins
{
get { return this.Get<ObservableCollection<SteamlessPlugin>>("Plugins"); }
set { this.Set("Plugins", value); }
get => this.Get<ObservableCollection<SteamlessPlugin>>("Plugins");
set => this.Set("Plugins", value);
}
/// <summary>
@ -457,8 +457,8 @@ namespace Steamless.ViewModel
/// </summary>
public int SelectedPluginIndex
{
get { return this.Get<int>("SelectedPluginIndex"); }
set { this.Set("SelectedPluginIndex", value); }
get => this.Get<int>("SelectedPluginIndex");
set => this.Set("SelectedPluginIndex", value);
}
/// <summary>
@ -466,8 +466,8 @@ namespace Steamless.ViewModel
/// </summary>
public string InputFilePath
{
get { return this.Get<string>("InputFilePath"); }
set { this.Set("InputFilePath", value); }
get => this.Get<string>("InputFilePath");
set => this.Set("InputFilePath", value);
}
/// <summary>
@ -475,8 +475,8 @@ namespace Steamless.ViewModel
/// </summary>
public SteamlessOptions Options
{
get { return this.Get<SteamlessOptions>("Options"); }
set { this.Set("Options", value); }
get => this.Get<SteamlessOptions>("Options");
set => this.Set("Options", value);
}
/// <summary>
@ -484,8 +484,8 @@ namespace Steamless.ViewModel
/// </summary>
public ObservableCollection<LogMessageEventArgs> Log
{
get { return this.Get<ObservableCollection<LogMessageEventArgs>>("Log"); }
set { this.Set("Log", value); }
get => this.Get<ObservableCollection<LogMessageEventArgs>>("Log");
set => this.Set("Log", value);
}
#endregion
}

View file

@ -1,5 +1,5 @@
/**
* Steamless - Copyright (c) 2015 - 2018 atom0s [atom0s@live.com]
* Steamless - Copyright (c) 2015 - 2019 atom0s [atom0s@live.com]
*
* This work is licensed under the Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/ or send a letter to