From eef23138f10672123836d5985f014b035fab6d3a Mon Sep 17 00:00:00 2001 From: 1987kostya Date: Mon, 28 Dec 2020 19:17:50 +0600 Subject: [PATCH] Better logging, MFA Generator will now download template from github --- CTFAK/GUI/MainForm.cs | 2 +- CTFAK/MMFParser/EXE/ChunkList.cs | 4 +-- .../MMFParser/EXE/Loaders/Banks/ImageBank.cs | 4 +-- CTFAK/MMFParser/EXE/Loaders/Frame.cs | 8 ++--- CTFAK/MMFParser/Translation/MFAGenerator.cs | 29 +++++++++++++++++-- CTFAK/MMFParser/Translation/PAME2MFA.cs | 1 + CTFAK/Program.cs | 7 ++--- 7 files changed, 40 insertions(+), 15 deletions(-) diff --git a/CTFAK/GUI/MainForm.cs b/CTFAK/GUI/MainForm.cs index b6100c3..057f072 100644 --- a/CTFAK/GUI/MainForm.cs +++ b/CTFAK/GUI/MainForm.cs @@ -105,7 +105,7 @@ namespace DotNetCTFDumper.GUI }; KeyPreview = true; tabControl1.Selecting += tabControl1_Selecting; - tabControl1.TabPages.Remove(mfaTab); + //tabControl1.TabPages.Remove(mfaTab); } diff --git a/CTFAK/MMFParser/EXE/ChunkList.cs b/CTFAK/MMFParser/EXE/ChunkList.cs index 0312ce6..2caabae 100644 --- a/CTFAK/MMFParser/EXE/ChunkList.cs +++ b/CTFAK/MMFParser/EXE/ChunkList.cs @@ -87,7 +87,7 @@ namespace DotNetCTFDumper.MMFParser.EXE case ChunkFlags.Encrypted: ChunkData = Decryption.DecodeChunk(exeReader.ReadBytes(Size),Size); break; - case ChunkFlags.CompressedAndEncrypyed: + case ChunkFlags.CompressedAndEncrypted: ChunkData = Decryption.DecodeMode3(exeReader.ReadBytes(Size), Size,Id,out DecompressedSize); break; case ChunkFlags.Compressed: @@ -159,7 +159,7 @@ namespace DotNetCTFDumper.MMFParser.EXE NotCompressed = 0, Compressed = 1, Encrypted = 2, - CompressedAndEncrypyed = 3 + CompressedAndEncrypted = 3 } public ChunkLoader LoadChunk(Chunk chunk) diff --git a/CTFAK/MMFParser/EXE/Loaders/Banks/ImageBank.cs b/CTFAK/MMFParser/EXE/Loaders/Banks/ImageBank.cs index e96cbbb..7b359c0 100644 --- a/CTFAK/MMFParser/EXE/Loaders/Banks/ImageBank.cs +++ b/CTFAK/MMFParser/EXE/Loaders/Banks/ImageBank.cs @@ -257,7 +257,7 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks _transparent = imageReader.ReadBytes(4); if(Settings.twofiveplus)Logger.Log($"Loading image {Handle.ToString(),4} Size: {_width,4}x{_height,4}"); byte[] imageData; - Flags["LZX"] = false; + if(Settings.twofiveplus) Flags["LZX"] = false; if (Flags["LZX"]) { @@ -301,12 +301,12 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders.Banks case 8: { imageReader.Seek(start+Size); - return; (_colorArray, bytesRead) = ImageHelper.Read32(imageData, _width, _height); break; } default: { + Logger.Log("Unknown Color Mode"); break; } diff --git a/CTFAK/MMFParser/EXE/Loaders/Frame.cs b/CTFAK/MMFParser/EXE/Loaders/Frame.cs index a2fb98b..ee246b1 100644 --- a/CTFAK/MMFParser/EXE/Loaders/Frame.cs +++ b/CTFAK/MMFParser/EXE/Loaders/Frame.cs @@ -52,10 +52,10 @@ namespace DotNetCTFDumper.MMFParser.EXE.Loaders }); public int CountOfObjs; - int _top; - int _bottom; - int _left; - int _right; + // int _top; + // int _bottom; + // int _left; + // int _right; public ChunkList Chunks; public FrameHeader Header; public ObjectInstances Objects; diff --git a/CTFAK/MMFParser/Translation/MFAGenerator.cs b/CTFAK/MMFParser/Translation/MFAGenerator.cs index 4727b87..538db31 100644 --- a/CTFAK/MMFParser/Translation/MFAGenerator.cs +++ b/CTFAK/MMFParser/Translation/MFAGenerator.cs @@ -1,5 +1,8 @@ using System; using System.IO; +using System.IO.Pipes; +using System.Net; +using System.Windows.Forms; using DotNetCTFDumper.MMFParser.EXE; using DotNetCTFDumper.Utils; @@ -8,12 +11,34 @@ namespace DotNetCTFDumper.MMFParser.Translation public static class MFAGenerator { - public static readonly string TemplatePath = @"template.mfa"; + public const string TemplatePath = @"template.mfa"; + public const string TemplateLink = @"https://github.com/CTFAK/CTFAK/raw/master/Dependencies/template.mfa"; + public static MFA.MFA BuildMFA() { + ByteReader mfaReader; + if (!File.Exists(TemplatePath)) + { + var dlg = MessageBox.Show("Template MFA not found\nUse github version?", "Error",MessageBoxButtons.YesNo); + if (dlg == DialogResult.No) + { + Logger.Log("MFA Generation Error"); + return null; + } + else if (dlg == DialogResult.Yes) + { + using (var wc = new WebClient()) + { + Logger.Log("Donwloading MFA from "+TemplateLink); + mfaReader=new ByteReader(wc.DownloadData(TemplateLink)); + } + } + else return null; + } + else mfaReader = new ByteReader(TemplatePath, FileMode.Open); Settings.DoMFA = true; - var mfaReader = new ByteReader(TemplatePath, FileMode.Open); + var template = new MFA.MFA(mfaReader); Pame2Mfa.Message("Loading Template"); template.Read(); //Loading template diff --git a/CTFAK/MMFParser/Translation/PAME2MFA.cs b/CTFAK/MMFParser/Translation/PAME2MFA.cs index 33159e7..088d248 100644 --- a/CTFAK/MMFParser/Translation/PAME2MFA.cs +++ b/CTFAK/MMFParser/Translation/PAME2MFA.cs @@ -347,6 +347,7 @@ namespace DotNetCTFDumper.MMFParser.Translation public static void Message(string msg) { OnMessage?.Invoke(msg); + Logger.Log(msg); } diff --git a/CTFAK/Program.cs b/CTFAK/Program.cs index 4807ef8..fca7f9a 100644 --- a/CTFAK/Program.cs +++ b/CTFAK/Program.cs @@ -3,6 +3,7 @@ using System.Diagnostics; using System.Drawing; using System.IO; using System.Runtime.InteropServices; +using System.Threading; using System.Windows.Forms; using DotNetCTFDumper.GUI; using DotNetCTFDumper.MMFParser.EXE; @@ -26,12 +27,10 @@ namespace DotNetCTFDumper // MFAGenerator.ReadTestMFA(); // Environment.Exit(0); - var path = ""; - var verbose = false; - var dumpImages = true; - var dumpSounds = true; AppDomain.CurrentDomain.FirstChanceException += (sender, eventArgs) => { + if (eventArgs.Exception is ThreadAbortException) return; + Logger.Log("ERROR: "); Logger.Log(eventArgs.Exception.ToString()); };