Nereden başlamalıyım Reverse Engineering ? THT

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...

TrTaaRRuZ

Yeni üye
21 Eki 2014
3
0
Merhaba Arkadaşlar,

Hesabı 13 yaşındayken açmıştım lakin aktif olarak kullanmak bu güne nasip olacakmış. Kısa şekilde yeteneklerimi söyleyeyim ve sizlerde bana en uygun kaynak önerilerini yaparsınız dostlar. Ben Yazılım Mühendisiyim ve en az 2 ay sonra askerlik görevimi yapmak üzere Türk Silahlı Kuvvetlerine teslim olacağım. Bildiğim diller C++, C#, JS, Flutter ve Swift. Bu 2 ay süre zarfında Reverse Engineering alanında kendimi geliştirmek istiyorum. Sizlerden ricam bilgi birikimi olmayan birisini bu alanda yönlendirmeniz.
 

Napcaz

Katılımcı Üye
28 Nis 2019
767
765
Cudi
Bilgisayar mimarisine ne kadar hakim olduğuna göre değişir. Eğer işlemci nasıl çalışır, assembly nedir, programlar nasıl çalışır, işletim sistemi nasıl çalışır. Gibi konulara hakimsen debugger ların mantigini, basit işlemci talimatları işlemleri ni ogrenebilirsin. Sonrasında assembly ve biraz üst katman okumalar yaparak. IDA, GHidra gibi makine dilini assembly level okumanı sağlayacak yani disassembly yapan araçlar kullanarak ctf lerde, sağda solda bulduğun basit crackme leri çözmeye çalışabilirsin. Assembly dilinde programları okurken işini kolaylastiracak konspetleri ogrenebilirsin mesela call operand in işleyişi ve türleri, pointer tipleri gibi şeyler (aslında mevzu dilin pratik kullanımındaki temel yapılara hakim olmak) bundan sonrası daha fazla öğrenmek ve daha fazla mimari tanımakla alakalı. Yukarda sana anlattığım path; C/C++, Golang, Rust tarzında basit(üst seviye konspetleri sahip değil, mesela c# in derlenirken oluşturduğu IL language) derlenen diller için geçerli. Daha gelişmiş dillerin farklı framework leri farklı derleme çeşitleri farklı mimarileri var bunları öğrenmek sana o dillerle yazılmış programlara daha rahat yaklasabilmeni sağlar. Mesela biz c ile yazılmış bir programı IDA ile incelerken c# ile derlenmiş bir programi çok genellikle dnspy gibi IL talimatlarını anlayıp cozumleyen disassembler, decompiler larla inceleriz çünkü bize daha yukardan daha temiz bir bakış verir. IDA sadece makine dilini assembly ye çevirirken dnspy c# in assembly seviyesinin nin üstünde konuslandirdigi ve okunmasının çok daha kolay olduğunu bir ara dili sunar. Bu .net dillerini geliştiren Microsoft un tercihidir yapının pros ve cons larini tartismayacagim.
Java nin yapısı da bambaşkadır mesela o da c# a benzer şekilde bir ara dile çevirir derlediği kodu ve bunu kendi kurallarına göre exe nin çalıştırılması esnasında makine diline dönüştürür.

Python, PHP gibi diller kendi ortamları ile çalışır bu ortamların çalışma mekanikleri kendilerine özgüdür ve ayrıca araştırılması gerekir. Zaten bu dillere script demelerinin başlıca sebebi de budur.

Yani anlayacağın tersine muhendis olmak demek konsept bilmek, mimari bilmek demek ki bu işin en temeli bilgisayar mimarisini anlamaktan başlar. Bir okumuslugunuz var o sebepten bu adımı çoktan attığınız varsayiyorum. Geri kalan kısımda bol kafa patlatmali ve makale okumalı, deneme yanılma yollarından geçerek tecrübe kazanmalisiniz. Başlangıç önerisi olarak pluralsight in start revers enginering kurşunu onerebilirim. Bu alanda sadece yabancı kaynaklardan yararlanmanızı da şiddetle rica ediyorum. Selametle kalın.
 

TrTaaRRuZ

Yeni üye
21 Eki 2014
3
0
Bilgisayar mimarisine ne kadar hakim olduğuna göre değişir. Eğer işlemci nasıl çalışır, assembly nedir, programlar nasıl çalışır, işletim sistemi nasıl çalışır. Gibi konulara hakimsen debugger ların mantigini, basit işlemci talimatları işlemleri ni ogrenebilirsin. Sonrasında assembly ve biraz üst katman okumalar yaparak. IDA, GHidra gibi makine dilini assembly level okumanı sağlayacak yani disassembly yapan araçlar kullanarak ctf lerde, sağda solda bulduğun basit crackme leri çözmeye çalışabilirsin. Assembly dilinde programları okurken işini kolaylastiracak konspetleri ogrenebilirsin mesela call operand in işleyişi ve türleri, pointer tipleri gibi şeyler (aslında mevzu dilin pratik kullanımındaki temel yapılara hakim olmak) bundan sonrası daha fazla öğrenmek ve daha fazla mimari tanımakla alakalı. Yukarda sana anlattığım path; C/C++, Golang, Rust tarzında basit(üst seviye konspetleri sahip değil, mesela c# in derlenirken oluşturduğu IL language) derlenen diller için geçerli. Daha gelişmiş dillerin farklı framework leri farklı derleme çeşitleri farklı mimarileri var bunları öğrenmek sana o dillerle yazılmış programlara daha rahat yaklasabilmeni sağlar. Mesela biz c ile yazılmış bir programı IDA ile incelerken c# ile derlenmiş bir programi çok genellikle dnspy gibi IL talimatlarını anlayıp cozumleyen disassembler, decompiler larla inceleriz çünkü bize daha yukardan daha temiz bir bakış verir. IDA sadece makine dilini assembly ye çevirirken dnspy c# in assembly seviyesinin nin üstünde konuslandirdigi ve okunmasının çok daha kolay olduğunu bir ara dili sunar. Bu .net dillerini geliştiren Microsoft un tercihidir yapının pros ve cons larini tartismayacagim.
Java nin yapısı da bambaşkadır mesela o da c# a benzer şekilde bir ara dile çevirir derlediği kodu ve bunu kendi kurallarına göre exe nin çalıştırılması esnasında makine diline dönüştürür.

Python, PHP gibi diller kendi ortamları ile çalışır bu ortamların çalışma mekanikleri kendilerine özgüdür ve ayrıca araştırılması gerekir. Zaten bu dillere script demelerinin başlıca sebebi de budur.

Yani anlayacağın tersine muhendis olmak demek konsept bilmek, mimari bilmek demek ki bu işin en temeli bilgisayar mimarisini anlamaktan başlar. Bir okumuslugunuz var o sebepten bu adımı çoktan attığınız varsayiyorum. Geri kalan kısımda bol kafa patlatmali ve makale okumalı, deneme yanılma yollarından geçerek tecrübe kazanmalisiniz. Başlangıç önerisi olarak pluralsight in start revers enginering kurşunu onerebilirim. Bu alanda sadece yabancı kaynaklardan yararlanmanızı da şiddetle rica ediyorum. Selametle kalın.
Vakit ayırdığınız için öncelikle teşekkür ederim. Bahsettiğiniz konuların bazılarını eğitimim sırasında bazılarını da iş hayatımda gerek teknik gerekse terimsel olarak gördüm.
Bahsettiğiniz kursun Pluralsight - Getting Started with Reverse Engineering olduğunu düşünerekten merak eden arkadaşlar için linkledim. Eng sub olması güzel oldu. Yardımınız için teşekkür ederim.
Gelişmeleri ekleyeceğim...
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.