Sayfalar

reverse engineering etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
reverse engineering etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Pazartesi, Ekim 20, 2008

MKY ile karşılaşma ve ...

İnsanların kaçta kaçı düşünür?
Düşünenlerin kaçta kaçı karşılaşır
ve açılır birbirine
Ortak ilgi alanına sahip insanların görüşmesi konusundaki fikirlerimi yazmıştım. Böyle fırsatlar ele geçtikçe değerlendirmeye çalışıyorum . Internet üzerinden tanışıpta yüz yüze görüştüğümüz kişiler de oluyor. Kendi adıma bu görüşmelerden çok istifade ettim. - mesela VS OpenCv ilgimi perçinledi, HB FannTool'un gelişmesinde yönlendirici oldu - İşte bu tarz görüşmelerden biri geçtiğimiz cumartesi gerçekleşti.

MKY ile cumartesi iş çıkışı buluşmak üzere sözleştik. Görüşmemiz ilk olması hasebiyle daha çok tanışma faslı tarzında oldu. Anlayabildiğim kadarıyla MKY, pek çok konuda benden daha bilgili ve dahi benden daha genç bir arkadaş. Özellikle G.A. benzeri YZ metodlarıyla ilgili ciddi çalışmaları olmuş....

Sonuçta ortak ilgi alanlarına sahip insanlarla tanışmanın konuşmanın verdiği bir memnuniyet kaldı. Böyle niteliklere sahip gençlerle tanışmak da umut kaynağı oluyor. Ah bir de öğretici yazılar yazarak projeler yayınlayarak, bilgisini umumun istifadesine açsa.

Perşembe, Kasım 01, 2007

EXPIRED DOMAIN - mdkgroup

Genç düşünce, forumlarda kanat çırpar. Yasak bölge tanımayan bir tecessüs; tanımayan, daha doğrusu tanımak istemeyen. En çatık kaşlılarında bile insanı gülümseten bir "itimâd-ı nefs", dünyanın kendisi ile başladığını vehmeden bir saffet var. Tomurcukların vaitkâr gururu.

Bir şehrin iç sokakları gibi mahrem ve samimidirler. Devrin çehresini makyajsız olarak onlarda bulursunuz. Müzeden çok antikacı dükkânı, mühmel ve derbeder.

Forum, hür tefekkürün kalesi. Belki serseri ama taze ve sıcak bir tefekkür. Kitap, çok defa tek insanın eseri, tek düşüncenin yankısı; Forum bir zekâlar topluluğunun. Bir neslin vasiyetnamesidir forum; vasiyetnamesi, daha doğrusu mesajı. Kapanan her forum, kaybedilen bir savaş, hezimet veya intihar...
Bir süredir mdkgorup forumuna girmeye kalktığımda "EXPIRED DOMAIN" mesajıyla karşılaşıyorum. Reverse Engineering Konusunda pek çok şey öğrendiğim ve MrStop, Vona, Slayer, Odin, ve adınını sayamadığım pek çok zeka ile sanal olarak tanışma fırsatı bulduğum
Forumun bu şekil de kapanması dokundu bana olmasın sonumuz böyle !

Salı, Temmuz 10, 2007

Kırılamayacak Program olurmu ? 3

Serinin 3. ve de sonuncusu olmasını umduğum bu yazı gecikti kusura bakmayın. Aslında yazıyı taslak olarak hazırlamıştım. Fakat bir türlü fırsat bulup düzenleyemedim. Serimizin başlangıç sorusuna dönelim.
Kırılmıyacak program olur mu?
Programı kaynak koduyla dağıttığınızı düşünün Nasıl ki o dili bilen biri gereken yerleri değiştirip Ne şekilde olursa olsun korumayı kolayca kaldırabilir. İşte aynı şekilde Assembly bilen biri için programınızın koduna ulaşabiliyorsa korumayı da kaldırabilir. Yani
Teorik olarak Program çalışıyorsa kırılabilir.

