From 769232fc6528c616270da3e719cfec6c6b4197a5 Mon Sep 17 00:00:00 2001 From: atom0s Date: Fri, 18 Dec 2020 02:10:09 -0800 Subject: [PATCH] Add support for the real stub 2.0 variant. (This is a first-go at this version. I only have 1 sample with this version of the stub so it is solely based on this one exe. The full stub has been reversed for this file though. You can find more about that in issue #37) --- .../Classes/SteamStubDrmFlags.cs | 66 +++ .../Classes/SteamStubHeader.cs | 59 ++ .../Classes/SteamStubHelpers.cs | 65 +++ Steamless.Unpacker.Variant20.x86/Main.cs | 510 ++++++++++++++++++ .../Properties/AssemblyInfo.cs | 40 ++ .../SharpDisasm.dll | Bin 0 -> 220672 bytes .../Steamless.Unpacker.Variant20.x86.csproj | 55 ++ Steamless.sln | 6 + 8 files changed, 801 insertions(+) create mode 100644 Steamless.Unpacker.Variant20.x86/Classes/SteamStubDrmFlags.cs create mode 100644 Steamless.Unpacker.Variant20.x86/Classes/SteamStubHeader.cs create mode 100644 Steamless.Unpacker.Variant20.x86/Classes/SteamStubHelpers.cs create mode 100644 Steamless.Unpacker.Variant20.x86/Main.cs create mode 100644 Steamless.Unpacker.Variant20.x86/Properties/AssemblyInfo.cs create mode 100644 Steamless.Unpacker.Variant20.x86/SharpDisasm.dll create mode 100644 Steamless.Unpacker.Variant20.x86/Steamless.Unpacker.Variant20.x86.csproj diff --git a/Steamless.Unpacker.Variant20.x86/Classes/SteamStubDrmFlags.cs b/Steamless.Unpacker.Variant20.x86/Classes/SteamStubDrmFlags.cs new file mode 100644 index 0000000..750f9a5 --- /dev/null +++ b/Steamless.Unpacker.Variant20.x86/Classes/SteamStubDrmFlags.cs @@ -0,0 +1,66 @@ +/** + * Steamless - Copyright (c) 2015 - 2020 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 + * Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. + * + * By using Steamless, you agree to the above license and its terms. + * + * Attribution - You must give appropriate credit, provide a link to the license and indicate if changes were + * made. You must do so in any reasonable manner, but not in any way that suggests the licensor + * endorses you or your use. + * + * Non-Commercial - You may not use the material (Steamless) for commercial purposes. + * + * No-Derivatives - If you remix, transform, or build upon the material (Steamless), you may not distribute the + * modified material. You are, however, allowed to submit the modified works back to the original + * Steamless project in attempt to have it added to the original project. + * + * You may not apply legal terms or technological measures that legally restrict others + * from doing anything the license permits. + * + * No warranties are given. + */ + +namespace Steamless.Unpacker.Variant20.x86.Classes +{ + /// + /// Steam Stub Variant 2.0 DRM Flags + /// + public enum DrmFlags + { + /// + /// None. + /// + None = 0x00, + + /// + /// Flag that states that the stub will hash check the stub code and header data. + /// + UseValidation = 0x01, + + /// + /// Flag that states that the stub will validate the file via WinVerifyTrust if able. + /// + UseWinVerifyTrustValidation = 0x02, + + /// + /// Flag that states that the stub will decode/decrypt the code section. + /// + UseEncodedCodeSection = 0x04, + + /// + /// Flag that states that the stub will check for active thread count of the current process during the stubs processing + /// to check for any injected threads. (If the count is not 1, the check fails.) + /// + UseThreadCheckValidation = 0x08, + + /// + /// Flag that states that the stub will create and check some data against a mapped memory view of the modded startup information. + /// + /// This uses the SteamAppID and Unknown0000 of the header. + /// + UseMemoryMappedValidation = 0x10 + } +} \ No newline at end of file diff --git a/Steamless.Unpacker.Variant20.x86/Classes/SteamStubHeader.cs b/Steamless.Unpacker.Variant20.x86/Classes/SteamStubHeader.cs new file mode 100644 index 0000000..b02e6ea --- /dev/null +++ b/Steamless.Unpacker.Variant20.x86/Classes/SteamStubHeader.cs @@ -0,0 +1,59 @@ +/** + * Steamless - Copyright (c) 2015 - 2020 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 + * Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. + * + * By using Steamless, you agree to the above license and its terms. + * + * Attribution - You must give appropriate credit, provide a link to the license and indicate if changes were + * made. You must do so in any reasonable manner, but not in any way that suggests the licensor + * endorses you or your use. + * + * Non-Commercial - You may not use the material (Steamless) for commercial purposes. + * + * No-Derivatives - If you remix, transform, or build upon the material (Steamless), you may not distribute the + * modified material. You are, however, allowed to submit the modified works back to the original + * Steamless project in attempt to have it added to the original project. + * + * You may not apply legal terms or technological measures that legally restrict others + * from doing anything the license permits. + * + * No warranties are given. + */ + +namespace Steamless.Unpacker.Variant20.x86.Classes +{ + using System.Runtime.InteropServices; + + /// + /// SteamStub DRM Variant 2.0 Header + /// + [StructLayout(LayoutKind.Sequential)] + public struct SteamStub32Var20Header + { + public uint XorKey1; // Xor key used to encode the header data. + public uint XorKey2; // Xor key used to encode the header data. + public uint GetModuleHandleA_idata; // The address of GetModuleHandleA inside of the .idata section. + public uint GetProcAddress_idata; // The address of GetProcAddress inside of the .idata section. + public uint GetModuleHandleW_idata; // The address of GetModuleHandleW inside of the .idata section. + public uint GetProcAddress_bind; // The address of the .bind sections custom GetProcAddress instance. + public uint Flags; // Protection flags used with the file. + public uint Unknown0000; // Unknown (Was 0xEC227021 when testing.) (Only used if (Flags & 0x10) is set. Used in part of a hash check.) + public uint BindSectionVirtualAddress; // The virtual address to the .bind section. + public uint BindSectionCodeSize; // The size of the code stub inside of the .bind section. + public uint ValidationHash; // Hash that is calculated based on the .bind code section and .bind stub header data. (Only used if (Flags & 1) is set.) + public uint OEP; // The original file OEP to be invoked after the stub has finished. + public uint CodeSectionVirtualAddress; // The virtual address to the code section. (.text) (Was 0x0401000 when testing. Possibly original OEP?) + public uint CodeSectionSize; // The size of the code section. + public uint CodeSectionXorKey; // The starting key to xor decode against. (Only used if (Flags & 4) is set.) + public uint SteamAppID; // The steam application id of the packed file. + + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x0C)] + public byte[] SteamAppIDString; // The SteamAppID of the packed file, in string format. + + [MarshalAs(UnmanagedType.ByValArray, SizeConst = 0x36C)] + public byte[] StubData; // Misc stub data, such as strings, error messages, etc. + } +} \ No newline at end of file diff --git a/Steamless.Unpacker.Variant20.x86/Classes/SteamStubHelpers.cs b/Steamless.Unpacker.Variant20.x86/Classes/SteamStubHelpers.cs new file mode 100644 index 0000000..41ff2d1 --- /dev/null +++ b/Steamless.Unpacker.Variant20.x86/Classes/SteamStubHelpers.cs @@ -0,0 +1,65 @@ +/** + * Steamless - Copyright (c) 2015 - 2020 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 + * Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. + * + * By using Steamless, you agree to the above license and its terms. + * + * Attribution - You must give appropriate credit, provide a link to the license and indicate if changes were + * made. You must do so in any reasonable manner, but not in any way that suggests the licensor + * endorses you or your use. + * + * Non-Commercial - You may not use the material (Steamless) for commercial purposes. + * + * No-Derivatives - If you remix, transform, or build upon the material (Steamless), you may not distribute the + * modified material. You are, however, allowed to submit the modified works back to the original + * Steamless project in attempt to have it added to the original project. + * + * You may not apply legal terms or technological measures that legally restrict others + * from doing anything the license permits. + * + * No warranties are given. + */ + +namespace Steamless.Unpacker.Variant20.x86.Classes +{ + using System; + + public static class SteamStubHelpers + { + /// + /// Xor decrypts the given data starting with the given key, if any. + /// + /// @note If no key is given (0) then the first key is read from the first + /// 4 bytes inside of the data given. + /// + /// The data to xor decode. + /// The size of the data to decode. + /// The starting xor key to decode with. + /// + public static uint SteamXor(ref byte[] data, uint size, uint key = 0) + { + var offset = (uint)0; + + // Read the first key as the base xor key if we had none given.. + if (key == 0) + { + offset += 4; + key = BitConverter.ToUInt32(data, 0); + } + + // Decode the data.. + for (var x = offset; x < size; x += 4) + { + var val = BitConverter.ToUInt32(data, (int)x); + Array.Copy(BitConverter.GetBytes(val ^ key), 0, data, x, 4); + + key = val; + } + + return key; + } + } +} \ No newline at end of file diff --git a/Steamless.Unpacker.Variant20.x86/Main.cs b/Steamless.Unpacker.Variant20.x86/Main.cs new file mode 100644 index 0000000..01b69f8 --- /dev/null +++ b/Steamless.Unpacker.Variant20.x86/Main.cs @@ -0,0 +1,510 @@ +/** + * Steamless - Copyright (c) 2015 - 2020 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 + * Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. + * + * By using Steamless, you agree to the above license and its terms. + * + * Attribution - You must give appropriate credit, provide a link to the license and indicate if changes were + * made. You must do so in any reasonable manner, but not in any way that suggests the licensor + * endorses you or your use. + * + * Non-Commercial - You may not use the material (Steamless) for commercial purposes. + * + * No-Derivatives - If you remix, transform, or build upon the material (Steamless), you may not distribute the + * modified material. You are, however, allowed to submit the modified works back to the original + * Steamless project in attempt to have it added to the original project. + * + * You may not apply legal terms or technological measures that legally restrict others + * from doing anything the license permits. + * + * No warranties are given. + */ + +namespace Steamless.Unpacker.Variant20.x86 +{ + using API; + using API.Events; + using API.Extensions; + using API.Model; + using API.PE32; + using API.Services; + using Classes; + using SharpDisasm; + using SharpDisasm.Udis86; + using System; + using System.Collections.Generic; + using System.IO; + using System.Linq; + using System.Reflection; + using System.Runtime.InteropServices; + + [SteamlessApiVersion(1, 0)] + public class Main : SteamlessPlugin + { + /// + /// Internal logging service instance. + /// + private LoggingService m_LoggingService; + + /// + /// Gets the author of this plugin. + /// + public override string Author => "atom0s"; + + /// + /// Gets the name of this plugin. + /// + public override string Name => "SteamStub Variant 2.0 Unpacker (x86)"; + + /// + /// Gets the description of this plugin. + /// + public override string Description => "Unpacker for the 32bit SteamStub variant 2.0."; + + /// + /// Gets the version of this plugin. + /// + public override Version Version => Assembly.GetExecutingAssembly().GetName().Version; + + /// + /// Internal wrapper to log a message. + /// + /// + /// + private void Log(string msg, LogMessageType type) + { + this.m_LoggingService.OnAddLogMessage(this, new LogMessageEventArgs(msg, type)); + } + + /// + /// Initialize function called when this plugin is first loaded. + /// + /// + /// + public override bool Initialize(LoggingService logService) + { + this.m_LoggingService = logService; + return true; + } + + /// + /// Processing function called when a file is being unpacked. Allows plugins to check the file + /// and see if it can handle the file for its intended purpose. + /// + /// + /// + public override bool CanProcessFile(string file) + { + try + { + // Load the file.. + var f = new Pe32File(file); + if (!f.Parse() || f.IsFile64Bit() || !f.HasSection(".bind")) + return false; + + // Obtain the bind section data.. + var bind = f.GetSectionData(".bind"); + + // Attempt to locate the known v2.0 signature.. + return Pe32Helpers.FindPattern(bind, "53 51 52 56 57 55 8B EC 81 EC 00 10 00 00 BE") > 0; + } + catch + { + return false; + } + } + + /// + /// Processing function called to allow the plugin to process the file. + /// + /// + /// + /// + public override bool ProcessFile(string file, SteamlessOptions options) + { + // Initialize the class members.. + this.Options = options; + this.CodeSectionData = null; + this.CodeSectionIndex = -1; + this.PayloadData = null; + this.SteamDrmpData = null; + this.SteamDrmpOffsets = new List(); + this.UseFallbackDrmpOffsets = false; + this.XorKey = 0; + + // Parse the file.. + this.File = new Pe32File(file); + if (!this.File.Parse()) + return false; + + // Announce we are being unpacked with this packer.. + this.Log("File is packed with SteamStub Variant 2.0!", LogMessageType.Information); + + this.Log("Step 1 - Read, disassemble and decode the SteamStub DRM header.", LogMessageType.Information); + if (!this.Step1()) + return false; + + this.Log("Step 2 - Read, decrypt and process the main code section.", LogMessageType.Information); + if (!this.Step2()) + return false; + + this.Log("Step 3 - Prepare the file sections.", LogMessageType.Information); + if (!this.Step3()) + return false; + + this.Log("Step 4 - Rebuild and save the unpacked file.", LogMessageType.Information); + if (!this.Step4()) + return false; + + return true; + } + + /// + /// Step #1 + /// + /// Read, disassemble and decode the SteamStub DRM header. + /// + /// + private bool Step1() + { + // Obtain the file entry offset.. + var fileOffset = this.File.GetFileOffsetFromRva(this.File.NtHeaders.OptionalHeader.AddressOfEntryPoint); + + // Validate the DRM header.. + if (BitConverter.ToUInt32(this.File.FileData, (int)fileOffset - 4) != 0xC0DEC0DE) + return false; + + // Disassemble the file to locate the needed DRM information.. + if (!this.DisassembleFile(out var structOffset, out var structSize, out var structXorKey)) + return false; + + // Obtain the DRM header data.. + var headerData = new byte[structSize]; + Array.Copy(this.File.FileData, this.File.GetFileOffsetFromRva(structOffset), headerData, 0, structSize); + + // Xor decode the header data.. + this.XorKey = SteamStubHelpers.SteamXor(ref headerData, (uint)headerData.Length, 0); + + // Create the stub header.. + this.StubHeader = Pe32Helpers.GetStructure(headerData); + + return true; + } + + /// + /// Step #2 + /// + /// Read, decrypt and process the main code section. + /// + /// + private bool Step2() + { + /** + * TODO: + * + * Should we add custom checks here that mimic the validations of the stub based on the header flags? + * + * 0x01 - Hash check validation of the .bind code and stub header. + * 0x02 - WinTrustVerify validation of the file. + * + * These would just be for warnings to let users know if the file was broken/tampered, but unpacking should + * still complete if it can. + */ + + // Determine the code section RVA.. + var codeSectionRVA = this.File.NtHeaders.OptionalHeader.BaseOfCode; + if (this.StubHeader.CodeSectionVirtualAddress != 0) + codeSectionRVA = this.File.GetRvaFromVa(this.StubHeader.CodeSectionVirtualAddress); + + // Get the code section.. + var codeSection = this.File.GetOwnerSection(codeSectionRVA); + if (codeSection.PointerToRawData == 0 || codeSection.SizeOfRawData == 0) + return false; + + this.CodeSectionIndex = this.File.GetSectionIndex(codeSection); + + // Get the code section data.. + var codeSectionData = new byte[codeSection.SizeOfRawData]; + Array.Copy(this.File.FileData, this.File.GetFileOffsetFromRva(codeSection.VirtualAddress), codeSectionData, 0, codeSection.SizeOfRawData); + + // Skip the code section encoding if we do not need to process it.. + if ((this.StubHeader.Flags & (uint)DrmFlags.UseEncodedCodeSection) == 0) + return true; + + // Decode the code section data.. + var key = this.StubHeader.CodeSectionXorKey; + var offset = 0; + for (var x = this.StubHeader.CodeSectionSize >> 2; x > 0; --x) + { + var val1 = BitConverter.ToUInt32(codeSectionData, offset); + var val2 = val1 ^ key; + key = val1; + + Array.Copy(BitConverter.GetBytes(val2), 0, codeSectionData, offset, 4); + + offset += 4; + } + + // Store the section data.. + this.CodeSectionData = codeSectionData; + + return true; + } + + /// + /// Step #3 + /// + /// Prepare the file sections. + /// + /// + private bool Step3() + { + // Remove the bind section if its not requested to be saved.. + if (!this.Options.KeepBindSection) + { + // Obtain the .bind section.. + var bindSection = this.File.GetSection(".bind"); + if (!bindSection.IsValid) + return false; + + // Remove the section.. + this.File.RemoveSection(bindSection); + + // Decrease the header section count.. + var ntHeaders = this.File.NtHeaders; + ntHeaders.FileHeader.NumberOfSections--; + this.File.NtHeaders = ntHeaders; + + this.Log(" --> .bind section was removed from the file.", LogMessageType.Debug); + } + else + this.Log(" --> .bind section was kept in the file.", LogMessageType.Debug); + + try + { + // Rebuild the file sections.. + this.File.RebuildSections(); + } + catch + { + return false; + } + + + return true; + } + + /// + /// Step #4 + /// + /// Rebuild and save the unpacked file. + /// + /// + private bool Step4() + { + FileStream fStream = null; + + try + { + // Open the unpacked file for writing.. + var unpackedPath = this.File.FilePath + ".unpacked.exe"; + fStream = new FileStream(unpackedPath, FileMode.Create, FileAccess.ReadWrite); + + // Write the DOS header to the file.. + fStream.WriteBytes(Pe32Helpers.GetStructureBytes(this.File.DosHeader)); + + // Write the DOS stub to the file.. + if (this.File.DosStubSize > 0) + fStream.WriteBytes(this.File.DosStubData); + + // Update the NT headers.. + var ntHeaders = this.File.NtHeaders; + var lastSection = this.File.Sections[this.File.Sections.Count - 1]; + ntHeaders.OptionalHeader.AddressOfEntryPoint = this.File.GetRvaFromVa(this.StubHeader.OEP); + ntHeaders.OptionalHeader.SizeOfImage = lastSection.VirtualAddress + lastSection.VirtualSize; + this.File.NtHeaders = ntHeaders; + + // Write the NT headers to the file.. + fStream.WriteBytes(Pe32Helpers.GetStructureBytes(ntHeaders)); + + // Write the sections to the file.. + for (var x = 0; x < this.File.Sections.Count; x++) + { + var section = this.File.Sections[x]; + var sectionData = this.File.SectionData[x]; + + // Write the section header to the file.. + fStream.WriteBytes(Pe32Helpers.GetStructureBytes(section)); + + // Set the file pointer to the sections raw data.. + var sectionOffset = fStream.Position; + fStream.Position = section.PointerToRawData; + + // Write the sections raw data.. + var sectionIndex = this.File.Sections.IndexOf(section); + if (sectionIndex == this.CodeSectionIndex) + fStream.WriteBytes(this.CodeSectionData ?? sectionData); + else + fStream.WriteBytes(sectionData); + + // Reset the file offset.. + fStream.Position = sectionOffset; + } + + // Set the stream to the end of the file.. + fStream.Position = fStream.Length; + + // Write the overlay data if it exists.. + if (this.File.OverlayData != null) + fStream.WriteBytes(this.File.OverlayData); + + this.Log(" --> Unpacked file saved to disk!", LogMessageType.Success); + this.Log($" --> File Saved As: {unpackedPath}", LogMessageType.Success); + + return true; + } + catch + { + this.Log(" --> Error trying to save unpacked file!", LogMessageType.Error); + return false; + } + finally + { + fStream?.Dispose(); + } + } + + /// + /// Disassembles the file to locate the needed DRM header information. + /// + /// + /// + /// + /// + private bool DisassembleFile(out uint offset, out uint size, out uint xorKey) + { + // Prepare our needed variables.. + Disassembler disasm = null; + var dataPointer = IntPtr.Zero; + uint structOffset = 0; + uint structSize = 0; + uint structXorKey = 0; + + // Determine the entry offset of the file.. + var entryOffset = this.File.GetFileOffsetFromRva(this.File.NtHeaders.OptionalHeader.AddressOfEntryPoint); + + try + { + // Copy the file data to memory for disassembling.. + dataPointer = Marshal.AllocHGlobal(this.File.FileData.Length); + Marshal.Copy(this.File.FileData, 0, dataPointer, this.File.FileData.Length); + + // Create an offset pointer to our .bind function start.. + var startPointer = IntPtr.Add(dataPointer, (int)entryOffset); + + // Create the disassembler.. + Disassembler.Translator.IncludeAddress = true; + Disassembler.Translator.IncludeBinary = true; + + disasm = new Disassembler(startPointer, 4096, ArchitectureMode.x86_32, entryOffset); + + // Disassemble our function.. + foreach (var inst in disasm.Disassemble().Where(inst => !inst.Error)) + { + // If all values are found, return successfully.. + if (structOffset > 0 && structSize > 0 && structXorKey > 0) + { + offset = structOffset; + size = structSize; + xorKey = structXorKey; + return true; + } + + // Looks for: mov reg, immediate + if (inst.Mnemonic == ud_mnemonic_code.UD_Imov && inst.Operands[0].Type == ud_type.UD_OP_REG && inst.Operands[1].Type == ud_type.UD_OP_IMM) + { + if (structOffset == 0) + { + structOffset = inst.Operands[1].LvalUDWord - this.File.NtHeaders.OptionalHeader.ImageBase; + continue; + } + } + + // Looks for: mov reg, immediate + if (inst.Mnemonic == ud_mnemonic_code.UD_Imov && inst.Operands[0].Type == ud_type.UD_OP_REG && inst.Operands[1].Type == ud_type.UD_OP_IMM) + { + structSize = inst.Operands[1].LvalUDWord * 4; + structXorKey = 1; + } + } + + offset = size = xorKey = 0; + return false; + } + catch + { + offset = size = xorKey = 0; + return false; + } + finally + { + disasm?.Dispose(); + if (dataPointer != IntPtr.Zero) + Marshal.FreeHGlobal(dataPointer); + } + } + + /// + /// Gets or sets the Steamless options this file was requested to process with. + /// + private SteamlessOptions Options { get; set; } + + /// + /// Gets or sets the file being processed. + /// + private Pe32File File { get; set; } + + /// + /// Gets or sets the current xor key being used against the file data. + /// + private uint XorKey { get; set; } + + /// + /// Gets or sets the DRM stub header. + /// + private dynamic StubHeader { get; set; } + + /// + /// Gets or sets the payload data. + /// + public byte[] PayloadData { get; set; } + + /// + /// Gets or sets the SteamDRMP.dll data. + /// + public byte[] SteamDrmpData { get; set; } + + /// + /// Gets or sets the list of SteamDRMP.dll offsets. + /// + public List SteamDrmpOffsets { get; set; } + + /// + /// Gets or sets if the offsets should be read using fallback values. + /// + private bool UseFallbackDrmpOffsets { get; set; } + + /// + /// Gets or sets the index of the code section. + /// + private int CodeSectionIndex { get; set; } + + /// + /// Gets or sets the decrypted code section data. + /// + private byte[] CodeSectionData { get; set; } + } +} \ No newline at end of file diff --git a/Steamless.Unpacker.Variant20.x86/Properties/AssemblyInfo.cs b/Steamless.Unpacker.Variant20.x86/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..a298ffe --- /dev/null +++ b/Steamless.Unpacker.Variant20.x86/Properties/AssemblyInfo.cs @@ -0,0 +1,40 @@ +/** + * Steamless - Copyright (c) 2015 - 2020 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 + * Creative Commons, PO Box 1866, Mountain View, CA 94042, USA. + * + * By using Steamless, you agree to the above license and its terms. + * + * Attribution - You must give appropriate credit, provide a link to the license and indicate if changes were + * made. You must do so in any reasonable manner, but not in any way that suggests the licensor + * endorses you or your use. + * + * Non-Commercial - You may not use the material (Steamless) for commercial purposes. + * + * No-Derivatives - If you remix, transform, or build upon the material (Steamless), you may not distribute the + * modified material. You are, however, allowed to submit the modified works back to the original + * Steamless project in attempt to have it added to the original project. + * + * You may not apply legal terms or technological measures that legally restrict others + * from doing anything the license permits. + * + * No warranties are given. + */ + +using System.Reflection; +using System.Runtime.InteropServices; + +[assembly: AssemblyTitle("Steamless.Unpacker.Variant20.x86")] +[assembly: AssemblyDescription("Steamless SteamStub Variant 2.0 (x86) Unpacker")] +[assembly: AssemblyConfiguration("Release")] +[assembly: AssemblyCompany("atom0s")] +[assembly: AssemblyProduct("Steamless.Unpacker.Variant20.x86")] +[assembly: AssemblyCopyright("Copyright © atom0s 2015 - 2020")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] +[assembly: ComVisible(false)] +[assembly: Guid("4f11f26d-2946-467f-a4e9-9e2a619a1fd3")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] \ No newline at end of file diff --git a/Steamless.Unpacker.Variant20.x86/SharpDisasm.dll b/Steamless.Unpacker.Variant20.x86/SharpDisasm.dll new file mode 100644 index 0000000000000000000000000000000000000000..bbddf493ab56c4addd5a3eba6b7786f3d97416e4 GIT binary patch literal 220672 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 + + + + Debug + AnyCPU + {4F11F26D-2946-467F-A4E9-9E2A619A1FD3} + Library + Properties + Steamless.Unpacker.Variant20.x86 + Steamless.Unpacker.Variant20.x86 + v4.5.2 + 512 + true + + + + x86 + ..\Steamless\bin\x86\Debug\Plugins\ + TRACE;DEBUG + + + x86 + ..\Steamless\bin\x86\Release\Plugins\ + true + + + + False + .\SharpDisasm.dll + + + + + + + + + + + + + + + + + + + + {56c95629-3b34-47fe-b988-04274409294f} + Steamless.API + + + + \ No newline at end of file diff --git a/Steamless.sln b/Steamless.sln index 7bd50a5..129e611 100644 --- a/Steamless.sln +++ b/Steamless.sln @@ -19,6 +19,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Steamless.Unpacker.Variant3 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Steamless.Unpacker.Variant30.x64", "Steamless.Unpacker.Variant30.x64\Steamless.Unpacker.Variant30.x64.csproj", "{03621EAD-77A7-4208-AFDF-4B8292230A71}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Steamless.Unpacker.Variant20.x86", "Steamless.Unpacker.Variant20.x86\Steamless.Unpacker.Variant20.x86.csproj", "{4F11F26D-2946-467F-A4E9-9E2A619A1FD3}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x86 = Debug|x86 @@ -57,6 +59,10 @@ Global {03621EAD-77A7-4208-AFDF-4B8292230A71}.Debug|x86.Build.0 = Debug|x86 {03621EAD-77A7-4208-AFDF-4B8292230A71}.Release|x86.ActiveCfg = Release|x86 {03621EAD-77A7-4208-AFDF-4B8292230A71}.Release|x86.Build.0 = Release|x86 + {4F11F26D-2946-467F-A4E9-9E2A619A1FD3}.Debug|x86.ActiveCfg = Debug|x86 + {4F11F26D-2946-467F-A4E9-9E2A619A1FD3}.Debug|x86.Build.0 = Debug|x86 + {4F11F26D-2946-467F-A4E9-9E2A619A1FD3}.Release|x86.ActiveCfg = Release|x86 + {4F11F26D-2946-467F-A4E9-9E2A619A1FD3}.Release|x86.Build.0 = Release|x86 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE