Yazdığım kodlar bir başkası tarıfından görülebilirmi

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Yazdığım kodlar bir başkası tarıfından görülebilirmi

Mesaj gönderen tayipk »

hepinize merhaba arkadaşlar. uzun zamandır kafamı kurcalayan bir soru var. hepimiz yazılım yapıyoruz bir proje üretiyoruz yada var olanı geliştiriyoruz. merak ettiğim konu şu delphide projeyi yaptık bitti müşteriye kurdun çalışıyor ediyor falan herşey güzel ama adamın biri geldi dediki ben şu exeyi alayım bakayım hangi kodlarla yazılmış dediğinde projde kullandığımız kodlar görülebilirmi yani atıyorum mainform oncreate te hangi kodlar yazıyor onshow da hangi kodlar yazıyor yani kısacası projeyi sanki kendi projesi gibi açabilirmi?
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: Yazdığım kodlar bir başkası tarıfından görülebilirmi

Mesaj gönderen greenegitim »

DeDe decompiler ı incele projenin olduğu gibi görüntüsünü alabiliyorsun formları tabi herzaman çalışmıyor kodları da assembly kodunda getirebiliyor ayrıca aspack ile sıkıştırma yapabiliyorsun.
Mücadele güzelleştirir!
Kullanıcı avatarı
Commandx
Üye
Mesajlar: 181
Kayıt: 01 Oca 2008 05:34

Re: Yazdığım kodlar bir başkası tarıfından görülebilirmi

Mesaj gönderen Commandx »

Kodların çeşitli decompiler ile asembly olarak görebilirsin,delphi kodu şeklinde göremezsin, ama aklına estiği her değişikliği yapması kolay olmaz.
DeDe, exescope veya Resource viewer gibi programlarla formların text resim gibi komponent içeren textbox combobox vs gibi bileşenlerin boyutlarını fiziksel özelliklerini değiştirebilir (yükseklik genişlik renk gibi) , fakat kodlarını göremezsin.
Winhex ile sadece hex olarak görülür ama gerçek kodlar görünmez.
yani anlıyacağın kodları delphi ile derledikten sonra delphi formatında kodlar görülmez, makine diline çevrilir.işi biter,Vbasicde de yazsan programı C++ delphi python, da da yazsan programın makina diline çevrilir. exe çalıştırılınca ram üzerine yayılır işleçler scriptler hangi stackın hangi ofsetin nereye hitap edeceğini işlmeciye bildirir işlemci de exe programın ne yapmak istediğini anlar veri yollarını portlarını kesmeleri ona göre 1 veya 0 olarak flag eax ebx edi esp vs vs Registerlerine değerler yazar. böylece programın elektrikle ram üzerindeki alanları 1 ve 0 larla işlemiş olur.
Her executable dosyanın (exe) İşlemcinin çalıştırabilmesi şiçin Entrypoint denen bir başlangıç offseti vardır, işlemci exeyi yüklerken Ram de Raw (ham hale getirir 1 ve 0 lar) exe buradan scriptinden ayrılır işlemcide işlenir Ram'e (Random Acess Memory =Rastgele Erişimli Hafıza) yüklenir, yani exe dosyası işlemcinin veritabanı gibidir. elektrik kesilince Bu Registerlerdeki değerlerin hepsi "0" olur. Ram mimarisi milyonlarca Transistor direnç ve piko nano faradlık kondansatörlerle birlikte çalışır, Register dediğimiz yani 1 ve 0 ların kontrollü yazıldığı yerler kondansatörlerdir, bunun kontrolünü yapan ise Transistörlerdir. en basit Ram = Evimizde kullandığımız Lamba Düğmesidir, Lamba düğmesine bastığımızda elektrik lambaya gider lamba yanar buna 1 değeri aldı deriz (Lamba burada Ekran durumundadır, 1 değerini aldığını yanınca anlarız) Düğme burada Transistör Direnç ikilisidir. Kondansatör de burada Siz oluyorsunuz, yani lambanın ne süre yanacağını kararını siz belirlediğiniz yaiçin kondansatör durumundasınız Register oluyorsunuz. işte bu 1 Bitlik bir veri kontrolüdür pek bir işe yaramaz, aç kapa yaparsınız, A karakterini alabilmemiz için bit işlemini 8 ' e çıkardığımızada "A" harfi elde edebilmek için lambayı açıp kapayacak 8 adet personel, 8 adet düğme 8 adet lamba olacak (1 tanesi noktalama için)
lambaların her birini kol saatlerindeki dijital şekilde dizerek her birinin alacağı durumlar için lambaları resimdeki gibi sıralama şeklinde koordineli açıp kapayarak resimdeki gibi karakterler elde edilir, işte bilgisayar bunu bu şekilde yapıyor biraz daha gelişkindir

