Skip to content

Releases: Memati8383/Tengri

TENGRI v1.8.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 13:04

TENGRİ 1.8.0

Bu sürüm iki yeni yüz ve bir geri alma revizyonu getiriyor: masanın üstünde yüzen
Medya Adası, onuncu sekme olarak Disk Analizörü, ve yedekten dönerken artık
tek tek değer yazan bir geri yükleme yolu. Arayüzün geri kalanı yerinde duruyor;
tüm ekran görüntüleri bu derlemeden TENGRI_SHOT=1 ile yeniden alındı.

Rakamlar tahmin değil, yerel derlemeden ölçüldü: exe 2.139.648 bayt, altı test
paketi 938 denetim / 0 hata, registry tablosu 92 anahtar ve 80 ayar
(tools\make_tweak_table.ps1 sayıyor; CI üretilmiş tabloyu kaynakla karşılaştırıyor).

Medya Adası

Uygulamanın kendi penceresinden bağımsız, üstte-görünür, şeffaf bir pencere
(src/core/island.cpp, yeni). Yüzeyi fare dışındayken tıklamayı geçirir; yalnızca
üzerine gelindiğinde etkinleşir. Neden ayrı pencere: tek pencereye çizilen bir ada,
uygulama küçültüldüğünde ya da tepsiye gizlendiğinde onunla birlikte kaybolurdu.

Adaya ayrı bir ImGui bağlamı ve ayrı bir D3D11 cihazı açtırmadık — ada, uygulamanın
cihazı üzerinde kendi swap zincirini açar ve karesini ana pencerenin karesinden
sonra çizer. Aynı bağlamda ikinci bir NewFrame denemesi tüm pencereyi
tıklanamaz hâle getiriyordu; bu yüzden ada kendi ImDrawList'ini kullanıyor.

  • Okuduğu şey: Windows'un medya oturumu API'sinden (SMTC) yalnızca Spotify
    oturumunun
    parça bilgisini, kapağını ve ses seviyesini okur; diğer oynatıcıların
    oturumları listelenmez.
  • Altı tema: Black, Spotify, Aurora, Sunset, Ocean, Cover. Kartta tema düğmesiyle
    ya da Ayarlar → Medya Adası → tema şeridiyle değişir.
  • Etkileşim: INSERT ile göster/gizle, üzerine gelince genişler, tekerlekle ses.
  • Masaüstü modu: başka bir pencere öndeyken adanın gizlenmesi.
  • Senkronize sözler: çalan şarkı lrclib.net'e sorulur (bkz. aşağıdaki ağ notu ve
    SECURITY.md). Ayarlar → Medya Adası → Senkronize sözler ile kapatılınca istek
    hiç çıkmaz; adanın kendisi de Adayı göster ile kapatılır.

Disk Analizörü

Kenar çubuğuna onuncu sekme olarak eklendi (src/core/diskanalyzer.cpp, yeni; arayüzden
bağımsız, salt Windows API). İki tarama yolu var ve arayüz motor seçimiyle ilgilenmez:

  • MFT: yönetici yetkisiyle \\.\C: ham bölümünden $FILE kayıtları doğrudan
    okunur; milyonlarca dosya dizin gezmeden tek sıralı okumayla ağaca dönüşür. Yalnızca
    NTFS bölümlerde çalışır.
  • Walk: paralel FindFirstFile gezisi. Yetki gerektirmez; çıkarılabilir, ağ ve
    tek-klasör hedeflerinde tek yoldur. NTFS'te MFT açılamazsa buna düşülür.

Sonuç her iki yolda da parent-index'li düz bir düğüm dizisidir; dizin düğümlerinin
boyutu alt ağaç toplamı olarak yukarıdan toplanır. Görselleştirme: treemap, renk
modları, ağaç görünümü, halka grafiği ve arama. Birim testler (tests/test_disk.cpp,
258 denetim) ParseMftRecord, DecodeDataRuns ve LayoutTreemap'i sahte kayıt
tamponlarıyla sınar — gerçek diskten okuma yapmaz, canlı yürüyüş testleri yalnızca
%TEMP% altında kendi kurduğu ağaçta koşar.

Disk Analizörü'nün ekran görüntüsü yok, ve bu bir eksiklik değil tercih: ekran
makineye özgü klasör adlarını ve boyutlarını çiziyor, TENGRI_SHOT kipi yalnızca
tanıtıcı alanları maskeleme sözü veriyor. Bu sekmenin davranışı görselle değil,
README'deki Disk Analizörü tablolarıyla anlatılıyor.

Yedekten dönüş artık değer değer yazıyor

Geri alma, .reg dosyasını reg.exe ile içe aktarmak yerine çözülen baytları
doğrudan
RegSetValueExW / RegDeleteValueW ile yazıyor (src/core/regwrite.hpp,
yeni). İki sebep:

  1. Doğrulanan dosya ile içe aktarılan dosya aynı yolun iki ayrı açılımıydı; aralarında
    aynı kullanıcının içeriği değiştirmesi mümkündü. Artık dosya bir daha açılmıyor.
  2. reg.exe'nin allowlist kavramı yok; kapsamı yalnızca bizim denetimimiz belirliyordu.

Kapsam artık değerin adına kadar daraltıldı: içeri kapısı (src/core/regtext.hpp)
bir dosyanın üretilmiş tabloda gerçek bir (kategori, sıra) çifti olduğunu ve içindeki
her anahtar satırının o çiftin anahtarlarından birinin kendisi ya da alt anahtarı
olduğunu, hem de yazılacak değer adının tablodaki hedefle eşleştiğini denetliyor.
Bunun bir yan etkisi var: 1.7.0'ın ürettiği alt ağaç dökümü .reg dosyaları bu
kapıdan geçmez — o dosyalar tek bir değeri değil tüm alt ağacı taşıyordu ve değer adı
kapsamını aşan satırlar içeriyor. Yani 1.7.0 yedekleri bilinçli olarak reddediliyor;
1.8.0'dan alınan yedekler geri yüklenir.

Yerel girdilerin güven sınırı (bu sürümde eklenen)

  • Kendinden-gelen kapısı (src/core/selfgate.hpp, yeni): WM_COPYDATA aynı
    oturumdaki her sürecin açık kanalıdır ve UIPI yalnızca daha düşük bilesenlik
    (integrity) seviyesindeki gönderenleri engeller — aynı seviyedekileri engellemez.
    Bildirim komutlarını (sekme değiştir, öne getir, yazma işini tekrarla, indirme
    başlat) yalnızca kendimizden kabul etmek için gönderenin tam exe yolu ve
    kullanıcı SID'i bizinkine eşit olmak zorunda; ikisi de başarıyla okunabilmeli.
    Bu bir ayrıcalık sınırı değil (saldırgan zaten kendi yetkimizle exemizi
    çalıştırabilir); sağladığı, rastgele bir sürecin arayüzümüze komut fıratamaması ve
    gereksiz UAC kapısı açılamaması. Ayrıcalık sınırı olarak UAC duruyor.

Ölçülen rakamlar

Değer
Registry anahtarı 92 (tools\make_tweak_table.ps1 sayıyor; CI üretilmiş tabloyu kaynakla karşılaştırıyor)
Ayar (tweak) 80, 0 eksik
Test denetimi 938, 0 hata (altı paket)
exe boyutu 2.139.648 bayt yerel derleme; yayınlanan CI derlemesinin boyutu ve SHA-256'sı latest.jsonda yazıyor (araç seti yamasına göre birkaç KB oynar)
Sekme 10 (Disk Analizörü eklendi)
Ekran görüntüsü 11 — giriş + dokuz sekme + medya adası; Disk Analizörü'nün görseli yok (yukarıda gerekçesi)
Medya adası teması 6
Ağ çıkışı 4 — github latest.json, github indirme, 1.1.1.1 ICMP, lrclib.net söz araması; hepsi README Ağ kullanımı ve SECURITY.md'de satır satır
Temizlik kategorisi 10
RAM profili 14

Testler

Paket Denetim
test_pure.cpp 361 — i18n tabloları (boyut + sıra), tweak sözleşmeleri, .reg gövdeleri, yetki devri kodlama/çözme, yedek dosyası adı ayrıştırması ve değer adı kapsamı içeren içerik kapısı
test_modules.cpp 44 — geri yükleme, hizmet beyaz listesi, başlangıç kapsamları, shader taraması
test_license.cpp 22 — lisans maskesi, HWID, kalıcılık (izole APPDATA)
test_write_paths.cpp 83 — temizleyici tersinirliği, yedek kök/listeleme, üretilen gerçek .reg dosyalarının kapıdan geçmesi, kodlama çözümlemesi (UTF-16LE/BOM/UTF-8), içe aktarmayı reddetme yolları
test_update.cpp 170 — sürüm karşılaştırma, bildirim ayrıştırma, adres kilidi, SHA-256
test_disk.cpp 258 — $MFT kayıt ayrıştırması, run listesi, $SDS sahip sözlüğü, önbellek gidiş-dönüşü ve red yolları, paralel dilim planı, treemap yerleşimi, UTF-16/UTF-8, canlı yürüyüş (yalnızca %TEMP%)

Altı paketin hiçbiri gerçek registry'ye yazmıyor ve hiçbiri gerçek $MFT okumuyor.
Yazma yolları testte izole LOCALAPPDATA altına yazıyor ve sonunda siliyor.

Ağ notu

Söz araması bu projede üçüncü bir tarafa içerik taşıyan tek istektir: sorgu
dizesinde o an çalan şarkının sanatçısı, adı, albümü ve süresi gider. HWID, makine adı
ve lisans anahtarı hiçbir isteğe eklenmez. Sözler kapatılınca istek tamamen durur.
Ayrıntı: SECURITY.md ve
README'deki Ağ kullanımı
bölümü.

Kurulum

TENGRI.exe dosyasını indirip çalıştır. Kurulum gerekmez. Yönetici yetkisi yalnızca
ayar uygularken, başlangıç girdisi kaldırırken, hizmet değiştirirken ve Disk
Analizörü'nün MFT yoluyla taraması sırasında istenir; açarken, sistem bilgisi /
başlangıç listesi / hizmet durumu okurken ve Walk ile tararken hiç sorulmaz.

