Forum: D Programlama Dili RSS
Kaynak kod'a dosya gömülebilir mi?
Sayfa:  1  2  sonraki 
agora #1
Üye Tem 2013 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Kaynak kod'a dosya gömülebilir mi?
Selamlar daha once C# ile calismis arkadaslar belki bilirler. Resources kismina dosya ekleriz ve mesela cagirim sekli

byte[] dosyaOneClick = Properties.Resources.OneClick;

buna benzer olur. Sonra ben gomdugum dosyayi calistirabiliyorum resources'daki dosyayi. Bunu D dili ile yapma sansim var mi?

Aslinda olay Java programidir. Java ile bi program yazdim. Bunun kolaylikla orjinal kodlara donduruldugunu ogrendim. Sonra C# ile bi program yazip bu program'in Resources kismina ekledim. Exe dosyasini acinca Program.jar dosyasi aciliyor. Onun haricinde paketlenmis gibiler gomulu sekilde yani.

Ama bunu da Deobfuscator ile geri cevirebiliyorlar. Ben bu Exe'yi de gommek istiyorum. C++ ya da D dili olabilir :) Dagitimli bi program olacak. Ayrica kendi bilgisayarimdaki programlar icin de bu guvenligi saglamak istiyorum. Ozet olarak

D dilinde kaynaga dosya gomulebilir mi? Ve bu dosya kaynaktan cagirilabilir mi? Benim icin grafik arayuzunun onemi yok :) sonucta D dili ile yazilan programa tiklayinca icerideki Exe halindeki dosya calisacak. O dosya da kendisine gomulen jar dosyasini calistiracak :)

Tesekkurler
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Hoşgeldin agora! :)

Yapılamaması için bir neden göremiyorum. Sistem dilleri programı belirli bir adrese atlatıp oradan devam ettirebilirler. Ayrıntılarını bilmiyorum.

Yine de bunun hiçbir zaman tam çözüm olmadığını hatırlatmak isterim. Çok isteniyorsa her programın tam işleyişi incelenebilir ve ne yaptığı görülebilir. Güvenlik konusunda uzman olmadığım için o konuda da yardımcı olamıyorum. :/

Ali
kaaninel #3
Üye Ock 2013 tarihinden beri · 22 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Kodu denemedim fakat dosyayı string olarak veya herhangi bir array içinde saklayıp sonradan istediğin türde cast edebilirsin.

string OneClick_Data = "Buraya Gömülecek Dosya Verisi";
byte[] dosyaOneClick = cast(byte[])OneClick_Data;
Bunu otomatik yapması için bir d fonksiyonu geliştirebilirsiniz.
Bu mesaj kaaninel tarafından değiştirildi; zaman: 2013-07-01, 17:39.
Avatar
zekeriyadurmus #4
Kullanıcı başlığı: Talha Zekeriya Durmuş
Üye Eki 2012 tarihinden beri · 701 mesaj · Konum: Samsun/Türkiye
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Tam olarak kast ettiği şey o değil arkadaşın.

Öncelikle şunu belirteyim ne yaparsanız yapın gerçekten anlayan birisi bu sistemi hackleyebilir. Ama şu anki yapmak istediğiniz sistemi programı hafızaya yükleyip hafızadan çalıştırarak gerçekleştirebilirsiniz. AutoIT ile uğraştığım zamanlarda benim de ihtiyacım olmuştu.  Ama bildiğim kadarıyla D dilinde şu an bunu yapabilecek bir işlev yok yani bunu kendiniz yazmanız gerekecektir.

Özetle programı aslında harddisk üzerinden değil direk RAM üzerinden başlatmanız gerekmekte ve sanırım Ali hocam da bunu kast etti.

Zekeriya
Bilgi meraktan gelir...
agora #5
Üye Tem 2013 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
@acehreli

Hosbulduk :)

