SlideShare a Scribd company logo
Çok Kanallı Programlama (Thread
Programming)
DELPHİ XE5
 Disk üzerindeki her bir dosya çalıştırıldığında
windows için birer işlem(process) olurlar. Bir
işlem Windows için fazla bir şey ifade etmez.
Çünkü işlemler sadece hafızada belli bir
bölgede var olmaktan sorumludur. Esas işlemi
yapan kısım kanallardır(thread). Bir işlem en
az bir adet kanala sahiptir. Win 3.1 gibi işletim
sistemleri sadece bir adet kanala sahiptir.
Ama Windows 95 ve üstü, Unix, OSX gibi
işletim sistemleri birden fazla kanala sahip
olabilirler.
 İşletim sistemi bir programı ya da bir DLL’i ilk
başta işlem olarak hafızaya taşır. Bu esnada
işlem eylemsiz olarak durur. Bu işleme ait
kanallar ise bizim belirlediğimiz ölçüde
programın kodlarını çalıştırmaya başlar.
Bir Kanal Oluşturalım
 Kanal oluşturma ile sorumlu Windows
fonksiyonu CreateThread fonksiyonudur ve
aşağıdaki gibi tanımlanmıştır:
KanalFonksiyonu isimli
fonksiyonumuz kanal içinde
çalışmaya başlayacaktır.
Kanal Fonksiyonlarına Parametre
Gönderimi
 CreateThread fonksiyonunun parametrelerini
açıklarken lpParameter‘den söz etmiştik ve bu
parametre ile kanal fonksiyonuna istediğimiz
parametreyi gönderebileceğimizi belirtmiştik.
Şimdi bunu nasıl yapacağımızı görelim.
 Bunun için de yaptığımız örnekten
faydalanacağız.
 İlk başta type bloğunda aşağıdaki record
tanımlamasını yapalım.
 Ardından kanal fonksiyonumuzu aşağıdaki gibi
değiştirelim.
 En son olarak button’nun OnClick olayını da
aşağıdaki gibi olacak şekilde değiştirelim.
DELPHİ XE5 DE MİNİ CHAT
OLUŞTURMA
 Programı açıyoruz ve file – other seçeneğine
tıklıyoruz.
 Blank Aplication diyoruz ve ok butonuna
basıyoruz.
 Formumuzu oluşturduk.
 Speedbuttonun simgesini değiştiriyoruz.
 Align i alright yapıyoruz. Ardından margins < right
kısmına 10 yazıyoruz.
 Formumuza 2 edit ve 1 rectangle ekliyoruz.
 Daha sonra forma label ve buton ekliyoruz.
 Formumuzu kaydediyoruz.
 Kaydettikten sonra aşağıdaki kodları giriyoruz.
 Kodlarımızı girdikten sonra tekrar kaydedip
çalıştırıyoruz.
UYGULAMA KORUMASI
(OBSUFCATE)
 Kod karıştırmanın diğer bir kullanım alanı da
kodun daha iyi ve efektif hale getirilmesidir. Kod
karıştırma için kullanılan araçlar kodu analiz
ederek gereksiz/yararsız kodları ve metadata
bölümlerini kırpabiliyor ve bu sayede kod
boyutunda azalmayla birlikte performans artışı
sağlanabiliyor.
 Java ve .Net gibi just-in-time derleme ve
çalıştırma yapılan ortamlarda kodların açık edilme
riski derlenerek makina koduna çevrilen ve bu
şekilde dağıtılan programlara göre çok daha
büyüktür. Bu makalede özellikle .Net çalıştırılabilir
dosyalarının (EXE) ve sınıf kütüphanelerinin
(DLL) kodlarının ne kadar açık seçik erişilebilir
olduğunu ve kod karıştırıcı kullanarak kodların
nasıl anlaşılamaz hale getirilebileceğini
inceleyeceğiz.
 Öncelikle basit bir Windows Forms uygulaması
hazırlayalım.
 Kodda ClsTest isimli sınıfta kasıtlı olarak değişik