⚠️ UYARI: antivirüs uyarısı

TENGRİ HKEY_LOCAL_MACHINE altına yazıyor, hizmet yapılandırması için
ChangeServiceConfigW kullanıyor, ham disk bölümünden $MFT okuyor ve kendi exe'sini
indirip çalışan dosyanın yerine koyuyor. Bunlar bir "sistem iyileştirici" zararlı
yazılımın davranış imzasıdır; sezgisel motorlar imzasız çalışanları işaretleyebilir.
Ayrıntı: SECURITY.md

Bilinen sınırlar

  • Dosya imzasız. Authenticode yok. Güncelleme akışı indirilen dosyayı bildirilen
    SHA-256 ile doğruluyor ve adresi github.com ile sınırlıyor, ama özet ile exe aynı
    depodan geldiği için deposu ele geçirilmiş bir yayını yakalamaz.
  • Lisans ekranı demodur: her anahtar kabul edilir, sunucuya karşı doğrulama yok.
  • Medya Adası yalnızca Spotify oturumunu okur; diğer oynatıcılarda kart boş kalır.
  • Disk Analizörü MFT yolu yönetici ister ve yalnızca NTFS'te çalışır; ötekiler Walk
    yoluna düşer (daha yavaş ama yetkisiz).
  • Temizleyici kökleri ortam değişkenlerinden çözülüyor; o değişkenleri değiştirebilen
    bir program temizlenecek ağacı da değiştirebilir.
  • Gecikme profili sistem geneli SEHOP'i kapatıyor — belgelediğimiz, kasıtlı ve geri
    alınabilir bir davranış.
  • 1.7.0'dan alınan yedekler değer adı kapsamına uymadığı için geri yüklenemez (yukarıda
    gerekçesi).

TENGRI v1.7.0

Choose a tag to compare

@github-actions github-actions released this 12 Oct 00:18

TENGRİ 1.7.0

Bu sürüm arayüz değiştirmiyor. Yerel girdilerin güven sınırını sağlamlaştırıyor ve
o çalışmalar sırasında bulunan iki veri bütünlüğü hatasını kapatıyor. Bunlardan biri
kullanıcı için görünür bir onarım: registry yedeği alma ve geri alma daha önce hiç
çalışmıyordu.

Rakamlar tahmin değil: yerel derleme 1.814.016 bayt, beş test paketi 608 denetim /
0 hata
, registry tablosu 80 anahtar.

Yedek alma ve geri alma ilk kez gerçekten çalışıyor

RegKeyPath kısaltılmış hive adını tam adına çevirirken ayraç çizgisini yutuyordu:
HKCU\Control Panel\Mouse → HKEY_CURRENT_USERSoftware\... değil,
HKEY_CURRENT_USERControl Panel\Mouse. reg.exe böyle bir anahtarı bulamıyor ve dışa
aktarım başarısız oluyordu; ExportForCategories de tek bir anahtar bile
aktarılamadığında boş klasör bırakıp false dönüyordu. Yani uygulama hiçbir sürümde
gerçek bir yedek üretmemişti
— geri alma da boşuna bekleyen bir düğmeydi. Makinedeki
%LOCALAPPDATA%\TENGRI\backups klasörünün hiç dolmamış olması bunu doğruluyor.

Düzeltme sonrası testte 32 gerçek yedek dosyası üredi (test kategorileri 0–5, tablodaki
tüm anahtarlar) ve hepsi içerik kapısından geçti; ayrıca ayrı ölçüldü: üretilmiş
tablodaki 54 anahtarın 54'ü bu makinede var ve yükseltilmemiş bir süreçte bile dışa
aktarılabiliyor. Geçen dosya sayısı her derlemede test_write_paths çıktısında satır
olarak görünüyor, böylece "kapı var ama gerçek çıktıya hiç uygulanmadı" ayrımı
ölçülebilir kalıyor.

İkinci hata sessizdi: aynı ayar birden fazla registry anahtarına yazıyorsa hepsi aynı
<kategori>-<sıra>.reg adına dışa aktarılıyordu, yani son anahtar öncekilerin
üzerine yazıp yedeği çöpe atıyordu
. Ölçüldü: beş ayar birden fazla anahtara yazıyor.
Tekrar eden anahtarlara artık sıra son eki ekleniyor (3-1-2.reg), böylece ayarın tüm
anahtarları ayrı dosyalarda duruyor ve geri alma hepsini içe aktarıyor.

Ayrıca reg.exe zaman aşımı 30 s → 120 s çıkarıldı: ölçülen en büyük meşru dışa
aktarım 30 MB ve uzun bir içe aktarma yarısında öldürülürse yarı yazılmış bir hive
kalırdı.

Yerel girdilerin güven sınırı

Uygulamanın yükseltilmiş çocuğu, aynı kullanıcının yazabildiği yerleri okuyor. Bu
sürümde o okumaların etki alanı derleme zamanı sabitlerine bağlandı:

  • İçerik kapısı (src/core/regtext.hpp, yeni): backup::Restore() bir .reg
    dosyasını içe aktarmadan önce dosya adının üretilmiş tabloda gerçek bir
    (kategori, sıra) çifti olduğunu, dosyanın UTF-16LE/BOM ya da geçerli UTF-8 olduğunu,
    başlık satırının bulunduğunu ve içindeki tüm anahtar satırlarının o çiftin
    anahtarlarından birinin kendisi veya alt anahtarı olduğunu denetliyor. Silme biçimi
    ([-HKEY...]), başlıksız dosya ve tablo dışı anahtar reddediliyor. Alt anahtar
    hoşgörüsü gerekli: reg.exe bir anahtarı dışa aktarırken alt anahtarlarını da aynı
    dosyaya yazıyor — bu makinede tek bir yedek 14.427 satır alt anahtar taşıyor.
    Yabancı bir dosya en fazla uygulamanın zaten yedeklediği alt ağaca dokunabilir; IFEO,
    hizmet veya Run gibi rastgele bir HKLM anahtarına yazamaz. Okunan dosya 64 MB ile
    sınırlı (ölçülen en büyük meşru yedek 30 MB).
  • Alt süreçler daima System32 tam yoluyla çağrılıyor (src/core/syspath.hpp, yeni):
    reg.exe, net.exe, netsh.exe, powercfg.exe, sc.exe ve srclient.dll. Yalın ad
    vermek CreateProcess'in arama sırasını uygulamanın kendi klasöründen başlatır; portable
    kurulum %USERPROFILE% altında koştuğu için oraya bırakılmış aynı adlı program
    yönetici olarak çalışırdı. Dosya bulunamazsa komut denenmiyor.
  • Başlangıç girdileri: makine kapsamı yedekler artık HKLM'de kendi hive'ında
    duruyor; yükseltilmiş çocuk HKCU'dan okuduğu bir komutu HKLM\Run'a yazmıyor. Eski
    sürümlerin HKCU'da bıraktığı makine yedekleri bu nedenle listede görünmez ve geri
    açılamaz — komut yerinde durur, silinmez.
  • --apply taşıma biçimi: yetki devrinde gelen geri alma klasör adı yalnızca rakam
    ve tire taşıyabilir; yol ayıracı ve nokta kabul edilmez, aksi hâlde klasör adı
    saldırı verisi olarak yönetici çocuğa taşınırdı.
  • Kodlama: argümanlar araç adından ayrı veriliyor, komut satırına tırnak
    basılmıyor; tırnak içeren bir yol hiç denemeden reddediliyor.

SECURITY.md'nin "Yerel girdilerin güven sınırı" bölümü artık uygulanan kuralları
anlatıyor; önceki hali manifest ile çelişiyordu (uygulama asInvoker açılıyor, yalnızca
seçili ayar için runas ile kendini yeniden başlatıyor).

Üretilmiş dokümanda düzeltme

tools/make_tweak_table.ps1, RunCmd iki parametreye ayrılınca komut satırının
yalnızca araç adını görmeye başlamıştı: tabloda powercfg /setactive 8c5e7fda-...
yazması gereken satır powercfg.exe olmuştu. Betik artık araç adı ile argümanları
birleştirip gerçek komut satırını yazıyor; docs/tweaks-registry.md yeniden üretildi.

Ölçülen rakamlar

Değer
Registry anahtarı 80 (tools\make_tweak_table.ps1 sayıyor, CI üretilmiş tabloyu kaynakla karşılaştırıyor)
Yedeklenen anahtar 54 (üretilmiş tablo; 46 ayar çifti)
Test denetimi 608, 0 hata
Gerçek yedek dosyası kapıdan geçen 32 — test kategorileri 0–5'in tüm anahtarları; tabloda bu kategorilere düşen 32 anahtarın 32'si de dışa aktarıldı
exe boyutu 1.814.016 bayt yerel derleme; yayınlanan CI derlemesinin boyutu ve SHA-256'sı latest.jsonda yazıyor (araç seti yamasına göre birkaç KB oynar)
Ekran 9
Temizlik kategorisi 10
RAM profili 14
Ağ çıkışı 3 — değişmedi, hepsi Ağ kullanımı bölümünde satır satır listelenmiş

Testler

Paket Denetim
test_pure.cpp 310 — i18n tabloları (boyut + sıra), tweak sözleşmeleri, .reg gövdeleri, yetki devri kodlama/çözme, yedek dosyası adı ayrıştırması ve içerik kapısı (alt ağaç hoşgörüsü, önek tuzağı, silme biçimi, yanlış başlık)
test_modules.cpp 44 — geri yükleme, hizmet beyaz listesi, başlangıç kapsamları, shader taraması
test_license.cpp 22 — lisans maskesi, HWID, kalıcılık (izole APPDATA)
test_write_paths.cpp 62 — temizleyici tersinirliği, yedek kök/listeleme, üretilen gerçek .reg dosyalarının kapıdan geçmesi, kodlama çözümlemesi (UTF-16LE/BOM/UTF-8), içe aktarmayı reddetme yolları
test_update.cpp 170 — sürüm karşılaştırma, bildirim ayrıştırma, adres kilidi, SHA-256