iste Ali hocam acaba bunun D ile yapilisi nasildir merak ediyorum. Hic bir zaman tam guvenlik olmadi ise bu cok kotu :(

@kaaninel bu sekilde resource'a gommus olunur degil mi dosya?

Normalde biz yazdigimiz programlarda kutuphaneleri de DLL, .PYC, .H, .A olarak ayri bi klasore atariz diyelim ben programi yazmayi bitince ayri bi klasorde olmayacak.

Program.exe tek calisacak kaynagindaki kodu calistiracak :)

@zekeriyadurmus hocam bunun icin ornek bi makale var mi? Bu islevi yazmak icin?

Pogramda 7-8 tane kontrol mekanizmasi var :) Ama guvenligin cok olusu her zaman iyidir.

Son olarak D ile bulundugumuz makinenin islemci, cpu, hdd, mac gibi bilgilerine erisme sansimiz var mi? cpuz gibi bi program dusunulebilir.

Ben ayrica packer da kullaniyorum :)

Bi egitim seti hazirladigimizi dusunelim :) İllegal olarak kullanilmasini istemiyoruz diyelim :)
agora #6
Üye Tem 2013 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Bunun yapilisinin zor oldugunu gordum :)

std.process'i cagirarak

system("Program.exe Ac");

seklinde bi komut calistirdim. Bu komut Program.Exe'ye "Ac" gibi bi parametre yolluyor. Ve program aciliyor.

Program.exe'nin yani C# tarafli yazilan programin tek basina acilamamasi icin de args.Contains kontrolu yaptim eger Ac gibi bi parametre icermeden cagirilirsa program acilmayacak :)

Tabii bu sefer de konsol ekrani arkaplanda calisiyor. bunu da hemen su sekilde kapatiyorum.

system("taskkill /im DProjesi.exe");

Bu da D kodu ile olusturulan Exe'yi kapatiyor gorev yoneticisinden. Fakat diger program acik kaliyor yani istedigim gibi bise oluyor :)

C++ icin soyle bi kontrol vardi bunu D icin uygulama sansimiz var midir?

HWND hWnd = GetConsoleWindow();
ShowWindow( hWnd, SW_HIDE );

Bu kod acilan konsol penceresini sadece gizliyor.

Tesekkurler :)
acehreli (Moderatör) #7
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Yanıtlanan mesaj #5
agora:
bunun D ile yapilisi nasildir merak ediyorum

İngilizce forumda gösterilen yöntemlerden birisi, alt programı diske yazmak ve oradan çalıştırmaktı. Teoride çok basit:

import std.stdio;
 
alias CmainİşlevTürü = int function();
 
void main()
{
    string altProgram = import("alt_program");
 
    auto c_main = cast(CmainİşlevTürü)altProgram.ptr;
 
    c_main();
}

Ama tabii program göçer çünkü c_main alt programın giriş noktasına değil, en başına işaret etmektedir. (altProgram.ptr + bir_fark) diye hesaplamak gerek ama ben o farkın nasıl bulunduğunu bilmiyorum.

Ayrıca belki Java programları için daha kolaydır ama alt_program derlenmiş bir program olsa gerek duyduğu çalışma ortamının (C runtime, C++ runtime, vs.) da ilklenmesi gerekir.

Sonuçta system() gibi çözümler çok daha kolay.

Hic bir zaman tam guvenlik olmadi ise bu cok kotu :(

"Güvenlik" çok genel bir kelime ama anlaşılan sen kodlarını korumaya çalışıyorsun. Güvenliği kırmaya çalışan birisi olarak düşün ve ne kadar kolay veya zor olduğuna öyle karar ver.

Örneğin, alt programın kodları yukarıdaki programın içinde gömülü olarak duruyor.

Diğer öneri, alt_program'ı diske yazmak ve oradan system() vs. ile başlatmaktı. Eh o zaman da ana program göçse, durdurulsa, vs. alt_program'a erişilir.

makinenin islemci, cpu, hdd, mac gibi bilgilerine erisme sansimiz var mi?

std.system ve core.cpuid modülleri kullanışlı olabilir:

  http://dlang.org/phobos/std_system.html

  http://dlang.org/phobos/core_cpuid.html

Ayrıca D programları C kütüphanelerini doğrudan kullanabiliyorlar. Belki kullanışlı bir C kütüphanesi de vardır...

Bi egitim seti hazirladigimizi dusunelim :) İllegal olarak kullanilmasini istemiyoruz diyelim :)