tipte değişkenler ve property'ler tanımlayarak
bunları çeşitli şekillerde kullandık.
 Şimdi derleyerek elde ettiğimiz EXE'yi Lutz
Roeder tarafından geliştirilmiş Reflector isimli
programı kullanarak demonte (disassemble)
edelim.
 Şimdi ClsTest sınıfı üzerinde
sağ tuş yaparak Disassemble
komutunu verelim ve sağ
kenarda açılan bölümde
bu sınıfın kodunun
açıkça görelim.
 Resimlerde görüldüğü gibi kodu eksiksiz bir
biçimde, tüm değişken ve belirteç (identifier)
adları aynı kalmış olarak ortaya çıkartmak çok
kolay; daha gelişmiş araçlar kullanarak
uygulamanın tüm kodunu eksiksiz bir şekilde elde
etmek de mümkün. Yani biz her ne kadar derleme
işlemine tabi tutarak EXE üretiyorsak da bu
EXE'ler (ve tabi DLL'ler) makina koduna
değil CLR tarafından işletilmek üzere ara koda
(intermediate code) dönüştürülüyor.
DECOMPİLE HAKKINDA BİLGİ
 Delphi ile yazilan programlarin icerikleri hakkinda
kisitli bilgi veren decompiler. deplhide kodlanan
exelerin hazirlik
asamasindaki dfm, pas, dcu, dpr dosyalarinin
icerigini okumaya yarar.
Teşekkürler..

More Related Content

Viewers also liked

Lavidaocultade...
Lavidaocultade...Lavidaocultade...
Lavidaocultade...TerraAlta
 
Source Evaluation: Guiding Questions
Source Evaluation: Guiding QuestionsSource Evaluation: Guiding Questions
Source Evaluation: Guiding Questionsadavis46
 
1.1
1.11.1
Hv a gastcollege 2014
Hv a gastcollege 2014Hv a gastcollege 2014
Hv a gastcollege 2014
John Van de Vorstenbosch
 
La vida oculta de la julieta
La vida oculta de la julietaLa vida oculta de la julieta
La vida oculta de la julietaTerraAlta
 
JAI JAI SHREE RADHEY
JAI JAI SHREE RADHEYJAI JAI SHREE RADHEY
JAI JAI SHREE RADHEY
meropyarobarsana
 
Lava xolo updated ROADMAP OF MIDDLE EAST
Lava  xolo updated ROADMAP OF MIDDLE EASTLava  xolo updated ROADMAP OF MIDDLE EAST
Lava xolo updated ROADMAP OF MIDDLE EASTDashty hamad
 
Quantity vs. Quality Lead Generation
Quantity vs. Quality Lead GenerationQuantity vs. Quality Lead Generation
Quantity vs. Quality Lead Generation
Samantha Stone
 
Edital de chamamento convocação dos candidatos “suplentes” inscritos no progr...
Edital de chamamento convocação dos candidatos “suplentes” inscritos no progr...Edital de chamamento convocação dos candidatos “suplentes” inscritos no progr...
Edital de chamamento convocação dos candidatos “suplentes” inscritos no progr...
TecnologiaPMC
 

Viewers also liked (14)

Lavidaocultade...
Lavidaocultade...Lavidaocultade...
Lavidaocultade...
 
Source Evaluation: Guiding Questions
Source Evaluation: Guiding QuestionsSource Evaluation: Guiding Questions
Source Evaluation: Guiding Questions
 
delphi
delphidelphi
delphi
 
1.1
1.11.1
1.1
 
Hv a gastcollege 2014
Hv a gastcollege 2014Hv a gastcollege 2014
Hv a gastcollege 2014
 
La vida oculta de la julieta
La vida oculta de la julietaLa vida oculta de la julieta
La vida oculta de la julieta
 
JAI JAI SHREE RADHEY
JAI JAI SHREE RADHEYJAI JAI SHREE RADHEY
JAI JAI SHREE RADHEY
 
