Reverse Engineering - Keygenler

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    inside
    anonim6918524
    anonim6918524's avatar
    Banlanmış Üye
    Bilgi/Destek Madalyası Üstün Hizmet Madalyası
    Kayıt Tarihi: 16/Temmuz/2005
    Erkek

    Merhaba arkadaşlar bu yazımda size keygenlerden bahsedeceğim.

    Gerekenler

    Ollydbg
    Keygen yazacağınız herhangi bir programlama dili(Ben delphide yazdığım örnek keygen kaynak kodunu dahil ettim)

    http://rapidshare.com/files/25331645/keygen.rar.html

    Keygen yapmak reverse engineering’in en zor ve uzun süren konularından birisidir.Çünkü programın seri numarasının hesaplandığı bölgenin çok iyi bir şekilde analiz edilmesi gerekmektedir.Programın girdiğimiz seri numarayı ve hesaplanan seri numarayı karşılaştırdığı bölgede yeterince araştırma yapmış olmak ve daha gerisine dönerek kullanıcı adının alındığı bölgeden itiraben dikkatli bir şekilde registerleri,apileri ve işlemleri izleyerek doğru yerleri tespit etmeliyiz.Buraları izleyerek serial fishing denilen yöntemide gerçekleştirebiliriz.Yani hesaplama tamamlandıktan sonra, mesela “FireX” girdiysek karşılığı “235-26756766352” oluyor.Onu debugger ile görüp seri numarayı elde etmiş olarakta paylaşım yapabiliriz.Fakat sıkı kodlanmış bir uygulamanın seri numarasıda sap gibi ortada olmaz.Gerekirse not alarak işlemleri takip etmeniz gerekecektir.

    Fakat dağıttımız seri numara zamanla kara listeye girebilir ve seri numaramız işe yaramaz hale gelebilir.Bu sebeple keygen yazmak daha mantıklıdır.Zor bir iştir.Fakat neticesi güzeldir.Bazı uyanık cracker teamler 15-20 tane seri numarayı bulup tespit ettikten sonra programa koyuyorlar ve keygen diyorlar(Program sadece seri numara üretiyorsa) Bir süre sonra verilen seri numaralar tekrar etmeye başlıyorsa o keygenden çok seri numara listesi gibi birşeydir.Keygende programın seri numarasının hesaplanma mantığını çözmek vardır.

    Programda kullanıcı adının dışında başka şeyler daha istenmesi ,seri numaranın parçalara ayrılarak hesaplanması işimizi dahada zorlaştırmaktadır.Fakat sıkı bir çalışmayla üstesinden gelinebilir.Programın her adımının dikkatle takip edilmesi,gözümüzü registerlerdan ayırmamamız gerekmektedir.Özellikle keygen yapımında sabır çok önemlidir.Çünkü işimiz programına göre hayli uzar.Program sıkı korunmuş ve birçok matematiksel işlemden geçirilmişse oldukça uzun kodlar bizi bekleyecektir.Keygen olayına kısaca gözatarsak;

    Deneme amaçlı kısa bir program yazdım.Bu program için keygen yazacağız.Deneme amaçlı programı kolaylık olması açısından visual c++  ile yazdım.Örneğin delphi ile yazsaydım.Programda birçok prosedür çağrısı ve daha uzun kodlar bizi bekliyor olacaktı.Bir programı debugger ile açtığınızda her taraf call ile doluysa delphi olduğunu anlayabilirsiniz (: Deneme amaçlı programda static linking’i seçtiğim için dosyanın boyutu biraz büyük oldu.Sebebi farklı windows sürümlerini kullanan arkadaşların sorun yaşamaması.Ayrıca keygenide delphi bilenlerin ağırlık olması sebebiyle delphide yazdım.Kaynak kodlarını indirebilirsiniz.

    Ollydbg ile önce hedef programa gözattıktan sonra kilit noktayı buluyoruz. Kodlara sağ tıklayıp search for->all referenced text strings’e basar hata mesajını aratırsak o bölgeye ulaşabiliriz.Tabi dosya packlenmiş olacak,şifrelenmiş olacak,daha sıkı korunmuş olacak işler bu kadar yolunda gitmeyecek.Resimde gördüğünüz üzere bölgeye ulaştık.



    Şimdide register butonuna bastığımızdan itibaren başlayan bölgeyi analiz edelim.







    Programı sizde satır satır izleyerek gözlemleyebilirsiniz.Ben işlemleri resimde belirteceğim ve keygende hangi adımları yapmamız gerektiği ortaya çıkacak.Keygeni yazarken direk debuggerdan assembly kodlarını kopyalayıp programımıza uyarlayıp kullanabiliriz.Fakat işlemler fazlasıyla karmaşıksa adımları izleyerek sonuca ulaşabiliriz.Örneğin orada döngü varsa assembly koduyla döngüye girmek yerine delphide yada herhangi bir dile özgü şekliyle döngü oluşturarak aynısını tekrarlayabiliriz.



    İşlemleri sıralarsak
    1-)İsmi ve seri numarayı al(Keygen için önemli değil ismi almamız ve hesaplatmamız yeterli)
    2-)İsmin uzunluğunu al.
    3-)Karakterleri döngüde teker teker ele al ve karşılıklarını topla.Debugger ile baktığımızda mesela “a” yazdıysak hex karşılığı olan 61’i göreceğiz.Biz decimal olarak karşılığını toplatacağız yani 97.Düzenlersek  “asd” yazdıysak karşılıkları olan 97+115+100’ü toplayacağız.Yani harflerin karşılıklarını topluyoruz.
    4-)Döngüden sonra çıkan değerin karesini al.

    Bunların tespitini tabiki registerlara bakarak yapıyoruz.Değerler hangi registera aktarılmış,nerelerde kullanılmak üzere geri çağrılıyor vs bunların hepsini dikkatlice izlememiz lazım.

    Bu adımları kendi kullandığımız programlama diliyle yerine getiriyoruz.Forma kullanıcı adını alan bir edit seri numarayı gösteren label veya edit koyduktan sonra gereken matematiksel işlemleri adım adım yerine getiriyor ve sonucu yazdırıyoruz.Yada programın hesaplama yaptığı assembly kodlarını kopyalayıp keygene koyabilirsiniz bu da başka bir yöntemdir.Fakat arada gereksiz bazı yerlerde olabileceğinden biraz uğraştırabilir.

    Keygenlerle ilgili anlatacaklarım bu kadar.Deneme amaçlı program,keygen,yazı ve ekstra materyaller tamamen FireX tarafından yazılmıştır.Kopyalayanlar emeğe saygı duyarlarsa sevinirim.Saygılarımla..

    -anonimleştirildi-



    Not: Bu ara geliştirmekte olduğum bir projem olduğu için reverse engineeringle ilgili yazdığım yazılara bir süreliğine ara vereceğim.Bundan sonraki konu muhtemelen packerların unpack edilme metodları olacak.Boş vakitlerimde ona zaman ayırmaya çalışacağım.


    λ
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    efsun
    efsun's avatar
    Kayıt Tarihi: 28/Ağustos/2005
    Erkek
    abi şu akınsoftun crackleri için anında oluyor diolar bu türklerde o zaman iş yok :S bu kadar kolaysa en temizi netten register olayı onu kıran yok hiç :S

    Her türlü piping işleriniz itina ile yapılır.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ertan
    ertan's avatar
    Kayıt Tarihi: 21/Temmuz/2005
    Erkek
    döküman seninse güzel.. Bunları tahribat bilgi bankasına almak lazm diye düşünüyorum

    Bundan sonra sadece insan olanlarla muhattap olacağım.. Ona göre karşıma gelin...
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    inside
    anonim6918524
    anonim6918524's avatar
    Banlanmış Üye
    Bilgi/Destek Madalyası Üstün Hizmet Madalyası
    Kayıt Tarihi: 16/Temmuz/2005
    Erkek

    efsun bunu yazdı:
    -----------------------------
    abi şu akınsoftun crackleri için anında oluyor diolar bu türklerde o zaman iş yok :S bu kadar kolaysa en temizi netten register olayı onu kıran yok hiç :S
    -----------------------------

    Hoca netten register olayıda eğer ekstradan dosya indirmiyorsa aşılabilir kolay bir şekilde.Türkler programlarını korumak adına ekstra kod yazmayı tercih etmiyorlar.Packerlarla packleyip koruduklarını zannediyorlar.Bir unpacker yada kendin açabileceğin yöntemle program unpack olunca program korumasız kalıyor.


    λ
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Stifler
    Stifler's avatar
    Kayıt Tarihi: 22/Eylül/2003
    Erkek
    hep merak etmişimdir :) paylaşım için teşekkürler fireks :P

    3 Hafta önce Sigara Öldürüyor diye okudum, sigarayı bıraktım. 2 hafta önce Alkol Öldürüyor diye okudum, Alkolü bıraktım. Geçenlerde Aşırı Seks öldürüyor diye okudum, okumayı bıraktım..
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    efsun
    efsun's avatar
    Kayıt Tarihi: 28/Ağustos/2005
    Erkek
    abi firex sen şimdi bunları yazıyonda ei hoşta bunlar programlaam bilgisi olmayan biri nasıl yapcak abi :S biraz dahad etaylı ol gözünü seveyim benburdan gördüğümle nasıl yapayım :S şöle  ne biliyim dekii şu programla şurdan şunu yaptım falan die :S

    Her türlü piping işleriniz itina ile yapılır.
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    inside
    anonim6918524
    anonim6918524's avatar
    Banlanmış Üye
    Bilgi/Destek Madalyası Üstün Hizmet Madalyası
    Kayıt Tarihi: 16/Temmuz/2005
    Erkek
    efsun bunu yazdı:
    -----------------------------
    abi firex sen şimdi bunları yazıyonda ei hoşta bunlar programlaam bilgisi olmayan biri nasıl yapcak abi :S biraz dahad etaylı ol gözünü seveyim benburdan gördüğümle nasıl yapayım :S şöle  ne biliyim dekii şu programla şurdan şunu yaptım falan die :S
    -----------------------------

    Hoca iyi diyorsunda bunlar ileri düzey şeyler.Programlama bilmeyen adamın ne işi var bunlarla önce temelleri atsın.Assembly dili hakkında temel bilgileri bilmen lazım.Mesela Assembly bilirsin.Fakat reverse engineering hakkında fikrin yoktur.Bu ayrı bir sanat çünkü.Bunları o arkadaşlarlar için yazıyorum.Sitede bu konuda fazla bilgi yok.

    λ
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Ayro
    Ayro's avatar
    Kayıt Tarihi: 08/Ağustos/2005
    Erkek

    efsun bunu yazdı:
    -----------------------------
    abi şu akınsoftun crackleri için anında oluyor diolar bu türklerde o zaman iş yok :S bu kadar kolaysa en temizi netten register olayı onu kıran yok hiç :S
    -----------------------------

    benim crackerlık ile ilgili %3 kadar bilgim var.Yani w32dasm ile açardım sonra ordan bilgi penceresini bulurdum hex prgoramı ile değiştirirdim.Bununda akın softun sanırım net muhtar prgoramını kırmıştım :) o derece yane. 

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Herbokolog
    KaptaN
    KaptaN's avatar
    Üstün Hizmet Madalyası
    Kayıt Tarihi: 30/Ağustos/2005
    Erkek
    eline saglık hojam güzel olmuş
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    SpY-EaFw
    SpY-EaFw's avatar
    Kayıt Tarihi: 27/Ağustos/2005
    Erkek
    saolasuın hoja dökümanlara eklenebilecek bişi bence (:

    ilk oyu bu sefer ben kullanamadım :Y abi ben kullanmadan oy vermeyin aq
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    WebCrow
    WebCrow's avatar
    Kayıt Tarihi: 29/Ağustos/2005
    Erkek
    Keygen yapmayı geçtim, keygenin arkasında çalan midi müziği nasıl alacağım bunu bileyim yeter?
Toplam Hit: 4970 Toplam Mesaj: 15