~/execmap · GNU/Linux inceleme masası
Linux programlarını
dosyadan belleğe izle.
ELF dosyasını, yükleyiciyi ve çalışma anını
aynı hikâyenin parçaları olarak oku.
Tersine mühendislik için kaynaklı rehberler ve küçük, uygulanabilir laboratuvarlar. readelf ile başla; GDB, perf ve eBPF ile bulgularını doğrula.
$ readelf -lW ./ornek
Elf file type is DYN
Örnek düzen · gerçek dosya analizi değildir.
$
cd ./nereden-baslamali
Bir inceleme sorusu seç.
Dosyadan belleğe ↗
ELF yapısını oku, adresleri eşleştir ve yükleyiciyi takip et.
readelf -lW ./ornek/02İsimlerden davranışa ↗
Stripped dosyaları ve sürümler arasındaki anlamlı farkları çöz.
objdump -d ./ornek/03Çalışma anına bak ↗
perf örnekleri ve eBPF olaylarıyla bulgularını sına.
perf record -g -- ./ornekfind ./rehberler -type f
Rehber dizini
14 rehber gösteriliyor.
- "ELF'i dosyadan belleğe takip etmek"↗
Header, segment ve section. Dosya offset’inden çalışma adresine uzanan yol.
- "ELF parser'ları ve adres hesaplarını doğrulamak"↗
Parser sonucunu sınamak, aralıkları doğrulamak ve pyelftools ile envanter çıkarmak.
- "Linker düzenini ve bellek haritasını okumak"↗
Input section, output section, VMA ve LMA. Linker’ın bıraktığı düzeni okumak.
- "Program başlangıcı, yığın düzeni ve auxiliary vector (auxv)"↗
Kernel, interpreter, runtime. main’e ulaşmadan önce gerçekleşenler.
- "Dinamik bağlama: GOT, PLT ve sembol çözümleme"↗
GOT, PLT, relocation ve sembol çözümleme. Bir çağrının gerçek hedefini bulmak.
- "Stripped ELF dosyalarını anlamlandırmak"↗
İsimler silindiğinde kalan semboller, unwind verisi ve ayrı debug dosyaları.
- "İkili fark analizi (Binary Diffing) ve sürüm karşılaştırma"↗
Bayt farkından davranış farkına. Sürümleri ve fonksiyonları karşılaştırmak.
- "Özel yükleyiciler ve bellek içi çalıştırma (In-Memory Execution)"↗
Yeni bir exec olmadan belleğe yerleştirilen kodun izini sürmek.
- "Paketli ve şifrelenmiş ELF (Packers) analizi"↗
Paketleme belirtileri, açılma anı ve bellekten alınan kodu yorumlamak.
- "Çekirdek dökümleri (Core Dumps) ve bellek anlık görüntüleri (Snapshots)"↗
Core dosyasını register, thread, mapping ve modül bilgisiyle anlamlandırmak.
- "perf ile yürütme analizi ve donanımsal izleme"↗
Sayaçlar, örnekleme ve Intel PT. Nerede çalışıldığını doğru yorumlamak.
- "eBPF ile çalışma anı olaylarını izlemek"↗
Syscall, mapping ve uprobe olaylarını süreç bağlamıyla ilişkilendirmek.
- "Analiz aracının etkisi ve anti-tersine mühendislik"↗
Doğrudan syscall, ptrace kontrolleri ve gözlemin program üzerindeki etkisi.
- "Çalışma anı izlerini yorumlamak ve adli bilişim metodolojisi"↗
Gözlem, hipotez ve kanıt. Zamanı, kimliği ve eksik kayıtları hesaba katmak.
Bu aramayla eşleşen rehber yok.
mkdir deney && cd deney
Oku. Derle. Karşılaştır.
"Bir bellek alanının izin değişimini gözlemlemek" ↗
Anonim belleği RW’den RX’e geçir. İzin değişiminin neyi kanıtladığını gör.
Kod + komutlar + beklenen sonuçLAB 02 C / Linux"Sembol seçimi ve LD_PRELOAD ile fonksiyon kancalama" ↗
Aynı executable, iki kütüphane. LD_PRELOAD ile gerçek çağrı hedefini karşılaştır.
Kod + komutlar + beklenen sonuçLAB 03 C / Linux"Debug bilgisini ayırmak, strip etmek ve geri bağlamak" ↗
Debug verisini ayır, çalışma kopyasını strip et ve isimleri geri bağla.
Kod + komutlar + beklenen sonuçLAB 04 C / Linux"Derleme farklarını ve optimizasyon seviyelerini incelemek" ↗
Üç derlemeyle optimizasyon farkını davranış değişikliğinden ayır.
Kod + komutlar + beklenen sonuç