İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

DLL ile Güvenlik Sağlanır mı ?

hakanizm

0
İyinet Üyesi
Katılım
11 Mayıs 2006
Mesajlar
1,952
Reaction score
1
Konum
Nereye
Diyelim ki üzerinde 4 ay çalışacağım büyük bir projeye başlıycam..

Bu projeyi satışa sunup, onlarca kişiye satıcam..
Sattığım bir kişinin de başkalarına satamaması veya bedava dağıtamaması için kodlarımı DLL ye çevireceğim.. Bu şekilde kodları korumuş olacağımı düşünüyorum..

Eğer kodların tümünü dll ye çevirirsem dll yi açıp kodlarımı bulabilme ihtimalleri var mı acaba ?

Yani dll tam güvenlik sağlar mı ?

Örneğin dll içinde kodumda şöyle diycem en üst satırda.. Şuanda sitenin çalıştığı adres aaa.com değilse Error.html e git. Bu iyi bir güvenlik yöntemi midir ? Bu yöntem çok kolay görünüyor dll + domain bazlı.. Acaba kırılabilirler mi bu yöntemi ?
 
A

a.ışık

Misafir
php'de de dll'e çevrilebiliyor mu?
peki php'leri de dll'e çevirsek bunu
host dsetekler mi, ayrıca bişey mi
kurmamız gereklidir çalışması için??
 

CMYLMZ

0
İyinet Üyesi
Katılım
8 Aralık 2006
Mesajlar
1,775
Reaction score
0
Konum
Forumdan ayrıld
Diyelim ki üzerinde 4 ay çalışacağım büyük bir projeye başlıycam..

Bu projeyi satışa sunup, onlarca kişiye satıcam..
Sattığım bir kişinin de başkalarına satamaması veya bedava dağıtamaması için kodlarımı DLL ye çevireceğim.. Bu şekilde kodları korumuş olacağımı düşünüyorum..

Eğer kodların tümünü dll ye çevirirsem dll yi açıp kodlarımı bulabilme ihtimalleri var mı acaba ?

Yani dll tam güvenlik sağlar mı ?

Örneğin dll içinde kodumda şöyle diycem en üst satırda.. Şuanda sitenin çalıştığı adres aaa.com değilse Error.html e git. Bu iyi bir güvenlik yöntemi midir ? Bu yöntem çok kolay görünüyor dll + domain bazlı.. Acaba kırılabilirler mi bu yöntemi ?


if adres bilmemne degil ise (gidilecek adres)
else if bilmemne ise gidilecek adres....

peki ASM de buna her ikisinede gidilecek adres dersek ne olur sence ?
 

hakanizm

0
İyinet Üyesi
Katılım
11 Mayıs 2006
Mesajlar
1,952
Reaction score
1
Konum
Nereye
CMYLMZ
ASM derken neyi kastettiğini bilmiyorum ?

tiva peki ne tam güvenlik sağlar ?

Yani bir proje yapıyorsunuz 4 ay uğramışsınız.. Birileri de almış sizin projenizi kendi projesi gibi satışa sunmuş.. Böyle birşeyin başıma gelmesini istemiyorum. Bunun için ne yapabilirim ?

DÜZENLEME 1 : Başka bir forum sitesinde şöyle bir yorum geldi ; DLL lerin içi açılırken %60 ını görebilirlermiş.. %40 ı bozuk çıkar veya çıkmaz gibi birşey söylediler.. Doğru mu ? Yani dll nin içinin %100 ü görülemiyorsa o zaman sorun yok zaten.. Geri kalan kısmını bulmak için uğraşmazlar herhalde

DÜZENLEME 2 :

index.aspx
index.aspx.vb