Facebook
FacebookFacebook
Facebook
 
Gbi 2013
Gbi 2013Gbi 2013
Gbi 2013
 
Lava xolo updated ROADMAP OF MIDDLE EAST
Lava  xolo updated ROADMAP OF MIDDLE EASTLava  xolo updated ROADMAP OF MIDDLE EAST
Lava xolo updated ROADMAP OF MIDDLE EAST
 
Valores
ValoresValores
Valores
 
14
1414
14
 
Quantity vs. Quality Lead Generation
Quantity vs. Quality Lead GenerationQuantity vs. Quality Lead Generation
Quantity vs. Quality Lead Generation
 
Edital de chamamento convocação dos candidatos “suplentes” inscritos no progr...
Edital de chamamento convocação dos candidatos “suplentes” inscritos no progr...Edital de chamamento convocação dos candidatos “suplentes” inscritos no progr...
Edital de chamamento convocação dos candidatos “suplentes” inscritos no progr...
 

Similar to delphi xe5

Osman kurt & zahide aytar
Osman kurt & zahide aytarOsman kurt & zahide aytar
Osman kurt & zahide aytarOsman Kurt
 
Android mimari-cekirdek-binding-scheduler
Android mimari-cekirdek-binding-schedulerAndroid mimari-cekirdek-binding-scheduler
Android mimari-cekirdek-binding-scheduler
Ercan Pinar
 
BTRisk X86 Tersine Mühendislik Eğitim Sunumu - Bölüm-1
BTRisk X86 Tersine Mühendislik Eğitim Sunumu - Bölüm-1BTRisk X86 Tersine Mühendislik Eğitim Sunumu - Bölüm-1
BTRisk X86 Tersine Mühendislik Eğitim Sunumu - Bölüm-1
BTRisk Bilgi Güvenliği ve BT Yönetişim Hizmetleri
 
Yazılım Geliştirme Teknolojileri
Yazılım Geliştirme TeknolojileriYazılım Geliştirme Teknolojileri
Yazılım Geliştirme Teknolojileri
Yusuf AYTİN
 
ARM Mimarisinde Exploit Geliştirme
ARM Mimarisinde Exploit GeliştirmeARM Mimarisinde Exploit Geliştirme
ARM Mimarisinde Exploit Geliştirme
SignalSEC Ltd.
 
Bilgisayara Giris 2
Bilgisayara Giris 2Bilgisayara Giris 2
Bilgisayara Giris 2
Selcuk Univercity , KONYA
 
Temel linux
Temel linuxTemel linux
Temel linux
emreberber07
 
Unixlinux (1)
Unixlinux (1)Unixlinux (1)
Unixlinux (1)
sagsaglim
 
Windows 8 Ögretim Materyali
Windows 8 Ögretim MateryaliWindows 8 Ögretim Materyali
Windows 8 Ögretim Materyali
Caner Öztürkten
 
İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21
Cihan Özhan
 
Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008mtcakmak
 
Internet programcılığı-i
Internet programcılığı-iInternet programcılığı-i
Internet programcılığı-iemre61
 
52657308 unix-linux
52657308 unix-linux52657308 unix-linux
52657308 unix-linuxAhmet Sag
 
KERNEL VE WİNDOWS KURULUMU
KERNEL VE WİNDOWS KURULUMUKERNEL VE WİNDOWS KURULUMU
KERNEL VE WİNDOWS KURULUMU
Kadir Ertan Çam
 
C ders-notlari-necati-ergin
C ders-notlari-necati-erginC ders-notlari-necati-ergin
C ders-notlari-necati-ergin
Ibrahim Kizir
 

Similar to delphi xe5 (20)

Sunu (1)
Sunu (1)Sunu (1)
Sunu (1)
 
Osman kurt & zahide aytar
Osman kurt & zahide aytarOsman kurt & zahide aytar
Osman kurt & zahide aytar
 
Android mimari-cekirdek-binding-scheduler
Android mimari-cekirdek-binding-schedulerAndroid mimari-cekirdek-binding-scheduler
Android mimari-cekirdek-binding-scheduler
 
