EXP-101: 6-GDB ile Debugging’e Giriş: Temel Komutlar

GDB (GNU Debugger), C ve C++ gibi derlenmiş dillerle yazılmış programları hata ayıklamak için kullanılan güçlü bir araçtır. GDB’yi Başlatmak GDB, genellikle terminalden aşağıdaki gibi başlatılır: 1. help GDB içindeki komutları ve kategorileri listeler. Bu komutla birlikte hangi komutun ne işe yaradığını görebilirsiniz. 2. checksec Binary’nin güvenlik önlemlerini kontrol etmek için kullanılır. Bu komut gef … Devamını oku

EXP-101: 5-Debug{ger,ging} ve Disassembler

Debugger Debugger (Hata Ayıklayıcı), çalışan bir programı analiz etmek, hataları tespit etmek ve yazılımın nasıl davrandığını daha iyi anlamak için kullanılan bir araçtır. Geliştiriciler ve güvenlik araştırmacıları, programın yürütülme sürecini adım adım izleyerek sorunları çözmek ya da yazılımın derinlemesine davranışını incelemek için debugger kullanır. Debugger’lar sayesinde: Popüler Debugger’lar: Debugging Debugging (hata ayıklama), bir yazılımın çalışması … Devamını oku

EXP-101: 4-LIFO (Last In, First Out) Nedir ?

Bilgisayar bilimlerinde birçok veri yapısı ve sistemin çalışma prensibi, belirli kurallara göre organize edilmiştir. Bu kurallardan biri olan LIFO (Last In, First Out), özellikle yığın (stack) veri yapısının temelini oluşturur. Bu yazıda LIFO’nun ne olduğunu, nasıl çalıştığını, hangi alanlarda kullanıldığını ve neden önemli olduğunu detaylı olarak inceleyeceğiz. LIFO Nedir? LIFO (Last In, First Out) ifadesi, … Devamını oku

EXP-101: 3-Bellek Yerleşimi (Memory Layout) ve Stack Operasyonları

Modern işletim sistemlerinde bir program çalıştırıldığında, işletim sistemi program için belirli bir bellek alanı ayırır. Bu bellek alanı, memory layout (bellek yerleşimi) adı verilen yapıya sahiptir. Bellek yerleşimi, programın farklı ihtiyaçlarına göre ayrılmış bölümlerden oluşur. Bu yazıda, bu bölümleri detaylarıyla inceleyecek ve özellikle stack yapısı ve stack operasyonlarına (PUSH, POP) odaklanacağız. 1. Bellek Yerleşiminin Bölümleri … Devamını oku

EXP-101: 2-Temel x86 Talimat Seti (Basic x86 Instructions Set)

Veri Hareketi Talimatları (Data Movement Instructions) Veri hareketi talimatları, verilerin farklı konumlara (kayıtlar, bellek vb.) taşınmasını sağlar. Aritmetik Talimatlar (Arithmetic Instructions) Aritmetik talimatlar, sayılar üzerinde temel matematiksel işlemler gerçekleştirir. Mantıksal Talimatlar (Logical Instructions) Bu talimatlar ikili (binary) seviyede mantıksal işlemler yapar. Kontrol Transfer Talimatları (Control Transfer Instructions) Programın yürütülme sırasını değiştiren talimatlardır. Hem koşullu hem … Devamını oku