Bunu kimse istemez. Tam kırılmazlık sağlayamazsın. Bir noktada yeterli olduğuna karar verip zamanını başka tarafa yönlendirmek daha yararlı olur. Ayrıca programın tek başına çalışmamasını sağlamak gibi yöntemler de düşünülebilir. Örneğin, program internet'e bağlanmayı şart koşabilir ve kendisini bir siteden denetleyebilir. Tabii bunlar da kırılır...

Ali
agora #8
Üye Tem 2013 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Ali Hocam oncelikle tesekkur ederim. Yabanci forumdaki cevabi anlamadim diye bise yazamadim :)

aslinda soyle bir sey dusunuyorum ama bu da kirilir mi bilgim yok.

Ben D ile bu donanim bilgilerini alayim. Bunlar bilindigi gibi Unique ID'ler tasiyorlar. Yani programi verdigim bilgisayarlara oncelikle "Bunu calistirin ben bilgileri otomatik alirim" gibi bi sart kosarim ve sonradan lisanslamayi o pc icin yapabilirim. Ayrica o program'in USB bellege kopyalanmasini engelleyebilirim. Dediginiz gibi sadece DVD ile calistirabilirim. Mesela o olay da soyle olabilir.

Registry'e bir deger atarim ve bir de windows servis yazarim. Bu program eger takili bi bellege gonderilmeye calisilirsa hata versin gibi. Upload islemlerini zaten engellemenin bi yolu yok. Ama belki en son guvenlik olayi cpuid vs. olabilir. Onu da soyle yapariz.

Ilk kullanimda "MEVCUT CPUID: 12915EF00F319. GEÇERSIZ CPUID" diyip programi aninda silmek icin komut turetebilirim bu da guvenlik anlaminda bi mantik saglayabilir mi?
acehreli (Moderatör) #9
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Mantıklı. shurzan C++ programı için benzer çözümler getirmişti. Özelden mesaj atayım; bakalım bu konuda eklemek istediği şeyler var mı.

Ali
Bu mesaj acehreli tarafından değiştirildi; zaman: 2013-07-03, 08:00.
agora #10
Üye Tem 2013 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Hocam sagolun ozel mesaj bekliyorum eger attiysaniz goremiyorum da :)
acehreli (Moderatör) #11
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Özel mesajı shurzan'a attım. :) Kendisi bu forumu izlemiyor.

Ali
shurzan #12
Üye Haz 2009 tarihinden beri · 3 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Merhaba hocam, agora ve arkadaşlar,

agora arkadaşım hem ceviz.net de hem de buradaki mesajları okudum, anladığım kadarıyla programının kırılmasını engelleyecek algoritma geliştirmek istiyorsun, eski bir cracker olarak diyebilirim ki bunu unut, tam bir koruma yoktur, kırılamayacak program olası değildir. Biz ancak Lamer lere karşı koruma yapabiliriz. Zaten bu eşyanın tabiatına aykırıdır. Cracker ler da en az bizler kadar yazılım uzmanıdır ve kaynak kodlarıyla değil makine kodlarıyla çalışırlar.

Ali hocam birlikte Borland C++ yazılım dili ile geliştirmiş olduğumuz iki proje vardı ve bunları lisans ile korunma konusunda kendi geliştirmiş olduğum özel çalışmam var yenisini geliştireceğimden en azından teorisini paylaşmaktan zevk alırım umarım faydası olur.

öncelikle:
Elbette donanım bilgilerini alman mümkün, kodları paylaşacağım, ancak bunları ne şekilde kullanacağın önemli bir donanım değişikliğinde lisansın geçersiz olacağını unutma.