Beş paketin hiçbiri gerçek registry'ye yazmıyor: içe aktarma yolu testte hiç
koşmuyor
, dışa aktarma ise yalnızca okuma yaptığı için izole LOCALAPPDATA altına
yazıyor ve test sonunda siliniyor. test_write_paths bundan böyle dışa aktarımın
false dönmesini de hata sayıyor — sessiz "hiçbir şey yapmadım" regresyonu artık
geçemiyor.

Kurulum

TENGRI.exe dosyasını indirip çalıştır. Kurulum gerekmez. Yönetici yetkisi yalnızca
ayar uygularken, başlangıç girdisi kaldırırken ve hizmet değiştirirken istenir; açarken,
sistem bilgisi / başlangıç listesi / hizmet durumu okurken hiç sorulmaz.

⚠️ UYARI: antivirüs uyarısı

TENGRİ HKEY_LOCAL_MACHINE altına yazıyor, geçici .reg dosyalarını içe aktarmak için
reg.exe çağırıyor, hizmet yapılandırması için ChangeServiceConfigW kullanıyor ve
kendi exe'sini indirip çalışan dosyanın yerine koyuyor. Bunlar bir "sistem iyileştirici"
zararlı yazılımın davranış imzasıdır; sezgisel motorlar imzasız çalışanları
işaretleyebilir. Ayrıntı:
SECURITY.md

Bilinen sınırlar

  • Dosya imzasız. Authenticode yok. Güncelleme akışı indirilen dosyayı bildirilen
    SHA-256 ile doğruluyor ve adresi github.com ile sınırlıyor, ama özet ile exe aynı
    depodan geldiği için deposu ele geçirilmiş bir yayını yakalamaz — bu kapının
    garanti kapsamı SECURITY.md'de ayrıca yazılı.
  • Lisans ekranı demodur: her anahtar kabul edilir, sunucuya karşı doğrulama yok.
  • Bildirim tıklamaları (WM_COPYDATA) aynı kullanıcıdan gelen bir mesaja karşı
    doğrulanmıyor; Geri al yazmadan önce ekranda onay istiyor, Yinele istemiyor.
  • Temizleyici kökleri ortam değişkenlerinden çözülüyor; o değişkenleri değiştirebilen
    bir program temizlenecek ağacı da değiştirebilir.
  • Gecikme profili sistem geneli SEHOP'i kapatıyor — belgelediğimiz, kasıtlı ve
    geri alınabilir bir davranış.
  • Bu sürüm arayüzü değiştirmedi, bu yüzden docs/screenshots/ altındaki görseller
    1.6.0 derlemesinden kalma ve hâlâ geçerli.

TENGRI v1.6.0

Choose a tag to compare

@github-actions github-actions released this 09 Oct 11:07

TENGRİ 1.6.0

Bu sürüm üç şeyi düzeltiyor: Hakkında sayfasının kurulumu, GitHub silüetinin
küçük boyutta okunmaması
ve depoya sızmış bozuk Türkçe metin. Rakamlar tahmin
değil: yerel derleme 1.784.832 bayt (yayınlanan CI derlemesi 1.773.056), beş test
paketi 496 denetim / 0 hata, registry tablosu
80 anahtar.

Hakkında sayfası yeniden kuruldu

Önceki sayfa dört yığılmış listeden oluşuyordu: sürüm/lisans satırları, uyarı bloğu,
bağlantı satırı, güncelleme rozeti. Sayfanın kendisi hiçbir iş yapmıyordu — yalnızca
okunuyordu.

Yerleşim şimdi dört blok:

Blok İçerik
Marka bloğu Logo, ürün adı ve tagline — tek sanat kaynağı res/tengri-logo.png
Meta şeridi Sürüm (çalışan exe'den okunur), lisans, plan, güncelleme durumu — aralıklar plaka genişliğine göre hesaplanıyor, sabit değil
Yetenek ızgarası Altı tıklanabilir satır: Temizleyici, İnce Ayarlar, Ağ, Hizmetler, Başlatma, Sistem Bilgisi. Tıklamak doğrudan o ekrana götürüyor
Bağlantı satırı Plakanın dibine demirlenmiş tek satır: GitHub, Instagram, kaynak kod

Izgaranın adları ve açıklamaları yeni yazılmadı: sekme tablolarından (kTabNameKeys /
kTabSubKeys) geliyor. Yani dil değişince Hakkında sayfasındaki satırlar da değişiyor ve iki
yer ayrışamıyor.

Uyarı bloğu kaldırıldı. Demo lisans açıklaması artık yalnızca Ayarlar → Hesap
kartında duruyor; aynı bilgi iki sayfada tekrarlanınca hiçbiri okunmuyor.

Ayarlar sayfasında da bir dağılım düzeltmesi var: Dil, ayrı tek-düğmelik kart olmaktan
çıktı ve Genel kartının başına bölüm olarak taşındı — seçim tüm arayüzü anında
değiştirdiği için davranış anahtarlarının ardından gelmemeli.

GitHub silüeti artık doku olarak çiziliyor

Silüet zaten resmi Invertocat konturuydu (251 nokta, 249 üçgen). Sorun geometride
değil, çizim yolundaydı: ImDrawList çokgen doldurma kenarları yumuşatmıyor. 15 px
boyutunda bu, kenarları diş diş olan bir leke demekti; simge tanınmıyordu.

Çözüm aynı konturdan yumuşatılmış bir alfa maskesi üretip doku olarak çizmek:

  • tools/make_brand_icons.ps1 konturu 8× örneklemeyle rasterize ediyor, sonra alfa
    kanalını kutu-ortalamasıyla 32 px'e indiriyor (DX11 dokularında mips yok, maskenin
    kendisi yeterince yumuşak olmalı).
  • Maske PNG olarak res/github-mark.png yazılıyor ve baytları brand_icons.cpp içine
    gömülüyor — 795 bayt.
  • logo.cpp WIC ile 32bppBGRA çözüp doku oluşturuyor; icons.cpp GitHub dalında
    logo::DrawMark çağırıyor ve renk mürekkep değerinden veriliyor, böylece satır
    vurgulandığında simge de aydınlanıyor.
  • Üçgen yolu yedek olarak duruyor: doku bir nedenle hazır değilse silüet yine
    çiziliyor, yalnızca kenarları sertleşiyor.

Depoya sızmış bozuk Türkçe

docs/tweaks-registry.md ve üretilen kaynak yorumları, üretilirken iki kez
kodlanmış UTF-8
olmuştu: Windows PowerShell 5.1, BOM'suz UTF-8 bir .ps1 dosyasını
sistem ANSI kod sayfasında (bu makinede CP1254) okuyor. Betiğin Türkçe satır sonu
yazıları bozuk doğuyor ve bozuk hâliyle depoya giriyordu.

  • docs/tweaks-registry.md: 25 satır düzeltildi — başlıktaki ve giriş paragrafındaki
    İ, ğ, ü, ş karakterleri çift baytlı bozuk izlere dönmüştü.
  • src/gui/font_data.cpp, src/gui/logo_data.cpp: üretici yorumları düzeltildi.
  • Depodaki 19 .ps1 dosyasının tamamı BOM'lu: 18'ine sonradan eklendi, yeni yazılan
    kapı betiği BOM'lu üretildi. BOM artık kural.
  • src/core/lang.cpp: \x kaçışları gerçek UTF-8 karakterlerle değiştirildi (210
    satır). Kaçışlar, sonrasındaki onaltılık harfleri ayırmak için dize birleştirmesi
    gerektiriyordu; metnin kendisi okunamaz hâle geliyordu.

Bu hatanın tekrar üretilememesi için tools/check_text_encoding.ps1 yazıldı: depodaki
100 metin dosyasını tarıyor, geçerli UTF-8 olmayanı, çift kodlanmış imza karakteri
taşıyanı ve BOM'suz .ps1i raporluyor. CI'da derlemeden hemen sonra çalışıyor, yani
bozuk metin artık üretilmiş olsa bile yayına giremez. Betiğin kendi kodlaması da aynı
denetimden geçiyor.

On görsel 1.6.0'dan yeniden alındı

docs/screenshots/ altındaki on görüntü (giriş dâhil) bu sürümün yerel derlemesiyle,
tools\capture_all.ps1 içinde tek oturumda üretildi; 1.5.0 notlarındaki "ekran
görüntüleri güncel değil" sınırlaması böylece kapandı. Aynı oturumda üretilmeleri
rastgele değil: sayfa sayfasına ayrı çalıştırılan betikler arasında arayüz durumu
kayabildiği için, bir zamanlar aynı dizine iki farklı arayüz düşmüştü.

Gecikme grafiği boş çıkmasın diye Ağ ekranı diğerlerinden uzun bekletiliyor (örnekler
iki saniyede bir düşüyor); görseldeki çizgi bu yüzden dolu.

Görseller makineyi tanıtmıyor. Yakalama TENGRI_SHOT=1 ile açıldığı için HWID,
bilgisayar/oturum adı, işlemci/ekran kartı/ana kart/BIOS, RAM hızı, ağ adaptörünün
adı, yerel IP, Başlatma listesi ve lisans maskesi sabit örnek değerlerle çiziliyor;
CPU yüzdesi, kullanılan bellek, boş disk, sağlık puanı, gecikme ölçümü ve hizmet
durumları ise yakalama anının gerçek okumaları. Bu maskeleme 1.6.0 derlemesinin
değil, onun ardından ana dala düşen davranışın bir parçası — görsellerde görünen
arayüzün kendisi 1.6.0.

Ölçülen rakamlar

Değer
Registry anahtarı 80 (tools\make_tweak_table.ps1 sayıyor, CI üretilmiş tabloyu kaynakla karşılaştırıyor)
Test denetimi 496, 0 hata
exe boyutu 1.784.832 bayt yerel derleme; yayınlanan 1.773.056 bayt (araç seti farkı)
Ekran 9
Temizlik kategorisi 10
RAM profili 14
Ağ çıkışı 3 — hepsi Ağ kullanımı bölümünde satır satır listelenmiş

Testler

Paket Denetim
test_pure.cpp 231 — i18n tabloları (boyut + sıra), tweak sözleşmeleri, .reg gövdeleri, yetki devri kodlama/çözme
test_modules.cpp 44 — geri yükleme, hizmet beyaz listesi, başlangıç kapsamları, shader taraması
test_license.cpp 22 — lisans maskesi, HWID, kalıcılık (izole APPDATA)
test_write_paths.cpp 29 — temizleyici tersinirliği, yedek listeleme
test_update.cpp 170 — sürüm karşılaştırma, bildirim ayrıştırma, adres kilidi, SHA-256