BTRisk X86 Tersine Mühendislik Eğitim Sunumu - Bölüm-1
BTRisk X86 Tersine Mühendislik Eğitim Sunumu - Bölüm-1BTRisk X86 Tersine Mühendislik Eğitim Sunumu - Bölüm-1
BTRisk X86 Tersine Mühendislik Eğitim Sunumu - Bölüm-1
 
Yazılım Geliştirme Teknolojileri
Yazılım Geliştirme TeknolojileriYazılım Geliştirme Teknolojileri
Yazılım Geliştirme Teknolojileri
 
Bilgisayarkullanımı.ppt_ 3
Bilgisayarkullanımı.ppt_ 3Bilgisayarkullanımı.ppt_ 3
Bilgisayarkullanımı.ppt_ 3
 
ARM Mimarisinde Exploit Geliştirme
ARM Mimarisinde Exploit GeliştirmeARM Mimarisinde Exploit Geliştirme
ARM Mimarisinde Exploit Geliştirme
 
Bilgisayara Giris 2
Bilgisayara Giris 2Bilgisayara Giris 2
Bilgisayara Giris 2
 
Temel linux
Temel linuxTemel linux
Temel linux
 
Unixlinux (1)
Unixlinux (1)Unixlinux (1)
Unixlinux (1)
 
C# Akademi 2005
C# Akademi 2005C# Akademi 2005
C# Akademi 2005
 
Windows 8 Ögretim Materyali
Windows 8 Ögretim MateryaliWindows 8 Ögretim Materyali
Windows 8 Ögretim Materyali
 
İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21
 
Snu raz
Snu razSnu raz
Snu raz
 
Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008Kurumsal Yazılım Geliştirme ve Visual Studio 2008
Kurumsal Yazılım Geliştirme ve Visual Studio 2008
 
Internet programcılığı-i
Internet programcılığı-iInternet programcılığı-i
Internet programcılığı-i
 
52657308 unix-linux
52657308 unix-linux52657308 unix-linux
52657308 unix-linux
 
KERNEL VE WİNDOWS KURULUMU
KERNEL VE WİNDOWS KURULUMUKERNEL VE WİNDOWS KURULUMU
KERNEL VE WİNDOWS KURULUMU
 
C ders-notlari-necati-ergin
C ders-notlari-necati-erginC ders-notlari-necati-ergin
C ders-notlari-necati-ergin
 
pc bilgisayar
pc bilgisayarpc bilgisayar
pc bilgisayar
 