Resim

örn atıyorum şöyle bir delphi tarafı bu kodun asembly karşılığı aşağıdaki gibi olur

Kod: Tümünü seç

var
i:string;
begin
i:='SIFIR';
if i ='SIFIR' then showmessage('SIFIR')
else
showmessage('BİR')
end;
* Possible StringData Ref from Code Obj ->"SIFIR"
|
:004520F2 BA4C214500 mov edx, 0045214C
:004520F7 E8E81DFBFF call 00403EE4
:004520FC 8B45FC mov eax, dword ptr [ebp-04]

* Possible StringData Ref from Code Obj ->"SIFIR"
|
:004520FF BA4C214500 mov edx, 0045214C
:00452104 E84F21FBFF call 00404258
:00452109 750C jne 00452117 <-- burası Sıfır yazan stringe Eşit değilse 00452117 adresine yol al

* Possible StringData Ref from Code Obj ->"SIFIR"
|
:0045210B B84C214500 mov eax, 0045214C
:00452110 E84F52FDFF call 00427364

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004520A4(C)
|
:00452115 EB0A jmp 00452121

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:00452109(C)
|

* Possible StringData Ref from Code Obj ->"BİR"
|
:00452117 B85C214500 mov eax, 0045215C <-eaxdaki stringi ekrana yaz
:0045211C E84352FDFF call 00427364
En son Commandx tarafından 13 Oca 2021 11:06 tarihinde düzenlendi, toplamda 6 kere düzenlendi.
http://www.delphibasics.co.uk/RTL.asp?Name=DaysBetween
http://www.neonhaber.com/Static/mega-co ... index.html
www.delphican.con
Function PARSE( text, ilk, son:String ): String; //
begin
Delete(Text, 1, pos(ilk, Text) + Length(ilk)-1);
Result := Copy(Text, 1, Pos(Son, Text)-1);
end;
tayipk
Üye
Mesajlar: 284
Kayıt: 27 Kas 2013 11:32

Re: Yazdığım kodlar bir başkası tarıfından görülebilirmi

Mesaj gönderen tayipk »

verdiğiniz bilgiler için teşekkürederim gerçekten içimi ferahlattınız. comandex hocam verdiğin bilgiler ışığında hemen şu soruyu sormak isterim şimdi o programlar kodları makine diline döndürüp bilgileri karşımıza gtiriyorsa makine dilini de normale çevirici araçlar yada programlar yokmudur ??
Soru Sorarken yazmaya Üşenmeyen Parmaklar Sorunun Çözüldükten Sonra Teşekkür etmeye de Üşenmesin.
PROGRAMADOR
Üye
Mesajlar: 239
Kayıt: 04 Oca 2008 01:53
Konum: Karşıyaka/İzmir

Re: Yazdığım kodlar bir başkası tarıfından görülebilirmi

Mesaj gönderen PROGRAMADOR »

yazdığın kodun aynısını yazması imkansız. Bu aslında mantıksal olarak md5 şifreleme gibidir. Kodlarını birebir kimse assembly'den delphi'ye çeviremez. Ayrıca sadece delphi değil bir çok dil assembly'e çeviren compiler kullanmaktadır.
Ayrıca bazı dillerde kodlara ulaşmak mümkündür. Örneğin java ve dotnet projelerinin kodlarına erişim çok kolaydır.
In dubio pro reo...
Şüpheden sanık/özgürlük yararlanır...
Cevapla