Beş paketin hiçbiri gerçek registry'ye, gerçek %APPDATA%'ye veya kullanıcı
dosyalarına dokunmuyor.

Bilinen sınırlar

  • Lisans ekranı demodur: her anahtar kabul edilir, sunucuya karşı doğrulama yok.
  • Dosya imzasız. Autogram (Authenticode) yok; bu, antivirüs sezgisellerinin
    çalıştırılabilirleri işaretlemesinin ana nedeni.
  • İkon düzeltmesi bu sürümün görsellerinde doğrulandı: docs/screenshots/07-about.png
    1.6.0 derlemesinden alındı ve bağlantı satırındaki silüet gömülü maskeden çiziliyor.
    Doku yolu logo::MarkReady ile ölçüldü; üçgen yedeği yalnızca WIC doku yüklenemezse
    devreye girdiği için bu görselde hiç çizilmedi.

Kurulum

TENGRI.exe dosyasını indirip çalıştır. Kurulum gerekmez. Yönetici yetkisi yalnızca
ayar uygularken, başlangıç girdisi kaldırırken ve hizmet değiştirirken istenir;
açarken, sistem bilgisi / başlangıç listesi / hizmet durumu okurken hiç sorulmaz.

⚠️ UYARI: antivirüs uyarısı

TENGRİ HKEY_LOCAL_MACHINE altına yazıyor, geçici .reg dosyalarını içe aktarmak için
reg.exe çağırıyor, hizmet yapılandırması için ChangeServiceConfigW kullanıyor ve
kendi exe'sini indirip çalışan dosyanın yerine koyuyor. Bunlar bir "sistem iyileştirici"
zararlı yazılımın davranış imzasıdır; sezgisel motorlar imzasız çalışanları
işaretleyebilir. Ayrıntı:
SECURITY.md

Değişimi geri almak

Ayarları uygulamadan önce %LOCALAPPDATA%\TENGRI\backups altına yedek alınıyor;
İnce Ayarlar sayfasındaki Geri al bu yedeği geri içe aktarıyor. Başlatma ve
Hizmetler ekranları ise kendi terslerini taşıyor: değeri silmek yerine taşıyor,
başlangıç türünü yedeğe yazıyor.

TENGRI v1.5.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 17:15

TENGRİ 1.5.0

Bu sürüm oyun profillerini ekliyor: İnce Ayarlar sayfası yedi kategoriden ona
çıktı. Valorant, CS2 ve Fortnite için ayrı profiller var; her biri sekiz anahtardan
oluşuyor ve oyunun kendi yayınladığı registry yollarına yazıyor. Test yüzeyi beş pakete
çıktı: 326 denetim, 0 hata (yerel derleme, build.bat) artı 336 denetim oyun
profili gidiş-dönüş sondasında.

Yeni kategoriler

Kategori Karakter
Valorant Oyun sürecine IFEO önceliği; Riot istemcisi ve Vanguard arka plana
CS2 cs2.exe yüksek öncelik; Steam ve web yardımcısı arka plana
Fortnite Oyun sürecine IFEO önceliği; Epic launcher ve EOS arka plana

Her profil oyunun kendi ekran davranışını da düzeltiyor: Valorant ve Fortnite için
DISABLEDXMAXIMIZEDWINDOWEDMODE (kenarlıklı pencerede DWM geçişini kaldırır), CS2 için
Steam'in geç yüklemeyi kapatması.

Güncelleme hiç çalışmamıştı — bu sürümde düzeltildi

İki ayrı hata, ikisi de 1.5.0'ın ilk yayınında bulundu ve ikisi de yayınlandıktan
sonra düzeltildi. StageRoot, geçici klasörü tek CreateDirectoryW çağrısıyla kuruyordu:

CreateDirectoryW(L"%TEMP%\TENGRI\\Update");

CreateDirectoryW özyinelemeli değildir. %TEMP%\TENGRI yoksa
ERROR_PATH_NOT_FOUND döner — ve dönüş değeri denetlenmediği için StageRoot yine de
geçerli görünen bir yol döndürüyordu. Sonraki CreateFileW başarısız olup kullanıcıya
"Dosya hatası" diyordu.

Sonucu şu: güncelleme akışının indirme klasörü ilk kez kurulduğunda her zaman böyle
kırılıyor.
Yani hiçbir kullanıcı güncelleme indiremiyordu. (1.4.0 ve öncesi de aynı
durumdaydı.)

Düzeltme: iki bileşen ayrı ayrı kuruluyor ve sonuç denetleniyor; kurulamazsa
StageRoot boş döner, Fail::Io yerine anlamlı bir neden yazılır.

Bu sürümde bulunan ve düzeltilen hata

Üç hata bulundu; üçü de regpack kategorilerinin tamamını etkiliyordu. Yani Oyunlar,
FiveM ve Gecikme dahil hiçbir .reg gövdesi uygulamanın tarihi boyunca registry'ye
ulaşmamıştı. Ekran yeşildi, "Uygulandı" yazdı, reg.exe hiç çağrılmadı.

Hata Sonuç
CryptGenRandom(0, ...) — NULL "varsayılan sağlayıcı" değildir, ERROR_INVALID_PARAMETER (87) döner Import geçici dosyayı hiç yazmadan false dönüyordu
CREATE_NEW + FILE_FLAG_OPEN_REPARSE_POINT geçersiz kombinasyon (yine 87) Dosya açılmıyor, içe aktarma hiç denenmiyor
Gecikme[6] geri alma gövdesi IRPStackSize değerini atlıyordu Ayar kapatılınca 0x20 geride kalıyordu

İlk ikisi tek bir eklemekle bulundu: uygulama ayarlarını gerçekten yazıp okumayı deneyen
bir sonda. tools/probe_game_tweaks.cpp her ayar için geliş bölümünü okuyor, ayarlıyor,
her değeri RegQueryValueExW ile gerçekten sorguluyor, geri alıyor, geri almanın
etkisini doğruluyor ve kullanıcının özel ayarlarını aynen geri yüküyor. reg.exe
başarılı olsa bile yanlış anahtara yazılmış bir gövde sessizce geçtiği için sorgu ayrı bir
adım.

FILE_FLAG_OPEN_REPARSE_POINT kaldırıldı — o bayrak yalnızca zaten var olan bir dosyayı
acarken anlamlıdır, CREATE_NEW ile geçersizdir. Güvenlik düşmedi: 128-bit rastgele ad ve
CREATE_NEW zaten iki katmanlı koruma. CREATE_NEW, dosya varsa başarısız olduğu için
saldırgan yolu önceden doldurup bir junction'a yönlendiremez.

Neden oyunun kurulu olması gerekmiyor

IFEO (Image File Execution Options) anahtarları exe'yi adıyla tanır. cs2.exe
diskte yoksa Windows anahtarı yine okur, yalnızca hiçbir süreçle eşleştirmez. Bu yüzden
Valorant/Fortnite/CS2 kurulu olmadan yazma-doğrulama-silme zinciri baştan sona denenebilir
ve sonda da öyle denendi.

Kemiklerdeki değişiklikler

  • elevate::Pending kategori dizileri 8'di. Yeni kategorilerle 10 kategori taşıyordu;
    UAC devri sessizce 7-9. kategorileri düşürürdü. kMaxCats = 16 yapıldı; kodlama,
    çözme ve uygulama adımları hepsi buna bağlandı.
  • IsShared tablosu elle tutulan bir listeydi. Yeni profiller Oyunlar/FiveM ile aynı
    Tasks\Games, SystemResponsiveness, GameDVR ve MouseSpeed değerlerini yazıyor; hepsi
    işaretlenmedi. Aksi hâlde bir anahtar kapatıldığında diğerinin değerleri sessizce ezilirdi.
  • make_tweak_table.ps1 kategori sayısını 7 olarak biliyordu. Artık
    kTweakCatCount'ten okuyor; yedek kapsamı 37 anahtardan 54'e çıktı.

Testler

Paket Denetim
test_pure.cpp 231 — i18n tabloları, tweak sözleşmeleri, .reg gövdeleri
test_modules.cpp 44 — geri yükleme, hizmet beyaz listesi, başlangıç kapsamları
test_license.cpp 22 — lisans maskesi, HWID, kalıcılık
test_write_paths.cpp 29 — temizleyici tersinirliği, yedek listeleme
test_update.cpp 170 — sürüm karşılaştırma, bildirim, adres kilidi, SHA-256
probe_game_tweaks.exe 336 — gerçek yazma → sorgu → geri alma → doğrulama

Sonda bulunan hatalar test_pure'un göremediği yerdeydi: testler gövde metnini okuyor,
içe aktarmayı çağırmıyor. Aradaki fark tam olarak iki ölü hatanın saklandığı yerdi.

