Open Source Kernel Cloak C++ Header-Only Obfuscation

  • Konuyu Başlatan Konuyu Başlatan 0x1A2F4
  • Başlangıç tarihi Başlangıç tarihi

0x1A2F4

Master Üye
Katılım
27 Mar 2023
Mesajlar
979
Beğeniler
405

Özelliklere Genel Bakış

  • 4 Seviyeli String Şifreleme – Basit XOR, wide-string desteği, stack üzerinde karakter karakter inşaa etme (binary içinde kesinlikle string literali bırakmaz) ve otomatik runtime key yenileme (re-keying) özelliğine sahip 3 katmanlı şifreleme (XOR → XTEA block cipher → Fisher-Yates byte permütasyonu).
  • Değer Gizleme (Value Obfuscation) – Derleyicinin "constant folding" (sabit katlama) gibi optimizasyonlarını engelleyen bariyerlerle, integer ve pointer'lar için XOR kodlamalı depolama.
  • Karışık Boolean Aritmetiği (MBA) – ADD, SUB, AND, OR, XOR, NEG işlemlerini cebirsel olarak matematiksel eşdeğeri olan karmaşık boolean formlarına ayırma (her işlem için 3 farklı varyasyon bulunur ve çağrıldığı yerde otomatik seçilir).
  • Obfuscate Edilmiş Karşılaştırmalar – EQ, NE, LT, GT, LE, GE gibi mantıksal karşılaştırmaların doğrudan değil, MBA ara değerleri üzerinden hesaplanması.
  • Opaque Predicates (Şaşırtmaca Koşullar) – RDTSC entropisi, stack adresleri ve derleyicinin içyüzünü çözemediği matematiksel özdeşlikleri (identities) kullanarak her zaman True veya her zaman False dönen koşul ifadeleri.
  • Kontrol Akışı Gizleme (Control Flow Obfuscation) – Araya enjekte edilmiş opaque (saydam olmayan) koşullar, çalışmayan ölü kod blokları (dead code sleds) ve sahte state-machine'ler (durum makineleri).
  • CFG Flattening (Kontrol Akış Grafiği Düzleştirme) – Fonksiyona özel bir anahtar (key) olmadan geri döndürülemeyen FNV-1a hashli state etiketleri ve XOR şifreli state geçişleriyle tam CFG düzleştirme.
  • Anti-Debug – KUSER_SHARED_DATA okumaları, DR7 register'ı için ayrılmış alanlar üzerinden hardware breakpoint tespiti, RDTSC ile single-step (tek adım) süre ölçümü, process debug flag'leri ve KdDebuggerEnabled/NotPresent kontrolleri. Tespit durumunda verilecek tepki ayarlanabilir: Görmezden gel, KeBugCheck (Mavi Ekran verdir) veya stack'i boz (stack corruption).
  • Anti-VM – CPUID hypervisor biti ve vendor string hash'leme, IA32_VMX_BASIC MSR kontrolü, registry üzerinde kalıntı (artifact) taraması (VMware/VBox/Hyper-V/KVM/Xen/QEMU/Parallels) ve SMBIOS üretici tespiti.
  • Dinamik Import Çözümleme – Çalışma zamanında (runtime) PsLoadedModuleList üzerinde gezinerek export'ları FNV-1a hash ile dinamik olarak çözer. IAT (Import Address Table) girdisi oluşturmaz. Forwarded (yönlendirilmiş) export'ları recursive olarak işleyebilir.
  • .text Bütünlük (Integrity) Kontrolü – Kod bölümünüzün (section) FNV-1a hash'ini alarak temel bir doğrulama yapar ve inline hook pattern'lerini (jmp rel32, jmp [rip+disp32], mov rax/jmp rax, int3, push/ret) tespit eder.
  • PE Header Silme – Sürücü yüklendikten (post-init) sonra bellekten DOS/NT başlıklarını ve section tablosunu sıfırlar. WinDbg'nin !dh komutunu, IDA analizini ve PE parser araçlarını patlatır/işlevsiz kılar.
  • Kernel Uyumlu Primitifler – Sabit boyutlu diziler, RAII tabanlı pool allocation'lar, Interlocked* üzerinden lock-free atomik işlemler ve IRQL durumunu kaydedip geri yükleyen RAII spinlock'lar.
  • Kriptografik Primitifler – FNV-1a (32/64 bit, case-insensitive, wide string destekli), rolling XOR şifreleme, XTEA block cipher. Hepsi derleme zamanında (constexpr) şifreleme ve runtime'da şifre çözme (decrypt) desteğine sahip.
  • Derleme Zamanı (Compile-time) PRNG – __TIME__, __COUNTER__, __LINE__ kullanarak seed alan xorshift32. Her derlemede tamamen benzersiz anahtarlar (keys), farklı varyant seçimleri ve eşsiz bir çıktı (binary) üretilir.
  • Runtime PRNG – RDTSC, performans sayaçları, interrupt time, PID/TID ve stack KASLR entropisinden seed alan xorshift128+.

