Hackad eller bara någon bugg med Windows Font?

Permalänk

Hackad eller bara någon bugg med Windows Font?

Har skapat en applikation i C#, Winforms .NET och använder mest PowerShell ISE och Visual Studio.
I applikationen så har jag en konfigurationsfil som jag läser mot appen vid varje uppstart. För att monitorera olika saker som tema i Windows och liknande för att applicera på appens alla kontrollers/knappar/flikar osv.

Men idag när jag skulle köra en vanlig test så märkte jag att konfig filen inte längre fungerade som tänkt. Så gick in i temp och öppnade filen som finns i "C:\Windows\Temp". Ser då att toppen av filen som vanligtvis läst in en mängd olika saker såsom OS, version, tid på datorn och liknande inte längre visar detta högst upp i ini filen. I mitten så slår allting som det skall, dvs min toggle för on/off på olika andra saker läses in i filen som det skall. Längst ner i filen finns ~16k kinesiska tecken..........

Tar lite exempel nedan

Mest så verkar det stå

  1. The most beautiful thing about this bowl is the most beautiful thing.

  2. The most beautiful thing about the bowl is the bowl of the most beautiful thing.

  3. The bowl is full of water, the water ...

  4. The 1984 World Cup was held in Beijing on July 14, 2009. The 1984 World Cup was held in Beijing on July 14, 2009.

Har Windows 10 med senaste uppdateringar. Och har diverse Windows tjänster som inte används avstängt. Och en brandvägg aktiv med Whitelist rules. Allting som inte finns i Whitelist oavsett om det är Microsoft eller inte blockeras. Har i princip bara Internet access på Steam, Firefox, Chrome.

Är det någon "bugg" som inträffat i min konfigurations fil. Eller känner ni igen texterna.... tänker om det kan vara någon font grej som ballat ur och istället spottar ur sig random saker såsom Lorum Ipsum. Men blir samtidigt fundersam. Är man en hacker så kanske man inte brukar skriva in data i befintliga konfig filer utan skapar sin egen, som man sedan tar bort efter runtime.

Tack på förhand.

Permalänk
Medlem

Först ska man alltid misstänka sin egen kod. Har du skrivit över filen själv, återanvänder du till exempel variabler för filer i olika syften?

I andra hand kan man konstatera att en temp-katalog är ett dåligt ställe att lägga både globala och användarspecifika inställningar till ett program. Vilket annat program som helst kan skriva till samma fil. Du nämner inte vilket filnamn du valt.

I tredje hand skulle jag titta på indatavalidering. Eftersom du nämner PowerShell och inte själv kan lösa ditt problem så gissar jag att du inte direkt är bäst på att validera data som skickas mellan processer.

Någonstans i fjärde hand skulle man kunna sätta upp någon form av övervakning av filen och se vilken process det är som öppnar den. Hur man gör det på Windows? Ingen aning.

På det hela taget är det förstås helt omöjligt att svara på din fråga utan att själv kunna felsöka.

Att det skulle vara ett fontproblem är nog uteslutet, om det finns en faktisk text i kinesiskan.

Permalänk
Skrivet av KAD:

Först ska man alltid misstänka sin egen kod. Har du skrivit över filen själv, återanvänder du till exempel variabler för filer i olika syften?

I andra hand kan man konstatera att en temp-katalog är ett dåligt ställe att lägga både globala och användarspecifika inställningar till ett program. Vilket annat program som helst kan skriva till samma fil. Du nämner inte vilket filnamn du valt.

I tredje hand skulle jag titta på indatavalidering. Eftersom du nämner PowerShell och inte själv kan lösa ditt problem så gissar jag att du inte direkt är bäst på att validera data som skickas mellan processer.

Någonstans i fjärde hand skulle man kunna sätta upp någon form av övervakning av filen och se vilken process det är som öppnar den. Hur man gör det på Windows? Ingen aning.

På det hela taget är det förstås helt omöjligt att svara på din fråga utan att själv kunna felsöka.

Att det skulle vara ett fontproblem är nog uteslutet, om det finns en faktisk text i kinesiskan.

Filen har ett unikt namn. Och variabeln heter $ThemeFile. Jag skriver bara till denna variabel när jag trycker på en knapp i applikationen. Annars så används inte variabeln någonstans. Erroraction är också satt så att den inte bör göra något alls om det inträffar ett fel i den kod som körs runt den satta variabeln. Den rensas också innan den körs. Koden i sig är skriven utav mig själv så har ingen märklig krypterad eller obfuskerad kod vid runtime.

Har inget konstigt namn eller så bara:
"C:\Windows\Temp\Manager.ini"

Bör jag välja ett helt annat namn för både filen och variabeln? Kan Windows 10 i sig tänkas använda sig utav exakt samma variabel och skriva hokus pokus i min fil. Upptäckte det som sagt idag och aldrig hänt tidigare. Det sista jag gjorde igår kväll var att fippla runt lite med olika fonter (bara standard såsom Arial, Verdana etc) för se vad som fungerar bäst på en helt annan knapp utan koppling till detta.