Borland C++ da da diğer dillerde de kaynağa dosya gömülebilir, dosyanın bellekte bulunduğu konumda çalıştırılması gerekir ki çok zahmetli çökme ihtimali var. Gömülü dosyayı diske açsan ve ana programın işini tamamlamadan çöktüğünde dosya diskte olacaktır ki bu da daha büyük bir sorun.

Java ile yazdığın programı C++ ya da D dili ile yeni bir program yazarak koruma altına alman kusura bakma ama bana pek mantıklı gelmedi. Doğru olanı, java ile yazdığın programı C++ dili veya orijinal kodlara dönüştürülemeyecek iyi bildiğin bir dille yeniden yazmak olabilir, korumayı da o dilin olanaklarını ve senin geliştirmiş olduğun algoritma ile olmalıdır.

Ben nasıl çalıştım(teori):
Ben Borland C++ (Şimdi Rad Studio 2013) ile programımı yazma çalışmam bittikten sonra şunları yaptım.
Donanım bilgilerini alan bir dll yazdım. Program ilk çalıştırıldığında DLL belleğe load edilip doanım bilgilerini bundan üretilen Machine ID yi registry ye yazar ve dll free edilir.

Program arayüzü aktif olduktan sonra timer ile belirli bir zaman sonra registry de programın lisans keyini arar yoksa deneme süresi dolup dolmadığını kontrol eder, hiç bir uyarı vermez. Sadece deneme süresi dolduğunda sürenin dolduğunu uyaran sistem tray de balon açar. Deneme süresini de sistem time dan kontrol etmek hata olur. Ben işletim sistemi her aktif olduğunda yazdığı bir dosyanın son değiştirme tarihi ile benim programımın ilk kurulduğunda sisteme yazdığım ve gizlediğim dosyanın dosya tarihi ile karşılaştırıyorum :) . deneme süresini böyle kontrol ediyorum. Halende en sağlam yol bu olarak görüyorum.

Program kurulduğu makinenin donanım bilgilerini alarak Machine kimliği oluşturup registry e yazıyorum. Sadece iki şey alıyorum HDD fabrika seri no ve mac adresi. Çünkü; işlemci değişebilir başka modüllerde ama HDD değiştirildiğinde sistemi zaten çökmüştür ve lütfen kimliğini doğrulasın ki yeniden lisans alabilsin, bunun için de mac adresini de alıp depoluyorum registry e, her iki donanım değişmişse zaten başka makinedir. Bu işlemi Thread açarak programı kasmadan yapıyorum.

Makine kimliği oluşturduk nasıl koruyacağı?
Lisans anahtarını haliyle Machine ID den oluşturacağız, şöyle bir şey yaptım, ben Makine kimliğini böyle belirledim 'SD52-184-424-202' buna baktığımda Shurzanop uygulamama ait HDD fabrika seri nosu ile Makine kimliği oluşturulduğunu görüyorum S- Shurzanop D ise Diski temsil ediyor SM olsaydı program HDD fabrika nosunu almayı denemiş ama almamış Mac adresi ile makine kimliği oluşturmuş olduğunu anlardım sonraki 52 ise ürün kimliğine kuyruk yapacağım DWORD indexini belirliyor 256 tane belirlediğim DWORD var bunu da çalışma anında üretiyorum :) sonunda şöyle bir şey oluyor SD52-184-424-202565507253 kullanıcılar Machine ID den sonraki kuyruğu görmüyor  ve bunu MD5 ile Hash ederken ekleyerek lisans anahtarı oluşturuyorum. ortaya 32 karakterli Lisans anahtarı çıkıyor '1ec1b0fa6e90de89dda8a5027e6a0d69' gibi.