Peki Kırılmasını nasıl zorlaştırabiliriz ?
  • Bir tanımla başlayalım, Programın kırılması ; "Koddaki kontrol kısımlarının devre dışı bırakılması -crack- yada kontrol kıstaslarının programın içinde tespit edilip haricen kullanılmasıyla-keygen- kontrol kısmının atlatılması" demektir. Tanımdan da anlayabileceğiniz gibi korumanın özü koda ulaşılmasını engellemektir.
  • Pek tabi ki bütün kodu didik didik incelemek çok zahmetli iştir o yüzden kodun kritik kısımlarına ulaşılmasını zorlaştırmak yeterli sayılabilir
  • Koda ulaşılmasını engellemenin en kolay ve ucuz yolu packer dediğimiz prograları kullanmaktan geçiyor. Bu programlar sizin programınızı sıkıştırıp bir kendi kendine hafızada açılıp hafızada çalışan bir program haline getirir. Unpacker denen programlarla programlarınızı eski haline çevrilebilsede, Programın kendisini kontrol ettirterek ve packerların en son versiyonlarının kullanımıyla Epey bir insanı programınızla uğraşmasını englleyebilirsiniz.
  • Program kendisini nasıl kontrol edebilir ? Programda değişiklik yapılıp yapılmadığını checksum'la yada CRC benzeri metodla kontrol edin. Eğer değişiklik yapılmışsa uyarı vermeyin programı saçma bir hatayla kırılmasını sağlayın.
  • Programıcı olarak kullanıcıyı yönlendirmek için mesaj vermek zorunda kalırız . mesela "Hatalı Kayıt No !.." gibi Bu da kodun kritik yerlerine ulaşılmasını çoook kolaylaştırır. Peki ne yapıla bilir mesela Hata mesajı vermeyip kullanıcı ister doğru ister yanlış kayıt no girsin programı kapatın. Program yeniden çalıştırıldığında kontrol edip ona göre deneme ya da kayıtlı olarak çalıştırın, Kayıt durumunu da mesela Programın versiyon bilgisinin verildiği hakkında -About- kısmında yazabilirsiniz.
  • Hiç mi mesaj veremeyeceğiz tabii ki hayır ; mesaj verecekseniz mesaj metnini şifreli olarak programın içinde tutun kullanacağınız zaman şifresini açıp kullanın.
  • Sahte kontrol kısımları hazırlayıp, şaşırtmacada yapabilirsiniz
  • Kritik kısımlarda kullandığınız dialog pencerelerini tamamen çalışma anında oluşturmanında büyük faydası olur.
  • Kontrol kısmının da bir timer'ın içinde yapılması debug edilmesini güçleştirir.
  • Birden fazla yerde kontrol edin Kontrol işlemini string karşılaştırma olarak kesinlikle yapmayın.
  • Reverse Engineering için epey gelişmiş programlar var. Bu tür progralarla kodunuza müdaheleyi engellemek için de epey karmaşık metod var. çok aşırıya kaçmamak kaydıyla şu yazıdan feyz alabilirsiniz.
  • Bu yazılardan da faydalanabilirsiniz 1, 2, 3, 4
  • Benim programım kıymetli kardeşim diyorsanız. Programınızın değerine ve de kesenize göre çeşitli ticari çözümler var; bakınız çeşitli Koruyucular -Protector-
  • Daha da olmadı Biraz tuzlu olmakla beraber Kırma işini donanım olarak korumaya yardım eden Dongle seçeneğinizde var

Cumartesi, Temmuz 07, 2007

Kırılamayacak Program olurmu ? 2

Bir önceki yazıda verdiğimiz Programı indirin ve inceleyin. Temel olarak kayıt işlemi yapması için gereken her şeye basit de olsa sahip.

Daha önce yazdığımız Anti-Crack yazısını da gözden geçirin

Derlenmiş program makina kodu olarak dosyada İşletim sisteminin belirlediği formatta tutulurlar.

Makina kodunun bire bir eşleniği Assembly programlama dilidir.

