Tersine Mühendislik (Reverse Engineering) konusunda yeni bir seri başlatıyoruz. Öncelikle bu alanda karşınıza temel olarak çıkacak terimleri ve bu konuya dair öğrenmeniz gereken işlemlerden bahsedeceğim .İlk bölümde programın serial kodunu bulacağız ve patch işlemi yapacağız anlatım için bir video hazırladım.Bölümler genelde video ile anlatılacak.
Konu Başlıkları
Başlamadan önce bu serinin devamını daha rahat takip edebilmek için Tersine Mühendislik kategorimizi yer imlerinize ekleyiniz.
Temel olarak bahsetmem gereken şeylerden sonra videoyu izlemeniz anlamanız açısından çok daha faydalı olacaktır.
Programa Crack İşlemi Nasıl Yapılır?
Bir programı crackleyebilmek için ilk olarak onun hangi dilde yazıldığını bilmemiz gerekir. Çünkü hangi dilde yazıldığını bilmek onu cracklemek için hangi araçları kullanacağımızı bize anlatır. Windows platformunda çalışan programlar aslında 2 ye ayrılmaktadırlar .
1. Kısım Windows kütüphanesini kullanan programlar;
Bu sınıf içerisine c++,c,visual basic, vbscript,delphi 7 gibi direkt olarak windows kütüphanesi üzerinden çalışan programlama dilleri mevcuttur. Bu tarz programları günümüzde cracklemek için bir çok araç ve yazılım mevcuttur.
2. Kısım NetFramework kütühanesi kullanan programlar ;
Bu sınıf içerisinde c#, vb.net, F# gibi studio ortamında kodlanmış programlardır. Crack için bir çok araç vardır lakin bu tarz programları çeşitli şifreleyiciler ile daha zor hale getirmek daha mümkündür .
Netframework kütüphanesi temelinde windows32 kütüphanesine dayanmaktadır. Evet programlar 2 sınıfa ayrılıyor demiştik. Bu programlar Tersine Mühendislik işlemi için kullanacağımız programlarında ikiye ayrılmasına sebep oluyor. Başlatmış olduğumuz seride zaman zaman üzerinde duracağım bu konuda, hem windows kütüphanesinden hemde netframework kütüphanesini direkt olarak kullanan yazılımlar üzerinde işlemler yapacağız. Mantığın aynı sadece araçların farklı olduğunu anlatmama gerek yok sanırım.
Tersine Mühendislik Öğrenmek İçin Programlama Dilleri Bilmeli Miyim?
Terimler ile yapılan espirileri anlamak istiyorsanız, programlama bilmeniz gerekiyor 🙂 … Tersine mühendislik için programlama öğrenmek şart değil ancak yapacağınız ve anlayacağınız işlem sınırlı kalmaktadır.
İki türlü örnek verelim. Programlama bilen birisi string manipülasyonlarını, komutları bildiği için asembly kodlarındaki terimleri rahatça öğrenir. Hesaplamaları , hash işlemlerini , regedit üzerinde saklanan dataların takibi gibi bir çok konuyu kolayca keşfeder .Tabi kodları debug etmeyi öğrendiğinde anlaması ve yorumlaması çok daha kolay olacaktır. Programlamada if , for, while, for each gibi sabit komutların belirli bir mantığı vardır.
Asm kodlarında da aynı mantık bulunuyor. Kısaca programlama bilen birisi tüm bu süreçleri ve işlemleri anlaması daha basit olacaktır. Kendi bilgileri ile buradaki bilgilerini kıyaslaması çok daha basit olurken programlama bilmeyen birinin öğreneceği bilgiler belli bir noktada kısıtlanır.
Bu durum şu şekilde daha iyi anlayabilirsiniz. Yukarıda bahsettiğim yöntemleri bilmeyen kişi asm kodları ile karşılaştığında izlediği yada okuduğu bilgiler dışında kendi mantığını yürütmesi oldukça zor olacaktır. Sabit şeyler dışına çıkması için yine bir mantığa ihtiyaç duyar. Debug kısmında tüm bunları öğrenmesi kişiyi zorlu bir sürece sokacaktır. Onun yerine temel kod mekanizmasını öğrenmek çok daha kolay olacaktır .
Tersine Mühendislik için Hangi Programlama Dilini Öğrenmeliyim?
Bu sorunun cevabı aslında size kalmış bir durum . İstediğiniz programlama dilinden başlayabilirsiniz. Bu durum sizin için sadece tavsiye olacaktır. Ben programlama diline 1997 Visual Basic ile başlamıştım. Lakin derleyicisi çok kötü ve eski olduğundan çok fazla zorluk yaşamıştım. Bunun için Visual Studio 2017 versiyonunda Visual Basic kodlaması öğrenerek başlayabilirisiniz. Mantığını öğrendikten sonra C# kodlamaya geçmek çok daha kolay olacaktır. C# öğrendikten sonra php öğrenmesi daha kolay. Devam ederseniz php den sonra diğer script kodlarını öğrenmek sizin için oldukça basit olacaktır. Benim sıralamam bu şekilde olmuştu.
Patch İşlemi Nedir?
Patch işlemi hedef programın lisans sorgusuna dair veya içerisinde bulunan bir takım hatalara dair yama işlemidir. Bu yama sayesinde lisans sorgusunu yada demo süresini uzatabiliriz. İşlem olarak debug ettikten sonra düzenleyip dosyanın yamalı hali ile orjinal dosyayı değiştiririz. Bu işleme patch denir.
Serial Bulma Nedir?
Programı lisanslamak için gerekli olan anahtara serial bulma şeklinde hitap ederiz yada serial fishing denir. Bu işlem için programı yine tersine mühendislik araçları yardımı ile debug edip karşılaştırma yaptığı kodu bularak doğru olan serial koda denir.
Keygen Nedir?
Programların lisanslamak için ihtiyaç duyduğu serial kodların oluşum algoritması çözülerek kodlanmış 3. bir yazılıma keygen denir. Cihaza göre veya isime göre key oluşturma algoritması hedef program için debug edilir. Bu algoritmaya göre bir kod üretilir. Bu işlemi yapan programlara keygen denir.
Packer / Obfuscator / Protector Nedir ?
Bu tarz terimler ile sıkça karşılaşacaksınız. Çünkü bu terimler bizim üzerinde crack işlemi yapmaya çalıştığımız dosyaların daha güvenli ve zor hale gelmesi için kullanılan 3. yazılımlardır. Kısaca şifreleyiciler yada paketleyiciler ismini verebiliriz. Paketleyici programlar yazılmış program içerisinde bulunan kodları ve yazıları şifreler ve karmaşık hale getirir dolayısıyla bizde bu dosyalar üzerinde tersine mühendislik işlemi yapamayız. öncelikle üzerinde bulunan paketleyiciui çözmemiz gerekir. Paket çözümleme işlemine ise Unpack Denir.
Hedef Program :
Aptuner (Akor programı eskidir ama hala satışta 35$ )
Kullanılan Araçlar :
1- Ollydbg
2- DİE (Detect İt Easy)
Kullanılan Araçlardan Görüntüler :
Görsel Anlatım:
1 – Detect İt Easy ile programda paketleme olup olmadığını kontrol ettik her hangi bir şifreleme koruması yok program c++ ile yazılmış.
2- Ollydbg içerisine programımızı attık .Sağ tıklayıp – >Search For -> All referenced Text String diyoruz.
3- Bu kısımda en üst bölüme çıkıp Sağ tıklıyoruz -> Search For Text dedikten sonra çıkan arama kutusuna hata mesajımızın bir bölümünü yazıyoruz yani “Registration“. Aramaya devam etmek için Ctrl + L kombinasyonuna basıyoruz.
4- Hata mesajının nerede olduğunu bulduk çift tıklayarak içerisine girelim . (Bütün programlarda bu şekilde bulamayız videoda belirttim. Basit düzey işlemler yapıyoruz. Tüm programların böyle cracklendiğini sakın düşünmeyin bu daha başlangıç 🙂 )
5- Bu bölüm bizlere hata mesajının olduğu kodları gösteriyor . Kodların akışını daha iyi görebilmek için Sağ tıklayıp -> Analyze This! diyoruz. Yada Ctrl + A kombinasyonu ile tamamlayabiliriz.
6- İyi mesaj ve kötü mesajı görebiliyoruz bu ekranda . Bu kodların üzerine çıkacağız. Kırmızı okun geldiği yere gidelim .
7- JE komutu kendinden önce gelen kısımdaki karşılaştırmanın eşit olup olmadığını kontrol eder. Yani Al, Al değerleri eşit ise belirlenen ofsete atlayacaktır. Aksi halde normal akışına devam edecek . (Programlamadaki IF komutuna benziyor değil mi ? 🙂 ).
8- Aslında sabit bir serial mevcut o kısımda seriali direkt alıp programa koyabiliriz. Ancak Başka durumlarda serial bu kadar açıkta olmayabilir. Neyseki JE komutuna tıklayıp -> space tuşuna basalım ve “nop” yazalım. Böylelikle programımız sürekli olumlu mesaja gidecektir. Yada “jmp” komutu ile bir altında bulunan ofsete atlatabiliriz.
Serial bulma işlemi bu kadar. Patch işlemi ve daha detaylı anlatım için video olarak izleyebilirsiniz.
Videolu Anlatım:
ÖNEMLİ!
Bu içerikte yer alan bilgiler tamamen yazılım geliştiricilerinin kendi programlarını nasıl koruyabileceklerini öğretmeye yönelik hazırlanmıştır. Tersine mühendislik ile programlarının kırılmasını istemeyen geliştiriciler tersine mühendisliğin ne olduğunu, nasıl yapıldığını, crack ve patch kavramlarının ne olduğunu bilmeli, buna göre önlem almalıdır.
Merhabalar,
Mert Bey size nasıl ulaşabilirim?
İyi çalışmalar.
öncelikle çalışmalarınızda başarılar dilerim
Mert abi youtube kanalınız kapanmış hiç bir yerde videolarınız yok
yandex vs drever indirebilir arşiv halinde paylaşabilirmisiniz saygılar.
Emeği geçen herkese teşekkürler. Keşke videolar silinmeden indirseymişim.
youtube kanalı komple kapattı maalesef. çalışmayı yapan arkadaşlar da aktif olmadığı için içerikler videosu kaldı. hepimize geçmiş olsun diyelim.
Merhaba çok eğitici bir başlangıç olmuş. Bu alana merak saran insanlar için gerçekten bir başlangıç noktası. Rica etsem toolların linklerini paylaşabilir misiniz?
arşiv konusuna yorum bırakırsanız dönüş yapılacaktır. geri bildiriminiz için teşekkür ederiz.
tşk
Merhaba öncelikle lütfen yorumlarımı birleştirmenizi rica ederim. Sorunu hallettim çift tıkladım oldu.
Merhaba ben Analyze This! kısmında takıldım. Sağ bölüm tıklayınca Analyze This! bulunmuyor. Analyze Code var. Emeğinize sağlık bu arada.
Teşekkürler öncelikle
sonra merhaba
gerçekten şimdi bu siteden ben nasıl ayrılayım 😀
Videoda gösterilenleri basit bir program üzerinde denemeye çalıştım.Programı olldbg ile açıp sağ tıklayarak “all references text string ” yaptığım zaman çıkan ekranda aradığım kelimeleri bulamıyorum.
aktivasyon kodunu yanlış girdiğimde verdiği uyarıyı arattığımda bulamıyyorum.neyi yanlış yapıyorum acaba ?
Programın derlenmiş olduğu kütüphaneye göre stringler başka bölümlere koyulabilir. Örneğin dil dosyası içeren bir programda o mesajı dll dosyasında yada resource bölümünde gömülü olarak bulabilirsin. Ama asıl konu mesajın gösterildiği alanı bulmak olduğu için ekrana çıkan messagebox eventine BP koyarak bu işlemden sonra gelen kısmı bulabilirsin. Mesaj gösterma dalına giden konumdan tersine mühendislik yapmak daha mantıklı olur.
İyi çalışmalar.
merhaba.elinize sağlık güzel anlatım olmuş.sizinle iletişime geçmem mümkünmüdür ?
merhaba, teşekkür ederiz. Sorularınızı discord kanalımızdan sorabilirsiniz. Buradan da sorabilirsiniz.
merhaba.elinize emeğinize sağlık.sorular için iletişime geçebilirmiyiz ?
merhaba hocam bahsi geçen programları yollaya bilirmisiniz acaba rica etsem ? teşekkür eder iyi çalışmalar dilerim
Tersine Mühendislik serisinde kullanılan araçların bir kısmını arşiv olarak paylaşacağız. Bunu da özel bir video ve konu ile sizlere sunacağız. Bunun için zaman gerekiyor. İlginiz için teşekkür ederiz.
Anladım hocam bu konuya heves saldım hazır şu günlerde evdeyiz bunu değerlendireyim dedim youtube videolarınızı izledim gerçekten güzel ve emin bir şekilde anlatım yapmışsınız fakat araçlar olmadan bişey yapamıyoruz bir msj atayım dedim teşekkür ederim yinede iyi forumlar
Yildo tool ya da kullandığınız programları internet üzerinde bulamadım acaba bir indirme linki gönderebilir misiniz?
Merhaba Çetin,
Mail adresinize araçlar gönderildi.
Bu tool’lerin çoğu win10’da çalışmıyor örneğin OllyDbg çalıştırmak için ayrı bir siteden indirmek gerekiyor. Yildo tools da lazım bize lakin tek sorunumuz var win10 win10 win10. Yardımcı olur musunuz bu konuda?
Merhaba , tersine mühendislik işlemleri için Vmware yada Virtual box ile sanal bir ortam oluşturuyoruz. Genelde Windows XP SP3 oluyor. Sebebi ise bir çok aracın uyumluluk sorununu aşmak için stabil bir işletim sistemine ihtiyaç oluyor. Win10 ise sistemdeki yetkilendirme sorunları, uyumluluk problemleri gibi bir çok problem çıkarıyor. Elbette bu araçları win10 içerisinde çalıştırmak mümkün ancak X64 sürümlerini edinmek gerekiyor debugger araçları için. Size tavsiyem win 7 x64 veya XP SP3 bir işletim sistemini sanallaştırıp bu araçları kullanmanız olacaktır.
Haklısınız Mert Bey 🙂 bir sanal pc oluşturup uygun işletim sistemini kurup sizinle tekrar iletişime geçerim tabiki müsait olursanız. Teşekkürler bu arada
Merhaba bir tane program varda acaba aktivasyon istiyor yapabilirmisiniz
Konu program kırmak değil, programların kırılışlarını öğretmek ve programcı adayların programlarını korumaları amacı ile yazılmıştır.
Mert Bey merhaba, Sizinle nasıl iletişime geçebilirim?
Merhaba , mail adresinize bir mesaj gönderiyorum. Kontrol edersiniz.
Mert Bey merhaba, bu konuda ilave sormak istediklerim ve danışmak istediklerim var. Sizinle nasıl iletişime geçebilirim? E-Posta adresinizi paylaşır mısınız?
Merhaba mail adresinize bilgiler gönderilmiştir.