private void saveAsEbootButton_Click(object sender, EventArgs e) { ushort rowCount = PS3ELF.GetSegmentCount(ELF); for (int i = 1; i <= rowCount; i++) { ulong segFlags = 0; if ((bool)dataGridView1.Rows[i - 1].Cells[4].Value) { segFlags |= PS3ELF.SEGMENT_FLAGS.PROT_READ; } if ((bool)dataGridView1.Rows[i - 1].Cells[5].Value) { segFlags |= PS3ELF.SEGMENT_FLAGS.PROT_WRITE; } if ((bool)dataGridView1.Rows[i - 1].Cells[6].Value) { segFlags |= PS3ELF.SEGMENT_FLAGS.PROT_EXEC; } PS3ELF.SetFlags(ELF, i, segFlags); } File.WriteAllBytes("EBOOT.ELF", ELF); System.Diagnostics.Process process = new System.Diagnostics.Process(); System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(); startInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; startInfo.WorkingDirectory = System.IO.Directory.GetCurrentDirectory(); startInfo.FileName = @"C:\Windows\System32\cmd.exe"; startInfo.Arguments = "/c make_fself.exe EBOOT.ELF EBOOT.BIN"; process.StartInfo = startInfo; process.Start(); System.Threading.Thread.Sleep(500); byte[] EBOOT = File.ReadAllBytes("EBOOT.BIN"); SaveFileDialog savefile = new SaveFileDialog(); savefile.FileName = "EBOOT.BIN"; savefile.Filter = "BIN Files|*.bin"; if (savefile.ShowDialog() == DialogResult.OK) { File.WriteAllBytes(savefile.FileName, EBOOT); } File.Delete("EBOOT.BIN"); File.Delete("EBOOT.ELF"); }
private void saveAsElfFileButton_Click(object sender, EventArgs e) { ushort rowCount = PS3ELF.GetSegmentCount(ELF); for (int i = 1; i <= rowCount; i++) { ulong segFlags = 0; if ((bool)dataGridView1.Rows[i - 1].Cells[4].Value) { segFlags |= PS3ELF.SEGMENT_FLAGS.PROT_READ; } if ((bool)dataGridView1.Rows[i - 1].Cells[5].Value) { segFlags |= PS3ELF.SEGMENT_FLAGS.PROT_WRITE; } if ((bool)dataGridView1.Rows[i - 1].Cells[6].Value) { segFlags |= PS3ELF.SEGMENT_FLAGS.PROT_EXEC; } PS3ELF.SetFlags(ELF, i, segFlags); } SaveFileDialog savefile = new SaveFileDialog(); savefile.FileName = "EBOOT.ELF"; savefile.Filter = "ELF Files|*.elf"; if (savefile.ShowDialog() == DialogResult.OK) { File.WriteAllBytes(savefile.FileName, ELF); } }
private void refreshDataGrid() { dataGridView1.Rows.Clear(); if (ELF != null) { ushort rowCount = PS3ELF.GetSegmentCount(ELF); for (int i = 1; i <= rowCount; i++) { string segNum = i.ToString(); string segStart = "0x" + PS3ELF.GetBase(ELF, i).ToString("X"); string segEnd = "0x" + (PS3ELF.GetBase(ELF, i) + PS3ELF.GetSize(ELF, i)).ToString("X"); string segSize = "0x" + PS3ELF.GetSize(ELF, i).ToString("X"); ulong segmentFlags = PS3ELF.GetFlags(ELF, i); bool segRead = (segmentFlags & PS3ELF.SEGMENT_FLAGS.PROT_READ) != 0; bool segWrite = (segmentFlags & PS3ELF.SEGMENT_FLAGS.PROT_WRITE) != 0; bool segExec = (segmentFlags & PS3ELF.SEGMENT_FLAGS.PROT_EXEC) != 0; dataGridView1.Rows.Add(new object[] { segNum, segStart, segEnd, segSize, segRead, segWrite, segExec }); } } }