Buraya kadar olan kısım Makine ID(kimliği) ve Lisans üretme şekliydi.
Koruma yöntemi geliştirilebilir. Ben şöyle düşündüm: Program ilk çalışma anında Lisans kontrolü yapmıyor, zaten kırmak için cracker lerin ilk baktıkları yerlerden biri, ancak bir işlem yapılması istendiğinde ya da bir komut çalıştırıldığında, işlem devam ederken bir taraftan da Lisans kontrolü yapan DLL belleğe load edilir, Dll deki timer aktif edilir. timer her döngüsünde bazı fake işlemler yapar toplama, çıkartma vb. fonksiyonlarını çağırır bu crackeri bir hayli uğraştırır çünkü o işlemler için jamp yapılan yeri kontrol etmesi gerekir sonuçta sayısal değer bulacaktır halbuki JE - JNE testleri yapması gerek. Timer her döngüde fake fonksiyonlar ve bizim lisans kontrolü yapan fonksiyonu çağırmasını switch ile yapar if-else asla kullanmadım (dallanma noktalarını arasın dursun :) ) lisans fonksiyonun ise bool değer üretmedi sayısal değer üretti. Her kontrolde DWORD değerleri hesaplattım, sonuçta program lisanlıysa işlemine devam etmekte değilse işlemini yarılamakta. Unutamdan Lisans kontrolü bir başka DLL de yazdım ve kontrol edildiğinde DLL Belleğe Load edilir kontrol bittiğin de Free edilir ki çalışma anında OllyDbg gibi Debugger programlarıyla gerçek lisans anahtarlarını görünür yapamasınlar. Ayrıca Lisans işlemi gerçekleşti ya da Lisans Anahtarı geçersiz gibi uyarı penceresi asla göstermemelisin. String karşılaştırması yapmamalısın. Cracker ler Uyarı penceresinin offset adresini ararlar veya uyarı mesajının string'ini ararlar!

Ayrıca Programını basitte olsa pack programıyla pack etmen iyi olur.

Bir diğer konu da Lisans dağıtımı: Normalde Lisans isteyen kişi sana bir şekilde TLF, mail vb. aracılığıyla Machine ID göndermesi karşılığında da senin Lisans anahtarını göndermen gerekir. Bu çok külfetli yoldur. Zamansız telefonun çalması ya da Mail'e geç cevap verilmesi gibi sıkıntılar olacaktır. Bunu da istersen sen düşün ya da kendi geliştirmiş olduğum otomatik lisans alama ve registry etme çalışmamı da paylaşırım tabi bunun için PHP, ASP gibi bir betik dili de biliyor olman lazım.

Amacımız programın kırılmasını önlemek olamayacaktır kolay kırılmasını önlememiz olmalıdır. ve Ayrıca Programının kırılmaya değer görülmesi de bir ayrıcalıktır.

Bu makalem senin çalışmana uygunsa C++ kodlarını da paylaşırım.

Hoşça kal
Yaşar İsmail Aktaş (Shurzan)
agora #13
Üye Tem 2013 tarihinden beri · 221 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
@shurzan

Hocam cok aydinlandim bilgilerinizden istifade etme konusunda cok tesekkur ederim.

Egitim setlerimiz farkli iste Solidworks, AutoCad, Ps ve bi kac web dili. Bunlari iste pencereli ekranlardan izleticez. Dediginiz gibi bu setler tutarsa bu sefer de herkese yetistiremeyiz. Dusununce ya donanim degisirse gibi :)

Ben cracking islemlerini bilmiyorum ama ilgimi ceken mesela basit toplama, cikarma gibi islemlerin, fonksiyonlarin cracker'i ugrastirmasi :)

Siz bu mesaji yazmadan once bugun icinde ben soyle bise yaptim

Program'in kuruldugu dizine bir dosya atadim "grafikler.h" adinda. Sonra bilgisayarin sistem klasorlerinden birine bu random oluyor ama sistemde bi dizine atiyor "windows.h" gibi isimler veriyorum. Bu dosyalarda 2 tane tarihsel deger ve yine belirtilen lisans key'i yer aliyor. Ancak bu lisans key'i direkt olarak isleme tabi tutulmuyor. Lokalde bir deneme yaptim. php ile yazdigim ve veritabanindan sorgulama yaptigim bi sey ornegin