bu iki kodu dll ye çevirdim. İki dosya tek dll de birleşti. Adı da App_Web_wokxpsqb.dll oldu.
Bu dll dosyasını reflector adında bir net dll decompiler programıyla açtım. İçinde kendi yazdığım değişken adları falan görülüyor.. Ayrıca onlarca şey görünüyor.. Hepsi de karışık şeyler.. Ama anladığım kadarıyla birileri benim yaptığım dll dosyasını açıp kodlarımın %100 ünü göremiyorlar.. Hatta ben yanlış yere mi baktım bilmiyorum %90 ını bu programla göremedim.. Ama %90 ını görmüş olsam da geri kalan %10 luk kısmı için kırmaya çalışan insan oturup kod yazmaz zaten.. Yani bence projem gördüğüm kadarıyla dll ile güvenlik altına girmiş oldu.

Gelelim ikinci konuya.. Kodlarımda bu site aaaa.com değil ise error.html e git diyicem. Bu yeterli bir güvenlik olur mu ? Yoksa başka ne deneyebilirim ? Cem Yılmaz asm de bu kodu değiştirebileceğine emin misin ?
 

DincerAydogdu

0
İyinet Üyesi
Onaylı Üye
Katılım
15 Nisan 2005
Mesajlar
1,741
Reaction score
29
Konum
Live in .NET
Bana bir .NET DLL gönder sana bunu kaynak kodlarıyla proje olarak göndereyim. (Üstelik istediğin dilde) Projeyi aldıktan sonra da güvenli olup olmadığına sen karar ver :)

Senin imdadına yetişecek olan ".net obfuscate". Yani kod karıştırma ve çekirdeği low levele çevirme. Bir çok 3rd party yazılım dağıtımcısı yazılımının lisans bölümünü c++'da kodlar. Ardından da kodlarını obfuscate eder.
 

rydens

0
İyinet Üyesi
Katılım
13 Ocak 2008
Mesajlar
22
Reaction score
0
eğer piyasada ciddi anlamda iş yapacaksan sana önerim dll dışında .net için kodları şifreleyen programlar var biraz pahalı ama kimsede yok gibi ondan dolayı guvenlik altına almış olursun hem kodları hem datayı şifrelersen rahat edersin
 

hakanizm

0
İyinet Üyesi
Katılım
11 Mayıs 2006
Mesajlar
1,952
Reaction score
1
Konum
Nereye
Şimdi sorularıma ceviz.net sitesinde bir arkadaş cevap yazmış. Yazdığı cevabı ve benim ona cevabından sonra sorduğum soruyu buraya yazacağım.. Soracağım soruya sizler de cevap verirseniz sevinirim.. Bu arada DincerAydogdu diğer arkadaşın tavsiye ettiği program dotfuscator senin ki de obfuscate arasındaki farkı biliyor musun ?

---------------------
Diğer arkadaşın cevabı :
Reflector ile kodun tamamı görünebilir. Kod karıştırma işlemi sadece elde edilen kodun değerlendirilme işlemini zorlaştırır. Eğer programın kırılmaya değer olduğuna inanıyorsan o zaman bu niyette olan kişinin işini zorlaştırman lazım. İlk adım uygulamayı dll içine paketlemektir. Böylece sunucuya erişimi olan herkesten bir ölçüde korumuş oldun.

Ama reflector kullanan herhangi bir şahıs, yine kodlarını görebilecek. İkinci adım olarak dotfuscator (veya başka bir kod karıştırıcı) ile kod çözülse bile anlamsız ve karmakarışık hale gelecek şekilde düzenledin. (ByVista nın verdiği bağlantı bu kavramı çok iyi açıklamaktadır.) Şimdi sunucuya erişimi olan şahıs reflector ile kodu disassemble etse dahi, çözmesi aşırı zorlaştı. Neredeyse senin programı geliştirirken sarfettiğin eforun birkaç mislini harcaması lazım ki, senin programın içine yerleştirdiğin kontrol noktasını bulup, msil ile değiştirip atlatsın.

Senin yazdığın program, dünya çapında yaygın kullanılan bir program olsa, veya eşsiz ve tekniği merak edilen bir program olursa, bu efor da sarfedilir ve program senin koyduğun kontrol noktası atlatılarak çalıştırılabilir.