#NOT Her özelliğin config.h içinde kendi kapatıp açma özelliği mevcuttur istediğinizi devre dışı bırakıp istediğinizi kullanabilirsiniz bu tamamen size kalmış

Kullanım:

C++

  1. #include "kernelcloak.h"

  2. NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath) {
  3. // encrypted strings - zero plaintext in binary
  4. DbgPrint("%s\n", KC_STR("driver loaded"));

  5. // anti-debug: check and respond
  6. if (KC_IS_DEBUGGED()) {
  7. KC_ANTI_DEBUG();
  8. return STATUS_ACCESS_DENIED;
  9. }

  10. // nuke PE headers from memory
  11. KC_ERASE_PE_HEADER();

  12. // obfuscated values
  13. auto magic = KC_INT(0xDEADBEEF);

  14. // mixed boolean arithmetic - compiler sees algebraic decomposition, not your math
  15. auto result = KC_ADD(magic, KC_INT(0x1000));

  16. // obfuscated comparison
  17. if (KC_EQ(result, KC_INT(0xDEADCEEF))) {
  18. return STATUS_SUCCESS;
  19. }

  20. return STATUS_UNSUCCESSFUL;
  21. }




Otomatik yeniden anahtarlama ile üç katmanlı şifrelenmiş string'ler:
C++

  1. // XOR -> XTEA block cipher -> Fisher-Yates shuffle
  2. // automatically re-encrypts with new keys every 1000 accesses
  3. KC_STR_LAYERED_HOLDER(secret, "sensitive_data");
  4. char buf[64];
  5. secret.decrypt(buf);
CFG düzleştirme – fonksiyonunuzu şifreli bir durum makinesine (state machinenine) dönüştürür:
C++

  1. KC_FLAT_FUNC(NTSTATUS, ProcessRequest, int type) {
  2. KC_FLAT_BLOCK(__entry) {
  3. KC_FLAT_IF(type == 1, handle_read, handle_write);
  4. }

  5. KC_FLAT_BLOCK(handle_read) {
  6. // ... read logic
  7. KC_FLAT_RETURN(STATUS_SUCCESS);
  8. }

  9. KC_FLAT_BLOCK(handle_write) {
  10. // ... write logic
  11. KC_FLAT_RETURN(STATUS_SUCCESS);
  12. }

  13. KC_FLAT_END();
  14. }

Dinamik import gizleme – IAT yok, statik referans yok:
C++

  1. // resolves at runtime by walking PsLoadedModuleList + export tables
  2. // function name never appears in your binary
  3. auto pMmCopyMemory = KC_IMPORT("ntoskrnl.exe", "MmCopyMemory");
Stack üzerinde oluşturulan string'ler – binary içinde kelimenin tam anlamıyla sıfır string verisi:
C++

Kod:
// her karakter bir template parametresidir, ayrı ayrı şifrelenir
KC_STACK_STR(key, 'p','a','s','s','w','o','r','d','\0');

İşlemlerin Altında Neler Dönüyor?

Her makro, çağırıldığı her noktada (call-site) expand edilerek tamamen benzersiz bir koda dönüşür. Compile-time PRNG, her call-site için özel anahtarlar (keys) oluşturmak adına __COUNTER__ ve __LINE__ makrolarını seed olarak kullanır. Bu sayede kodunuzdaki iki farklı KC_STR("hello") çağrısı, birbirlerinden tamamen farklı ciphertext'ler (şifreli metinler) ve decryption (şifre çözme) rutinleri üretir. MBA (Mixed Boolean Arithmetic) işlemleri, her çağrıldığında 3 farklı cebirsel varyasyon arasından rastgele seçim yapar. Opaque predicate'ler (şaşırtmaca koşullar), 5 farklı "always-true" (her zaman doğru dönen) yapıdan rastgele çekilir. Sonuç olarak ortada, analistlerin tespit edip imza (signature) oluşturabileceği tek bir sabit desen (pattern) bile kalmaz.

CFG Flattening (Kontrol Akış Grafiği Düzleştirme) mekanizması özel bir parantezi hak ediyor: State (durum) etiketleri, __COUNTER__ üzerinden türetilen ve fonksiyona özel olan bir seed kullanılarak "keyed FNV-1a" ile hashlenir. Bu anahtarı (key) bilmeden, şifrelenmiş state değerlerini orijinal etiketlerine geri döndürmeniz imkansızdır. Asla çalışmayacak olan (false predicate) koşullar altına enjekte edilen ölü kod blokları (dead code sleds), oluşturulan state-machine'e (durum makinesine) inanılmaz bir gürültü (noise) ve karmaşa katar.

Anti-debug modülü, donanımsal (hardware) breakpoint'leri tespit etmek için pool bellek alanında çalıştırılabilir (executable) bir stub (mov rax, dr7; ret) allocate eder ve bunu çağırır. Bu yöntem sayesinde, analistlerin kolayca hook atabildiği klasik NtGetContextThread pattern'lerinden kaçınmış oluruz. RDTSC timing (zamanlama) kontrolü, 4 volatile (geçici) işlemden oluşan sıkı bir baseline (temel çizgi) kullanır ve 5000 tick'in üzerindeki her şeyi flagler. Debugger'da atılan her bir adım 10.000'den fazla tick'e mal olacağı için, kodun adımlanarak incelenmesi (single-stepping) işlemi anında yakalanır.