delphi xe5

  • 1. Çok Kanallı Programlama (Thread Programming) DELPHİ XE5
  • 2.  Disk üzerindeki her bir dosya çalıştırıldığında windows için birer işlem(process) olurlar. Bir işlem Windows için fazla bir şey ifade etmez. Çünkü işlemler sadece hafızada belli bir bölgede var olmaktan sorumludur. Esas işlemi yapan kısım kanallardır(thread). Bir işlem en az bir adet kanala sahiptir. Win 3.1 gibi işletim sistemleri sadece bir adet kanala sahiptir. Ama Windows 95 ve üstü, Unix, OSX gibi işletim sistemleri birden fazla kanala sahip olabilirler.
  • 3.  İşletim sistemi bir programı ya da bir DLL’i ilk başta işlem olarak hafızaya taşır. Bu esnada işlem eylemsiz olarak durur. Bu işleme ait kanallar ise bizim belirlediğimiz ölçüde programın kodlarını çalıştırmaya başlar.
  • 4. Bir Kanal Oluşturalım  Kanal oluşturma ile sorumlu Windows fonksiyonu CreateThread fonksiyonudur ve aşağıdaki gibi tanımlanmıştır:
  • 5. KanalFonksiyonu isimli fonksiyonumuz kanal içinde çalışmaya başlayacaktır.
  • 6. Kanal Fonksiyonlarına Parametre Gönderimi  CreateThread fonksiyonunun parametrelerini açıklarken lpParameter‘den söz etmiştik ve bu parametre ile kanal fonksiyonuna istediğimiz parametreyi gönderebileceğimizi belirtmiştik. Şimdi bunu nasıl yapacağımızı görelim.
  • 7.  Bunun için de yaptığımız örnekten faydalanacağız.  İlk başta type bloğunda aşağıdaki record tanımlamasını yapalım.
  • 8.  Ardından kanal fonksiyonumuzu aşağıdaki gibi değiştirelim.
  • 9.  En son olarak button’nun OnClick olayını da aşağıdaki gibi olacak şekilde değiştirelim.
  • 10. DELPHİ XE5 DE MİNİ CHAT OLUŞTURMA
  • 11.  Programı açıyoruz ve file – other seçeneğine tıklıyoruz.
  • 12.  Blank Aplication diyoruz ve ok butonuna basıyoruz.
  • 14.  Speedbuttonun simgesini değiştiriyoruz.
  • 15.  Align i alright yapıyoruz. Ardından margins < right kısmına 10 yazıyoruz.
  • 16.  Formumuza 2 edit ve 1 rectangle ekliyoruz.
  • 17.  Daha sonra forma label ve buton ekliyoruz.
  • 19.  Kaydettikten sonra aşağıdaki kodları giriyoruz.
  • 20.  Kodlarımızı girdikten sonra tekrar kaydedip çalıştırıyoruz.
  • 22.  Kod karıştırmanın diğer bir kullanım alanı da kodun daha iyi ve efektif hale getirilmesidir. Kod karıştırma için kullanılan araçlar kodu analiz ederek gereksiz/yararsız kodları ve metadata bölümlerini kırpabiliyor ve bu sayede kod boyutunda azalmayla birlikte performans artışı sağlanabiliyor.
  • 23.  Java ve .Net gibi just-in-time derleme ve çalıştırma yapılan ortamlarda kodların açık edilme riski derlenerek makina koduna çevrilen ve bu şekilde dağıtılan programlara göre çok daha büyüktür. Bu makalede özellikle .Net çalıştırılabilir dosyalarının (EXE) ve sınıf kütüphanelerinin (DLL) kodlarının ne kadar açık seçik erişilebilir olduğunu ve kod karıştırıcı kullanarak kodların nasıl anlaşılamaz hale getirilebileceğini inceleyeceğiz.
  • 24.  Öncelikle basit bir Windows Forms uygulaması hazırlayalım.
  • 25.  Kodda ClsTest isimli sınıfta kasıtlı olarak değişik tipte değişkenler ve property'ler tanımlayarak bunları çeşitli şekillerde kullandık.
  • 26.  Şimdi derleyerek elde ettiğimiz EXE'yi Lutz Roeder tarafından geliştirilmiş Reflector isimli programı kullanarak demonte (disassemble) edelim.
  • 27.  Şimdi ClsTest sınıfı üzerinde sağ tuş yaparak Disassemble komutunu verelim ve sağ kenarda açılan bölümde bu sınıfın kodunun açıkça görelim.
  • 28.
  • 29.
  • 30.  Resimlerde görüldüğü gibi kodu eksiksiz bir biçimde, tüm değişken ve belirteç (identifier) adları aynı kalmış olarak ortaya çıkartmak çok kolay; daha gelişmiş araçlar kullanarak uygulamanın tüm kodunu eksiksiz bir şekilde elde etmek de mümkün. Yani biz her ne kadar derleme işlemine tabi tutarak EXE üretiyorsak da bu EXE'ler (ve tabi DLL'ler) makina koduna değil CLR tarafından işletilmek üzere ara koda (intermediate code) dönüştürülüyor.
  • 32.  Delphi ile yazilan programlarin icerikleri hakkinda kisitli bilgi veren decompiler. deplhide kodlanan exelerin hazirlik asamasindaki dfm, pas, dcu, dpr dosyalarinin icerigini okumaya yarar.