• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    KOJAProgramovani 40+
    JANFROG
    JANFROG --- ---
    KLEINZACH: Cool!
    KLEINZACH
    KLEINZACH --- ---
    tak jeste abych to uzavrel a uz koncim:

    jeste to nebyla konecna, protoze trida CVirtualDesktopManager je implementace, ale ne interface (ma mnohem vic metod a i poradi je jiny), ja hledam ve skutecnosti IVirtualDesktopManagerInternal2 (zrejme).

    pustil jsem ghidru na to dll a sel hledat vtables od toho interface, kterej me zajima a vskutku jej nasel. ghidra z toho dll a pdb v podstate vyrobilo zpetne tu classu a rovnou vtable dekodovala do citelny formy, abych to nemusel delat manualne (to mi na tom druhym softu chybelo.. ono to umi python pluginy, ale to uz je placeny).

    zde je videt: nalevo dekompilovana trida, napravo vtable, prvni tri volani jsou od IUnknown baze, ten zelenej zbytek je to co me zajima:



    coz odpovida interfacu (a to je muj cil):

    struct IVirtualDesktopManagerInternal : public IUnknown
    {
    public:
    	virtual HRESULT STDMETHODCALLTYPE GetCount (UINT *pCount) = 0;
    
    	virtual HRESULT STDMETHODCALLTYPE MoveViewToDesktop (IApplicationView * pView, IVirtualDesktop * pDesktop) = 0;
    
    	virtual HRESULT STDMETHODCALLTYPE CanViewMoveDesktops (IApplicationView * pView, int * pfCanViewMoveDesktops) = 0;
    
    	virtual HRESULT STDMETHODCALLTYPE GetCurrentDesktop (IVirtualDesktop ** desktop) = 0;
    
    	virtual HRESULT STDMETHODCALLTYPE GetDesktops (IObjectArray ** ppDesktops) = 0;
    
    	virtual HRESULT STDMETHODCALLTYPE GetAdjacentDesktop (IVirtualDesktop * pDesktopReference, AdjacentDesktop uDirection, IVirtualDesktop ** ppAdjacentDesktop) = 0;
    
    	virtual HRESULT STDMETHODCALLTYPE SwitchDesktop (IVirtualDesktop * pDesktop) = 0;
    
    	virtual HRESULT STDMETHODCALLTYPE CreateDesktopW(IVirtualDesktop ** ppNewDesktop) = 0;
    
    	virtual HRESULT STDMETHODCALLTYPE MoveDesktop(IVirtualDesktop * desktop, HMONITOR monitor, INT32 index);
    ..
    };
    
    MIDL_INTERFACE("EF9F1A6C-D3CC-4358-B712-F84B635BEBE7") // build 10130
    IVirtualDesktopManagerInternal10130: public IVirtualDesktopManagerInternal { };
    
    MIDL_INTERFACE("AF8DA486-95BB-4460-B3B7-6E7A6B2962B5") // build 10240
    IVirtualDesktopManagerInternal10240 : public IVirtualDesktopManagerInternal { };
    
    MIDL_INTERFACE("f31574d6-b682-4cdc-bd56-1827860abec6") // build 10536
    IVirtualDesktopManagerInternal10536 : public IVirtualDesktopManagerInternal { };
    
    MIDL_INTERFACE("f31574d6-b682-4cdc-bd56-1827860abec6") // build 16299
    IVirtualDesktopManagerInternal16299 : public IVirtualDesktopManagerInternal { };
    


    dal sem kousek vic, aby bylo videt jak se furt meni ty guidy, plus treba v buildu 22000 pribyly i dalsi metody

    --

    tak jo, diky za pozornost - kdybych to vypravel v hospode, vsichni by meli skelny oci a pohled do nekonecna :)

    (a proc mi to padalo? mel jsem prehozene metody v interface, duh)
    JANFROG
    JANFROG --- ---
    SPIKE411: Compiler explorer je tool, ktery me zasadne zvysil kvalitu pracovniho zivota. Skoda jen, ze neumi zobrazit relokace.
    SPIKE411
    SPIKE411 --- ---
    KLEINZACH: Ad IDA/Ghidra - najdeš docela dost materiálů, které se zaobírají RE her. Tak třeba bys z toho mohl taky čerpat. :)

    Nějaké odkazy jsem dával sem:
    [SPIKE411 @ zajimave projekty na githubu]
    [SPIKE411 @ zajimave projekty na githubu]

    (Já tomu vůbec nerozumím, jen je to pro mě vzrušující čtení. :)))
    JANFROG
    JANFROG --- ---
    KLEINZACH: Presne! Tohle je typ znalosti ktere ma malo lidi (komparativne k mase programatoru) a kdyz si najdes nekoho kdo tohle potrebuje, muzes si diktovat podminky - druheho takoveho tezko najdou (a kdyz, bude stejne zpovykanej :-)
    KLEINZACH
    KLEINZACH --- ---
    SUCHRE: jo je to zajimava lekce, pac to delam poprvy: jeste pred mesicem jsem netusil co dela COM uvnitr, nevedel nic o widlich RPC a uz vubec netusil ze existuje ALPC. oprasil sem trochu asm (psat bych v tom uz asi neumel, ale zbezne to cist jeste umim), nasel celkem paradni nastroje (IDA je fakt bozi, jeste ghidra vypada dobre) ale je to vlastne celkem zabava :) a urcite se to jeste bude hodit az bude nekde neco otravovat..

    CERMI_FOX: lol, ja a microsoft bysme nemeli sedet v jedny lavici :D
    ANT_39: budme radikalni: open sourcnout widle!
    SUCHRE
    SUCHRE --- ---
    Tohle je 40+. Predstava, ze to nekdo pod 30 pise v jave, je jeste desivejsi.
    VOY
    VOY --- ---
    Jakkoliv je tema zajimavy, tak si myslim, ze se pomalu ale jiste dostavame mimo tema 40+ ;-).
    ANT_39
    ANT_39 --- ---
    CERMI_FOX: Kdybys radši dropoval nenápadný plausible-deniability hinty, aby se Kleinzach nažral a NDA zůstalo celý :)
    SUCHRE
    SUCHRE --- ---
    KLEINZACH: jo, tomu rozumim. od urcityho okamziku to tak je. na druhou stranu je treba rict, ze timhle zpusobem se daji ziskat neocenitelny zkusenosti, ze?
    AMBIENTIUM
    AMBIENTIUM --- ---
    CERMI_FOX: taky by mohl jít psát viry a antiviry :-))))
    CERMI_FOX
    CERMI_FOX --- ---
    KLEINZACH: kruty. Nechces jit delat k nam do Microsoftu a zdrojak widli si stahnout z gitu namisto tohohle vyzkumnyho dila? :-)
    KLEINZACH
    KLEINZACH --- ---
    NOHOUS: jj urcite, to k cemu to potrebuju je open source (v podstate modernizuju blackbox4windows (byl jsem dev/maintainer pred tim nez prisly deti, pak jsem to musel povesit na hrebik), bb4win, bbLean a kdovi kolik verzi to melo).
    JANFROG
    JANFROG --- ---
    KLEINZACH: Bez .pdb se to taky da, i kdyz je to vic prace. Odrazis se z export, import a relocation tables v tech .DLL. To pomuze alespon na ta volani co prekracuji hranici tech .dll. Ale jasne. .pdb je o dooost pohodlnejsi.
    NOHOUS
    NOHOUS --- ---
    KLEINZACH: zdokumentujes to pak nekde verejne?
    KLEINZACH
    KLEINZACH --- ---
    dik :) bez tech pdb bych byl v peerdeli, nedokazu si to predstavit delat bez symbolu. mozna nejakej malej izolovanej kousek, ale ne takle pres 2 vrstvy a zpet.

    bohuzel kdyz chce clovek programove zachazet s tema jejich virtualnima desktopama, musi, protoze jediny oficialni co nam mrkvosoft dal, jsou 3 naprosto neuzitecny volani: IVirtualDesktopManager::GetWindowDesktopId IVirtualDesktopManager::IsWindowOnCurrentVirtualDesktop a IVirtualDesktopManager::MoveWindowToDesktop. s tim se neda NIC poradnyho delat. ( https://learn.microsoft.com/en-us/windows/win32/api/shobjidl_core/nn-shobjidl_core-ivirtualdesktopmanager )

    SUCHRE: vysoka - prakticky s kazdym novym windows sdk (ted je 22621). v kazdy edici widli se zmenej minualne guidy tech interface. to se da jeste dohledat v registrech, pripadne inspekci actxprxy.dll (ale to jsem jeste nedavno nevedel) a pridaj dalsi volani. na internetu je asi tak 5 open source projektu, ktery todle delaj. z toho 2 podporujou maximalne windows 10 (sdk < 22000). jeden je v pascalu (nejakej organizer chat-botu), jeden v dot netu a jeden v rustu (dll pro prepinani workspace v AutoHotkey). inspirovat jima se muzu, ale moc mi to nepomuze s mym problemem ze na w11 to v nekterych volanich pada. a kdyz prijde ta zmena, nemuzu se na ne spolehnout, ze to udelaj kdyz ja potrebuju.. proto to chci umet z widli vydojit sam a navic - ted uz je to osobni ;)
    MLEKAR_STEIN
    MLEKAR_STEIN --- ---
    KLEINZACH: čumím a to jak péro z gauče.
    a más můj obdiv.
    SH_PANDA
    SH_PANDA --- ---
    SH_PANDA: nejvic low level vec co jsem od vysky napsal byl dnes nejaky kus kodu v c#. teda spis jsem rekl copilotu do potrebuji a doladil to pilnikem
    SUCHRE
    SUCHRE --- ---
    Jaka je pravdepodobnost, ze se to v nasledujici verzi zmeni nebo jinak dojebe? Jinak obdivuju tu snahu, taky jsem se kdysi pokousel o neco podobnyho, ale vzdal.
    SH_PANDA
    SH_PANDA --- ---
    kdyz to ctu, tak si pripadam tak nejak menejcenne ... jsem uplny pojidac kolacu ...
    Kliknutím sem můžete změnit nastavení reklam