Konu Başlıkları Gizle
Tum adimlar
Gerekli araclari indirelim
- https://download.visualstudio.micro...d3176560aa23b03f102380e02746/vs_Community.exe adresinden Visual Studio 2017'i indirin ve kurun. Kurarken Desktop development with C++'yi secmeyi unutmayin.
- https://download.visualstudio.micro...6219fa17f09c7e2f3c7cd74d9c9e/vs_Community.exe adresinden Visual Studio 2019'i indirin ve kurun. Kurarken Desktop development with C++'yi ve icinden C++ Clang tools for Windows'u secmeyi unutmayin.
- https://git-scm.com/downloads/win adresinden Git'i indirin ve kurun.
- https://cmake.org/download/ adresinden CMake'i indirin ve kurun, 3.31.8 surumunu kurmaya dikkat edin, 4.0.0 ve ustu surumler calismayacaktir.
- https://github.com/ninja-build/ninja/releases/latest adresinden ninja-win.zip dosyasini indirin ve klasore cikartin, icinde ki ninja.exe'yi
C:\Program Files\CMake\binicerisine kopyalayin.
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.gityazarak projeyi klonlayin,cd obfuscatoryazarak dizine gidin vemkdir buildyazarak build klasorunu olusturun ardindancd buildyazarak klasorun icine gidin.cmake -DCMAKE_BUILD_TYPE=Release -G "Ninja" ..yazarak ninja.build dosyasini olusturalim. Islem tamamlandiktan sonra derlemek icinninjayazmaniz 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\bindizinine 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_MISMATCHLLVM surumumuz eski oldugu icin derleme yaparken hata almamak icin kullaniriz. Aslinda yeni LLVM surumleri repoda var fakat test etmedigim icin konuya eklemedim.
-mllvmobfuscation parametrelerini tanimlamak icin gereklidir.
-subInstruction Substitution (Talimat Yerine Koyma) Kodun bazi talimatlarini, esdeger ama farkli talimatlarla degistirir.
-sub_loop=3Instruction substitution islemi icin 3 kere tekrar uygular veya derinligi 3 seviyeye cikarir. Yani yer degistirme islemi birkac kez katmanli olarak yapilir.
-bcfBogus Control Flow (Sahte Kontrol Akisi) Gercek olmayan (bos/dolgu) kosul dallanmalari ekleyerek kontrol akisini karmasiklastirir.
-bcf_loop=3Bogus control flow icin yine 3 katmanli veya 3 dongu derinliginde uygular.
-bcf_prob=40Sahte kontrol akisinin uygulanma ihtimali %40 olarak ayarlanir. %40 ihtimalle kodun belli kismlarina sahte dallanma eklenir.
-flaControl 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.
-splitKodun parcalarini (fonksiyonlari ya da bloklari) bolerek karmasiklastirma yapar.
-split_num=3Bolme 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 ornekcpp dosyasinin ve cikti dosyasinin yolunu ve adini belirttigimiz parametre. Mesela ornek.cpp >> ornek.exe seklinde donusturme yapiyor su anda.