29-12-2016, Saat: 15:29
(04-11-2016, Saat: 12:47)QuAdR Adlı Kullanıcıdan Alıntı: Asprotect örnek verdim.Kendiniz bir şeyler yapmayı düşünmeyip hazır bir şeyler ile devam etmek isterseniz şu an piyasada en iyi koruma sağlayan koruma motoru oreansın geliştirdiği themida ve winlicense dır.
Kendiniz bir şeyler yapmak isterseniz SMC (Self modifying code) ve overlay(Out section) metodlarını kullanabilirsiniz.
SMC runtime code bloklarını yeniden düzenleme işlemidir.
Overlay ise exe dosyalar sectionlardan oluşur ve bu section boyutları dosya içerisinde belirtilir.
Siz belirtilen exe boyutu üzerine yani dosyanın devamına kod yazarak bu kodu runtime da okuyarak kontrollerinizi yapabilirsiniz.
Overlay metodu ile önce exeyi derleyip bir compress işlemi yaptıktan sonra exe üzerine tekrar yazdırırsanız.
Eğerki exe decompress yani unpack edilirse bu veriler tekrar yazılmaz ise exe bozuk bir dosya haline gelecektir.
Yine buraya yazacağınız veriyi runtime da code bloğu silik bir exe ye belirli method çağrımları ile yazdırıp işlem bitiminde tekrar
sildirtebilirsiniz.Böylelikle debug edilse bile boş code bloğu ile karşılaşılacaktır.
Başka bir method ise exe içerisinde exe.Birinci exenin loader mantığı ile hafıza kontrolü yapıp ikinci exeyi direk kendi içerisinden hafızaya
açarak çalıştırmasıdır.Owner exe ile child exe yede birbirlerini kontrol ettirebilirseniz herhangi birine müdahale durumunda biri diğerine sonlanma isteği gönderebilir.Yine bu mantığa smc ve overlay de eklerseniz sağlam bir koruma sağlamış olursunuz.
Fikir olsun diye basit bir smc örneği vereyim.
program SMC; {$APPTYPE CONSOLE} uses SysUtils; var SMCFunc: function: Integer; {$J+} const Code: array[0..5] of Byte = ( //eax a bir değer alıp geri dönderelim $B8, $00, $00, $00, $00, $C3); var FByte: Byte; begin @SMCFunc := @Code; WriteLn('Su anki deger = ' + IntToStr(SMCFunc)); WriteLn('Bir sayi giriniz (0-255)'); ReadLn(FByte); Code[1] := FByte; WriteLn('Son deger = ' + IntToStr(SMCFunc)); ReadLn; end.
Tam olarak anlayamadığım bir durum var.
Uygulamaya önce lisans kontrolü yaptırmamız gerekecek. Yani lisans kodu/dosyası geçerli mi değil mi? "Eğer lisans geçerli ise devat et" ile daha önce bozduğumuz EXE yapısını uygulama açılırken tamir edeceğiz ve uygulamamız başarıyla çalışacak. Kod yapısının "Eğer lisans geçerli değilse devam et" olarak değiştirilmemesini de korumamız gerekecek. Bunun korunmasını nasıl sağlayacağız?

