Merhaba, bu konumda hepinizin işine yarayacak mühteşem bir konu hazırladım, yazdığımız projeler bazen modüler yani değiştirilebilir olmalıdır kısaca örnek vermek gerekirse bir kullanıcı 1 exe ye tıklandığında x mesajı başka bir exe ye tıklandığında ise y mesajı almak isteyebilir!
eee tabi günümüzde herkes program kodlayamamaktadır sıradan bir vatandaşa kod atıp bunu derle diyemeyiz peki nasıl yapacağız hemen isterseniz konuya dalalım!
öncelikle builderdan başlayalım burada stub.exe'yi açaçcaz(bunu sonradan oluşturup builder ile aynı klasore atabilirsiniz veya temp'e tamam size kalmış bir durumdur...) devamında ise binarywriter ile bağlantı stringimizi ve ve yapacaksak onun ile ilgili kısımları yazıyoruz. mesela ben mesaj verdireceğim bunu bir textbox'dan alacağım bağlantı stringini yazdıktan sonra textbox'ı yazıyorum....
not: stub açıldığında bu bağlantıyı silip yoluna devam edecektir.
şimdi geldik stub kısmına bu kısımda ise öncelikle mantık şu şekildedir kendini binary olarak oku, bağlantı stringinin index numarasını bul,değiştir yoluna devam et!
Herşeyi açıklama kısmında tedaylıca anlattım mantık çok basit binarywriter ile yaz stub kısmında kendini oku bağlantı kısımlarını değiştir yoluna devam et eğer eksiğim veya anlamadığınız bir kısım olursa yazabilirsiniz hepinize iyi geceler dilerim.
eee tabi günümüzde herkes program kodlayamamaktadır sıradan bir vatandaşa kod atıp bunu derle diyemeyiz peki nasıl yapacağız hemen isterseniz konuya dalalım!
öncelikle builderdan başlayalım burada stub.exe'yi açaçcaz(bunu sonradan oluşturup builder ile aynı klasore atabilirsiniz veya temp'e tamam size kalmış bir durumdur...) devamında ise binarywriter ile bağlantı stringimizi ve ve yapacaksak onun ile ilgili kısımları yazıyoruz. mesela ben mesaj verdireceğim bunu bir textbox'dan alacağım bağlantı stringini yazdıktan sonra textbox'ı yazıyorum....
not: stub açıldığında bu bağlantıyı silip yoluna devam edecektir.
Kod:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace builder
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public static string baglanti = "coderx37"; /*bağlantı stringi*/
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
/*öncelikle stub.exe var mı? kontrol edelim. bunun için System.IO kütüphanesini projeye dahil edelim.*/
if (File.Exists("stub.exe")) /*file.exits() methodu eğer dosya mevcutsa true değilse false döndürür.*/
{ /*şimdi efenim var ama ya işlemleri yaparken hata verirse? hemen bir try catch yapalım!*/
try
{
/*dosyayı kopyaşlaylım ki her defasında stub ouşturmaya gerek kalmasın!*/
File.Copy("stub.exe","yeni.exe");
/*bu kısımdaki mantık basittir
yukarıda bağlantı stringi oluşturdum bunu binarywritter ile yeni.exe ye yazacağız yeni.exe ise açılırken bağlantı stringini temizleyip
yoluna devam edecektir mantık bu kadar basit! ama öncesinde filestream tanımlamamız gerekiyor:)
*/
FileStream dosya = new FileStream("yeni.exe", FileMode.Open, FileAccess.ReadWrite, FileShare.None);
/*yukarıda kısaca diyoruz ki yeni.exe yi aç açma modu readwrite paylaşımda yapma!*/
BinaryWriter yaz = new BinaryWriter(dosya); /*binarywriter'a attık*/
dosya.Position = dosya.Length + 1; /*burayı tam çözemedim ama deneme yanılma yapıp sizede anlatırım*/
yaz.Write(baglanti + "" + textBox1.Text);/*burada yaz diyoruz bağlantı+textbox*/
yaz.Close(); /*yazma işleminden çık */
MessageBox.Show("dosya hazırlandı!", "Bilgilendirme", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
catch (Exception hata) /*eğer hata meydana gelirse buradan devam edecektir.*/
{
MessageBox.Show(hata.Message);
}
}
else /*eğer yoksa */
{
MessageBox.Show("Stub.exe bulunamadı!", "Hata", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
şimdi geldik stub kısmına bu kısımda ise öncelikle mantık şu şekildedir kendini binary olarak oku, bağlantı stringinin index numarasını bul,değiştir yoluna devam et!
Kod:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;
namespace stubs
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
/*burada ise efenim yapacağımız kendimizi açmak,bağlantı stringlerinden kurtulup yola devam etmektir.*/
/*bağlantımız*/
string baglanti = "coderx37";
StreamReader fs = new StreamReader(System.Reflection.Assembly.GetEntryAssembly().Location);
/*burada System.Reflection.Assembly.GetEntryAssembly().Location methodu kendi exemizin yolunu verir kısaca kendimizi okuyoruz*/
BinaryReader binary = new BinaryReader(fs.BaseStream); /*binaryreadea streamreaderı ver*/
byte[] stub = binary.ReadBytes(Convert.ToInt32(fs.BaseStream.Length)); /*okunan byteları int32 dönüştüüp al */
string stubbye = Encoding.ASCII.GetString(stub).Substring(Encoding.ASCII.GetString(stub).IndexOf(baglanti)).Replace(baglanti, ""); /*burada değiştiriyoruz indexof arananın index numarasını verir replace ise değiştirir.*/
/*şimdi herşeyden kurtulduk ne yapmak istiyorsak yapalım!*/
MessageBox.Show(stubbye);
}
}
}
Herşeyi açıklama kısmında tedaylıca anlattım mantık çok basit binarywriter ile yaz stub kısmında kendini oku bağlantı kısımlarını değiştir yoluna devam et eğer eksiğim veya anlamadığınız bir kısım olursa yazabilirsiniz hepinize iyi geceler dilerim.




