Tersine Mühendisliğe Nasıl Başlanır/Başlanmaz?

Kâtip

Kıdemli
Kıdemli Üye
Katılım
1 Ağustos 2024
Mesajlar
2
Tepkime puanı
5
TL
0
Tersine mühendislik nedir sorusunun cevabı bu konu değil.

Nasıl başlanırdan ziyade nasıl başlanmaz sorusunun cevabını vereyim.
Tersine mühendislik serüvenimde kendi hatalarımdan ve nasıl ilerlediğimden bahsetmek istiyorum.
Tersine mühendisliğe terminolojik olarak yaklaşmayıp sadece yazılımsal tersine mühendislikten bahsedeceğim.
Benim için tersine mühendislik bir merdiven gibi. Merdivenden çıkarken nasıl direkt ortasından başlayarak yukarı çıkamıyorsak veya yukarı ışınlanamıyorsak tersine mühendislikte öyle.
Yani işi en temelinden öğrenmek gerçekten önemli.
Şahsen ben bu serüvene C++ ile bazı oyunlarda hile yaparak başladım fakat daima bir yerlerde eksiğimin olduğunu hissettim çünkü bir şeyler kafama yatmıyordu.
Çünkü arka planda yani donanım ve işletim sistemi düzeyinde neler olup bittiğini bilmiyordum. (Şuan merdivenin ortasında başladım.)
Çok geçmeden bunun bir hata olduğunu farkettim ve donanım düzeyinde neler olup bittiğini anlamak için temel x86 Assembly talimatlarını öğrenmekle başladım. (Bir basamak aşağı indim.)
Ve fakat yine bunun da bir yanlış olduğunu farkettim donanım düzeyinde x86 Assembly talimatlarını az çok biliyordum fakat bu talimatların neye göre ve nasıl işlemleri gerçekleştirdiğini yine bilmiyordum.
Bu yüzden bir basamak daha aşağı inmem gerekti ve en başta öğrenmem gerekenin aslında mantıksal devre tasarımı olduğunu farkettim.
Mantıksal devre tasarımı CPU hakkında daha çok bilgi edinmemi ve talimatların nasıl çalıştığına dair fikir edinmemi sağladı.
Demiyorum ki temel mantıksal devreler, işletim sistemi, memory management vs. bilmeden tersine mühendislik yapılamaz.
Elbette yapılabilir fakat merdivenin ortasından başlamış olursunuz ve geride atladığınız basamaklar daima eksik kalır hatta bir süre sonra merdivenin en tepesine çıkamadığınızı farkedip: "Ulan ne zor şeymiş bu" deyip merdivenden atlarsınız. :D
Bunu daha profesyonel yapabilmek için temeli sağlam tutmak en önemlisi.
Şimdi diyeceksiniz mantıksal devre tasarımından önceki basamak yok mu? Neden daha geriden başlamıyoruz?
Cevabı: Çünkü gerek yok, zaten o basamakta yarı iletken teknolojisi, katıhâl fiziği ve daha uzun ömür yetmeyecek konular var. :D Biz alt tarafı tersine mühendislik yapacağız o uçsuz bucaksız bilgilere ne gerek var?
O zaman yazılımsal tersine mühendisliği biz mantıksal devre tasarımından merdivenin sonuna kadar sınırlayabiliriz. Amacımız bu merdiveni çıkmak.

Dediğim gibi en temelden (mantıksal devre tasarımından) başlarsanız yine sizi uzun bir yol bekliyor olacak.
Bu konu üzerine bir arkadaşımında dediği gibi "Her disiplinde olduğu gibi sabır ve pratik en büyük müttefikleriniz olacaktır."
Peki bu uzun yolda sizi ne hızlandırabilir?

Cevabı: Tersine mühendisliğe başlamadan herhangi bir az çok aşina olduğunuz programlama dili (C++ gibi) varsa sizi hızlandırabilir. Bu şekilde x86 Assembly ile diğer üst seviye diller (C / C++ vs.) arasındaki bağlantıyı kavrarsınız.


Şimdi kabataslak merdivenin basamaklarını yazayım.

1. Basamak: Boolean Cebiri (mantıksal devre tasarımının ilk aşaması ve mantıksal devre tasarımını anlamanız için olmazsa olmaz.)
Boolean cebirinde mantıksal kapıları, temel mantıksal işlemleri bilmeniz (De Morgan kuralları vs.) mantıksal devreleri anlamanız için gerekli.
Çok fazla detay var (Karnaugh Map gibi), detaylar silsilesinde boğulmadan temel şeyleri öğrenmeye çalışın.
Bunları öğrendikten sonra temel kombinasyonel ve sıralı devrelere bakabilirsiniz. (CPU'daki aritmetik işlemlerin nasıl gerçekleştiği hakkında fikir edinmek adına.)

2. Basamak: Bu basamakta von Neumann mimarisine göz atabilirsiniz.
Sonucunda bilgisayar organizasyonunda CPU ve Bellek arasındaki akışın nasıl gerçekleştiği hakkında fikir sahibi olabilirsiniz.
Daha sonra CPU ve Bellek için mimarilerini ve organizasyonlarını daha detaylı ele alabilirsiniz.

3. Basamak: Bu basamak aslında iki basamağı kapsıyor. Bunlar: İşletim sistemleri ve x86 Assembly'e giriş.
Assembly'deki talimatlar doğrultusunda işletim sisteminin gerçekleştirdiği görevleri görmek çok önemli.
Bu iki konuyu birlikte götürmek işletim sistemi ve donanım arasındaki ilişkiyi anlama yetinizi güçlendirir.

4. Basamak: İşte bu noktada artık x86 assembly'e başladınız. İşletim sistemi, donanım ve yazılım arasındaki bağlantıları CPU ve Bellek hakkında bilgilisiniz.
Tersine mühendisliğe giriş yapmış bulunmaktasınız, x86 Assembly hakkında daha fazla pratik yapmalısınız.

Profilime girip konuları sırasına göre okuyun.
Her konunun sonunda o konu hakkında kaynak önerisinde bulunacağım ve sonraki paylaşacağım konu hakkında bilgi vereceğim.

Sonraki konuda Boolean Cebirinden bahsedeceğim.
Çıkışından, amacından, genel olarak öneminden ve boolean cebirini kullanarak neler yapabileceğinizden bahsedeceğim.
 
Son düzenleme:

io

HAN
Yönetici
Yetkili
Moderatör
Katılım
30 Temmuz 2024
Mesajlar
64
Tepkime puanı
28
TL
30
Teşekkür ederiz bilgilendirici yazınız için. Özellikle bunu bir iş olarak yapacak üyelerimiz için ciddiye alınması gereken hususlardır.
 
Üst Alt