Zobrazit příspěvky

Tato sekce Vám umožňuje zobrazit všechny příspěvky tohoto uživatele. Prosím uvědomte si, že můžete vidět příspěvky pouze z oblastí Vám přístupných.


Příspěvky - Martin Dráb

Stran: 1 ... 4 5 [6] 7 8 ... 13
76
Windows a jiné systémy / Re:gcc & Win32 mini-posix knihovna
« kdy: 18. 12. 2020, 17:01:12 »
Proč zdrojáky vašich prográmků nezkompilujete třeba ve Visual Studiu? Pokud vám vadí msvcrt a prográmky jsou zejména pro vás, linkuje ji staticky.

POSIXová volání jako open, read či write by měla být podporována, jen tam Microsoft z nějakého důvodu vyžaduje prefix "_", jinak dostanete varování. Ten ale můžete vypnout (případně chybu, pokud je dané volání považováno za příliš deprecated), kterou lze také vypnout.

Přímé převádění ELF do EXE mi přijde dosti zvláštní ve smyslu, že si můžete nepěkně naběhnout na některé věci specifické pro Windows. Např. je dobré dávat programu manifest, jinak vás mohou nepříjemně překvapit věci jako "kompatibilita s Windows XP".

77
Citace
Jestli na to má workstation
Bohužel nevím, zda toto podporují ty Player edice (nikdy jsem je nepoužíval, jen plnou Workstation).

Ve Workstation je to prostě jedno z nastavení u Display v seznamu hardware VM.

78
Ve VMWare Workstation je možné u displeje virtuálního stroje nastavit různé věci v Display scaling. Nejsem si úplně jistý, co všechno tím lze pokrýt, ale podařilo se mi nastavit, že se rozlišení VM přizpůsobuje velikosti okna, ne naopak.

Možná by alo bylo lepší prostě po ukončení "problémového" SW prostě změnit rozlišení na původní hodnotu pomocí nějakého programu (prostě udělat batch script).

79
Vývoj / Re:Lazarus - i2c sběrnice
« kdy: 09. 12. 2020, 17:46:22 »
Co si pamatuju, u I2C neexistuje žádná obecná možnost, jak zjistit, že na nějaké adrese poslouchá zařízení či ne. Protože ale zařízení mají celkem napevno přiřazené adresy, tak prostě pro danou adresu zkusíte komunikovat, jako by tam dané zařízení bylo... a pokud správně odpovídá, tak tam je.

80
Vývoj / Re:Vývoj ve Windows: sériový port přes SSH
« kdy: 25. 11. 2020, 21:23:38 »
Asi dost záleží na tom, jak moc si chcete zaprogramovat a případně vyhrát s Windows API, asynchronními operacemi a tak (overlapped I/O).

Můžete tunelovat určitý port přes SSH (pro SSH bude asi nejjednodušší spustit nějakou instanci SSH klienta, klidně i toho, co je ve Windows 10 nativně) a pak mezi tímto portem a portem sériovým ručně přeposílat data. Bohužel, Windows neumožňují použít volání poll() na cokoliv jiného než sockety (protože sockety v jejich podání nejsou přímo souborová handle). Asynchronní zápis/čtení (overlapped I/O) je pravděpodobně to, co hledáte. Je možné, že API kolem sériového portu bude umožňovat rozumným způsobem zjistit, zda-li v něm jsou nějaká data atd., takhle z hlavy se mi nic nevybavuje.

Trochu nechápu virtualitu toho sériového portu. Chcete jej mít virtuální pouze na testování, nebo i "v produkci"? Jaké zařízení bude zastupovat, resp. co se bude nacházet za ním?

81
VMWare Workstation dovoluje nastavit kompatibilitu se staršími verzemi VMWare (VM -> Manage -> Change Hardware Compatibility), tak zkuste, zda-li to pomůže.

Jinak nevidím moc jinou možnost než zkusit nějakou starší verzi virtualizačního nástroje. Přecijen, memory maangement před EPT nebyl zrovna triviální a úplně bych se nedivil, kdyby tento kod v nových verzích zahodili.