Biraz Assembly bilen biri bazı programları kullanarak programınıza müdahele edebilir

Debugger denen programlar Programınızı assembly olarak görmenize ve çalıştırabilmenizi sağlar

Önce Alet edavat toplayalım Bu basit program için sadece OllyDbg yeterli. Tabii pek çok alternatif program var. Mesela IDA için şu resme bir bakınız. Assembly koddan akış diyagramı bile çıkarıyor...

Uzun boylu anlatacak yada anlata bilecek değilim OllyDbg ile programımızı açıyoruz

Programın içindeki bütün stringleri tespit ettiriyoruz

Kayıtlı kullanıcı oldunuz mesajından pogramın bu kısmına zıplıyoruz

Bu mesajı veren koda zıplanan yeri buluyoruz o kısım işte bizim if ile kayıt numarasını kontrol ettiğimiz yer. o kısma bir breakpoint koyuyoruz
programı çalıştırıyoruz Kayıt numarasına rastgele birşeyler yazıp kayıt ol diyoruz. Breakpoint ile program duruyor. aman Allahım o da ne Hesaplanan kayıt no aşikare görülüyor.

Breakpoint koyduğumuz if kısmı var ya orada koşulu tersine çeviriyoruz
yani JE -> JNE çeviriyoruz , Programda sadece 1 bytelık değeri değiştiriyoruz 74 -> 75 oluyur. Program artık rastgele girdiğimiz kayıt numarasını kabul ediyor.

Sonra daha da ileriye gidiyoruz Programın "Hatalı Kayıt No" mesajının adresi yerine Gerçek Kayıt No adresini veriyoruz

Programa artık girdiğiniz yanlış Kayıt No için hata mesajı yerine Gerçek Kayıt No'yu gösteriyor

Programı niçin Nasrettin Hocanın türbesine benzettiğimi ve Artık Anahtarı nerede kaybettiğimizi anladınız sanırım. Artık Anti-Crack yazısını tekrar okuyun. !
Eskiden yazdığım Bir Parçacık kırılması zorlaştırılmış şu programı da inceleyin belki size ilham verir. Keygenme
Bir parçacık deyince yabana atmayın Adamlar Koca muhasebe paketini öylesine ortaya bırakıyorlar bu kadarcık bile uğraşmıyorlar...

Kırılamayacak Program olurmu ? 1



Hoca Nasrettin evinin önünde bir şeyler arıyormuş Komşusu görmüş ve sormuş
- Hayırdır hoca ne arıyorsun ?
- Abahtarımı kaybettim de
Komşu da bir süreliğine hocayla birlikte aramaya başlamış. Bir süre sonra hocaya sormuş
- Hoca buralarda kaybettiğine eminmisin ?
- Yooo ben anahtarı samanlıkta düşürdüm.
- İyide hoca niye burada arıyorsun
- Burası daha aydınlıkta ! ondan
-...
Büyüüüüüüüük emekler sarfederek programımınız yazdık satmak istiyoruz, Müşteride hazır fakat programımızı nasıl muhafaza edeceğiz. Sadece müşterimizin bu programı kullandığından nasıl emin olacağız?

Başlıyoruz diğer programları incelemeye; Programlarda genel olarak yapılan şey Kullanıcıdan bir kayıt numarası isteniyor numara doğru ise program kayıtlı hale geliyor kısıtlamaları kalkıyor, falan filan,...

Büyük bir şevkle başlıyoruz işe bilgisayarın sabit bir bilgisini alıyoruz. Sabit bilgi üzerinde bir takım işlemler yapıp Güvenlik kodu diye bir numara türetiyoruz. Müşterimiz kaydolmak istediğinde kendisinde kullanıcı adı ve Güvenlik kodunu istiyoruz. Güvenlik kodundan müşteri bilgisayarının sabit bilgisini çıkarıyoruz. Kullanıcı adıyla harmanlayıp Kayıt No oluşturuyoruz.
Buyrun Basit Kayıt Programımız hazır : Protect
Artık Programımız satılmaya hazır !... mı Acaba ?

