Ana sayfa Tersine Mühendislik Tersine Mühendislik 1

Tersine Mühendislik 1 [Serial Bulma & Patch]

19

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.

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.

Tersine mühendislik işlemi.

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 ve Win32 Kütüphanesi

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ındada 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?

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?

“Serial Fishing” ile isimlendirilen serial avlama.

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?

Serial üretme programlarına keygen denir.

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 ?

Programları şifreleyip kodlarını daha karmaşık hale getitir.

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 akort yapma 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 :

Detect it easy program üzerinde bulunan şifreleyicileri ve hangi dilde yazıldığını gösterir
Windows kütüphanesi üzerinden çalışan programları debug etmeye yarayan tersine mühendislik aracıdır

 

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.

Sağ tıklayıp – >Search For -> All referenced Text Strings

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.

Bu kısımda en üst bölüme çıkıp sağ tıklıyoruz. Search For Text butonuna tıklı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ıç 🙂 )

Bu kısımda mesajı bulduk ve çift tıklayarak kodların bulunduğu bölüme gideceğiz.

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.

Bu kısımda hata mesajımızı bulduk ve sağ tıklayıp Analyze This! diyoruz

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 .


1. kırmızı ok ile gösterilen bölüm yukarıda bulunan komutun belirtilen yere aktarıldığını gösteriyor.
2. program lisanslandığında gelen yazı
3. program hatalı lisans girildiğinde gelen mesaj.

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 ? 🙂 ).

1. Kısımda JE komutu kendinden önce gelen değerin eşit olup olmadığını kontrol eder.

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.

GENEL DEĞERLENDİRME
Tersine Mühendislik 1 [Serial Bulma & Patch]
Önceki makaleSilinen Dosyaları Geri Getirme Programları – 2020
Sonraki makaleYouTube’da en çok izlenen 20 Video
Eğitimli insanlar topluma borçludurlar. Bir işin nasıl yapılabileceğini biliyorken bir başkasının yapamadığını görüp susmaları kendilerini yetiştiren o topluma ihanettir.

19 Yorum

  1. 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.

  2. 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

  3. Yildo tool ya da kullandığınız programları internet üzerinde bulamadım acaba bir indirme linki gönderebilir misiniz?

  4. 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.

  5. 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?

BİR CEVAP BIRAK

Lütfen bir yorum yazın!
Lütfen Adınızı Girin!