Dinamik Import gizleme sistemi, PsLoadedModuleList üzerinde gezinir ve importları hash üzerinden çözer. Çoğu benzer projenin atladığı "forwarded export"ların (yönlendirilmiş fonksiyonların) recursive olarak çözülmesi de buna dahildir, import ettiğiniz fonksiyonlar asla IAT (Import Address Table) tablosuna dokunmaz ve çağırdığınız fonksiyonların isimleri binary içinde hiçbir yerde gözükmez.

Teknik Detaylar​

  • C++20 Güncel modülüyle beraber artık şart. (27.04.2026)
  • Header-only (Yalnızca Başlık) – Projenize dahil etmek için sadece #include "kernelcloak.h" yapmanız yeterlidir; kütüphane derleme (linkleme) zahmeti çıkarmaz.
  • Sıfır Harici Bağımlılık – WDK (Windows Driver Kit) header'ları ve compiler intrinsic'leri (derleyiciye yerleşik fonksiyonlar) dışında hiçbir şeye ihtiyaç duymaz.
  • Sıfır CRT (C Runtime) Bağımlılığı – Kernel ortamında sorun çıkaran atexit, statik destructor'lar (yıkıcılar) veya STL yapılarını kesinlikle kullanmaz.
  • IRQL-Safe (IRQL Güvenli) – Her fonksiyon, çalışabileceği maksimum güvenli IRQL seviyesini belgelerinde belirtir.
  • MSVC Optimizasyonu – Donanım ve işlemci düzeyinde tam kontrol için _ReadWriteBarrier(), __rdtsc(), __cpuid(), __readmsr() ve Interlocked* intrinsic'lerini kullanacak şekilde optimize edilmiştir.
  • Her Derlemede Benzersiz Çıktı – __TIME__ üzerinden seed alan derleme zamanı (compile-time) PRNG'si sayesinde, kodda hiçbir değişiklik yapmasanız bile her yeni "Build" işlemi tamamen farklı bir binary çıktı üretir.
  • Graceful Degradation (Kademeli Düşüş) – Herhangi bir hata durumunda sistemin çökmesini engellemek için tüm özellikler güvenli bir şekilde (fail-safe) devreden çıkacak şekilde tasarlanmıştır.




Bu proje bana ait değildir orjinal sahibi (inaktif)


DW:


Cheatglobal keşfetimde bir şey belirdi john..

ib0b6zj.jpeg

 
Son düzenleme:
Eline sağlık güzel olmuş ancak yapay zeka mı yaptı bi ara bende yapmıştım bunların aynısını yapmıştı
 
Bu kullanıcıyla herhangi bir iş veya ticaret yapmak istiyorsanız, forumdan uzaklaştırıldığını sakın unutmayın.
Eline sağlık güzel olmuş ancak yapay zeka mı yaptı bi ara bende yapmıştım bunların aynısını yapmıştı
niye acaba AI ile proje yapıp hiçbir şey öğrenmeyen copy-paste tayfadan da nefret ediyorum
 
niye acaba AI ile proje yapıp hiçbir şey öğrenmeyen copy-paste tayfadan da nefret ediyorum
onlar genelde istedikleri bir özellik ya da bir şeyi ekleyemeyince takılıp kalıyorlar ya onların belli kapasitesi var onun üstüne çıkamıyorlar
 
başlık ve açıklamaların falan kernelcloak için ancak verdiğin link cloakwork için, kernelcloak kernel için diğeri usermode için, tekrar düzenlesen iyi olur yanlış vermişsin, kernelcloak driver için kullanılıyor
 
başlık ve açıklamaların falan kernelcloak için ancak verdiğin link cloakwork için, kernelcloak kernel için diğeri usermode için, tekrar düzenlesen iyi olur yanlış vermişsin, kernelcloak driver için kullanılıyor
Gözümden kaçmış kusura bakmayın değiştiricem dwyi
 
Bu kullanıcıyla herhangi bir iş veya ticaret yapmak istiyorsanız, forumdan uzaklaştırıldığını sakın unutmayın.
Sen konuşma la benimkini yicen daha

hmmm öyle mi olmuş 2 gün önce bana yazıyordun beraber loga çıkalım fudun çok iyi diye yüz vermeyince kudurdun sende :haha:
Oha kanka amk gdfkjglkşdsfjgşlkdsfjg abart abart öyle dememişimdir kırmızı halı falanda atmışımdır amk gdşfkjsgşkdsjl değişiğe bak senin boklu fuduna mı kaldım sana gel çalışabiliriz dedim sadece
 

Şuanda konuyu görüntüleyen kullanıcılar

Geri
Üst Alt