From 11d01e8693f2255ba58abc47c61aa5f7f7de4fe9 Mon Sep 17 00:00:00 2001
From: ramhaidar <49301219+ramhaidar@users.noreply.github.com>
Date: Sun, 25 Aug 2024 09:30:38 +0700
Subject: [PATCH] Comprehensive Code Refactor and Configuration Update
- Error Handling: Standardized across methods, added descriptive error messages.
- File Selection: Simplified `OpenFileDialog`, improved backup naming, added user-friendly prompts.
- Ownership Management: Added ownership change feature with success messages.
- UX: Added tooltips, enhanced drag-and-drop feedback.
- Code Cleanup: Removed redundant code, modernized constructs, consistent formatting.
- Config: Streamlined `app.config`, ensured .NET 4.8 target.
- Checksum Refactor: Switched to 64-bit pointers, optimized resource management.
- Version Update: Incremented assembly and file versions to 2.1.0.0.
- Settings: Added `changeOwnership` setting with default `True`, scoped per user.
---
Win_1337_Patch/1337.cs | 320 +++++++++++-------
Win_1337_Patch/Properties/AssemblyInfo.cs | 4 +-
.../Properties/Settings.Designer.cs | 12 +
Win_1337_Patch/Properties/Settings.settings | 3 +
Win_1337_Patch/app.config | 7 +-
Win_1337_Patch/mCheckSum.cs | 37 +-
6 files changed, 250 insertions(+), 133 deletions(-)
diff --git a/Win_1337_Patch/1337.cs b/Win_1337_Patch/1337.cs
index 289be29..e84405e 100644
--- a/Win_1337_Patch/1337.cs
+++ b/Win_1337_Patch/1337.cs
@@ -24,40 +24,53 @@ namespace Win_1337_Patch
this.Text = "Win 1337 Apply Patch File " + ver;
linkdfox.Text = ver + " By DeltaFoX";
}
+
private void set()
{
- t1337.Text = Ellipsis.Compact(f1337, t1337, EllipsisFormat.Path);
- toolTip1.SetToolTip(t1337, f1337);
- Properties.Settings.Default["url1337"] = f1337;
- Properties.Settings.Default.Save();
- string[] lines = File.ReadAllLines(f1337);
- if (!check_Symbol(lines[0]))
- return;
- string unf = lines[0].Substring(1).ToLower().Trim();
- string nf = Path.GetFileName(unf);
- string ext = Path.GetExtension(unf);
- OpenFileDialog apriDialogoFile1 = new OpenFileDialog();
- apriDialogoFile1.FileName = nf;
- apriDialogoFile1.Filter = "File " + ext + "|" + nf;
- apriDialogoFile1.FilterIndex = 0;
- apriDialogoFile1.Title = "Select the file \"" + nf + "\" File...";
-
- if (apriDialogoFile1.ShowDialog() == DialogResult.OK)
+ try
{
- exe = apriDialogoFile1.FileName;
- texe.Text = Ellipsis.Compact(Path.GetFileName(exe), texe, EllipsisFormat.Path);
- toolTip1.SetToolTip(texe, exe);
- Properties.Settings.Default["urlexe"] = exe;
+ t1337.Text = Ellipsis.Compact(f1337, t1337, EllipsisFormat.Path);
+ toolTip1.SetToolTip(t1337, f1337);
+ Properties.Settings.Default["url1337"] = f1337;
Properties.Settings.Default.Save();
+
+ string[] lines = File.ReadAllLines(f1337);
+ if (!check_Symbol(lines[0]))
+ return;
+
+ string unf = lines[0].Substring(1).ToLower().Trim();
+ string nf = Path.GetFileName(unf);
+ string ext = Path.GetExtension(unf);
+ OpenFileDialog apriDialogoFile1 = new OpenFileDialog
+ {
+ FileName = nf,
+ Filter = "File " + ext + "|" + nf,
+ FilterIndex = 0,
+ Title = "Select the file \"" + nf + "\" File..."
+ };
+
+ if (apriDialogoFile1.ShowDialog() == DialogResult.OK)
+ {
+ exe = apriDialogoFile1.FileName;
+ texe.Text = Ellipsis.Compact(Path.GetFileName(exe), texe, EllipsisFormat.Path);
+ toolTip1.SetToolTip(texe, exe);
+ Properties.Settings.Default["urlexe"] = exe;
+ Properties.Settings.Default.Save();
+ }
+ else
+ {
+ t1337.Text = "Select a .1337 File...";
+ texe.Text = "Select the Exe/Dll to Patch...";
+ f1337 = String.Empty;
+ exe = String.Empty;
+ }
}
- else
+ catch (Exception ex)
{
- t1337.Text = "Select a .1337 File...";
- texe.Text = "Select the Exe/Dll to Patch...";
- f1337 = String.Empty;
- exe = String.Empty;
+ MessageBox.Show($"An error occurred while setting up the file: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
+
private void t1337_DragDrop(object sender, DragEventArgs e)
{
try
@@ -65,39 +78,47 @@ namespace Win_1337_Patch
f1337 = ((string[])e.Data.GetData(DataFormats.FileDrop, false))[0];
set();
}
- catch
+ catch (Exception ex)
{
- //Nothing;
+ MessageBox.Show($"An error occurred while processing drag and drop: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
- return;
}
+
private void btnSelect1337_Click(object sender, EventArgs e)
{
try
{
string url1337 = Properties.Settings.Default["url1337"].ToString();
- OpenFileDialog apriDialogoFile1 = new OpenFileDialog();
- apriDialogoFile1.Filter = "File 1337|*.*";
- apriDialogoFile1.FilterIndex = 0;
- apriDialogoFile1.Title = "Select the .1337 File...";
- apriDialogoFile1.InitialDirectory = url1337 != "" ? url1337 : Directory.GetCurrentDirectory() + "\\";
- apriDialogoFile1.RestoreDirectory = true;
+ OpenFileDialog apriDialogoFile1 = new OpenFileDialog
+ {
+ Filter = "File 1337|*.*",
+ FilterIndex = 0,
+ Title = "Select the .1337 File...",
+ InitialDirectory = url1337 != "" ? url1337 : Directory.GetCurrentDirectory() + "\\",
+ RestoreDirectory = true
+ };
if (apriDialogoFile1.ShowDialog() == DialogResult.OK)
{
f1337 = apriDialogoFile1.FileName;
set();
}
}
- catch
+ catch (Exception ex)
{
- //Nothing;
+ MessageBox.Show($"An error occurred while selecting the .1337 file: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
- return;
}
private void t1337_DragEnter(object sender, DragEventArgs e)
{
- e.Effect = DragDropEffects.All;
+ try
+ {
+ e.Effect = DragDropEffects.All;
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show($"An error occurred during DragEnter: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
}
private bool check_Symbol(string s)
@@ -121,12 +142,12 @@ namespace Win_1337_Patch
{
DFoX_Patch();
}
- catch
+ catch (Exception ex)
{
- MessageBox.Show("Problem occured when Patching...", "Info...", MessageBoxButtons.OK, MessageBoxIcon.Error);
- return;
+ MessageBox.Show($"A problem occurred when patching: {ex.Message}", "Info...", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
+
private void DFoX_Patch()
{
if (!File.Exists(exe) || !File.Exists(f1337))
@@ -134,6 +155,20 @@ namespace Win_1337_Patch
MessageBox.Show("Files are no Longer Present...", "Info...", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
+
+ if (cchangeOwnership.Checked)
+ {
+ try
+ {
+ UnlockDLL(exe);
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show($"An error occurred while changing ownership: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ return;
+ }
+ }
+
string[] lines = File.ReadAllLines(f1337);
if (!check_Symbol(lines[0]))
return;
@@ -167,9 +202,12 @@ namespace Win_1337_Patch
{
if (controlloBackup.Checked == true)
{
- if (File.Exists(exe + ".BAK"))
- File.Delete(exe + ".BAK");
- File.Copy(exe, exe + ".BAK");
+ string dateSuffix = DateTime.Now.ToString("yyyy-MM-dd_hh-mm-ss-tt");
+ string backupFileName = $"{exe}.{dateSuffix}.BAK";
+
+ if (File.Exists(backupFileName))
+ File.Delete(backupFileName);
+ File.Copy(exe, backupFileName);
}
if (File.Exists(exe))
File.Delete(exe);
@@ -177,8 +215,8 @@ namespace Win_1337_Patch
SistemaPeCks(exe);
MessageBox.Show("File " + Path.GetFileName(exe) + " Patched...", "Info...", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
- return;
}
+
private void SistemaPeCks(string file)
{
try
@@ -186,57 +224,109 @@ namespace Win_1337_Patch
using (FileStream fs = new FileStream(file, FileMode.Open, FileAccess.ReadWrite))
{
ImageRemoveCertificate(fs.SafeFileHandle.DangerousGetHandle(), 0);
- fs.Close();
}
- mCheckSum PE = new mCheckSum();
- PE.FixCheckSum(file);
+
+ checked
+ {
+ mCheckSum PE = new mCheckSum();
+ PE.FixCheckSum(file);
+ }
}
- catch
+ catch (OverflowException ex)
{
- //Nothing
+ MessageBox.Show($"Overflow error occurred while processing PE checksum: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show($"An error occurred while processing PE checksum: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
- return;
}
+
private void DFoX_Load(object sender, EventArgs e)
{
- string urlexe = Properties.Settings.Default["urlexe"].ToString().Trim();
- string url1337 = Properties.Settings.Default["url1337"].ToString().Trim();
- cfileoffsett.Checked = (bool)Properties.Settings.Default["fixoffset"];
- controlloBackup.Checked = (bool)Properties.Settings.Default["backup"];
- if (urlexe != "")
+ try
{
- texe.Text = Ellipsis.Compact(Path.GetFileName(urlexe), texe, EllipsisFormat.Path);
- toolTip1.SetToolTip(texe, urlexe);
- exe = urlexe;
+ string urlexe = Properties.Settings.Default["urlexe"].ToString().Trim();
+ string url1337 = Properties.Settings.Default["url1337"].ToString().Trim();
+ cfileoffsett.Checked = (bool)Properties.Settings.Default["fixoffset"];
+ controlloBackup.Checked = (bool)Properties.Settings.Default["backup"];
+ cchangeOwnership.Checked = (bool)Properties.Settings.Default["changeOwnership"];
+
+ if (urlexe != "")
+ {
+ texe.Text = Ellipsis.Compact(Path.GetFileName(urlexe), texe, EllipsisFormat.Path);
+ toolTip1.SetToolTip(texe, urlexe);
+ exe = urlexe;
+ }
+ else
+ texe.Text = "Select the Exe/Dll to Patch...";
+
+ if (url1337 != "" && urlexe != "")
+ {
+ t1337.Text = Ellipsis.Compact(url1337, t1337, EllipsisFormat.Path);
+ toolTip1.SetToolTip(t1337, url1337);
+ f1337 = url1337;
+ }
+ else
+ t1337.Text = "Select a .1337 File...";
}
- else
- texe.Text = "Select the Exe/Dll to Patch...";
- if (url1337 != "" && urlexe != "")
+ catch (Exception ex)
{
- t1337.Text = Ellipsis.Compact(url1337, t1337, EllipsisFormat.Path);
- toolTip1.SetToolTip(t1337, url1337);
- f1337 = url1337;
+ MessageBox.Show($"An error occurred during form load: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
- else
- t1337.Text = "Select a .1337 File...";
}
private void cfileoffsett_CheckedChanged(object sender, EventArgs e)
{
- Properties.Settings.Default["fixoffset"] = cfileoffsett.Checked;
- Properties.Settings.Default.Save();
+ try
+ {
+ Properties.Settings.Default["fixoffset"] = cfileoffsett.Checked;
+ Properties.Settings.Default.Save();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show($"An error occurred while saving fix offset setting: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
}
private void controlloBackup_CheckedChanged(object sender, EventArgs e)
{
- Properties.Settings.Default["backup"] = controlloBackup.Checked;
- Properties.Settings.Default.Save();
+ try
+ {
+ Properties.Settings.Default["backup"] = controlloBackup.Checked;
+ Properties.Settings.Default.Save();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show($"An error occurred while saving backup setting: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ }
+
+ private void cchangeOwnership_CheckedChanged(object sender, EventArgs e)
+ {
+ try
+ {
+ Properties.Settings.Default["changeOwnership"] = cchangeOwnership.Checked;
+ Properties.Settings.Default.Save();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show($"An error occurred while saving change ownership setting: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
}
private void linkdfox_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
- _apriUrl(@"https://github.com/Deltafox79/Win_1337_Apply_Patch");
+ try
+ {
+ _apriUrl(@"https://github.com/Deltafox79/Win_1337_Apply_Patch");
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show($"An error occurred while opening the URL: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
}
+
private void _apriUrl(string url)
{
try
@@ -244,16 +334,21 @@ namespace Win_1337_Patch
string browserPath = ottieniLaPathBrowser();
if (browserPath == string.Empty)
browserPath = "iexplore";
- Process process = new Process();
- process.StartInfo = new ProcessStartInfo(browserPath);
- process.StartInfo.Arguments = url;
+ Process process = new Process
+ {
+ StartInfo = new ProcessStartInfo(browserPath)
+ {
+ Arguments = url
+ }
+ };
process.Start();
}
- catch
+ catch (Exception ex)
{
- //Nothing
+ MessageBox.Show($"An error occurred while opening the browser: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
+
private static string ottieniLaPathBrowser()
{
string name = String.Empty;
@@ -268,11 +363,10 @@ namespace Win_1337_Patch
if (!name.EndsWith("exe"))
name = name.Substring(0, name.LastIndexOf(".exe") + 4);
-
}
- catch
+ catch (Exception ex)
{
- return String.Empty;
+ MessageBox.Show($"An error occurred while retrieving browser path: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
@@ -284,31 +378,13 @@ namespace Win_1337_Patch
private void t1337_DoubleClick(object sender, EventArgs e)
{
- btnSelect1337.PerformClick();
- }
-
- private void cchangeOwnership_CheckedChanged(object sender, EventArgs e)
- {
- if (cchangeOwnership.Checked)
+ try
{
- try
- {
- if (!string.IsNullOrEmpty(exe))
- {
- UnlockDLL(exe);
- MessageBox.Show($"Ownership of {exe} changed to Administrators and full control granted.", "Ownership Changed", MessageBoxButtons.OK, MessageBoxIcon.Information);
- }
- else
- {
- MessageBox.Show("Please select a DLL/EXE file first.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
- cchangeOwnership.Checked = false;
- }
- }
- catch (Exception ex)
- {
- MessageBox.Show($"An error occurred: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
- cchangeOwnership.Checked = false;
- }
+ btnSelect1337.PerformClick();
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show($"An error occurred during double click: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
@@ -322,22 +398,32 @@ namespace Win_1337_Patch
try
{
- FileSecurity fileSecurity = File.GetAccessControl(filePath);
- IdentityReference administrators = new NTAccount("Administrators");
+ ProcessStartInfo psi = new ProcessStartInfo("cmd.exe")
+ {
+ UseShellExecute = false,
+ RedirectStandardInput = true,
+ RedirectStandardOutput = true,
+ CreateNoWindow = true
+ };
- fileSecurity.SetOwner(administrators);
+ using (Process process = new Process())
+ {
+ process.StartInfo = psi;
+ process.Start();
- File.SetAccessControl(filePath, fileSecurity);
+ using (StreamWriter sw = process.StandardInput)
+ {
+ if (sw.BaseStream.CanWrite)
+ {
+ sw.WriteLine($"takeown /F \"{filePath}\"");
+ sw.WriteLine($"icacls \"{filePath}\" /grant Administrators:F");
+ }
+ }
- FileSystemAccessRule accessRule = new FileSystemAccessRule(administrators,
- FileSystemRights.FullControl,
- AccessControlType.Allow);
+ process.WaitForExit();
+ }
- fileSecurity.AddAccessRule(accessRule);
-
- File.SetAccessControl(filePath, fileSecurity);
-
- MessageBox.Show($"Owner changed to 'Administrators' and full control permissions granted to 'Administrators' for file: {filePath}", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
+ MessageBox.Show($"Ownership and permissions of {filePath} have been successfully changed.", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception ex)
{
diff --git a/Win_1337_Patch/Properties/AssemblyInfo.cs b/Win_1337_Patch/Properties/AssemblyInfo.cs
index a4f19ff..316d6a0 100644
--- a/Win_1337_Patch/Properties/AssemblyInfo.cs
+++ b/Win_1337_Patch/Properties/AssemblyInfo.cs
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
// È possibile specificare tutti i valori oppure impostare valori predefiniti per i numeri relativi alla revisione e alla build
// usando l'asterisco '*' come illustrato di seguito:
// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("2.0.0.0")]
-[assembly: AssemblyFileVersion("2.0.0.0")]
+[assembly: AssemblyVersion("2.1.0.0")]
+[assembly: AssemblyFileVersion("2.1.0.0")]
diff --git a/Win_1337_Patch/Properties/Settings.Designer.cs b/Win_1337_Patch/Properties/Settings.Designer.cs
index 65b8fd8..a3b03e2 100644
--- a/Win_1337_Patch/Properties/Settings.Designer.cs
+++ b/Win_1337_Patch/Properties/Settings.Designer.cs
@@ -70,5 +70,17 @@ namespace Win_1337_Patch.Properties {
this["backup"] = value;
}
}
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("True")]
+ public bool changeOwnership {
+ get {
+ return ((bool)(this["changeOwnership"]));
+ }
+ set {
+ this["changeOwnership"] = value;
+ }
+ }
}
}
diff --git a/Win_1337_Patch/Properties/Settings.settings b/Win_1337_Patch/Properties/Settings.settings
index 5645b6b..e1b8d1f 100644
--- a/Win_1337_Patch/Properties/Settings.settings
+++ b/Win_1337_Patch/Properties/Settings.settings
@@ -14,5 +14,8 @@
True
+
+ True
+
\ No newline at end of file
diff --git a/Win_1337_Patch/app.config b/Win_1337_Patch/app.config
index fb31ed4..9ac6901 100644
--- a/Win_1337_Patch/app.config
+++ b/Win_1337_Patch/app.config
@@ -8,10 +8,10 @@
-
+
-
+
True
@@ -19,6 +19,9 @@
True
+
+ True
+
diff --git a/Win_1337_Patch/mCheckSum.cs b/Win_1337_Patch/mCheckSum.cs
index 316b37d..962b532 100644
--- a/Win_1337_Patch/mCheckSum.cs
+++ b/Win_1337_Patch/mCheckSum.cs
@@ -28,7 +28,7 @@ namespace Win_1337_Patch
IMAGE_DOS_HEADER DHD = new IMAGE_DOS_HEADER();
IMAGE_NT_HEADERS NHD = new IMAGE_NT_HEADERS();
- int iPointer = 0;
+ long iPointer = 0;
uint uOriginal = 0;
uint uRecalculated = 0;
uint uRet = 0;
@@ -36,16 +36,23 @@ namespace Win_1337_Patch
try
{
- BinaryReader bReader = new BinaryReader(new FileStream(sFilePath, FileMode.Open, FileAccess.Read));
- fBytes = bReader.ReadBytes((int)bReader.BaseStream.Length);
- bReader.Close();
+ using (BinaryReader bReader = new BinaryReader(new FileStream(sFilePath, FileMode.Open, FileAccess.Read)))
+ {
+ fBytes = bReader.ReadBytes((int)bReader.BaseStream.Length);
+ }
+ }
+ catch
+ {
+ return false;
}
- catch { }
if (fBytes.Length <= 0) { return false; }
GCHandle gHandle = GCHandle.Alloc(fBytes, GCHandleType.Pinned);
- iPointer = gHandle.AddrOfPinnedObject().ToInt32();
+ checked
+ {
+ iPointer = gHandle.AddrOfPinnedObject().ToInt64();
+ }
DHD = (IMAGE_DOS_HEADER)Marshal.PtrToStructure(new IntPtr(iPointer), typeof(IMAGE_DOS_HEADER));
NHD = (IMAGE_NT_HEADERS)Marshal.PtrToStructure(new IntPtr(iPointer + DHD.e_lfanew), typeof(IMAGE_NT_HEADERS));
gHandle.Free();
@@ -74,17 +81,23 @@ namespace Win_1337_Patch
NHD.OptionalHeader.CheckSum = uRecalculated;
byte[] bNHD = getBytes_(NHD);
- if (fBytes.Length - (DHD.e_lfanew + bNHD.Length) <= 0) { Array.Resize(ref fBytes, (int)(fBytes.Length + bNHD.Length)); }
+ if (fBytes.Length - (DHD.e_lfanew + bNHD.Length) <= 0)
+ {
+ Array.Resize(ref fBytes, (int)(fBytes.Length + bNHD.Length));
+ }
Array.Copy(bNHD, 0, fBytes, DHD.e_lfanew, bNHD.Length);
try
{
- BinaryWriter bWriter = new BinaryWriter(new FileStream(sFilePath, FileMode.Open));
- bWriter.Write(fBytes);
- bWriter.Flush();
- bWriter.Close();
+ using (BinaryWriter bWriter = new BinaryWriter(new FileStream(sFilePath, FileMode.Open)))
+ {
+ bWriter.Write(fBytes);
+ }
+ }
+ catch
+ {
+ return false;
}
- catch { return false; }
return true;
}