Kendine bir karıştırıcı araç seçersen, bulduğun her güvenlik önlemi yeterli olacaktır diye düşünüyorum. Çünkü "Control flow" tekniği senin yaptığın kontrolü gizleyecektir.
---------------------
**************************
Benim ona ve sizlere sorum :
---------------------------
Verdiğin bilgiler için teşekkürler.
Öncelikle dotfuscator kullanım şekli tam olarak nedir ? Yani adımların sırası nasıldır ?
1- dotfuscator ile kodları karıştırmak
2- karışmış kodları dll ye çevirmek
Yoksa
Tam tersi mi ?
1- kodları dll ye çevirmek
2- dll yi dotfuscator ile karıştırmak

Bir de şu var dll yapmak bir satırlık dos komutuyla mümkün.
Peki dotfuscator kullanımı basit midir ? Yani birkaç karışık işlem mi yapmalıyım ? Yoksa Open File And Mix falan mı demeliyim ?

Not: Reflector ile kodları bulmayı ben beceremedim o zaman.. Çünkü benim kendi değişkenlerimi gördüm. Onlarca farklı şey gördüm. Değişkenlerime tıkladığımda da standart 3-5 satırlık kodlar görmüştüm. O kodlar da bana ait değildi.
 

hakanizm

0
İyinet Üyesi
Katılım
11 Mayıs 2006
Mesajlar
1,952
Reaction score
1
Konum
Nereye
DincerAydogdu sadece merak ettiğimden bundan bir sene önce yapmış olduğum bir dll dosyasını rapidshare e gönderdim :)

http://rapidshare.com/files/114812326/App_Web_wokxpsqb.zip.html

Rica etsem bunun içindeki kodları bana gönderebilir misin ?:) (Gönderirken yine rapidshare e koyarak gönderirsen sevinirim. Rapidshare adresini buraya yazabilirsin. Kodlar önemli değil)

Yanlış hatırlamıyorsam vb dosyasında 1617 satırlık kod vardı. aspx dosyasında da 2274 satır kod vardı. Kaç satır olduğu önemli değil. Senin program bu iki farklı dosyayı da ayırabiliyorsa süper verimli çalışıyor demektir. Eğer bu dll yi açabilirsen içerisinde yukarıda verdiğim rakamlar kadar kod çıkmayabilir belki.. Çünkü kodları bitirmeden de dll yapmış olabilirim.. Ama en azından en üst satırdan ortaya kadar kodlar nasıl görünüyor merak ediyorum :)
 

DincerAydogdu

0
İyinet Üyesi
Onaylı Üye
Katılım
15 Nisan 2005
Mesajlar
1,741
Reaction score
29
Konum
Live in .NET
Bu arada obfuscate genel bir terimdir. dotfuscator ise bu işi yapan programlardan sadece birisidir. En iyisi olmasa da bence bir çok arkadaşın işini görür.
 

hakanizm

0
İyinet Üyesi
Katılım
11 Mayıs 2006
Mesajlar
1,952
Reaction score
1
Konum
Nereye
Kodları görünce şaşırdım :)
Benim görebildiğim kodlardan çok daha fazlasını görebilmişsin.
Hangi program ile kodları export yapabildin ?

Yine de..
Şöyle bir baktığımda benim kodlarımın çoğu yerinin değişmiş olduğunu gördüm. Örneğin alttaki formatta çok fazla kod var.. Ve ben böyle bir kod yazmadım.
---------------
Protected Overridable Property dlstAEnCazipYatirimlar As DataList
Get
Return Me._dlstAEnCazipYatirimlar
End Get
Set(ByVal WithEventsValue As DataList)
Me._dlstAEnCazipYatirimlar = WithEventsValue
End Set
End Property
-------
Sonuç ne olursa olsun yani kodlarımın şekli şemali değişmiş olsa da bu kodlar bu şekilde normal çalışabilir mi ? Yoksa bu kodları benim orjinal kodlarım ile aynı hale getirmek mi gerekir ? Aynı hale getirmek gerekirse bu halen bana çok zor geliyor. Üstelik verdiğin dosyaya baktım. vb dosyasını görsem de aspx uzantılı herhangi bir dosya göremedim. Export eden kişi vb yi %100 export etse bile aspx i export edemediği için o aspx dosyasını oluşturmaya kesinlikle uğraşmayacaktır bence. Çünkü aspx için uğraşmaya çalışması demek projeyi baştan yazmasından daha zor olur bence.