82
Studium a uplatnění / Re:Vývoj: zadávání práce a termíny
« kdy: 03. 11. 2020, 22:10:45 »
Citace
No to je trošku jinak, zezhora se dostane termín kdy to musí jít ven a pak se přidávají věci. S tím, že s termínem nelze hýbat :-D

Jak již bylo řečeno výše, postupovat tímto způsobem není ...obvyklé... Samozřejmě se stává, že najednou je potřeba vytvořit další featuru (nebo jí nahradit nějakou jinou), ale pak se dohodnete, jak budete postupovat (za jak dlouho změnu zapracujete, jakým způsobem vyřešíte časové období, kdy tam nebude atd.

Pokud na toto vyšší vrstvy neslyší (nedá se s nimi rozumně mluvit), tak klidně zkuste svoje štěstí někde jinde. Evidentně existují i firmy, kde k těmto problémům nedochází.

83
Zkoušel jste zkontrolovat souborový systém na tom disku? Moje zkušenost se zápisem na NTFS oddíl z Linuxu je taková, že zápisy neprovádím, pokud se tomu lze vyhnout (což v posledních letech vždy snadno šlo).

Proč jste pro tvorbu instalačního USB média použil Rufus? Nástroj od Microsoftu s tím nemá problém.

84
Pokud se na SSH server uživatel může přihlásit pouze pomocí privátního klíče, stačí, aby tento klíč byl chráněn dostatečně složitým heslem, které nebude na stroji uloženo.

Asi by bylo možné najít bezpečnostní řešení, které vám dovolí definovat přístupy na bázi aplikací (ne uživatelů a úrovní integrity). Pár jsem jich v minulosti viděl, ale již je tomu dost let.

85
Vývoj / Re:C++ Windows API - clipboard
« kdy: 08. 09. 2020, 19:54:47 »
Citace
Ještě jsem si vzpomněl, že existuje cesta, před hodně lety jsem to dělal. Když aplikace volá GetClipboardData tak se dá volání funkce z User32.dll přesměrovat na vlastní kód, předělat data ze schránky a pak vrátit volání na původní funkci. Aplikace pro schránku musí mít práva amina aby mohla měnit kód dll za běhu. Nevýhoda byla, že se to muselo dělat pro každou aplikaci zvlášť, protože aplikace používají vlastní kopii dll.

Administrátorská práva zajišťují, že aplikace se dostane prakticky do každého normálního procesu, kde pak může modifikovat user32!GetClipboardData. Pro aplikace běžící pod stejném uživatelem a na stejné úrovni integrity obvykle taková oprávnění nejsou potřeba.

Tohle samozřejmě bude fungovat. Cílová aplikace se ale může rozhodnout, že se jí ty cizí modifikace user32.dll nelíbí a něco s tím udělat. Případně může používat různé process mitigation policies, které injektování kódu do ní značně ztíží.

86
Vývoj / Re:C++ Windows API - clipboard
« kdy: 07. 09. 2020, 22:05:50 »
Citace
Nejde nainstalovat neco jako "Windows kernel breakpoint" ? Tam, kudy to tece v pripade Paste (neco jako GetData nebo jina funkce), a kdyz uz to budete delat.. udelejte PRE_PASTE i POST_PASTE event (hook).
O tom celkem pochybuju. Paste může obecně fungovat tak, že aplikace prostě otevře schránku, načte z ní data, nějak je zpracuje a následně je někam vyplivne. Pokud takováto operace nemá žádné vedlejší efekty.

Pokud by práce se schránkou vyžadovala nějaký přechod z kernelu do usermode (KeUserModeCallback), byla by šance takovou akci zachytit. Díky tomuto mechanismu například aplikace může implementovat ochranu proti některým typům injekcí či sledování (např. se do ní nedoustanou DLLky injektované přes SetWindowsHookEx).

87
Vývoj / Re:C++ Windows API - clipboard
« kdy: 05. 09. 2020, 22:06:15 »
Pokud programujete pro Windows Vista a novější, pro sledování obsahu schránky můžete využít AddClipboardFormatListener.
https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-addclipboardformatlistener

Pokud potřebujete podporovat i Windows XP, musíte využít funkci ChangeClipboardChain. Zde musíte být opatrný, abyste nerozbil ostatní aplikace, protože zde v zásadě dochází k vytváření spojového seznamu oken, kterým se má notifikace posílat. Ten samozřejmě nesmíte rozpojit...

Pak budete potřebovat funkce na přístup k obsahu schránky. Ten samý obsah může být uložen ve více různých formátech, takže si můžete vybrat ten nejvhodnější pro vaši aplikaci. Pozor na to, že aplikace si může přidat vlastní formát.

Co se týče vámi navrhované metody monitorování zpráv, pro kterou se obvykle používá termín subclassing, není přísliš vhodná, chcete-li monitorovat všechny aplikace na daném desktopu či window station. Pro tento účel se lépe hodí tzv. Háky Windows (mrkněte na funkci SetWindowsHookEx). I zde ale musíte být velmi opatrný, abyste nerozbil jiné aplikace. V podstatě totiž systém přimějete, aby do každé vhodné aplikace injektoval vaší DLL knihovnu, která pak bude odposlouchávat (a teoreticky i upravovat) zprávy zasílané jejím oknům. Je třeba opravdu pečlivě číst dokumentaci.

88
Citace
Je problém  někde hlouběji (celkově jiná konfigurace virtuálního PC) a nebo jen nějaké problémy s odlišným řadičem storage / způsobu napojení disku?
Ano, Windows nemají rády, když začnou bootovat a zjistí, že zařízení kritická pro boot (řadiče, disky) se jaksi změnila. Pokud chcete mít při klonování nějakou šanci na úspěch, tak před vypnutím systému před klonováním proveďte příkaz "sysprep /generalize".

Start hodnotu na 0 můžete nastavit (u ovladačů), kde chcete. Systém takové ovladače načte do paměti ještě před zavedením samotného jádra (ač jejich inicializace probíhá až po jeho zavedení). Nastavení na 0 u vyjmenovaných ovladačů nemusí stačit, pokud jsou jiné ovladače nastaveny jako filtry pro boot-critical třídy zařízení (SCSIAdapter, HDC, DiskDrive, Volume...), pak musíte nastavit Start na 0 i u tchto filtrů.

Klonoval jsem asi dvakrát, v jednom případě sysprep /generalize fungoval dobře, v druhém ne (ale je otázka, zda-li tam za to nemohlo něco jiného, např. chyby disku).

89
Windows a jiné systémy / Re:Změna hesla ve Windows
« kdy: 16. 08. 2020, 00:09:27 »
Citace
Já měl zato že to MS pro Win10 už opravilo
Pokud myslíte ten Utility Manager, tak tam není v tomto smyslu co opravovat. Prostě byste systém upravil jiným způsobem a dosáhl byste stejného výsledku.

90
Vývoj / Re:Windows API - typové aliasy
« kdy: 06. 08. 2020, 21:19:06 »
Citace
1) Každá winapi funkce co bere jako parametr string je ve skutečnosti makro. Můžete třeba strávit spoustu času hledáním důvodu proč linker odmítá vaši třídu s metodou CreateFile. Makra nerozlišují třídy a metody a pak stačí aby do jednoho cpp to windows.h probublalo a do druhého ne. A CreateFile je jen jeden příklad z mnoha.

Já jsem si zvykl přímo uvádět, jakou verzi takové API funkce budu volat (obvykle W). Nepředpokládám, že bych někdy potkal systém, který by unicode verze nepodporoval.

Citace
Popravde receno nechapu, proc dualitu xxxW/xxxA nevyresili nejak jinak.

Myslím si (ale nehledal jsem), že možná původně ani neexistovaly A a W varianty. Ty se objevily později, když bylo třeba řešit nový problém ANSI vs. Unicode. Ale rozhodně šel řešit jiným způsobem.

Problémy s C++ bych Windows API nevyčítal vzhledem k době vzniku.

Stran: 1 ... 4 5 [6] 7 8 ... 13