Tum adimlar​

Gerekli araclari indirelim​

Obfuscator'u derleme​

  • Windows arama kismina x64 Native Tools Command Prompt for VS 2017 yazin ve calistirin.
  • git clone -b llvm-9.0.1 https://github.com/heroims/obfuscator.git yazarak projeyi klonlayin, cd obfuscator yazarak dizine gidin ve mkdir build yazarak build klasorunu olusturun ardindan cd build yazarak klasorun icine gidin.
  • cmake -DCMAKE_BUILD_TYPE=Release -G "Ninja" .. yazarak ninja.build dosyasini olusturalim. Islem tamamlandiktan sonra derlemek icin ninja yazmaniz yeterli. Derleme suresi islemcinize gore degisebilir.

Obfuscator'u kullanma​

  • build klasorunun icinde bin diye bir klasor olusacaktir, bu klasorun icinde ki her seyi kopyalayin ve C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\Llvm\bin dizinine uzerine yazmayi kabul ederek yapistirin.
  • Artik obfuscator hazir, kullanmak icin x64 Native Tools Command Prompt for VS 2019'u baslatmaniz yeterlidir. Parametreleri aciklayarak ornek bir komut vereyim: clang++ -D__CUDACC__ -D_ALLOW_COMPILER_AND_STL_VERSION_MISMATCH -mllvm -sub -mllvm -sub_loop=3-mllvm -bcf -mllvm -bcf_loop=3 -mllvm -bcf_prob=40 -mllvm -fla -mllvm -split -mllvm -split_num=3 -mllvm -aesSeed=96a4072c316a5845e404b6d6af5d2081 ornek.cpp -o ornek
-D__CUDACC__ -D_ALLOW_COMPILER_AND_STL_VERSION_MISMATCH LLVM surumumuz eski oldugu icin derleme yaparken hata almamak icin kullaniriz. Aslinda yeni LLVM surumleri repoda var fakat test etmedigim icin konuya eklemedim.
-mllvm obfuscation parametrelerini tanimlamak icin gereklidir.
-sub Instruction Substitution (Talimat Yerine Koyma) Kodun bazi talimatlarini, esdeger ama farkli talimatlarla degistirir.
-sub_loop=3 Instruction substitution islemi icin 3 kere tekrar uygular veya derinligi 3 seviyeye cikarir. Yani yer degistirme islemi birkac kez katmanli olarak yapilir.
-bcf Bogus Control Flow (Sahte Kontrol Akisi) Gercek olmayan (bos/dolgu) kosul dallanmalari ekleyerek kontrol akisini karmasiklastirir.
-bcf_loop=3 Bogus control flow icin yine 3 katmanli veya 3 dongu derinliginde uygular.
-bcf_prob=40 Sahte kontrol akisinin uygulanma ihtimali %40 olarak ayarlanir. %40 ihtimalle kodun belli kismlarina sahte dallanma eklenir.
-fla Control Flow Flattening (Kontrol Akisi Duzlestirme) Fonksiyonlarin kontrol akis yapisini duzlestirerek, tipik if-else, switch-case yapilarindan cok daha karmasik ve tekil bir dongu yapisina donusturur.
-split Kodun parcalarini (fonksiyonlari ya da bloklari) bolerek karmasiklastirma yapar.
-split_num=3 Bolme islemini 3 parcaya ayirarak uygular.
-aesSeed= AES tabanli bir tohum (seed) degeri belirtmek icin kullanilir. Ornek AES Key olusturucu:
Python:
import os
key = os.urandom(16)
print(key.hex())
ornek.cpp -o ornek cpp dosyasinin ve cikti dosyasinin yolunu ve adini belirttigimiz parametre. Mesela ornek.cpp >> ornek.exe seklinde donusturme yapiyor su anda.

Bilgilendirme​

Evet rehber buraya kadardi, bu islemlerin derleme surecini cok daha uzatabilecegini unutmayin.
 
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. Tersine mühendisliği zorlaştırmaktır genel amaç. Not olarak eklemek istedim.