mirror of
https://github.com/WB3000/nusdownloader.git
synced 2024-11-16 22:59:22 +01:00
- Added IOS patching support
This commit is contained in:
parent
3775e0a9a4
commit
d799fb3d0c
60
NUS Downloader/Form1.Designer.cs
generated
60
NUS Downloader/Form1.Designer.cs
generated
@ -99,6 +99,10 @@
|
|||||||
this.decryptbox = new System.Windows.Forms.CheckBox();
|
this.decryptbox = new System.Windows.Forms.CheckBox();
|
||||||
this.localuse = new System.Windows.Forms.CheckBox();
|
this.localuse = new System.Windows.Forms.CheckBox();
|
||||||
this.iosPatchCheckbox = new System.Windows.Forms.CheckBox();
|
this.iosPatchCheckbox = new System.Windows.Forms.CheckBox();
|
||||||
|
this.iosPatchGroupBox = new System.Windows.Forms.GroupBox();
|
||||||
|
this.iosPatchGroupBoxOKbtn = new System.Windows.Forms.Button();
|
||||||
|
this.iosPatchesListBox = new System.Windows.Forms.CheckedListBox();
|
||||||
|
this.label2 = new System.Windows.Forms.Label();
|
||||||
this.titleversion = new wmgCMS.WaterMarkTextBox();
|
this.titleversion = new wmgCMS.WaterMarkTextBox();
|
||||||
this.titleidbox = new wmgCMS.WaterMarkTextBox();
|
this.titleidbox = new wmgCMS.WaterMarkTextBox();
|
||||||
this.dlprogress = new wyDay.Controls.Windows7ProgressBar();
|
this.dlprogress = new wyDay.Controls.Windows7ProgressBar();
|
||||||
@ -107,6 +111,7 @@
|
|||||||
this.proxyBox.SuspendLayout();
|
this.proxyBox.SuspendLayout();
|
||||||
this.ProxyVerifyBox.SuspendLayout();
|
this.ProxyVerifyBox.SuspendLayout();
|
||||||
this.scriptsStrip.SuspendLayout();
|
this.scriptsStrip.SuspendLayout();
|
||||||
|
this.iosPatchGroupBox.SuspendLayout();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// Extrasbtn
|
// Extrasbtn
|
||||||
@ -752,6 +757,54 @@
|
|||||||
this.iosPatchCheckbox.Text = "Patch IOS...";
|
this.iosPatchCheckbox.Text = "Patch IOS...";
|
||||||
this.iosPatchCheckbox.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
|
this.iosPatchCheckbox.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText;
|
||||||
this.iosPatchCheckbox.UseVisualStyleBackColor = true;
|
this.iosPatchCheckbox.UseVisualStyleBackColor = true;
|
||||||
|
this.iosPatchCheckbox.CheckedChanged += new System.EventHandler(this.iosPatchCheckbox_CheckedChanged);
|
||||||
|
//
|
||||||
|
// iosPatchGroupBox
|
||||||
|
//
|
||||||
|
this.iosPatchGroupBox.Controls.Add(this.label2);
|
||||||
|
this.iosPatchGroupBox.Controls.Add(this.iosPatchesListBox);
|
||||||
|
this.iosPatchGroupBox.Controls.Add(this.iosPatchGroupBoxOKbtn);
|
||||||
|
this.iosPatchGroupBox.Location = new System.Drawing.Point(31, 146);
|
||||||
|
this.iosPatchGroupBox.Name = "iosPatchGroupBox";
|
||||||
|
this.iosPatchGroupBox.Size = new System.Drawing.Size(212, 142);
|
||||||
|
this.iosPatchGroupBox.TabIndex = 55;
|
||||||
|
this.iosPatchGroupBox.TabStop = false;
|
||||||
|
this.iosPatchGroupBox.Text = "IOS Patches";
|
||||||
|
this.iosPatchGroupBox.Visible = false;
|
||||||
|
//
|
||||||
|
// iosPatchGroupBoxOKbtn
|
||||||
|
//
|
||||||
|
this.iosPatchGroupBoxOKbtn.FlatStyle = System.Windows.Forms.FlatStyle.Popup;
|
||||||
|
this.iosPatchGroupBoxOKbtn.Location = new System.Drawing.Point(131, 113);
|
||||||
|
this.iosPatchGroupBoxOKbtn.Name = "iosPatchGroupBoxOKbtn";
|
||||||
|
this.iosPatchGroupBoxOKbtn.Size = new System.Drawing.Size(75, 23);
|
||||||
|
this.iosPatchGroupBoxOKbtn.TabIndex = 0;
|
||||||
|
this.iosPatchGroupBoxOKbtn.Text = "OK";
|
||||||
|
this.iosPatchGroupBoxOKbtn.UseVisualStyleBackColor = true;
|
||||||
|
this.iosPatchGroupBoxOKbtn.Click += new System.EventHandler(this.iosPatchGroupBoxOKbtn_Click);
|
||||||
|
//
|
||||||
|
// iosPatchesListBox
|
||||||
|
//
|
||||||
|
this.iosPatchesListBox.BackColor = System.Drawing.SystemColors.Menu;
|
||||||
|
this.iosPatchesListBox.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||||
|
this.iosPatchesListBox.FormattingEnabled = true;
|
||||||
|
this.iosPatchesListBox.Items.AddRange(new object[] {
|
||||||
|
"Trucha bug",
|
||||||
|
"ES_Identify",
|
||||||
|
"NAND permissions"});
|
||||||
|
this.iosPatchesListBox.Location = new System.Drawing.Point(6, 62);
|
||||||
|
this.iosPatchesListBox.Name = "iosPatchesListBox";
|
||||||
|
this.iosPatchesListBox.Size = new System.Drawing.Size(197, 45);
|
||||||
|
this.iosPatchesListBox.TabIndex = 1;
|
||||||
|
//
|
||||||
|
// label2
|
||||||
|
//
|
||||||
|
this.label2.AutoSize = true;
|
||||||
|
this.label2.Location = new System.Drawing.Point(9, 16);
|
||||||
|
this.label2.Name = "label2";
|
||||||
|
this.label2.Size = new System.Drawing.Size(184, 26);
|
||||||
|
this.label2.TabIndex = 2;
|
||||||
|
this.label2.Text = "Patch the following bugs into any IOS\r\nI download:";
|
||||||
//
|
//
|
||||||
// titleversion
|
// titleversion
|
||||||
//
|
//
|
||||||
@ -791,6 +844,7 @@
|
|||||||
//
|
//
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||||
this.ClientSize = new System.Drawing.Size(274, 516);
|
this.ClientSize = new System.Drawing.Size(274, 516);
|
||||||
|
this.Controls.Add(this.iosPatchGroupBox);
|
||||||
this.Controls.Add(this.iosPatchCheckbox);
|
this.Controls.Add(this.iosPatchCheckbox);
|
||||||
this.Controls.Add(this.ProxyVerifyBox);
|
this.Controls.Add(this.ProxyVerifyBox);
|
||||||
this.Controls.Add(this.proxyBox);
|
this.Controls.Add(this.proxyBox);
|
||||||
@ -825,6 +879,8 @@
|
|||||||
this.ProxyVerifyBox.ResumeLayout(false);
|
this.ProxyVerifyBox.ResumeLayout(false);
|
||||||
this.ProxyVerifyBox.PerformLayout();
|
this.ProxyVerifyBox.PerformLayout();
|
||||||
this.scriptsStrip.ResumeLayout(false);
|
this.scriptsStrip.ResumeLayout(false);
|
||||||
|
this.iosPatchGroupBox.ResumeLayout(false);
|
||||||
|
this.iosPatchGroupBox.PerformLayout();
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
this.PerformLayout();
|
this.PerformLayout();
|
||||||
|
|
||||||
@ -907,6 +963,10 @@
|
|||||||
private System.Windows.Forms.CheckBox keepenccontents;
|
private System.Windows.Forms.CheckBox keepenccontents;
|
||||||
private System.Windows.Forms.Button saveaswadbtn;
|
private System.Windows.Forms.Button saveaswadbtn;
|
||||||
private System.Windows.Forms.CheckBox iosPatchCheckbox;
|
private System.Windows.Forms.CheckBox iosPatchCheckbox;
|
||||||
|
private System.Windows.Forms.GroupBox iosPatchGroupBox;
|
||||||
|
private System.Windows.Forms.CheckedListBox iosPatchesListBox;
|
||||||
|
private System.Windows.Forms.Button iosPatchGroupBoxOKbtn;
|
||||||
|
private System.Windows.Forms.Label label2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -896,6 +896,54 @@ namespace NUS_Downloader
|
|||||||
WriteStatus("Uhoh, the download bombed: \"" + ex.Message + " ):\"");
|
WriteStatus("Uhoh, the download bombed: \"" + ex.Message + " ):\"");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (iosPatchCheckbox.Checked == true) { // Apply patches then...
|
||||||
|
// Okay, it's checked.
|
||||||
|
libWiiSharp.IosPatcher iosp = new libWiiSharp.IosPatcher();
|
||||||
|
libWiiSharp.WAD ioswad = new libWiiSharp.WAD();
|
||||||
|
if (wadName.Contains(Path.DirectorySeparatorChar.ToString()) || wadName.Contains(Path.AltDirectorySeparatorChar.ToString()))
|
||||||
|
ioswad.LoadFile(wadName);
|
||||||
|
else
|
||||||
|
ioswad.LoadFile(Path.Combine(Path.Combine(Path.Combine(Path.Combine(CURRENT_DIR, "titles"), titleidbox.Text), nusClient.TitleVersion.ToString()), wadName));
|
||||||
|
try
|
||||||
|
{
|
||||||
|
iosp.LoadIOS(ref ioswad);
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
WriteStatus("NUS Download Finished.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
foreach (object checkItem in iosPatchesListBox.CheckedItems)
|
||||||
|
{
|
||||||
|
// ensure not 'indeterminate'
|
||||||
|
if (iosPatchesListBox.GetItemCheckState(iosPatchesListBox.Items.IndexOf(checkItem)).ToString() == "Checked") {
|
||||||
|
switch (checkItem.ToString()) {
|
||||||
|
case "Trucha bug":
|
||||||
|
if (iosp.PatchFakeSigning() > 0)
|
||||||
|
WriteStatus(" - Patched in fake-signing");
|
||||||
|
else
|
||||||
|
WriteStatus(" - Could not patch fake-signing");
|
||||||
|
break;
|
||||||
|
case "ES_Identify":
|
||||||
|
if (iosp.PatchEsIdentify() > 0)
|
||||||
|
WriteStatus(" - Patched in ES_Identify");
|
||||||
|
else
|
||||||
|
WriteStatus(" - Could not patch ES_Identify");
|
||||||
|
break;
|
||||||
|
case "NAND permissions":
|
||||||
|
if (iosp.PatchNandPermissions() > 0)
|
||||||
|
WriteStatus(" - Patched in NAND permissions");
|
||||||
|
else
|
||||||
|
WriteStatus(" - Could not patch NAND permissions");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// WriteStatus(iosPatchesListBox.GetItemCheckState(iosPatchesListBox.Items.IndexOf(checkItem)).ToString());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
WriteStatus("NUS Download Finished.");
|
WriteStatus("NUS Download Finished.");
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1927,6 +1975,7 @@ namespace NUS_Downloader
|
|||||||
keepenccontents.Enabled = enabled;
|
keepenccontents.Enabled = enabled;
|
||||||
scriptsbutton.Enabled = enabled;
|
scriptsbutton.Enabled = enabled;
|
||||||
consoleCBox.Enabled = enabled;
|
consoleCBox.Enabled = enabled;
|
||||||
|
iosPatchCheckbox.Enabled = enabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -3096,5 +3145,30 @@ namespace NUS_Downloader
|
|||||||
// This is also probably not the best way to accomplish this...
|
// This is also probably not the best way to accomplish this...
|
||||||
Environment.Exit(0);
|
Environment.Exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void iosPatchCheckbox_CheckedChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (iosPatchCheckbox.Checked == true)
|
||||||
|
{
|
||||||
|
packbox.Enabled = false;
|
||||||
|
packbox.Checked = true;
|
||||||
|
SetAllEnabled(false);
|
||||||
|
iosPatchGroupBox.Visible = true;
|
||||||
|
iosPatchGroupBox.Enabled = true;
|
||||||
|
iosPatchesListBox.Enabled = true;
|
||||||
|
iosPatchGroupBoxOKbtn.Enabled = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
packbox.Enabled = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void iosPatchGroupBoxOKbtn_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
SetAllEnabled(true);
|
||||||
|
iosPatchGroupBox.Visible = false;
|
||||||
|
packbox.Enabled = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -42,6 +42,10 @@ namespace libWiiSharp
|
|||||||
private bool useLocalFiles = false;
|
private bool useLocalFiles = false;
|
||||||
private bool continueWithoutTicket = false;
|
private bool continueWithoutTicket = false;
|
||||||
|
|
||||||
|
private int titleversion;
|
||||||
|
|
||||||
|
public int TitleVersion { get { return titleversion; } }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// If true, existing local files will be used.
|
/// If true, existing local files will be used.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -336,6 +340,8 @@ namespace libWiiSharp
|
|||||||
if (!Directory.Exists(Path.Combine(outputDir, tmd.TitleVersion.ToString()))) Directory.CreateDirectory(Path.Combine(outputDir, tmd.TitleVersion.ToString()));
|
if (!Directory.Exists(Path.Combine(outputDir, tmd.TitleVersion.ToString()))) Directory.CreateDirectory(Path.Combine(outputDir, tmd.TitleVersion.ToString()));
|
||||||
outputDir = Path.Combine(outputDir, tmd.TitleVersion.ToString());
|
outputDir = Path.Combine(outputDir, tmd.TitleVersion.ToString());
|
||||||
|
|
||||||
|
this.titleversion = tmd.TitleVersion;
|
||||||
|
|
||||||
File.WriteAllBytes(Path.Combine(outputDir, tmdFile), tmd.ToByteArray());
|
File.WriteAllBytes(Path.Combine(outputDir, tmdFile), tmd.ToByteArray());
|
||||||
|
|
||||||
fireProgress(5);
|
fireProgress(5);
|
||||||
|
Loading…
Reference in New Issue
Block a user