Bilinen sınırlar

  • Oyun profilleri yalnızca Windows tarafını değiştirir. Oyun içi ayarlar (CS2'de
    -threads, Valorant'ta Reflex, Fortnite'ta model kalitesi) registry'de değildir.
  • Source 2 kendi iş parçacıklarını yönetir. Eski CS:GO başlatma seçenekleri
    (-threads, -nojoy, -d3d9ex) artık işe yaramıyor; profil yalnızca Windows tarafına
    dokunuyor.
  • IFEO öncelikleri yalnızca süreç başlarken uygulanır. Oyun çalışırken değiştirilirse
    bir sonraki açılışa kadar etkisizdir.
  • Lisans ekranı hâlâ demodur (1.3.0'dan kalma sınırlama).
  • Bu sürümün ekran görüntüleri güncel değil (1.3.0'dan kalma sınırlama).

Kurulum

TENGRI.exe dosyasını indirip çalıştır. Kurulum gerekmez.

⚠️ UYARI: antivirüs uyarısı

TENGRİ HKEY_LOCAL_MACHINE altına yazıyor, geçici .reg dosyalarını içe aktarmak
için reg.exe çağırıyor, hizmet yapılandırması için ChangeServiceConfigW ile
çalışıyor ve kendi exe'sini indirip çalışan dosyanın yerine koyuyor. Bunlar bir "sistem
iyileştirici" zararlı yazılımın davranış imzasıdır; sezgisel motorlar imzasız
çalışanları işaretleyebilir. Dosya imzasızdır. Ayrıntı:
SECURITY.md

Ayar uygularken, başlangıç girdisi kaldırırken ve hizmet değiştirirken yönetici yetkisi
istenir; açarken, sistem bilgisi, başlangıç listesi ve hizmet durumu okurken hiç
sorulmaz
.

Bilmen gerekenler

  • Oyun profilleri de aynı ikinci yazma yüzeyini kullanıyor. Regpack kategorileri gibi
    %TEMP% altına .reg yazıp reg.exe import ile içe aktarıyor; o yüzden bu kategoriler
    de yönetici yetkisi ister.
  • Ayarları uygulamadan önce geri yükleme noktası oluştur — uygulama bunu senin yerine
    yapmıyor.
  • Bazı ayarların etkili olması için yeniden başlatma gerekir.

TENGRI v1.4.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 16:26

TENGRİ 1.4.0

Bu sürüm tek bir konuyu genişletiyor: Başlangıç ekranı artık dört anahtarla değil, on
kapsamla çalışıyor.
Kayma, politika yolu, iki başlangıç klasörü ve — en önemlisi —
oturum açmanın kendisi olan Winlogon listeleniyor. Test yüzeyi beş pakete çıktı:
387 denetim, 0 hata (yerel derleme, build.bat).

Değişiklik bir özellik eklemesinden ibaret değil, bir kapı eklemesi: Winlogon
kapatılamıyor. Nedeni aşağıda, uzun.

Yeni kapsamlar

Kapsam Anahtar / yol Yetki
HKCU · Policy · Explorer · Run ...\CurrentVersion\Policies\Explorer\Run istemez
HKLM · Policy · Explorer · Run ...\CurrentVersion\Policies\Explorer\Run ister
Başlangıç klasörü (kullanıcı) %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup istemez
Başlangıç klasörü (tüm kullanıcılar) %PROGRAMDATA%\Microsoft\Windows\Start Menu\Programs\Startup ister
HKCU · Winlogon Software\Microsoft\Windows NT\CurrentVersion\Winlogon salt-okunur
HKLM · Winlogon SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon salt-okunur

Policies\Explorer\Run, GPO'nun uyguladığı Run yolu. 1.3.0'da listelenmiyordu, yani
kurumsal bir makinede GPO ile gelen bir başlangıç öğesi arayüzde hiç görünmüyordu.
Başlangıç klasörleri ise registry'den bağımsız ikinci bir yol; oraya bırakılan
.lnk dosyası önceki sürümlerde görünmezdi.

Devre dışı bırakma mekanizması değişmedi: değer silinmiyor, kendi yedeğimize
taşınıyor. Başlangıç klasörü girdileri için karşılık bir dosya taşıma —
%APPDATA%\TENGRI\startup-disabled\. Aynı adda bir dosya zaten oradaysa işlem
reddediliyor; üstüne yazmak, geri almanın yanlış dosyayı döndürmesine yol açardı.

Neden Winlogon yalnızca listeleniyor

Winlogon\Shell ve Winlogon\Userinit birer başlangıç öğesi değil, oturum
açmanın kendisi
. Davranışları birbirinden farklı:

  • Userinit boşaltılırsa Windows bu değeri kullanıcı oturumunda yeniden yazar.
    Yani zararsız görünür — ki bu, onu güvenli yapan bir şey değildir, sadece
    görünüşte öyle.
  • Shell boşaltılırsa oturum açılmaz. Ve düzeltmek için başka bir oturum
    açmanız gerekir.

Bu yüzden iki kapsam da listeleniyor, düğmeleri kapalı geliyor ve kapı SetEnabled
ile Remove içinde de var. Kapsam listesi elle tutulduğu için "unutulabilir bir
şart" olduğu yorumda yazılı; test de bu yüzden kapsam başına kapatılabilirliği
deniyor.

Sapma tespiti Shell için son bileşeni explorer.exe ile, Userinit için ise
virgül konumunu karşılaştırıyor. Windows userinit.exe, yazar (kendisi virgülle
biter); saldırgan sonuna ikinci bir yol ekler. Virgül konumu kontrol edilmezse her
makinede yanlış alarm çıkar ve kullanıcı işareti görmez hale gelir.

Yalnızca Shell ve Userinit listeleniyor: Winlogon anahtarında Taskman,
GINA, ReportFault gibi kırk değer daha var ve hiçbiri başlangıç öğesi değil.

Diğer değişiklikler

  • Filtre dört segment oldu: Tümü / HKCU / HKLM / Sistem. Sonuncusu
    registry'de olmayan ve oturumun parçası olan yolları toplar — iki Startup
    klasörü ve iki Winlogon anahtarı.
  • Yetki sorusu işlemden önce soruluyor. Arayüz artık "bu kapsam HKLM mi"
    diye elle enum karşılaştırması yapmıyor, startup::NeedsElevation() soruyor.
    Bu, kapsam sayısı 4'ten 10'a çıkarken o karşılaştırmanın sessizce yanlış
    kalmasını engelliyor.
  • Kapatılamayan girdide düğme yerine nedeni yazılıyor. Boş bir düğmeden çok
    nedeni bilmek işe yarar.
  • make_logo_data.ps1 mutlak çıktı yolunda çalışmıyordu. Satır 123
    Join-Path (Get-Location) $OutPath kullanıyordu; mutlak bir yol verildiğinde
    "Verilen yolun biçimi desteklenmiyor" ile düşüyordu. make_tweak_table.ps1deki
    doğru IsPathRooted kontrolü uygulandı.

Testler

Toplam 387 denetim, 0 hata (test_modules 31 → 44):

Paket Denetim Kapsam
test_pure.cpp 122 i18n tabloları, RAM ön ayarları, tweak sözleşmeleri, .reg gövdeleri
test_modules.cpp 44 Geri yükleme metinleri, hizmet beyaz listesi, başlangıç sorguları + kapsam kapıları, shader taraması
test_license.cpp 22 Lisans maskesi, HWID determinizması, "beni hatırla" kalıcılığı
test_write_paths.cpp 29 Temizleyici tarama/temizleme tersinirliği, yedek listeleme, içe aktarma reddi
test_update.cpp 170 Sürüm karşılaştırma, bildirim ayrıştırma, adres kilidi, SHA-256, takas planı

Yeni denetimler kapsam başına kapatılabilirliği ve yetki isteğini deniyor, ayrıca
iki değişmez: Winlogon kapsamında yalnızca Shell/Userinit listeleniyor, ve
sapan bir değer daima "Yüksek" etkiyle işaretleniyor. Kapsam sayısı kontrolü artık
elle yazılmış bir sabit yerine Scope::Count'a bağlı.

Bilinen sınırlar

  • Winlogon sapması tespit edip bildiriyor, temizlemiyor. Düğme yok. Bu
    bilinçli: temizlik adını taşıyan bir işlem, oturumu açılmaz yapan bir
    işlemden ayırt edilemez duruma gelirdi.
  • Winlogon'daki Notify ve diğer kırk değer listelenmiyor. Onlar da
    değiştirilmiş olabilir, ama başlangıç öğesi değiller ve listeyi kullanılamaz
    hâle getirirdiler.
  • Başlangıç klasörü taraması FindFirstFileW ile yapılıyor, alt klasörlerin
    içeriği taranmıyor. Windows da alt klasörleri taramaz, yani davranış eşleşiyor.
  • notify.cpp ve tray.cpp birim testi yok (1.3.0'dan kalma sınırlama).
  • Bu sürümün ekran görüntüleri güncel değil (1.3.0'dan kalma sınırlama).
  • Lisans ekranı hâlâ bir demodur: her anahtarı kabul eder, sunucuya doğrulama
    yapılmaz.

Dışa çıkan istek

Bu sürümde değişiklik yok. Dışa giden isteklerin tamamı 1.3.0 notlarında
listeli: sabit bir latest.json GET'i, yalnızca İndir dendiğinde exe, ve yalnızca
o ekran açıkken gecikme ölçümü.

Kurulum

TENGRI.exe dosyasını indirip çalıştır. Kurulum gerekmez. latest.json da
yayında — güncelleme denetimi o dosyayı okur.

ÖNEMLİ: antivirüs uyarısı

TENGRİ HKEY_LOCAL_MACHINE altına yazıyor, geçici .reg dosyalarını içe
aktarmak için reg.exe çağırıyor, hizmet yapılandırması için
ChangeServiceConfigW ile çalışıyor ve kendi exe'sini indirip çalışan
dosyanın yerine koyuyor. Bunlar bir "sistem iyileştirici" zararlı yazılımın
davranış imzasıdır; sezgisel motorlar imzasız çalıştırılabilirleri işaretleyebilir.
Dosya imzasızdır. Ayrıntı: SECURITY.md

Ayar uygularken, başlangıç girdisi kaldırırken ve hizmet değiştirirken yönetici
yetkisi istenir; açarken, sistem bilgisi, başlangıç listesi ve hizmet durumu
okurken hiç sorulmaz.

Bilmen gerekenler

  • Ayarları uygulamadan önce geri yükleme noktası oluştur — uygulama bunu
    senin yerine yapmıyor.
  • Başlangıç ekranında Policies\Explorer\Run girdileri kurumsal politikadan
    geliyorsa devre dışı bırakmak bir sonraki GPO yenilemesinde geri gelebilir.
  • Winlogon satırları her zaman görünür ama hiçbir işlem yapamaz.
  • Bazı ayarların etkili olması için yeniden başlatma gerekir.

Kaynaktan derleme

git clone --recurse-submodules https://github.com/Memati8383/Tengri.git
cd Tengri
build.bat

Lisans: MIT

TENGRI v1.3.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 00:05

TENGRİ 1.3.0

Üç şey bu sürümü büyütüyor: uygulama kendi sürümünü denetleyip güncelleyebiliyor,
kapat düğmesi artık arkasında arka plan süreci bırakıyor, ve Windows görev çubuğu ile
bildirimlerindeki simge sorunu kökünden çözüldü. Test yüzeyi beş pakete çıktı:
374 denetim, 0 hata (yerel derleme, build.bat).

Bu sürüm ilk kez dışarıya kendi isteğiyle bağlantı kurduğu için, dışarı giden
isteklerin tam listesi bu notların içinde de tekrarlanıyor.

Güncellemeler: uygulama kendini denetliyor

Ayarlar'ın sağ sütununda yeni kart. Akış tek bir dosyaya dayanıyor: CI her sürüm
yayınlandığında derlenmiş exe'nin SHA-256 ve boyutunu hesaplayıp latest.json
adında ikinci bir varlığı aynı sürüme aslıyor. Uygulama yalnızca o dosyayı okur.

Öğe Davranış
Otomatik denetim Açıkken (varsayılan) açılışta bir, sonra pencere açık kaldığı sürece her 24 saatte bir. Zaman damgası HKCU\Software\TENGRI\Update\LastCheck içinde kalıcı — uygulama kapanıp açılınca 24 saati baştan bekler
Şimdi denetle Otomatik denetim kapalıyken de çalışır
İndir Sen demeden başlamaz. %TEMP%\TENGRI\Update\ altına iner, kart yüzde olarak ilerler, Vazgeç yarım dosyayı siler
İki kapı Bildirilen bayt sayısı ve SHA-256. Uyuşmazsa inen parça silinir, hata kartta nedeni ile görünür
Kur ve yeniden başlat Çalışan exe kenara alınır, doğrulanmış dosya yerine taşınır, eskisi silinir, --tengri-relaunch ile yeni örnek açılır
Klasör yazılamıyorsa UAC istenmez. Dosya %TEMP% içinde kalır ve kartta tam yolu gösterilir

Hash'in önemi şu ki değer kaynakta yazılı bir sabit değil: sürtürülmüş bir exe ile ona
uymayan bir özeti ayrı iki hata üretmeden el ele tutuşturamazsın. indirilen adresin
gönderenin beyan ettiği adres olması da yetmez — https://github.com ve
github.com/Memati8383/Tengri/releases/download/... öneklerinin dışındaki her adres
TrustHost ile reddedilir, https://github.com@baskent/ gibi kullanıcı-adı hileleri de
URL ayrıştırması katmanında duruyor.

Kendiliğinden kurulan hiçbir şey yok. Uygulama kapalıyken ne indirme ne yazma olur;
denetin kendisi de anahtarla tamamen kapatılabilir.

Güven sınırının dürüst tarifi: özeti yayınlayan ile exe'yi yayınlayan aynı yer. Bu
bozuk aktarıma, yarıda kesilen indirmeye ve adres hilesine karşı korur; deposu ele
geçirilmiş bir yayına karşı korumaz.
Asimetrik imza (minisign) ayrı bir aşama olarak
duruyor.

Geri dönüş kopyası yok. Takas sonrası eski exe silinir. Kurtarma yolu Releases'tan
aynı dosyayı elle indirip koymak.

1.2.0 ve öncesinde bu kod yoktu; o yayınlarda latest.json varlığının bulunmaması bu
yüzden hiçbir şeyi bozmuyor. 1.3.0'dan itibaren her etiket iki varlıkla çıkıyor.

Kapatınca arka planda çalışmaya devam et

Kapat (X) artık uygulamanı sonlandırmıyor: pencere gizleniyor, süreç sistem
tepsisinde yaşamaya devam ediyor ve Windows bildirimleri gelmeyi sürdürüyor. Yeni anahtar
Ayarlar → Genel altında, açılışta varsayılan olarak açık.

  • Anahtar kalıcı değil — her oturumda kapatmanın ne yapacağına o oturumda karar
    verilir. Mevcut tepsi simgesine küçült tercihi de kalıcı değil; ikisi aynı kuralı
    paylaşıyor.
  • Tepsi ikonu alınamadıysa (kabuk ikonu reddederse) kapatmak gerçekten çıkar. İkonu
    olmayan bir arka plan süreci, sessizce yaşayan bir süreç olurdu ve kullanıcı onu bir
    daha kapatamazdı.
  • Gizli pencere kare üretmiyor. Pencere saklıyken render döngüsü vsync'e kilitli boş
    kareler dönmeye devam ediyordu; kare atlama koşuluna görünürlük de eklendi. Tepside
    bekleyen uygulama artık kendi karelerini çizmek için GPU kuyruğuna inmiyor.

Sistem tepsisi menüsü yeniden kuruldu

Sağ tıkta çıkan menü tek satırlık "Aç / Çıkış"tı. Şimdi:

TENGRİ  v1.3.0
─────────────────────────
Pencereyi aç              (varsayılan öğe, kalın)
Sayfaya git  ▸  Gösterge Paneli · Temizleyici · İnce Ayarlar · Ağ ·
                Sistem Bilgisi · Ayarlar · Hakkında · Başlatma · Hizmetler
Geri al                   (yedek yoksa gri)
─────────────────────────
☑ Windows bildirimleri
☐ Sessiz mod
☐ Başlangıçta çalıştır
─────────────────────────
Ayarlar
─────────────────────────
Çık

Menü hiçbir durumu kendi içinde tutmuyor: işaretli düğmelerin değerini, hangi
sayfaların erişilebilir olduğunu ve seçilen komutun ne yapacağını uygulamadan soruyor.
Tepsiden "Windows bildirimleri"ni kapatmakla Ayarlar'daki anahtarı kapatmak ayrı
düşemez — ikisi aynı değişkene bakar. "Sayfaya git" pencere gizliyken de işe yarar:
uygulamayı geri getirir ve o sayfaya geçer.

"Yeniden başlat" yok, bilinçli olarak: tek örnek kilidi kapanan süreci bırakırken
yenisini açmak yarış koşulu üretiyor. Onun yerine Çık, sonra çift tık.

Düzeltilenler

  • Görev çubuğundaki jenerik Windows simgesi. IShellLink::SetIconLocation'ın ikinci
    parametresi sıfırdan başlayan görev indeksi, kaynak kimliği değil. kIconId
    (101) veriliyordu; Explorer o indeksde simge bulamayınca kısayolu simgesiz sayıyor ve
    AUMID ile grupladığı görev çubuğu düğmesine kendi simgesini çiziyordu. Doğru değer 0.
    Eski sürümlerin yazdığı bozuk kısayol da çalışırken düzeltiliyor: simge kaynağı
    karşılaştırılıyor, farklıysa kısayol yeniden yazılıyor — aksi halde düzeltme hiç
    uygulanmayan bir yama olarak kalırdı.
  • Windows bildirimleri simgesiz geliyordu. AUMID'in IconUri alanı bir görsel
    dosyası
    ister; exe yolu Windows'a göre boş bir simge. Marka simgesi artık çalışma
    anında exe'nin kendi RT_GROUP_ICON kaynağından tek bir .ico dosyasına
    (%APPDATA%\TENGRI\tengri.ico) yeniden birleştiriliyor: bildirim ile görev çubuğu aynı
    sanatın kopyasını kullanıyor, ayrı bir görsel bakımı yok. Yazma önce .tmp dosyasına,
    sonra taşımada — yarı yazılmış bir .ico, hiç olmayanından daha kötü.
  • Uygulama içi bildirim kartları baştan çizildi: kelime bazlı satır kırma (uzun
    Türkçe metinler karttan taşıyordu), marka logosu çipi, başlık/gövde için ayrı satır
    yükseklikleri, imleç kartın üzerindeyken kapanışın duraklaması.
  • Uyarı simgesi ayrıldı. Çıplak ünlem işaretinin noktası altta, bilgi simgesinin
    noktası üstte; ikisi 16 pikselde ayırt edilemiyordu. Uyarı artık üçgen içinde.
  • Windows bildirimindeki İndir düğmesi uygulamayı Ayarlar'da açıyor ve indirmeyi
    başlatıyor (bildirim eylemlerinin geri kalanı gibi tek örnek kilidi üzerinden).

Testler

build.bat derlemenin sonunda beş paket çalıştırır ve biri takılırsa hata koduyla çıkar.
Toplam 374 denetim, 0 hata:

Paket Denetim Kapsam
test_pure.cpp 122 i18n tabloları, RAM ön ayarları, tweak sözleşmeleri, .reg gövdeleri
test_modules.cpp 31 Geri yükleme metinleri, hizmet beyaz listesi, başlangıç sorguları, shader taraması
test_license.cpp 22 Lisans maskesi, HWID determinizması, "beni hatırla" kalıcılığı
test_write_paths.cpp 29 Temizleyici tarama/temizleme tersinirliği, yedek listeleme, içe aktarma reddi
test_update.cpp 170 Sürüm karşılaştırma, bildirim ayrıştırma, adres kilidi, SHA-256, takas planı

Hiçbiri gerçek sistemine dokunmaz ve test_update ağa çıkmaz: denenen şey
kararların kendisi ("1.10.0" > "1.2.0", bozuk JSON, güvenilmeyen host, uyuşmayan özet,
yazılamayan klasör planı). WinHTTP ve indirme akışı elle doğrulandı.

Bilinen sınırlar

  • notify.cpp ve tray.cpp birim testi yok. WinRT bildirim kuyruğu ve kabuk tepsi
    API'si izole edilebilir arayüzler değil; bu iki dosya yalnızca exe'ye derleniyor ve bu
    sürümde gerçek bir makinede elle gezilerek doğrulandı.
  • Denetim, latest.json yayınlanmışsa anlamlı. CI'sız bir forktan derlersen denetim
    404 alır ve kart "bulunamadı" gösterir — uygulama bundan bozulmaz.
  • Arka plan tercihi kalıcı değil (yukarıda gerekçesi). Tepsi anahtarı da değil.
  • Geri al onay ister. Bildirimden tek tıkla registry'ye dokunmak, hangi pencereye
    baktığını bilmediğin bir durumda veri kaybı demektir.
  • Sürüm numarasının tek kaynağı brand.hpp, ama doğrulamanın bir ayağı CI'da.
    Üretici betik kVersionMajor/Minor/Patch toplamı ile kVersion uyuşmazsa derlemeyi
    durduruyor; etiket ile exe'in gömülü sürümünü karşılaştıran denetim ise yalnızca CI'da
    çalışıyor. Yani etiket attıktan sonra sürüm numarasını değiştirirsen hiçbir şey
    yayınlanmaz, bunu yerel derleme sana söylemez.
  • Bu sürümün ekran görüntüleri 1.2.0 arayüzünden kalma. Yeni Ayarlar anahtarı ve
    baştan çizilen bildirim kartları görsellerde değil; anlatılan davranışlar koddan ve
    elle gezilen oturumlardan doğrulandı.
  • Lisans ekranı hâlâ bir demodur: her anahtarı kabul eder, sunucuya doğrulama
    yapılmaz. Makine parmak izi hesaplanır, hiçbir yere gönderilmez.

Ağ kullanımı

Bu sürümde dışarı giden isteklerin tamamı:

İstek Ne zaman Taşıdığı
GET .../releases/latest/download/latest.json Otomatik denetim açıksa (varsayılan) açılışta bir + her 24 saatte bir; kapalıyken yalnızca Şimdi denetle Yok — sabit GET. Gövde, başlık, çerez, sorgu parametresi taşınmaz
GET .../releases/download/<etiket>/TENGRI.exe Yalnızca İndir dediğinde Yok
Ağ ekranındaki gecikme ölçümü Yalnızca o ekran açıkken Yok

Kimlik, dosya adı, kurulu program listesi, HWID veya tarama sonucu hiçbir isteğin
içinde değil
. Kalıcılık yalnızca kendi registry dalında (HKCU\Software\TENGRI).

Kurulum

TENGRI.exe dosyasını indirip çalıştır. Kurulum gerekmez. Bu sürümde exe ile birlikte
latest.json da yayında — güncelleme denetimi o dosyayı okur.

ÖNEMLİ: antivirüs uyarısı

TENGRİ HKEY_LOCAL_MACHINE altına yazıyor, geçici .reg dosyalarını içe aktarmak
için reg.exe çağırıyor, hizmet yapılandırmasını ChangeServiceConfigW ile
değiştiriyor ve 1.3.0'dan itibaren GitHub'dan kendi exe'sini indirip çalışan dosyanın
yerine koyuyor.
Bunlar bir "sistem iyileştirici" zararlı yazılımının davranış
imzasıdır; sezgisel motorlar imzasız çalıştırılabilirleri işaretler. Dosya **i...

Read more

TENGRI v1.2.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 20:07

TENGRİ 1.2.0

Arayüze iki yeni ekran eklendi: Başlatma ve Hizmetler. Uygulama dokuz
ekrana çıktı, test yüzeyi dört pakete bölündü ve 1.1.0'ın bilinen sınırı
(bildirimdeki "Geri al" düğmesi) kapandı.

56 registry anahtarı ve 10 temizleme kategorisi aynı; yeni olan şey bunların
yanına sistem yönetiminin kendisinin gelmesi.

Başlatma ekranı

Oturum açıldığında çalışan programları listeler ve dört kapsamı okur:

Kapsam Anahtar Yetki
Kullanıcı HKCU\...\CurrentVersion\Run gerekmez
Kullanıcı (bir kez) HKCU\...\CurrentVersion\RunOnce gerekmez
Makine HKLM\...\CurrentVersion\Run okumak gerekmez, yazmak yönetici ister
Makine (bir kez) HKLM\...\CurrentVersion\RunOnce okumak gerekmez, yazmak yönetici ister

Makine girdileri yetkisiz çalıştırmada da listelenir, düğmeleri de görünür —
ancak yazma girişimi başarısız olur ve bir uyarı bildirimi düşer. Kendiliğinden
yeni bir UAC istemi başlatılmaz: hangi işlem için yönetici gerektiğini
söyler, kararı sana bırakır.

Devre dışı bırakmak registry'den bir şey silmez. Değer olduğu gibi kalır;
yalnızca HKCU\Software\TENGRI\StartupDisabled\<kapsam> altına taşınır.
Açmak geri taşır. Neden Windows'un kendi StartupApproved anahtarı değil:
Görev Yöneticisi ile aynı anahtarı yazmak, iki aracın birbirinin durumunu
yanlış okumasına yol açar — TENGRİ'nin listesi kendi taşınma kaydından gelir,
bu yüzden her zaman tutarlıdır.

Her kartta yayıncı (imzadan okunur; yoksa dosya yolu), komut satırı ve bir
etki etiketi var. Etki dosya boyutundan sezgisel olarak tahmin edilir:
2 MB altı Düşük, 20 MB altı Orta, üstü Yüksek, dosya okunamıyor ise
Bilinmiyor. Bu bir ölçüm değil işarettir — yanlış sınıflandırabilir.

TENGRİ'nin kendi otobaşlatma girdisi listede görünür ama Kaldır düğmesi o
kartta devre dışıdır: kendini kaldıran bir başlatma yöneticisi bir daha
açılamazdı.

Hizmetler ekranı

Windows arka plan hizmetleri rastgele devre dışı bırakılacak şeyler değildir.
Bu ekran 16 hizmetlik bir beyaz listeyle çalışır; listeye girmemiş hiçbir hizmet
okunmaz, yazılmaz. Her girişin bir şiddeti vardır: Güvenli / Dikkat / Riskli —
ve kartta o hizmetin neden listede olduğunu anlatan bir gerekçe yazar.

Oyun profilini uygula düğmesi hizmetleri kapatmaz, Elle (Manual) başlangıca
çeker; Windows'un hâlâ başlatabileceği ama oturum açılışında seni
beklemeyeceği durum budur. Kapatılması gerçekten gerekenler istisnadır.
Varsayılanlara dön için ilk değişiklikten önceki durum
HKLM\SOFTWARE\TENGRI\ServicesBackup altına yazılır (başlangıç türü + gecikmeli
başlatma bayrağı), böylece profil tek tıkla geri alınır.

Durumu okumak yetki istemez; yazmak ister. Yetkisiz çalıştırırsan ekranı
yine kullanabilirsin — her kartın altında "yönetici yetkisi gerekir" uyarısı
durur ve yazma düğmeleri hiç üretilmez.

Shader önbelleği derinleşti

Temizleyicinin 8. kategorisi 4 yol tarıyordu, artık sabit 10 yol ve üstüne
Steam motor önbellekleri taranabiliyor: D3D, NVIDIA (DXCache/GLCache/NV_Cache —
yerel ve ProgramData), AMD (DxCache/GLCache/VkCache — yerel ve ProgramData),
Intel.

Steam'in derlenmiş shader deposi varsayılan olarak kapsam dışı: silmek
diske yerinde saydırmıyor, oyunu yeniden derletiyor ve ilk açılışı
yavaşlatıyor. Ayrı bir maskeye (Shader_SteamEngine) arkasına alındı; arayüzden
otomatik olarak silinmez.

Düzeltilenler

  • Bildirimdeki "Geri al" düğmesi artık çalışıyor (1.1.0'ın bilinen sınırı).
    Onay penceresi, ImGui'nin modal'ı yalnızca ait olduğu çizim döngüsü içinde
    açabildiği yerde çağrılıyor. Onaysız hâlâ hiçbir registry yazması yok.
  • Tepsi ikonu Explorer yeniden başlarsa geri geliyor. Kabuk, simgeleri sürece
    haber vermeden yok ediyor; TENGRİ artık TaskbarCreated bildirisini dinliyor
    ve saniyelik bakım döngüsünde simgeyi yeniden ekliyor. Önceden bu bakım
    döngüsü, hiç set edilmemiş bir bayrak yüzünden ölüydü.
  • Üç İngilizce metin kaçağı düzeltildi: Başlatma filtresinde "All",
    Hizmetlerde "Running", Başlatma kartında "(disabled)". Filtre
    düğmeleri static const char* dizisiydi; L() tabloyu çizim anında çözdüğü
    için dil değişiminde eski tabloda kalıyorlardı — dizi artık her karede
    yeniden kuruluyor.
  • Kenar çubuğundaki İ karakterinin font alt kümesinde eksik olabileceği
    şüphesi görsel olarak doğrulandı: doğru çiziliyor.
  • docs\tweaks-registry.md üretilirken 56 etiketin tamamı iki satır kayıyordu.
    Uygulama doğru gösteriyordu; hata üreteçteydi. make_tweak_table.ps1 FlatEnd
    değerini enum metninden sayıyor, yeni sekmelerin üstüne yazdığımız bir yorum
    cümlesi "… FlatEnd'den hemen önce …" diyordu ve sayım o sözcükte duruyordu:
    sonradan eklenen 44 anahtar hiç sayılmadı. Artık iki bağımsız sayım yapılıyor
    (enum metni + lang.cpp'deki TweakNames ayracı) ve uyuşmazlıkta betik
    hata verip duruyor. CI bunu yakalamadı: denetim adımı dosyayı aynı betikle
    yeniden ürettiği için iki taraf birlikte kaymıştı.

Testler

Tek test dosyası dört pakete bölündü: 204 denetim, 0 hata.

Paket Denetim Kapsam
test_pure.cpp 122 i18n tabloları, RAM ön ayarları, tweak sözleşmeleri, .reg gövdeleri
test_modules.cpp 31 Geri yükleme metinleri, hizmet beyaz listesi, başlangıç sorguları, shader taraması
test_license.cpp 22 Lisans maskesi, HWID determinizması, "beni hatırla" kalıcılığı
test_write_paths.cpp 29 Temizleyici tarama/temizleme tersinirliği, yedek listeleme, içe aktarma reddi

Dördü de gerçek sistemine dokunmaz: saf mantık, salt-okunur sorgular ya da
izole ortam. build.bat derlemenin sonunda bu dört paketi çalıştırır ve biri
takılırsa exit /b 1 ile durur — testler derlemeden ayrılmaz.

Bilinen sınırlar

  • Sistem geri yükleme noktası arayüze bağlı değil. src/core/restore.cpp
    derleniyor, test ediliyor ve çalışıyor ama şu an hiçbir çağrı yeri yok;
    uygulama otomatik geri yükleme noktası oluşturmaz. Toplu tweak
    uygulamadan önceki koruma, tweak kapsamındaki .reg yedeğidir.
  • Başlatma yalnızca Run/RunOnce anahtarlarını görür. Başlangıç Klasörü,
    Zamanlanmış Görevler, WMI abonelikleri ve hizmetler listelenmez. Windows'un
    kendi "Başlangıç" sekmesi kadar eksik, Görev Yöneticisi kadar güvenilir olmaya
    çalışır.
  • Hizmetler 16 girişle sınırlı ve bu bir tercih: beyaz liste genişleyebilir
    ama varsayılan olarak kapalıdır.
  • Ekran görüntüleri gerçek bir makinede alındı; Başlatma ve Hizmetler görselleri
    o sistemde kurulu programları gösterir.

Kurulum

TENGRI.exe dosyasını indirip çalıştır. Kurulum gerekmez.

ÖNEMLİ: antivirüs uyarısı

TENGRİ HKEY_LOCAL_MACHINE altına yazıyor, geçici .reg dosyalarını içe
aktarmak için reg.exe çağırıyor ve hizmet yapılandırmasını
ChangeServiceConfigW ile değiştiriyor. Bunlar bir "sistem iyileştirici"
zararlı yazılımının davranış imzasıdır; sezgisel motorlar imzasız
çalıştırılabilirleri işaretler. Dosya imzasızdır. Ayrıntı:
SECURITY.md

Ayar uygularken, başlatma girdisi kaldırırken ve hizmet değiştirirken yönetici
yetkisi istenir; açarken, sistem bilgisi, başlatma listesi ve hizmet durumu
okurken hiç sorulmaz.

Bilmen gerekenler

  • Ayarları uygulamadan önce geri yükleme noktası oluştur — uygulama bunu
    senin yerine yapmıyor.
  • Bazı ayarların etkili olması için yeniden başlatma gerekir.
  • Lisans ekranı bir demodur: her anahtarı kabul eder, sunucuya hiçbir
    doğrulama yapılmaz, hiçbir telemetri yoktur.
  • Makine parmak izi hesaplanır ama hiçbir yere gönderilmez.

Kaynaktan derleme

git clone --recurse-submodules https://github.com/Memati8383/Tengri.git
cd Tengri
build.bat

Lisans: MIT

TENGRI v1.1.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 08:30

TENGRI 1.1.0

Arayüz yenilendi ve Windows bildirimleri geldi. 56 anahtar, 10 temizleme kategorisi
ve geri alma mekanizması aynı.

Windows bildirimleri

Uzun süren işler, yetki hataları ve ayar değişiklikleri artık Eylem Merkezi'ne düşer.
Uygulama kapalıyken de gelir.

Ayarlarda üç anahtar:

  • Uygulama içi bildirimler — pencerenin köşesindeki toaster'lar
  • Windows bildirimleri — Eylem Merkezi'ne düşen toast'lar
  • Sadece hatalar — ikisini birden susturur, yalnızca hata ve uyarılar geçer

Toast düğmeleri:

Düğme Davranış
Sonuçları gör Uygulamayı açar, olayın kendi sayfasına gider
Geri al Önce onay ister — onaylanmadan registry'ye yazılmaz
Tekrar dene Yalnızca saklanmış bir iş varsa görünür
Tamam Sistem düğmesi, uygulamayı açmadan kapatır

Kurulum. İlk çalıştırmada iki kayıt yazılır: HKCU\...\AppUserModelId girdisi ve
Başlat menüsü kısayolu. Ayarı kapatmak kayıtları silmez; kısayol elle silinirse yeniden
kurulur.

Rahatsız Etmeyin ve gece modu Windows'un kararıdır — üzerine yazılmaz.

Arayüz

Yeni marka kimliği: kurt logosu artık pencere simgesi, görev çubuğu, tepsi ikonu,
giriş ekranı, kenar çubuğu ve açılış ekranında kullanılıyor.

Arayüz Inter yazı tipine geçti ve exe içine gömüldü — yanında font dosyası olmadan
da doğru çiziliyor. Üç ağırlık, uygulamanın gerçekten kullandığı karakterlere
(Basic Latin + Türkçe + noktalama) alt kümelenmiş, toplam 75 KB.

Tipografi ölçeği 19 farklı punto yerine 9 adlandırılmış belirteçe (theme::size)
çöktü ve kontrast düzeltmesi yapıldı: birincil metin ve simgeler WCAG AA eşiğine
getirildi.

Gecikme grafiğinde beş hata düzeltildi: eksen ölçeği, sahte sıfırlar, örnekleme hızı,
kayma ve eski ölçüm. Artık yalnızca gerçek ölçümler çiziliyor.

Düzeltilenler

  • Uygulama simgesi .ico dosyasındaki başlık bozuktu (biPlanes/biBitCount WORD
    olarak yazılıyordu), bazı sistemlerde ikon yüklenmiyordu
  • Tepsi ikonu hInstance geçirilmediği için yanlış kaynak okuyordu
  • Ekran görüntüsü aracı odağın gerçekten uygulamada olduğunu doğrulamıyordu
  • Türkçe metin tablosunda kaçış hatası derlemeyi kırıyordu

Bilinen sınır

Bildirimlerdeki "Geri al" düğmesi şu an tepki vermiyor. Düğmeye basınca
uygulama öne gelir, ancak onay penceresi açılmaz; hiçbir şey değişmez.

Neden güvenli: düğmenin varlık sebebi registry'ye onaysız dokunmamaktı, o koruma
çalışıyor — düğme yanlışlıkla bir şey yazmıyor, yalnızca hiçbir şey yapmıyor.
Ayarlar sayfasındaki Geri al düğmesi ise çalışıyor.

Düzeltme yolda: onay penceresi, ImGui'nin modal pencereyi yalnızca ait olduğu
pencere döngüsü içinde açması gerektiği için yanlış yerde çağrılıyor.

Kurulum

TENGRI.exe dosyasını indirip çalıştır. Kurulum gerekmez.

ÖNEMLİ: antivirüs uyarısı

TENGRI HKEY_LOCAL_MACHINE altına yazıyor ve geçici .reg dosyalarını içe
aktarmak için reg.exe çağırıyor. Bu ikisi bir "registry temizleyici" zararlı
yazılımının davranış imzasıdır; sezgisel motorlar imzasız çalıştırılabilirleri
işaretler. Dosya imzasızdır. Ayrıntı: SECURITY.md

Ayar uygularken yönetici yetkisi istenir; açarken ve sistem bilgisi okurken hiç
sorulmaz
.

Bilmen gerekenler

  • Ayarları uygulamadan önce geri yükleme noktası oluştur.
  • Bazı ayarların etkili olması için yeniden başlatma gerekir.
  • Lisans ekranı bir demodur: her anahtarı kabul eder, sunucuya hiçbir doğrulama
    yapılmaz, hiçbir telemetri yoktur.
  • Makine parmak izi hesaplanır ama hiçbir yere gönderilmez.

Kaynaktan derleme

git clone --recurse-submodules https://github.com/Memati8383/Tengri.git
cd Tengri
build.bat

Lisans: MIT

TENGRI v1.0.0

Choose a tag to compare

@Memati8383 Memati8383 released this 06 Oct 05:16

TENGRI 1.0.0

İlk sürüm. C++ / DirectX 11 üzerinde yazılmış, ~1.4 MB tek dosyalık bir Windows sistem
optimize edici. Kurulum yok, gereksinim yok.

Ne var

Gösterge paneli — canlı CPU / RAM / disk kullanımı, kayan 30 saniyelik gerçek CPU
yükü grafiği, canlı durumdan hesaplanan sağlık puanı, tek tıkla optimizasyon.

Temizleyici — 10 kategoride gerçek dosya taraması ve silme. Geçici dosyalar, tarayıcı
önbelleği, Windows Update önbelleği, Geri Dönüşüm Kutusu, önyükleme verileri, sistem
günlükleri, küçük resim önbelleği, çökme dökümleri, gölgelendirici önbelleği ve teslim
optimizasyonu.

İnce ayarlar — 7 kategori, 56 anahtar. Performans, Oyun, Gizlilik, Görsel, Oyunlar,
FiveM, Gecikme. Her anahtar başlangıçta registry'den okunur, yani arayüz kaydedilmiş bir
ayar dosyası değil gerçekte uygulanan şeyi gösterir. Uygula yalnızca dokunduğun
anahtarları yazar.

Ağ — 1.1.1.1'e karşı gerçek ICMP gecikme ve jitter ölçümü, DNS geçişi (Cloudflare /
Google / Quad9 / Otomatik), bağlantı ayrıntıları, 6 ağ anahtarı.

RAM profili — SvcHostSplitThresholdInKB için 14 hazır profil; kurulu RAM'e en yakın
şablon otomatik önerilir.

Sistem bilgisi — donanım, yazılım ve güvenlik ayrıntıları. RAM hızı ve slot sayısı
N/A bildirir, çünkü bu bilgiler registry'de yok.

Arayüz — İngilizce ve Türkçe, DPI farkındalıklı ölçekleme, tepsi ikonu, gerçek
"başlangıçta çalıştır" girdisi.

Kurulum

TENGRI.exe dosyasını indirip çalıştır. Kurulum gerekmez.

ÖNEMLİ: antivirüs uyarısı

TENGRI açılışta yönetici yetkisi istiyor, HKEY_LOCAL_MACHINE altına yazıyor ve
geçici .reg dosyalarını içe aktarmak için reg.exe çağırıyor. Bu üçü birden, bir
"registry temizleyici / optimizer" zararlı yazılımının davranış imzasıdır; bu yüzden
sezgisel antivirüs motorları imzasız çalıştırılabilirleri işaretler.

Bu TENGRI'ye özgü bir sorun değil, bu tür araçların doğal sonucu. Dosya imzasızdır.

Kaynaktan derleme

Yazdığı her registry anahtarı kaynakta görünür. Güvenmiyorsan kendin derle:

git clone --recurse-submodules https://github.com/Memati8383/Tengri.git
cd Tengri
build.bat

Bilmen gerekenler

  • Ayarları uygulamadan önce geri yükleme noktası oluştur.
  • Bazı ayarların etkili olması için yeniden başlatma gerekir.
  • Lisans ekranı bir demodur: her anahtarı kabul eder, sunucuya hiçbir doğrulama
    yapılmaz, hiçbir telemetri yoktur.
  • Makine parmak izi hesaplanır ama hiçbir yere gönderilmez.

Lisans: MIT