o 2 dosyadaki key aynidir. uzak sunucudaki veritabaninda sorgulama yapar eger ayni ise programi acar. ve bu lisans dogrulama islemini de programin tam olarak kendisi ile yapmiyorum. resource'a gomulu dll ile yapabilirim ya da yine o dll'i gizleyerek bi yere yuklerim ve orada aktif ettirir dediginiz gibi free hale getirebilirim. biraz karisik konustugumu hissettim :) uyari penceresi konusunda yine bilmiyordum ogrendigim iyi oldu bunu da. Aslinda kod yazmaktan cok guvenlik ogrenseymisim daha iyi olacakmis.

Daha once bu tip projelerle kesin calismissinizdir. .NET ve Standart C++ ve D ayni anda kullanilabilir sanirim. Bu kisim ise kendi yazdigim programlara kaliyor. Bunlarda key, lisans vs. istenmemekte. Bunlarinsa kaynak kodlarinin gizlenmesini saglamak istiyorum ama bunlar da imkansiz sanirim.

Sistem saati seklinde koruma ben de dusundum ama saati geri alinca problem yaratti hep bana :)

Registry konusunda suphelerim var. Acaba nasil ve ne sekilde gizleyebilirim bu konuda onerileriniz var mi? Bu hash algoritmasi konusu da var hocam md5 kullanmiyorum. Universitede 1-2. sinifta calismamiz olan matematiksel ve mantiksal bi algoritma vardi. md5 benzeri diyemem uretilen sifre metodu 7-11 hanelidir. iste 2 key'i oyle sifrelesek olabilir mi? is karsilastirmaya gelince hafif oradan suphem var.

Neyse benim bilgi birikimim sizin kadar degil bu yuzden yazarken zorlandim diyebilirim karmasik oldu ise cok cok ozur dilerim hocam. Vakit ayirdiginiz icin cok cok tesekkur ederim :)
shurzan #14
Üye Haz 2009 tarihinden beri · 3 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
agora ilgi çektiğine sevindim,

Yazdıklarına cevaben:
Ben cracking islemlerini bilmiyorum ama ilgimi ceken mesela basit toplama, cikarma gibi islemlerin, fonksiyonlarin cracker'i ugrastirmasi
Hayır fonksiyon crackeri uğraştırmıyor timer her döngüde lisans fonksiyonu diye toplama çıkartma veya senin basit bir fonksiyonunu sahte fonksiyonu çağırmakta, çünkü dallanmanın başlangıcı aynı. timer 10 ms aralıklaralar döngüsünde her defasında ve de senin gerçek fonksiyonu çağırmakta arkadaş onlar incelerken bıktırıyoruz.

Program'in kuruldugu dizine bir dosya atadim "grafikler.h" adinda. Sonra bilgisayarin sistem klasorlerinden birine bu random oluyor ama sistemde bi dizine atiyor "windows.h" gibi isimler veriyorum. Bu dosyalarda 2 tane tarihsel deger ve yine belirtilen lisans key'i yer aliyor. Ancak bu lisans key'i direkt olarak isleme tabi tutulmuyor.
Bu yanlış bir yöntem sistem dizininde gereksiz dosya kirliliği yapacaksın. Ancak sistem dizininde sisteme ait bir dosya var 'bootstat.dat' bu dosya Windows her açılında güncellenir. bu dosyanın değiştirme tarihi Windows'un son aktif oldu tarihtir. Programın kurulduğu tarihi de aynı yöntemle bir kereliğine bir dosya atarak iki arasındaki zaman farkı senin deneme süre kontrolün için yararlı olacaktır.

