Katılım
22 Aralık 2023
Mesajlar
4.733
Makaleler
4
Çözümler
90
Beğeniler
6.810
Obfuscation, kodunuzu insanların okuyamayacağı şekle getirme işlemidir. Kaynak koduna sahipsinizdir ancak insanların okuyabileceği şekilde de değildir, buna rağmen derleyici ve bilgisayar kodu herhangi bir sorun olmadan okuyabilir. Obfuscation'daki temel amaç, tersine mühendisliği zorlaştırmaktır.

Örnek olarak aşağıda çok basit bir C kodu görüyorsunuz;
Kod:
#include <stdio.h>
main () {
printf ("hello world!\n");
return 0;
}

Burada da obfuscate edilmiş hali var;
Kod:
x(f,s,c)char*s;{return
    f&1?*s?*s-c?x(f,++s,c):10[s]:0:f&2?
    x(--f,"&$#%@!)*~'!dowl\n hre",c):*s?
    x(f,s+1,putchar(x(f-2,"^&%!*)",*s))):0;}

    main(){return x(4,"*'@@#)%#~@$&!",65);}

İki kodun da çıktısı;
Kod:
test@deneme ~ $ /home/test/program
hello world!

Uyarı olarak kodu tam olarak okumanızın mümkünatı olmadığı için obfuscate edilmiş kodları internetten indirip derlemenizi tavsiye etmiyorum, kodun içeriği sahibinin size söylediği şeyi barındırmayabilir.

Kodun çıktıları ve yaptığı şey birebir aynı olmasına rağmen obfuscate edilmiş kod, insanlar tarafından okunup anlaşılması çok daha zordur. Tabii ki tersine mühendislik yoluyla çözülemeyecek hiçbir kod yoktur ancak obfuscation işlemleri işleri daha da zorlaştırmaya yönelik. Yukarıdaki örnek sadece bir durumu temsil etmektedir, bir kodu obfuscate eden birçok yazılım ve yöntem vardır.
 
Obfuscation, kodunuzu insanların okuyamayacağı şekle getirme işlemidir. Kaynak koduna sahipsinizdir ancak insanların okuyabileceği şekilde de değildir, buna rağmen derleyici ve bilgisayar kodu herhangi bir sorun olmadan okuyabilir. Obfuscation'daki temel amaç, tersine mühendisliği zorlaştırmaktır.

Örnek olarak aşağıda çok basit bir C kodu görüyorsunuz;
Kod:
#include <stdio.h>
main () {
printf ("hello world!\n");
return 0;
}

Burada da obfuscate edilmiş hali var;
Kod:
x(f,s,c)char*s;{return
    f&1?*s?*s-c?x(f,++s,c):10[s]:0:f&2?
    x(--f,"&$#%@!)*~'!dowl\n hre",c):*s?
    x(f,s+1,putchar(x(f-2,"^&%!*)",*s))):0;}

    main(){return x(4,"*'@@#)%#~@$&!",65);}

İki kodun da çıktısı;
Kod:
test@deneme ~ $ /home/test/program
hello world!

Uyarı olarak kodu tam olarak okumanızın mümkünatı olmadığı için obfuscate edilmiş kodları internetten indirip derlemenizi tavsiye etmiyorum, kodun içeriği sahibinin size söylediği şeyi barındırmayabilir.

Kodun çıktıları ve yaptığı şey birebir aynı olmasına rağmen obfuscate edilmiş kod, insanlar tarafından okunup anlaşılması çok daha zordur. Tabii ki tersine mühendislik yoluyla çözülemeyecek hiçbir kod yoktur ancak obfuscation işlemleri işleri daha da zorlaştırmaya yönelik. Yukarıdaki örnek sadece bir durumu temsil etmektedir, bir kodu obfuscate eden birçok yazılım ve yöntem vardır.
C/C++ kodunu compile ediyorsun zaten. Ayrıca compile ederken compiler zaten kodu yine en temel ve basit hale çevireceği icin bir disassembler ile incelediğin zaman yine neyin ne yaptığını anlayabileceksin. Belki assembly instructionları biraz daha karmaşık olur ama bu da programın çalışma hızını etkilemekten başka bir işe yaramamış olur. Obfuscation sadece Java, Python, Lua gibi native olarak compile edilmeyen dillerde gerçekten işe yarayabilir. Kısacası native compile edilmiş bir programı zaten analiz etmesi zor. Sen bü yöntemle daha da zorlaştıratım dersen çukura düşmüş olursun.
 
C/C++ kodunu compile ediyorsun zaten. Ayrıca compile ederken compiler zaten kodu yine en temel ve basit hale çevireceği icin bir disassembler ile incelediğin zaman yine neyin ne yaptığını anlayabileceksin. Belki assembly instructionları biraz daha karmaşık olur ama bu da programın çalışma hızını etkilemekten başka bir işe yaramamış olur.
Bununla ilgili bir espiri vardı. "Eğer Assembly okuyabiliyorsan senin için her şey açık kaynaktır." yaklaşık böyle bir şeydi.

1758658656819.webp