Programlama forumlarında belli aralıklarla
... ile kopyalama koruması nasıl olabilir?
.. Lisans İşlemleri nasıl olacak
... Kırılamayacak program Nasıl olur ?

ve benzeri konular açılır ve başlanır havanda su dövülmeye Hard diskin Fabrika seri numarasını okuyalım, yok bilgisyarın mac adresini okuyalım, gibi öneriler gelir. Başa dönersek Hoca Nasrettin bize diyor ki : Anahtarı nerede kaybettiyseniz orada aramak gerektiğini biliyorsanız, Programı korumanın, Nereden kırıldığını bilmekle başlıyacağını bilmeniz lazım. Gerçekten Programcıların çoğu için bu konu karanlıktır. O yüzden çözümü başka yerlerde ararlar. Farzı muhal programınız kullanıcının cebindeki kimlik nosu okuyabilsede kullanıcının
retinasından kimliğinide alsa yaptığınız şey aydınlık diye samanlıkta kaybettiğiniz anahtarı kapıda aramaktır.
Bilin ki Bu haliyle Programınız Hoca Nasrettin'in türbesi gibi kapısında kilidi ! vardır ve fakat duvarları yoktur...




Perşembe, Eylül 21, 2006

Anti Crack üzerine

Nedir Bu Reverse Engineering dedikleri ? yazımızda belirttiğimiz gibi çoğu kimse Reverse Engineeringden Crack işini anlıyor. Oysa RE sayesinde programlarınızın kırılmasını zorlaştırabilirsiniz

  • Program korunmaya değermi ? Değmezse hiç uğraşmayın çünkü Kırılmıyacak program yoktur…
  • Programınız çok kıymetliyse ! profosyonel çözümlere bakın
  • Anti-Debugging* için önlemler alın.
  • Programlarınızda anlamlı prosedür isimleri kullanmayın bool KontrolSeriNo(...) gibi Kolaylıkla devre dışı bırakılabilir - siz hiç derlediğiniz programlara DeCompiler** larla baktınızmı baktınız mı ?
  • Kullanıcının bir şekilde programı kırmaya çalıştığını tespit ettiyseniz . aman uyandırmayın bir veya iki gün bekleyip haberdar edin. Mesela Hatalı bir seri noyu bir jump değişikliğiyle doğru olarak kabulettirdiyse hemen bunu bidirmeyin bir gün sonra akkında dialogunda gösterin
  • CheckSum kullanın
  • Kodunuzun kendi kendini onarır hale getirin. SMC***
  • Parola girildikten sonra 1 veya 2 sn bir bekleme koyun. Deneyerek parola kırmayı -brute force -zorlaştıracaktır.
  • Birden fazla kontrol rutini yazın her seferinda farklı yada rastgele- bir şekilde çağırın.
  • Seri No kontrolünü string karşılaştırmayla yapmayın ****
  • Sistem saatine ve tarihine güvenmeyin!
  • Kritik Mesajları – mesela kullanım süreniz dolmuştur vb gibi- kodun içine düz şekilde yerleştirmeyin şifreleyin ve dinamik olarak oluşturun.
  • Koruma şemanızı açıklamayın
  • Önemli dialog kutularınızı ve menülerinizi dinamik olarak oluşturun -çalışma zamanında-
  • Demo versiyonlarınızda kısıtladığınız opsiyonları sadece disable yaparak yapmayın ilgili koduda kaldırın. – sadece ilgili kısmı enable yaparak kullanıma açabilirler-
  • Kullanıcıya programın hakkında bilgiyi Hakkında dialog kuytusunda verin
kısa kısa ve yazdım ama sizin için birer ip ucu olabilir eğer açık olmayan kısımlar varsa becere bildiğim kadarıyla açıklamaya çalışırım.

* En basit olarak IsDebuggerPresent() API var mesela
**
mesela Delphi ve CBuilder için DeDe var
*** Self Modified Code kendini değiştiren kod
**** Debugger ile kontrol kısmına gelip doğru Seri No yu kolaylıkla alabilirler hatta verdiğiniz hata mesajıyla doğru seri Noyu değiştirip sizin programınızla keygen yapıverirler :)

Pazartesi, Temmuz 03, 2006

Nedir Bu Reverse Engineering dedikleri ?

İlgi alanlarım arasında geçmesine rağmen daha önce hiç Reverse Engineering konusunda yazmamıştım.
Nedir Bu Reverse Engineering* dedikleri şey ?

Herkesin bildiği gibi Engineering 'in karşılığı Mühendislik. Nedir Mühendislik ? Mühendis dediğin Uygulama ve Üretim yapar -asıl olarak - Mesela Bir benzinli motorun çalışma prensibini herkes bilir - Liselerde bile öğretiyorlar- Ama herkes motor üretemiyor, çünkü pek çok uygulma probleminin halledilmesi lazım. İşte mühendisler bu alanlarda çalışırlar. Yani Ana bir fikirden yola çıkıp umumun kullanabileceği bir ürüne ulaşmak. Bunun içinde Hem araştırma geliştir me hemde üretim vardır. İyide Reverse Ne olaki. Reverse'yi ters diye çeviriyorlar ama bu işte bir terslik var . :) buradaki Reverse'nin anlamı ortada bir ürün vardır ve siz o üründen yola çıkıp nasıl üretildiğini anlamaya çalışırsınız. Kısaca Mühendislik fikirden ürüne ise ters mühendislik üründen fikire ulaşır - tabii ki üzerinde ufak tefek değişiklikler yapıp ürünü kendisi üretmek için-

Eğer tanımı anladıysanız, Tarihçesinin de taa tekerleğin icadına kadar gittiğini anlarsınız. Bize ne tekerleğin icadından sen bize düzgün bir örnek ver derseniz, Size common-rail yeni nesil dizel motorları örnek olarak verebilirim.
cdti Opel
crdi Hyundai
hdi Peugeot
cdi Mercedes
jtd Fiat
tdci Ford
bu yani bunu ilk üretenin ürünü üzerinde diğer firmalar RE çalışması yapıp
bazı değişikliklerle başka bir isimde tescil ettirmişler Hepside common rail dir aslında

İyi de kardeşim sen ne diyorsun bir RE denince Cracking işini anlıyoruz. Cevap veriyorum yanlış anlıyorsunuz. Cracking**adı üzerinde kırma işlemidir ve programların lisanssız kullanımını engellemek için konulmuş korumaları kırmaya / kaldırmaya denir. -yazılım alanında tabii ki - RE çok daha geniş manası var ve tabii ki Programlar konusundada uygulaması var. Diyelim ki bir program yazacaksınız ve bu konuda yazılmış çok başarılı bir program var. Alıp incelersiniz.

- Oo programı başarılı yapan ne ? ne gibi eksiklikleri var ?
- Menüleri nasıl düzenlenmiş - hımm biz de benzeri şekilde yapalım aynı kısa yol tuşlarını kullanalım kolaylık olsun-
-Verilerini dosyda şu şekilde tutuyorlarmış - bu veri yapısından import edelim-
-Bunları yapmak için filan kütüphane kullanılmış yada hangi API lar nasıl kullanılmış

gibi pek çok sonuca ulaşabilirsiniz. Tabii bunları yapa bilmeniz için Assembly'yi bilmeniz lazım Bu işler için kullanılan araçları kullanabilmeniz lazım. Anti Debugging tekniklerinide öğrenmeniz lazım. Bu Aynı zamanda kendi kendi ürünleriniz konusunda RE uygulamaya kalkanların işlerini zorlaştırmak için de lazım olur :)
Pek Tabii Bu kadar şeyi bildikten sonra Cracking de yapabilirsiniz. Yalnız sadece program kırmak için bu kadar emek haracamak ne kadar mantıklıdır ? Kırığını bulun ;) daha iyi .

Bu arada Crackingi küçümsediğim anlaşılmasın. Eğer Cracking olmasaydı kim Ne öğrene bilirdi ki. Sadece lisanslı programların kullanıldığı -daha doğrusu lisans ücretleri yüzünden kullanılamadığı- bir ülkede büyüdüğünüzü düşünün. Hemen hemen hiç birşey öğrenemezdiniz. Ama Bu işinde bir ahlakı olmalı diye düşünüyorum. kısaca Cracker RobinHood*** gibi olması lazım Ama bu belkide başka bir yazı konusu...

Son olarak Bir kaç link verelim

http://mdkgroup.com/forum/
http://exetools.com/
http://boomerang.sourceforge.net/
http://lkubaski.free.fr/reverse/reverse.html
http://www.sct.tr.cx/
http://www.dtcg.org/
http://tutorials.accessroot.com/
http://www.informit.com/articles/article.asp?p=353553&seqNum=3&rl=1
http://community.reverse-engineering.net/
http://home.arcor.de/idapalace/

* Reverse engineering (RE) is the process of discovering the technological principles of a mechanical application through analysis of its structure, function and operation. It often involves taking something (e.g., a mechanical device, an electronic component, a software program) apart and analyzing its workings in detail, usually with the intention to construct a new device or program that does the same thing without actually copying anything from the original. The verb form is to reverse-engineer. diyor Wikipedia bir inceleyin derim
** reverse engineering ile karıştırılan manasıyla yoksa başka anlamlarıda vardır
*** cracking dökümanlarında rastlayacabileceğiniz
Bir programı kullanarak para kazanıyorsanız, programı satın alın.
Bir programı eğer gerçekten kullanıyorsanız, programı satın almayı düşünün.
gibi sözlerden anlaşılanda bu.

Cumartesi, Aralık 03, 2005

Cracker'ın Hazin sonu !


"Bu resimde nerden çıktı yoksa bluekid'de La panse gibi romantik uzakdoğu filmleri hastalığına mı düçar oldu ?" diyorsanız
Allaha şükürler olsun yok öyle birşey !

Resimin hiyayesine gelince....

Reverse-enginnering / Cracking işleriyle uğraşanların bildiği bir sitedir. "http://www.exetools.com/" yada "Aaron's Homepage" sitede Compressors, File-Analyzers , Protectors , Unpackers, Debuggers, Disassemblers, Hex-Editors, Patchers, Tutorials, gibi kısımlarda Cracking ile ilgili pek çok tool bulunmaktadır - reklamları dinlediniz -

Siteye girdiğimizde ikişey dikkatimizi çekmektedir
1) What's New? kısmının tarihi "08.17.2002" eee bu adama ne oldu siteyi niye güncellemiyor gibi sorunun ip ucu da sanırım ikinci dikkat çeken şeyde
2) siyah zemin üzere dizay edilmiş sayfanın başında "Please visit my forum" kısmının altında kırmızıyla
"Dear Beverly, Let me tell you I love you." yazısını okuyarak anlıyoruz ki işin içine bir kadın girmiş...
Bizde ricaya uyup -aynı zamanda merakımızı da gidermek için - forumu ziyaret ediyoruz
http://forum.exetools.com - yine reklam :) -
forumun General Discussion kısmına girince Beverly tarafından gönderilmiş
"wedding (Aaron and me!)" -Aaron ve benim düğünüm- mesajına girip
"Hello everybody,
I am Beverly, I am going to marry Aaron on DEC 18, 2003."
yazısını okuyunca Aaron'nun hazin sonunu anlıyoruz. Yukardaki fotoğraf Aaron'nun akibetinin resmidir. Ne diyelim Alllah Mesut bahtiyar etsin birini daha kaybettik ;) - olay eskide olsa acımız tazedir :)

Not : Resimde Beverly'nin mutluğu ve Aaron'nun hüznü -ne kadar saklamak istesede - belli oluyor :)