o 2 dosyadaki key aynidir. uzak sunucudaki veritabaninda sorgulama yapar eger ayni ise programi acar.
Programın lokal çalışması olacaksa bu yanlış olur kullanıcının interneti olmayabilir ayrıca program ara yüzü mutlaka açılmalı programla yeni tanışanları da düşünmek gerek, lisanslama ya da ne yapacaksan yap kullanıcıya programın yüzünü göstermelisin yoksa bozuk olduğunu da düşünebilir.
Keyin bir dosyaya yazılması ya da Registry e yazılmasının bir anlamı yok nerede olursa olsun o makineye ait olmalı ama bilinçsiz kullanıcı dosyayı silebilir. Ayrıca Lisans kontrolünü her defasında uzak bağlantıyla yapıyorsun ki programı hem kasar hem de gereksiz, bunu register ederken yapabilirsin.

Daha once bu tip projelerle kesin calismissinizdir. .NET ve Standart C++ ve D ayni anda kullanilabilir sanirim. Bu kisim ise kendi yazdigim programlara kaliyor. Bunlarda key, lisans vs. istenmemekte. Bunlarinsa kaynak kodlarinin gizlenmesini saglamak istiyorum ama bunlar da imkansiz sanirim.
Anlamadım farklı dili nasıl aynı anda kullanmak aynı derleyicide farklı dillerin kodlaması yapılamaz.
Şöyle anladım: sanırım farklı dilde yazılmış kaynak kodları programda text dosyası veya metini olarak bulunuyor ve bunları program içinden başkaları ele geçirsin istemiyorsun, korumak istiyorsun. ilk aklıma gelen text içeriğini karıştırmak iki yönlü hash yap sabit bir anahtarın olsun program bu anahtarı kullanarak text içeriğini doğru şekilde gösterebilsin, anahtara sahip olmayan ve doğru algoritmaya sahip olmayan text içeriğini okuyamasın. Başka şeylerde düşünülebilir.

Registry konusunda suphelerim var. Acaba nasil ve ne sekilde gizleyebilirim bu konuda onerileriniz var mi?
Neden gizliyorsun ki Machine ID ve Lisans anahtarı içinse eğer bence gereksiz olur zaten bu bilgiler başka makinede işe yaramayacaktır.

Bu hash algoritmasi konusu da var hocam md5 kullanmiyorum. Universitede 1-2. sinifta calismamiz olan matematiksel ve mantiksal bi algoritma vardi. md5 benzeri diyemem uretilen sifre metodu 7-11 hanelidir. iste 2 key'i oyle sifrelesek olabilir mi? is karsilastirmaya gelince hafif oradan suphem var.
Bu tercih meselesi md5'in bir ayrıcalığı yok tek yönlü olsun yeter. Md5, CRC32, Sh1-2 vb. sana kalmış. Sonra iki key nedir anlamadım Sanırım Machine ID ve Lisans key'i diyorsun. ve şunu anlıyorum
ör. HDD fabrika seri no aldık bunu makine id yapacağız bunun için hash algoritması kullanacağız bunun için olur mu? diyorsan, bu sana kalmış makine id senin algoritman ile şekillenecek, seri noyu çarp, topla çıkart, böl mod al sonrada hash et sana kalmış görünür şeklini sen belirleyeceksin. ama unutma Machine id yi herkes hash edebilir ve key elde edebilir, mesela ben 3. ve 4. karakteri (52) index olarak kullanıp bir değer elde ederek machine id kuyruğuna ekleyip o halinden lisans key üretiyorum sen kuyruğa eklemeyebilirsin 1.2. ...n karakterden sonrasına/öncesine ekleyebilirsin ya da son 4 karakterin ASCII sayısal değerinden çıkartıp/toplayıp machine id yi değiştirerek lisans keyi elde etmen için hazırlayabilirsin. ama Machine id sana gönderildiği gibi lisans keyi üretmemelisin o zaman herkes key elde edebilir.
acehreli (Moderatör) #15
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Hoşgeldin shurzan! :)

Benden sonraki ilk üye olmana rağmen ilk defa mesaj yazdın. :)

Ali
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Sayfa:  1  2  sonraki 
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-20, 01:25:10 (UTC -08:00)