Finns det någon Kinesisk översättare online som tillåter 16k tecken. Så kan jag prova att sätta allting i den och se om man får ut något mer. Har gjort stickprover på olika ställen och ser ut att vara samma konstiga saker den spottat ut.

Permalänk
Medlem
Skrivet av techdude57:

Finns det någon Kinesisk översättare online som tillåter 16k tecken. Så kan jag prova att sätta allting i den och se om man får ut något mer. Har gjort stickprover på olika ställen och ser ut att vara samma konstiga saker den spottat ut.

Troligtvis är det inte riktig kinesisk text utan bara data som din textredigerare råkar tolka som kinesiska, t.ex. binärdata som råkar matcha vissa kinesiska tecken (det finns ju rätt många såna).

Permalänk
Skrivet av perost:

Troligtvis är det inte riktig kinesisk text utan bara data som din textredigerare råkar tolka som kinesiska, t.ex. binärdata som råkar matcha vissa kinesiska tecken (det finns ju rätt många såna).

Dra på trissor.... öppnade allt i vanliga WordPad och nu ser det snyggt uppradat ut. Och det Google Translate säger är då från WordPad rad för rad ungefär:

  • ㈀㔀ⴀ 㔀ⴀ 㐀 ㄀㐀㨀㄀ 㨀㔀㘀 ⴀ The bowl is bright and clear The bowl is bright and clear The bowl is the most bright and clear 㴀਀㈀ ㈀

  • 㐀 ㄀㌀㨀㔀㔀㨀㐀㈀ ⴀ The bowl is bright and clear The bowl is bright and clear The bowl is the most clear

  • The most beautiful thing about the bowl is the bowl.

Så jag antar att det är någon form av bugg eller Windows funktion som knasade till min konfigurationsfil trots allt. Tycker dock att "Kinesiska" translate sidor är riktigt usla. Man blir ju paranoid och det verkar nästan som att dom hittar på hälften av alla meningarna. Blev dock nyfiken på vad den andra personen menade med data validering. Skall läsa på lite, kanske har jag inte direkt gjort best practise på just koden som hanterar ini filen. :/

Permalänk

Efter att ha kollat all min kod ytterligare. Så snubblade jag över en tråd på nätet som diskuterade ungefär samma sak som jag upplevde här. Och det är att .ini filer nämligen har en "size limit". Jag frågade AI och fick detta till svars

  • .ini Simple, human-readable, great for small config files Not good for frequent appends, lacks real structure, API limitations (~32–64 KB per section/file) ~64 KB if using legacy API, unlimited for plain text

  • .log Ideal for appending, no structure needed, fast Not structured — hard to query/parse without manual parsing No size limit (plain text); must trim manually

  • .json Structured, supports nested data, good for modern apps Not designed for appending line-by-line — needs full rewrite on each write if keeping valid JSON No strict limit, but slow to update large files incrementally

  • .xml Structured, extensible, readable Verbose, also not ideal for frequent appends unless specialized XML writers used No hard limit, but larger files = slower manipulation

Och filen med den korrupta text datan i är ungefär 60 stor. Så jag undrar om det endå inte kan vara detta som hänt. Byter min logik till att istället skriva till en .log fil som en workaround. Log filer brukar jag endå köra direkt i typ CMTrace.exe eller liknande på jobbet. Så rätt van vid att använda logg filer. Trodde dock att INI inte hade denna typen utav begränsning i ett så "nytt" OS som Windows 10.

Permalänk

Det är inte bara att UTF16 tolkas fel då? Så att Höga eller låga byten, beroende på endianness. Så blir de knas. Alltså att du har en BOM som säger LE och sen tolkas filen med BE och tecknen blir ngt random iom att latinska har en NULL byte som start

Permalänk
Skrivet av TorrentKatten:

Det är inte bara att UTF16 tolkas fel då? Så att Höga eller låga byten, beroende på endianness. Så blir de knas. Alltså att du har en BOM som säger LE och sen tolkas filen med BE och tecknen blir ngt random iom att latinska har en NULL byte som start

Ja det är mycket möjligt. Jag ser att jag inte definierat någon standard alls bara skapar en .ini fil vid start. Som jag sedan läser värden ifrån i applikationen. Undra om det då inte löser sig om man lägger till '-Encoding Unicode' vid skapandet av filen, och
'-Encoding Unicode -Append' vid skrivning till filen.

För att vara på den säkra sidan så byter jag nog endå till att använda mig utav .Log istället som filformat. För risken finns att filen som skrivs blir rätt stor med tiden. Och alla användare kanske inte har för vana att kolla detta manuellt ifall någonting felar. Mer att man skall kunna kolla i filen vid behov och felsökning, samt att appen skall läsa och skriva input/output till den.