using System; using System.ComponentModel; using System.Diagnostics; using System.Drawing; using System.IO; using System.Runtime.CompilerServices; using System.Threading; using System.Windows.Forms; using iTips.Ref; using Microsoft.VisualBasic; namespace iTips { // Token: 0x02000006 RID: 6 [NullableContext(1)] [Nullable(0)] public class Form1 : Form { // Token: 0x06000007 RID: 7 RVA: 0x000020FC File Offset: 0x000002FC public Form1() { this.InitializeComponent(); this.button2.Hide(); this.APP_UUID(); } // Token: 0x06000008 RID: 8 RVA: 0x00002148 File Offset: 0x00000348 private void APP_UUID() { this.label3.TextAlign = 32; string myuuidAsString = Guid.NewGuid().ToString().ToUpper(); this.label3.Text = "APP_UUID: " + myuuidAsString; } // Token: 0x06000009 RID: 9 RVA: 0x00002194 File Offset: 0x00000394 private void CommonConnectDevice(object sender, DeviceCommonConnectEventArgs args) { bool flag = args.Message == ConnectNotificationMessage.Connected; if (flag) { this.currentiOSDevice = args.Device; base.Invoke(delegate() { this.button2.Show(); this.label2.Text = string.Concat(new string[] { " Device Connected: ", this.currentiOSDevice.ProductType, " iOS ", this.currentiOSDevice.ProductVersion, "\n\n IMEI: ", this.currentiOSDevice.InternationalMobileEquipmentIdentity, " MEID: ", this.currentiOSDevice.MobileEquipmentIdentifier, "\n\n UDID: ", this.currentiOSDevice.UniqueDeviceID, " SN: ", this.currentiOSDevice.SerialNumber, "\n\n\n" }); bool flag3 = this.currentiOSDevice.ActivationState == "Activated"; if (flag3) { } this.UDID = this.currentiOSDevice.UniqueDeviceID; }); } else { bool flag2 = args.Message == ConnectNotificationMessage.Disconnected; if (flag2) { base.Invoke(delegate() { this.button2.Hide(); this.label2.Text = "There is not Device Connected"; this.UDID = null; }); } } } // Token: 0x0600000A RID: 10 RVA: 0x000021F4 File Offset: 0x000003F4 private void RecoveryConnectDevice(object sender, DeviceRecoveryConnectEventArgs args) { bool flag = args.Message == ConnectNotificationMessage.Connected; if (flag) { base.Invoke(delegate() { }); } bool flag2 = args.Message == ConnectNotificationMessage.Disconnected; if (flag2) { base.Invoke(delegate() { }); } } // Token: 0x0600000B RID: 11 RVA: 0x0000226C File Offset: 0x0000046C private void ListenError(object sender, ListenErrorEventHandlerEventArgs args) { bool flag = args.ErrorType == ListenErrorEventType.StartListen; if (flag) { this.Error(args.ErrorMessage); throw new Exception(args.ErrorMessage); } } // Token: 0x0600000C RID: 12 RVA: 0x000022A1 File Offset: 0x000004A1 private void Error(string msg) { this.AppendLine(" [ERROR] {0}", Color.FromArgb(182, 29, 28), new object[] { msg }); } // Token: 0x0600000D RID: 13 RVA: 0x000022C8 File Offset: 0x000004C8 private void AppendLine(string format, Color foreground, params object[] args) { base.Invoke(delegate() { this.AppendLine(format, foreground, args); }); string text = string.Format(format, args); } // Token: 0x0600000E RID: 14 RVA: 0x0000231D File Offset: 0x0000051D private void label1_Click(object sender, EventArgs e) { } // Token: 0x0600000F RID: 15 RVA: 0x00002320 File Offset: 0x00000520 private void label2_Click(object sender, EventArgs e) { } // Token: 0x06000010 RID: 16 RVA: 0x00002324 File Offset: 0x00000524 private void Form1_Load(object sender, EventArgs e) { DropShadow dropShadow = new DropShadow(); dropShadow.ApplyShadows(this); this.DoubleBuffered = true; this.manager.CommonConnectEvent += this.CommonConnectDevice; this.manager.RecoveryConnectEvent += this.RecoveryConnectDevice; this.manager.ListenErrorEvent += new EventHandler(this.ListenError); new Thread(new ThreadStart(this.manager.StartListen)) { IsBackground = true }.Start(); } // Token: 0x06000011 RID: 17 RVA: 0x000023B8 File Offset: 0x000005B8 public void Start() { string libPath = "lib"; string udidFilePath = Path.Combine(libPath, "udid.txt"); string restoreLogPath = Path.Combine(libPath, "restore_log.txt"); int udidExitCode = Form1.RunCommand(Path.Combine(libPath, "ideviceinfo.exe"), "-k UniqueDeviceID", udidFilePath); bool flag = !File.Exists(udidFilePath) || new FileInfo(udidFilePath).Length == 0L; if (flag) { this.button2.Text = "Failed!"; Form1.ShowErrorMsg("Error", "UDID file not found or empty."); } else { string udidContent = File.ReadAllText(udidFilePath); bool flag2 = udidContent.IndexOf("ERROR", 5) >= 0; if (flag2) { this.button2.Text = "Failed!"; Form1.ShowErrorMsg("Error", udidContent); } else { string uuid = udidContent.Trim(); bool flag3 = string.IsNullOrEmpty(uuid); if (flag3) { this.button2.Text = "Failed!"; Form1.ShowErrorMsg("UDID Empty", udidContent); } else { string args = "restore -u " + uuid + " -s a50b5348f06d8c6528556309344370375eadb495 --system --reboot --settings lib"; int restoreExitCode = Form1.RunCommand(Path.Combine(libPath, "idevicebackup2.exe"), args, restoreLogPath); string restoreLog = File.Exists(restoreLogPath) ? File.ReadAllText(restoreLogPath) : ""; bool flag4 = restoreLog.IndexOf("ERROR", 5) >= 0; if (flag4) { this.button2.Text = "Failed!"; Form1.ShowErrorMsg("Restore Error", restoreLog); } else { this.button2.Text = "SUCCESSFULLY!"; Form1.ShowSuccessMsg("Successfully!"); } } } } } // Token: 0x06000012 RID: 18 RVA: 0x00002558 File Offset: 0x00000758 private static int RunCommand(string exePath, string arguments, string outputFilePath) { int result; try { using (Process process = new Process()) { process.StartInfo.FileName = exePath; process.StartInfo.Arguments = arguments; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.RedirectStandardError = true; process.StartInfo.UseShellExecute = false; process.StartInfo.CreateNoWindow = true; using (StreamWriter outputStream = new StreamWriter(outputFilePath, false)) { process.OutputDataReceived += delegate(object sender, DataReceivedEventArgs args) { bool flag = args.Data != null; if (flag) { outputStream.WriteLine(args.Data); } }; process.ErrorDataReceived += delegate(object sender, DataReceivedEventArgs args) { bool flag = args.Data != null; if (flag) { outputStream.WriteLine(args.Data); } }; process.Start(); process.BeginOutputReadLine(); process.BeginErrorReadLine(); process.WaitForExit(); result = process.ExitCode; } } } catch (Exception ex) { File.WriteAllText(outputFilePath, "ERROR: " + ex.Message); result = -1; } return result; } // Token: 0x06000013 RID: 19 RVA: 0x00002684 File Offset: 0x00000884 private static void ShowErrorMsg(string title, string message) { bool flag = message.Length > 1000; if (flag) { message = message.Substring(0, 1000) + "..."; } Interaction.MsgBox(message, 16, title); } // Token: 0x06000014 RID: 20 RVA: 0x000026C7 File Offset: 0x000008C7 private static void ShowSuccessMsg(string message) { Interaction.MsgBox(message, 64, "Info"); } // Token: 0x06000015 RID: 21 RVA: 0x000026D8 File Offset: 0x000008D8 private void button2_Click(object sender, EventArgs e) { this.button2.Text = "Processing..."; this.button2.Enabled = false; Thread.Sleep(5000); this.Start(); } // Token: 0x06000016 RID: 22 RVA: 0x0000270C File Offset: 0x0000090C protected override void Dispose(bool disposing) { bool flag = disposing && this.components != null; if (flag) { this.components.Dispose(); } base.Dispose(disposing); } // Token: 0x06000017 RID: 23 RVA: 0x00002744 File Offset: 0x00000944 private void InitializeComponent() { ComponentResourceManager resources = new ComponentResourceManager(typeof(Form1)); this.button1 = new Button(); this.label1 = new Label(); this.label2 = new Label(); this.label3 = new Label(); this.button2 = new Button(); base.SuspendLayout(); this.button1.Location = new Point(123, 175); this.button1.Name = "button1"; this.button1.Size = new Size(213, 37); this.button1.TabIndex = 0; this.button1.Text = "button1"; this.button1.UseVisualStyleBackColor = true; this.label1.AutoSize = true; this.label1.Font = new Font("Segoe UI", 9.75f, 0, 3); this.label1.Location = new Point(74, 28); this.label1.Name = "label1"; this.label1.Size = new Size(72, 17); this.label1.TabIndex = 1; this.label1.Text = "APP_UUID: "; this.label1.TextAlign = 32; this.label1.Click += new EventHandler(this.label1_Click); this.label2.Dock = 5; this.label2.Font = new Font("Segoe UI", 9.75f, 0, 3); this.label2.Location = new Point(0, 0); this.label2.Name = "label2"; this.label2.Size = new Size(533, 236); this.label2.TabIndex = 2; this.label2.Text = "There is not Device Connected"; this.label2.TextAlign = 32; this.label2.Click += new EventHandler(this.label2_Click); this.label3.AutoSize = true; this.label3.Font = new Font("Segoe UI", 9.75f, 0, 3); this.label3.Location = new Point(104, 11); this.label3.Name = "label3"; this.label3.Size = new Size(72, 17); this.label3.TabIndex = 3; this.label3.Text = "APP_UUID: "; this.button2.Cursor = Cursors.Hand; this.button2.Location = new Point(140, 161); this.button2.Name = "button2"; this.button2.Size = new Size(259, 23); this.button2.TabIndex = 6; this.button2.Text = "Start Blocking"; this.button2.UseVisualStyleBackColor = true; this.button2.Click += new EventHandler(this.button2_Click); base.AutoScaleDimensions = new SizeF(7f, 15f); base.AutoScaleMode = 1; base.ClientSize = new Size(533, 236); base.Controls.Add(this.button2); base.Controls.Add(this.label3); base.Controls.Add(this.label2); base.Controls.Add(this.label1); base.Controls.Add(this.button1); base.FormBorderStyle = 2; base.Icon = (Icon)resources.GetObject("$this.Icon"); base.MaximizeBox = false; base.Name = "Form1"; this.Text = "iTips Helper | made with \ud83d\udc96 from @christianmuhi7"; base.Load += new EventHandler(this.Form1_Load); base.ResumeLayout(false); base.PerformLayout(); } // Token: 0x04000004 RID: 4 private iOSDevice currentiOSDevice; // Token: 0x04000005 RID: 5 private string UDID = ""; // Token: 0x04000006 RID: 6 private iOSDeviceManager manager = new iOSDeviceManager(); // Token: 0x04000007 RID: 7 [Nullable(0)] private IContainer components = null; // Token: 0x04000008 RID: 8 [Nullable(0)] private Button button1; // Token: 0x04000009 RID: 9 [Nullable(0)] private Label label1; // Token: 0x0400000A RID: 10 [Nullable(0)] private Label label2; // Token: 0x0400000B RID: 11 [Nullable(0)] private Label label3; // Token: 0x0400000C RID: 12 [Nullable(0)] private Button button2; } }