obfuscate tekniği ile ilgili sen hangi programı tavsiye edersin ? Yani hangi program ile daha kolay kod karıştırma işlemi yapabilirim ?
 

DincerAydogdu

0
İyinet Üyesi
Onaylı Üye
Katılım
15 Nisan 2005
Mesajlar
1,741
Reaction score
29
Konum
Live in .NET
reflector add-in'i ile yaptım. Reflector aslında IL okuyucudur. IL'i alır ve kendince yorumlayarak istediğin dilde görüntüler. Projenin çalışabilmesi için gerekli tüm dosyaları bana vermiş olsaydın üzerinde 1 günlük çalışmayla kodlar birebir aynı olmasa bile aynı şekilde çalışır şekile getirebilirdim. (aspx vs. sorun değil)

Ancak program kırılmak istenirse zaten projeye çevrilip kırılmaz. Bunun yerine ilgili IL kodu tamamen açılır ve ilgili yer bulunur ve sadece orası değiştirilip tekrar derlenip DLL yapılır.

Obfuscate önerisine gelince;

http://www.howtoselectguides.com/dotnet/obfuscators/

Bu adresten biraz incele istersen. Kararını sen ver.
 

hakanizm

0
İyinet Üyesi
Katılım
11 Mayıs 2006
Mesajlar
1,952
Reaction score
1
Konum
Nereye
Moralimi bozdun şimdi :)

http://dotnetprotector.pvlog.com/basket.aspx
bu adreste 300-750 Euro arası değişiyor versiyon fiyatları.
Biraz pahalı gibi :( Böyle bir güvenlik programının herhalde kırılmışını bulmak çok zordur. (Böyle bir konu başlığında "kırılmışını bulmak" terimi pek etik olmadı) Veya bu işlemi yapan bedava bir program bulmak da çok zordur herhalde ? Aslında proje ne kadar büyük ise bu programların fiyatları da o kadar küçük gelir insana..

Sonuç olarak dll denilen şey pek de işe yarar birşey değilmiş. Microsoft herşeyi yarım yamalak yapmasa olmaz sanki.

Bilgiler için teşekkürler. Çok faydalı oldu.
 

turkmale

0
İyinet Üyesi
Katılım
17 Nisan 2003
Mesajlar
237
Reaction score
0
.NET ile yapılmış kodun çözülmesini engellemek imkansız gibi ancak işi zorlaştırabilirsin.
 

DincerAydogdu

0
İyinet Üyesi
Onaylı Üye
Katılım
15 Nisan 2005
Mesajlar
1,741
Reaction score
29
Konum
Live in .NET
Aslında hangi dil olursa olsun herhangi bir kodun çözülmesini engellemek imkansız gibi.

.NET için konuşmak gerekirse (şimdi aklıma gelmişken yazayım), benim bildiğim en iyi koruma yöntemi XenoCode;
http://www.xenocode.com/Products/Postbuild/

14 günlük deneme sürümünü deneyebilirsiniz. Reflectorle bile açılmadığını farkedeceksiniz. CLI header'i şifreleyip yeniden yazıyor. Ayrıca kodu IL'e de çeviremiyorsunuz. Size kalan tek yöntem makina kodlarını debuglayıp değiştirmek oluyor ki bunu yapan sınırlı sayıda insan var dünyada.
 

hakanizm

0
İyinet Üyesi
Katılım
11 Mayıs 2006
Mesajlar
1,952
Reaction score
1
Konum
Nereye
14 günde projemi bu programla tamamlasam 15. gün projem bozulmaz dimi trial olduğu için ?
 

hakanizm

0
İyinet Üyesi
Katılım
11 Mayıs 2006
Mesajlar
1,952
Reaction score
1
Konum
Nereye
Bir arkadaşım bunun kırılabildiğini söyledi. Yani kodların değil programın kirek dosyasının internette bulunduğunu söylemişti.
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst