C# Code Injection terimini DLL Dosyaya veya Managed Exe’ye Kod ekleme olarak da ifade edebiliriz.
Bugün (Reflector, Fox ve CFF Explorer) benzeri yardımcı bir araçla var olan dll veya exe dosyalarına (bunları ifade ederken assembly diyeceğiz) kendi kodlarımızı eklemeyi öğreneceğiz (bir nevi yama uygulamak gibi) Yaptığınız kod değişikliklerini ve yamaları assembly üzerine kaydedip keyfinize göre kullanabilirsiniz.
Basit ve anlaşılır bir anlatım ile bu kolay konuyu herkesin anlayacağını düşünüyorum.Åžimdi farz edelim ki bir tanıdığımız bizim kullanabilmemiz için bir uygulama dosyası (assembly) hazırlamış ve bize yollamış. Ancak ne biçim iÅŸse uygulamayı açmaya veya kullanmaya çalıştığınızda (ÅŸifre,serial,key vs.) istiyor. Bu durumda yapacak iki ÅŸeyiniz var, ya arkadaşınıza ulaşıp uygulamanın istediÄŸi (ÅŸifre,serial,key vs.) öğrenmek, veya aÅŸağıda bahsettiÄŸim yöntemle assembly’i açıp ÅŸifre soran kısmı oluÅŸturan kodları düzenleyip kendi istediÄŸiniz bir (ÅŸifre,serial,key vs.) girmek. Arkadaşınıza her zaman ulaÅŸamayabilirsiniz veya çeÅŸitli nedenden (ÅŸifre,serial,key vs.) öğrenemeyebilirsiniz, aÅŸağıda anlattığım yöntem çoÄŸu durumda iÅŸinize daha çok yarayacaktır.
Evet baÅŸlıyoruz. AÅŸağıda gördüğünüz örnek bir uygulamamız. Åžifre soran bu textbox istenilen ÅŸifreyi girdiÄŸimizde bize sihirli bir sayı gösterecek, yanlış ise bize hata verecektir. Åžanssızlık iÅŸte, textbox’ın istediÄŸi ÅŸifreyi bilmiyoruz. Bu durumda yapacak baÅŸka ÅŸey kalmıyor

AÅŸağıdaki kodlara bakıp görebileceÄŸiniz gibi olay aslında basit bir string karşılaÅŸtırmasından ibaretmiÅŸ. O zaman buradaki kodları deÄŸiÅŸtirdiÄŸimiz zaman ÅŸifre sorunumuz ortadan kalkacaktır. (Bu arada aÅŸağıdaki resimde olduÄŸu gibi assembly’lerin içeriÄŸindeki kodları görebilmek ve düzenleyebilmek için Fox Decompiler ve Reflector uygulamalarını araÅŸtırabilirsiniz)

Biz bu anlatımda Reflector uygulamasını kullanacağız. Assembly dosyasımızı Reflector uygulamamızda bir text dosyasıymış gibi görmemizi ve düzenlememizi sağlayan bir Plug-in olan
Reflexil eklentisini buraya tıklayarak indirin, daha sonra zipli dosya içerisindeki reflexil.dll’i çıkarın
ve aÅŸağıdaki resimlere bakarak bu plug-ini Reflector’a ekleyiniz.

Plug-in’i ekledikten sonra Reflectorla uygulamamızı açıyoruz ve CheckKey() metodunu disassemble ediyoruz. Reflector’un Tools menüsüne geldiÄŸimizde az önce exlediÄŸimiz Reflex’il eklentisinin çıktığını görebilirsiniz. Buna tıkladığımızda ise hemen alt kısımda ilgili kodun IL’ini görebiliriz. Bu kısıma saÄŸ tıkladığınızda gelen menüden editleme, silme ve kod ekleme iÅŸlemlerinin yapıldığı menülerden yapacağımız iÅŸleme göre hareket edebiliriz.

Aslında burda düzenleme yapabilmek için iyi bir IL bilgisine sahip olmamız gerek. Ancak context menüsündeki “Replace all with code” menüsü IL bilmedende düzenlememize olanak saÄŸlıyor. Reflector’ün ürettiÄŸi kodun sadece metodun içindeki kodu kopyaladıkdan sonra Replace all with code menüsünü tıklayalım. AÅŸağıdaki gibi kopyaladığımız kodu metodun içine kopyaladıkdan sonra istediÄŸimiz deÄŸiÅŸiklik ve eklemeleri yapalım.Sol alt kısımdakı “Preview IL” butonuna tıkladıkdan sonra SaÄŸ alt kısımdakı Ok butonu aktifleÅŸecektir. Ok dedikten sonra Reflexil yeni kodlarimizi artık injecte etmiÅŸtir.

Görüldüğü gibi uygulamamıza yeni bir satır eklendi ve metodda eÄŸer ”huh!” deÄŸeri girilirse false, ”huh!” dışında kalan baÅŸka bir deÄŸer girildiÄŸinde ise true deÄŸeri üretecektir
Bakalım şifreyi doğru tahmin edecek kadar şanslı olacak mısınız
Soldaki ağaçtan assembly mizi seçtiğimizde Reflexil bize uygulamayı kaydetme imkanını verecektir.

Düzenlediğimiz dosyayı kaydedip çalıştırdığımızda ise karşımıza aşağıdaki gibi bir sonuç gelecektir:

Umarım bu anlatımımız çalışmalarınızda kullanabilceğiniz iyi bir kaynak olmuştur.
Örnek bir uygulama indirmek için buraya tıklayınız.
Katkılarından dolayı OÄŸuz YaÄŸmur’a teÅŸekkür ederim.
Yazının uzun olması incelenmesi açısından biraz zır oluyor biliyorum ama elimizden geldiğinin en iyisi bu olsa gerek diye düşünüyorum. Bol bol resimli örnek sayesinde olayı anlaşılır kılmak adına böyle oldu.
Bu yazı toplam 3.335 defa okunmuş.
Yazıya
Saolsn güzel bilgi
tÅŸkler
gerçektende yararlı bilgi.kendini geliştirmek isteyenler bu siteyi takip etmeli
Åžimdi amma kolaylaÅŸmış programlar ali. ben lisede programcılık dersinde pascal kullanıyordum var, integer falan filan hep yazıyodu hiç böyle görsellik yoktu hatta bir kütüphane kitap kayıt programı yaptıydım taa 2001′de ÅŸimdi unuttuk gitti.
crack denilen şeyler böyle mi yapılıyor yani?
TeÅŸekkürler güzel bir makale …
http://rapidshare.com/files/186972349/blog_codeinjection.rar
bu link sanırım kırık
anlamadım biraz ama idare eder yüklemesem olmıyomu