Windowsçšã®ãããã°ã¢ããªã±ãŒã·ã§ã³ãããããè¡ã£ãŠããã®ã§ããã°ã Image File Execution Options ïŒ IFEO ïŒã®ãããªçŽ æŽãããã¡ã«ããºã ãèããããšããããããããŸããã 圌ãæäŸããæ©èœã®1ã€ã䜿çšãããšãããæŠéã«è¿ãæ¡ä»¶ã§ã¢ããªã±ãŒã·ã§ã³ããããã°ã§ããŸãã ããã°ã©ã ã®ä»£ããã«ã¬ãžã¹ããªã®é©åãªå Žæã«ç¹å¥ãªããŒãæžã蟌ãã ã®ã§ããããã¬ãŒãèªåçã«èµ·åããŠããããã°ã¿ã¹ã¯ãå®è¡ã§ããŸãã ãããããã®ã¡ã«ããºã ïŒå®éãäœãã®èµ·åã€ã³ã¿ãŒã»ããïŒã¯ãã®ãããªç®çã«ã®ã¿äœ¿çšã§ãããšèª°ãèšã£ãã§ããããïŒ ãã®èšäºã¯ãæå³ããç®çã®ããã«ç©ã䜿çšããããšã«ã€ããŠã§ã¯ãããŸããã
ã«ããã®äžã§ãè¯ãç®çã®ããã«ãã®ã¡ã«ããºã ããããã«çµãåºãããšããæ¹æ³ãšãéäžã§ééããèœãšãç©Žã«ã€ããŠã®ç©èªã ãããŠãããã«ã¯è¯ãå³éžãããç³ããããŸãã
äžè¬çã«ããã®èãã¯æ°ãããã®ã§ã¯ãããŸããã ãããã°ä»¥å€ã®ç®çã§ãã®ã¡ã«ããºã ã䜿çšããå°ãªããšã3ã€ã®ããã°ã©ã ãç¥ã£ãŠããŸããããç¥ãããŠããProcess ExplorerãšProcess Hacker-æšæºã®ã¿ã¹ã¯ãããŒãžã£ãŒã眮ãæãããã®ã§ãã ããã³AkelPad-ã¡ã¢åž³ã眮ãæããŸãã ããããç§ã¯ããå°ãå ã«è¡ãããšã«ããŸããã
ã ãããç§ãã¡ã¯äœãæã£ãŠããïŒç§ãã¡ã¯ã¬ãžã¹ããªã«èªåèªèº«ãäºåç»é²ããã°ãäºåã«äžããããä»ã®ããã°ã©ã ã®ä»£ããã«ããã°ã©ã ãå®è¡ããããšãã§ããŸãã ãŸãã誰ããã©ã®ããã«ãã©ã®ãããªæš©å©ã§èµ·åãããã¯ç¹ã«éèŠã§ã¯ãããŸããã
ãã®ãããªæ©äŒã«åœ¹ç«ã€ããšã¯äœã§ããïŒ ç§ã«æåã«èµ·ãã£ãã®ã¯ããŠãŒã¶ãŒã«å°ããããšã§ãã-圌ã¯æ¬åœã«ãã®ããã»ã¹ãéå§ãããã§ããïŒ IFEOã«èªåãç»é²ããæ¹æ³ãããã«èŠã€ããã®ã§ ããŠãŒã¶ãŒã®åæãåŸãŠã®ã¿ã€ã³ã¿ãŒã»ãããããããã°ã©ã ãèµ·åãããã€ã¢ãã°ããã¯ã¹ãš[ã¯ã] / [ããã]ãã¿ã³ãåããå°ããªãŠãŒãã£ãªãã£ãäœæããŸããã æã¡äžãçŽåŸãç§ã¯èªåã®çŽ æŽãã®æ·±ããå®æããŸããã ãã¯ãããéžæãããšãã«äœãèµ·ãã£ãã®ãããã§ã«æšæž¬ããŠããŸããïŒ ãã¡ãããç§ã¯èªåèªèº«ãåã³éå§ãã確èªãæ±ããæ°ãããŠã£ã³ããŠãååŸããŸãããããã§ãç¡éã«ç¶ããããšãã§ããŸãã ååã¯æ£åžžã«æ©èœããŸããã
åé¿ã§ããªãã£ãå Žåããã®ã¡ã«ããºã ãã©ãã»ã©åœ¹ç«ã€ãã¯ããããŸããããããã¬ã¯ãããã°ãããããã»ã¹ãéå§ããå¿ èŠããããŸãã ãã®ãããã€ã¡ãŒãžãã¡ã€ã«å®è¡ãªãã·ã§ã³ã«ã¯1ã€ã®äŸå€ããããŸãã ãŸãããŠãŒã¶ãŒã¢ãŒãã§ã¯ãããã»ã¹ãéå§ããããã®2ã€ã®ã¡ãœããCreateProcessãšShellExecuteExã®ã¿ããããŸãã ãããŠæåŸã«ã2çªç®ã®ã¡ãœãããCreateProcessãåŒã³åºããŸãããããã«ã€ããŠã¯åŸã§è©³ãã説æããŸãã ãã®ãããäŸå€ã¯DEBUG_PROCESSãã©ã°ã§å§ãŸãããã»ã¹ãã€ã³ã¿ãŒã»ãããããªãããšã§ãã ããã§ãããã¬ã®åé¡ã¯è§£æ±ºããŸãããç§ã®å Žåã¯ãIFEOãå®å šã«ä¿¡é Œã§ããªãããšãæå³ããŸãã ããã«ããããããããã®ãã©ã°ã䜿çšããããã°ã©ã ïŒãã¡ãããããã¬ãŒãé€ãïŒã¯ç¥ããŸããã ãã®ãã©ã°ãä»ããŠæ¥œããããšã¯ã§ããŸãããæ©èœãããã«ã¯è¿œå ã®ã³ãŒããå¿ èŠã§ãã
IFEOã§ã®ãã¡ã€ã«ç»é²
ããã»ã¹ã¢ãã¿ãŒã䜿çšããŠCreateProcessé¢æ°ãåŒã³åºãããšãã«äœãèµ·ãããã远跡ãããšãå€ãã®èå³æ·±ãããšãèŠã€ããã§ãããã ãã¡ã€ã«åã®ãšã©ãŒä¿®æ£ïŒããã«ã€ããŠã¯åŸã§èª¬æããŸãïŒã«å ããŠãIFEOèšå®çšã®ã¬ãžã¹ããªãŒãžã®åŒã³åºãããããŸãã ããã¯ã©ã®ããã«èŠããŸããïŒ
ãã®ããŒãèŠã€ãããšã ãããã¬æååãã£ãŒã«ããå«ãç¹å®ã®ãã£ãŒã«ãã®ååšããã§ãã¯ãããŸãã ãããå¿ èŠãªãã®ã§ãã ãããã¬ãŒãžã®ãã¹ããŸãã¯ãã®å Žåã¯ãã®ãã¹ã®ä»£ããã«å®è¡ãããããã°ã©ã ãžã®ãã¹ãæ ŒçŽããŸãã
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\YourExecutable.exe] "Debugger" = "C:\Path-to-debugger\Debugger.exe"
å¶éãããããšã«æ³šæããŠãã ããïŒ
- å®è¡å¯èœãã¡ã€ã«ã®ååã®ã¿ããã§ãã¯ãããŸãã ã€ãŸãããã¹ã¯ã¯ãããŸããã * .exeåŒã³åºããååŸããŠååããããšã¯ã§ããŸããã
- åãå®è¡å¯èœãã¡ã€ã«åãæã€ãã¹ãŠã®ããã°ã©ã ã®ã¢ã¯ã·ã§ã³ã¯åãã«ãªããŸãã UseFilterããŒã䜿çšãããŸã§ã ãã®åŸãã¯ãããã«ãã¹ã«åºã¥ããŠç¹å®ã®ãããã¬ãŒãç¹å®ã®å®è¡å¯èœãã¡ã€ã«ã«å²ãåœãŠãããšãã§ããŸãã åã³-ãã¹ã¯ãªãã
IFEO \ YourExecutable.exeãã©ã³ãã§ãã£ã«ã¿ãªã³ã°ã䜿çšããã«ã¯ããŒã以å€ã®å€ã§DWORD UseFilterãã£ãŒã«ããäœæããŸãã ãã®å Žåãããã»ã¹ãäœæããããšãããšããã®ãã©ã³ãã®ãã¹ãŠã®ãµãããŒããã€ãã¹ãããåãµãããŒã§FilterFullPathæååãã£ãŒã«ãã®å€ãå®è¡å¯èœãã¡ã€ã«ãžã®ãã«ãã¹ãšæ¯èŒãããŸãã äžèŽããå Žåãã ãããã¬ãŒããã£ãŒã«ãã«ããå®è¡å¯èœãã¡ã€ã«ãèµ·åãããŸãã äžèŽãããã®ãèŠã€ãããªãå Žåãããã©ã«ãã§ãããã¬ãŒãèµ·åããŸãïŒã€ãŸãããã£ã«ã¿ãŒãªãã§äœ¿çšããããã®ïŒã
æ³šïŒ FilterFullPathãã£ãŒã«ãã®ãªããµãããŒã¯äžèŽãšããŠæ±ããããã¹ãŠã®èšå®ãããããååŸããããã£ã«ã¿ãŒããªãå Žåãããåªå ãããŸãã
æšæºã¢ã¯ã·ã§ã³ã®å²ãåœãŠ
ç§ã«ãšã£ãŠãã®ãã³ãã£ãŒã®æåã®æå³ã¯ãIFEOãç¥ã£ãã®ã§ãä»ã®ããã°ã©ã ã«å²ãåœãŠãããäžé£ã®å žåçãªã¢ã¯ã·ã§ã³ïŒå°ããªãŠãŒãã£ãªãã£ãšããŠå®è£ ïŒããŠãŒã¶ãŒã«æäŸããããã°ã©ã ãæžãããšã«ããŸããã ããã¯ç§ãèšäºãæžãããšã«æ±ºããåã§ãããããããã§ã©ãã ãå€ãã®é¢çœãããšãèšãããšãã§ããããç解ããŸããã ãããã£ãŠããããã®ãŠãŒãã£ãªãã£ãã¹ããŒãªãŒã®æ確ã§å®çšçãªäŸãšããŠäœ¿çšããŸãã ã ãããç§ã®æ³ååã§ååã§ããïŒ
- Ask.exe-èµ·åã®è©Šè¡ããŠãŒã¶ãŒã«éç¥ããèš±å¯ãæ±ããŸãã
- Deny.exe-éå§ãæåŠããŸãã åæã«ããŠãŒã¶ãŒã«éç¥ããããšãããµã€ã¬ã³ãã¢ãŒãã§å®è¡ããããšãã§ããŸãã
Windowsããã¬ã¡ããªãŒãéå§ããªãããã«ããå¿ èŠãããå Žåãéåžžã«äŸ¿å©ã§ãã - Elevate.exe-管çè ã«ã¢ããã°ã¬ãŒãããããã«åžžã«UACãèŠæ±ããŸãã
- Drop.exe-ããã»ã¹ã®ç¹æš©ãäžããŸãã ããã¯ãã åµé ã®å ã§ãã æå³ã¯ã-âãã©ã°ãæå®ããDropMyRightsããã³PsExecãŠãŒãã£ãªãã£ã«äŒŒãŠããŸã ã ããããIFEOãšã®çµã¿åããã§ã¯ãã¯ããã«å¹æçã§ãã
- PowerRequest.exe-ããã°ã©ã ãçµäºãããŸã§ãã³ã³ãã¥ãŒã¿ãŒãã¹ãªãŒãç¶æ ã«ãªãããšãç»é¢ããªãã«ããããšãé²ããŸãã
ãããã®ã¢ã¯ã·ã§ã³ãç»é²ããããã«ãã¹ã¯ãªãŒã³ã·ã§ããã«è¡šç€ºãããŠããããã°ã©ã ã®2ã€ã®ããŒãžã§ã³ãGUIãšã³ã³ãœãŒã«ãäœæãããŸããã ããã§è©±ãããšã¯äœããããŸããã ã¬ãžã¹ããªãèªã¿æžãããã ãã§ãã
ã¿ã€ãã«ããæšæž¬ã§ããããã«ãæãèå³æ·±ãã®ã¯ãå®è¡æã«ä»ã®äººã®ããã°ã©ã ãäœãå£ããã«çœ®ãæããæ¹æ³ã§ãã ããããæåã«ãããã€ãã®æãããªããããå¿ èŠãªãã®ã ã€ã³ã¿ãŒã»ãããããããã»ã¹ãéå§ããå Žåã¯ãèªåèªèº«ãèµ·åãããšããšåãæ¡ä»¶ãå¯èœãªéãåçŸããå¿ èŠããããŸãã ãããŠããã¯ïŒ
- ãŸã£ããåãSTARTUPINFOæ§é ã bInheritHandlesãã©ã°ã®èšå®ãããã³åãäœæ¥ãã£ã¬ã¯ããªã
- èµ·åãããããã»ã¹ã®å®äºãåŸ ã£ãŠãæ»ãã³ãŒããååŸãããã§ãŒã³ã«æ²¿ã£ãŠè»¢éããŸãã
- ãããŠ...å¥ã®ããªãã¯ãããã«ã€ããŠã¯å°ãåŸã§èª¬æããŸãã
ããã ãããŠãäœãèµ·åããããã©ã®ããã«ç¥ãã®ã§ããããïŒ
å¯èœæ§ãè©äŸ¡ããŸããã
以äžã¯ãããã°ã©ã A.exeã®ãããã¬ãšããŠIFEOã«èšè¿°ãããŠãããšä»®å®ããŸãã
"C:\My-Path\B.exe" /param
誰ãã-aãªãã·ã§ã³ãæå®ããŠããã»ã¹ "CïŒ\ Folder \ A.exe "ãäœæããããšãããšã B.exeããã»ã¹ã¯æ¬¡ã®ã³ãã³ãã©ã€ã³ã§äœæãããŸãã
"C:\My-Path\B.exe" /param "C:\Folder\A.exe" -a
B.exeã®ã³ãŒããèªåã§èšè¿°ããŠãããããã³ãã³ãã©ã€ã³ããã®ã³ã³ããŒãã³ãéšåã«ç°¡åã«è§£æã§ãããã®ååã®ãªã誰ããå®è¡ãããã®ãšåããã©ã¡ãŒã¿ãŒã§A.exeãå®è¡ã§ããŸãã ããã«å®å šãªèªç±ããããŸãã ä»ã®æš©éã§å®è¡ããããéä¿¡ããããã©ã¡ãŒã¿ãå€æŽã§ããŸãã
ãã®ãã¹ãŠã«èå³ãããã®ã¯ã ã¢ã«ãŠã³ãã³ã³ãããŒã«ããã®ãããªç¡æã®ã¢ããŒã«ã«ã©ã®ããã«åå¿ãããšæããŸããïŒ æ£è§£ïŒäœããããŸããã ãšã¯ã¹ãããŒã©ãŒã§A.exeãã¡ã€ã«ã§ã管çè ãšããŠå®è¡ããéžæãããšã A.exeãã¡ã€ã«ã«é¢ããæ å ±ãUACã¡ãã»ãŒãžã«è¡šç€ºããããã®ããžã¿ã«çœ²åã«ãã£ãŠãŠã£ã³ããŠã®è²ã決ãŸããŸãã ãããŠã B.exeã®ä»£ããã«B.exeãèµ·åããããšããäºå®ã¯10çªç®ã®åé¡ã§ãã ããããç¹å¥ãªã»ãã¥ãªãã£äžã®åé¡ã¯ãããŸãããIFEOãžã®æžã蟌ã¿èªäœã«ã¯ç®¡çè æš©éãå¿ èŠã§ãã ç§ãã¡ã«ãšã£ãŠãããã¯äœãä»ã®ãã®ãæå³ããŸããIFEOã§ãŠãŒãã£ãªãã£ãäœæããã®ã§ããŠãŒã¶ãŒã誀ã£ããŠãŒã¶ãŒã¢ã«ãŠã³ãå¶åŸ¡ã¡ãã»ãŒãžãšæ··åããããšã¯ãããŸããã 確ãã«ã圌ã®èŠ³ç¹ãã-ããã¯ãããã©ã®ããã«èŠãããã§ãã
ããã»ã¹ã®éåžžã®éå§æ¹æ³
Windows Vistaã§ã®ãŠãŒã¶ãŒã³ã³ãããŒã«ã®å°å ¥ã«ãããããã»ã¹ã®éå§ã¯ããå°é£ã«ãªããŸããã å®éãããã€ãã®ããã°ã©ã ãå®è¡ããããã«ãæš©éã®äžè¶³ã«ããCreateProcessã®åŒã³åºãã倱æããå ŽåããããŸãã ãã®å Žåã GetLastErrorã¯ERROR_ELEVATION_REQUIREDãè¿ããŸãã ãã®ãããªå ŽåãWindowsã«ã¯äºææ§ã®åé¡ã«å¯Ÿããç¹å¥ãªä¿®æ£ãçµã¿èŸŒãŸããŠããŸãããäœãä¿®æ£ãããŠããªãããšã«æ°ã¥ããŸããã§ããã ææ°ã®ããã°ã©ã ã¯ããã®ãšã©ãŒã«å¿ããŠããrunasãã¢ã¯ã·ã§ã³ãæå®ããŠShellExecuteExãåŒã³åºããç¹æš©ã®ææ ŒãèŠæ±ããå¿ èŠããããŸãã ã€ãŸããå žåçãªããã»ã¹äœæã³ãŒãã¯æ¬¡ã®ããã«ãªããŸãã
if not CreateProcess(âŠ) then else if GetLastError = ERROR_ELEVATION_REQUIRED then ShellExecuteEx(âŠ) // "runas" else //
ãŠãŒãã£ãªãã£ã¯åžžã«æ©èœãããããææ Œããç¹æš©ãå®è¡ããå¿ èŠã¯ãããŸãããã€ãŸãã A.exeãéå§ããããšããããã»ã¹ïŒããã³ä»£ããã«B.exeãéå§ããããã»ã¹ïŒãERROR_ELEVATION_REQUIREDãåãåãããšã¯ãããŸããã 倧äžå€«ã倧äžå€«ãç§ãã¡ã¯å¿ èŠã«å¿ããŠåœŒã®æš©å©ã®å¢å ãèŠæ±ããããšãã§ããŸãã ãããäœãèµ·ãã£ãã®ãæ³åããŠã¿ãŠãã ããã 誰ããA.exeãèµ·åãã代ããã«èµ·åããŸãããA.exeã¯ç¹æš©ãèŠæ±ããŠãããããCreateProcessã§å®è¡ã§ãããShellExecuteExã䜿çšããå¿ èŠããããŸãã ãã§ã«æšæž¬ïŒ ShellExecuteExã¯åžžã« IFEOã«ãã£ãŠã€ã³ã¿ãŒã»ãããããŸããä¿åã§ããDEBUG_PROCESSãã©ã°ã¯ãããŸããã ãã®çµæãç§ãã¡ã¯åã³ç«ã¡äžããŸãã 確ãã«ãä»åã¯CreateProcessã䜿çšããŠA.exeãå®è¡ããã®ã«ååãªç¹æš©ãæ¢ã«ãããŸãã ãããŠããããã¯ãã¹ãŠãUACããç®ã«èŠããããŒã¯ãªãã§ïŒ è³ãå£ãããšãã§ããŸãããïŒ ç§èªèº«ã¯ããèªåã®è¡åãã»ãŒå æ¬çã«ååããããšããæŠå¿µã«å®å šã«ã¯æ £ããŠããŸããã
ãã®ããã Elevate.exeãŠãŒãã£ãªãã£ã§ã¯ShellExecuteEx'omã ããå®è¡ããããšã¯ã§ããŸãããIFEOãåé¿ããããšã¯ã§ããŸããã Ask.exeã®å Žåãããã¯å¥ã®åé¡ãè¿œå ããŸãã ããã§ãŠãŒã¶ãŒã«å°ãããšã圌ã¯ããŒã³ãã確èªããŸããã ãããŠãShellExecuteExãšIFEOãçµã¿åãããŠãåã³ç«ã¡äžããŸããã ãªã«ããŸãå°ããïŒ äºæ¬¡åé¡ã®æå¶ãè¿œå ããå¿ èŠããããŸããã ããããããã¯åã«ç¹å¥ãªãã©ã¡ãŒã¿ãŒãè¿œå ããã ãã§ã¯å®è¡ã§ããŸãããè¿œå ããå Žæã¯ã©ãã§ãA.exeãå®è¡ãããããç¬èªã®ãã©ã¡ãŒã¿ãŒãšåºå¥ã§ããŸããã ããããã¹ãŠã®å°é£ãäºåã«äºæž¬ããããšããããšã¯ãéåžžã«è¯ãå¿ã®ç·Žç¿ã§ãã
CreateProcessãšShellExecuteExã®éã
CreateProcessã®ããã¥ã¡ã³ããèªã¿ãŸãããïŒ å€ãã®äººã ãèŠéããŠãã1ã€ã®ãã€ã³ãããããæœåšçã«åœŒãã®ã¢ããªã±ãŒã·ã§ã³ã®ã»ãã¥ãªãã£ã«äœããã®è匱æ§ãäœãåºããŠããŸãã åãããšããCreateProcessã®ã©ãããŒã§ããåŸæ¥ã®WinExecé¢æ°ã«ãåœãŠã¯ãŸããŸãã é¢æ°ã®æåã®2ã€ã®ãã©ã¡ãŒã¿ãŒã¯ãèµ·åãããåŒæ°ãšåŒæ°ã決å®ããŸãã ãããã¯lpApplicationNameãšlpCommandLineã§ãã 以äžã¯ãMSDNã®ããã¹ãã®ç¿»èš³ã§ãã
LpApplicationNameã¯NULLã®å ŽåããããŸã ã 次ã«ãå®è¡å¯èœãã¡ã€ã«ã®ååã¯ã lpCommandLineã®æåã®ã¹ããŒã¹ã§åºåãããéšåæååã«ããå¿ èŠããããŸãã ã¹ããŒã¹ãå«ãå¯èœæ§ã®ããé·ããã¡ã€ã«åã䜿çšããå Žåã¯ãåŒçšç¬Šã䜿çšããŠããã¡ã€ã«åã®çµãããšåŒæ°ã®å§ãŸãã瀺ããŸãã ãã以å€ã®å Žåããã¡ã€ã«åã¯ãããŸãã§ãã
ãªã人ã ã¯åŒçšç¬Šãä»ããã®ãå¿ãç¶ããã®ã§ããïŒ ãããã©ã®ããã«æ©èœããã®ã-CreateProcessã«ã¯çµã¿èŸŒã¿ã®ãšã©ãŒä¿®æ£ã¡ã«ããºã ããããŸãã lpApplicationNameãNULLã«èšå®ãããã®å®è¡å¯èœãã¡ã€ã«ã®ååãlpCommandLineã«æž¡ããŠããã°ã©ã ã®å®è¡ãè©Šã¿ãŸãïŒ CïŒ\ Program Files \ Sub Dir \ Program Name ã CreateProcessã¯äœãããŸããïŒ å®è¡ã§ãããã®ãèŠã€ãããŸã§è¡ãæ€çŽ¢ãããã¡ã€ã«æ¡åŒµåã眮ãæããŸãã
CïŒ\ Program Files \ Sub Dir \ Program Name
CïŒ\ Program.exe Files \ Sub Dir \ Program Name
CïŒ\ Program Files \ Sub Dir \ Program Name
CïŒ\ Program Files \ Sub.exe Dir \ Program Name
CïŒ\ Program Files \ Sub Dir \ Program Name
CïŒ\ Program Files \ Sub Dir \ Program.exeå
CïŒ\ Program Files \ Sub Dir \ Program Name
è©ŠããŠã¿ããå Žåã¯ãã³ã³ãã¥ãŒã¿ãŒã«ãã¡ã€ã«CïŒ\ Program.exeãäœæããããã°ã©ã ã®ãããããããã«å ¥ããã©ããã確èªããŸãã ãã®ããã»ã¹ããã«ãŒïŒä¿®æ£ããã°ã©ã ã¯æ¢ã«ãã€ããªãŒãã«ãã«å«ãŸããŠããŸãïŒãPunto SwitcherïŒç§ããããã«æžã蟌ãå¿ èŠããããŸãïŒãããã³Far Managerã®ãã©ã°ã€ã³ã®1ã€ãèŠã€ããŸããã ãšããã§ãWindows Explorerã¯ãã®åé¡ã«ã€ããŠãç¥ã£ãŠããŸãã
質åã«æ»ãïŒããã¯ç§ãã¡ã«ãšã£ãŠäœãæå³ããã®ã§ããããïŒ IFEOããæ£ç¢ºã«lpCommandLineãååŸããŸã ã ã¯ããCreateProcessã«æž¡ãããšãã§ããŸã-ãã®ãããªåé¡ãçºçããå Žåã¯ããã®ãŸãŸæ®ããŸããããã§ã¯ç¡åã§ãã ãã ããShellExecuteExã«è»¢éããå¿ èŠãããå ŽåããããŸããããã®ãããªãšã©ãŒä¿®æ£ã¯ãããŸããã lpFileãšlpParametersãå¥ã ã«ãããŸãã æååãã¹ããŒã¹ã§èªåã§è§£æããCreateProcessãšåãæ¹æ³ã§æåã®æ¢åã®å®è¡å¯èœãã¡ã€ã«ã®ååãæ¢ãå¿ èŠããããŸãã çŽ æŽãããã
ãããŠä»ãç§ãã¡ã¯å°ãæ°ãåãããä»ã®èå³æ·±ãããšã«ã€ããŠè©±ããŸãã ãŠãŒãã£ãªãã£ã®1ã€ãã©ã®ããã«æ©èœãããã«ã€ããŠèª¬æããŸãã
äœãç¹æš©
ãå¿ èŠãªæå°éã®æš©éã§ããã°ã©ã ãå®è¡ããããšããååã¯ãããããããã§èª°ããç¥ã£ãŠããããšã§ãããã ããããããªãã奜ããªããã°ã©ã ã®äœè ããã®ååã«ã€ããŠèããŠããªãå Žåã®å¯ŸåŠæ¹æ³ã¯æ¬¡ã®ãšããã§ãã質åã¯ãã§ã«è€éã§ãã ãã®ãããªç¶æ³ã§ã¯ãäºææ§ã®åé¡ã解決ããã¡ã«ããºã ãä¿åãããå ŽåããããŸãã
SetEnvironmentVariable('__COMPAT_LAYER', 'RunAsInvoker');
ããã«ãããCreateProcessãããã°ã©ã ãéå§ã§ãããERROR_ELEVATION_REQUIREDãè¿ãåæ°ãèããæžå°ããŸãã ããããããã¯åžžã«æ©èœãããšã¯éããŸããã ããšãã°ã * .sdb ãããã¯ãã®æ¹æ³ãããåªå ãããŸã ã
ElevatedããŒã¯ã³ã䜿çšããŠïŒã€ãŸãã管çè ã«ä»£ãã£ãŠïŒããã»ã¹ãéå§ã§ããç¹å¥ãªãŠãŒãã£ãªãã£ããããŸãããåæã«ãã¹ãŠã®é¢é£ããç¹æš©ãåé€ããŸãã ããã¯ãMicrosoftã®Michael Howardã«ãã£ãŠäœæãããDropMyRightsãšã-âã¹ã€ããã§èµ·åãããæåãªMicrosoft Sysinternalsã¹ã€ãŒãã®PsExecã§ãã å¥åŠãªããšã«ããããã®ãŠãŒãã£ãªãã£ã¯ããŸããŸãªæ¹æ³ã§åŠçãè¡ããŸãã
DropMyRightsã§äœ¿çšãããæ¹æ³ãããæ°ã«å ¥ã£ãã ã¯ãã圌ã®ãœãŒã¹ã³ãŒãã¯å ¬éãããŠããŸãã ããã§ã¯Windows Safer APIã䜿çšãããŸããããã«ãããæåéãæ°è¡ã®ã³ãŒãã§ãåãæšãŠãããç¹æš©ãæã€ããŒã¯ã³ãèšç®ã§ããŸããããã¯CreateProcessAsUserã§ããã«äœ¿çšã§ããŸãã ãããç§ã¯ãã¹ãŠã®ã€ã³ã¹ããŒã©ãŒäœæè ã«ããããã©ãã»ã©ç°¡åããç¥ã£ãŠããããã€ã³ã¹ããŒã«ã®æåŸã«æ倧ã®èš±å¯ã§ããã°ã©ã ãå®è¡ããªãããã«ããã...
次ã«ããããã®äž¡æ¹ã®ã¢ãããŒããçµã¿åãããŠãIFEOãšçµã¿åãããŸãã ãã®çµæãèªåçã«æš©å©ãäœäžãããŠãŒã¶ãŒã¢ã«ãŠã³ãå¶åŸ¡ã®èŠæ±ãæå°éã«æããããŸãã ããªãã®ããšã¯ç¥ããŸããããæ¬åœã«å¥œãã§ãã ãããŠãShellExecuteExãåŒã³åºãããšã«ããæš©å©ã®ææ Œã¯åžžã«ååããããããç§ãç解ããããã«ãç§ãã¡ã®ãŠãŒãã£ãªãã£ã®åœ±é¿äžã«ããããã°ã©ã ã¯ããŠãŒã¶ãŒãå¶éä»ãã®ã ããããæ¬åœã«æ·±å»ãªå Žåã«ã¯ãSandboxieã®ãããªãµã³ãããã¯ã¹ã䜿çšããŠãã ããã ãŸãã¯ãä»®æ³ãã·ã³ã
IFEOãã€ãã¹
ã¡ã€ã³ãããã¯ã«æ»ããŸãããã DEBUG_PROCESSãã©ã°ã䜿çšããŠããã»ã¹ãéå§ãããšåãã§ãèªåã®ã¬ãŒãã«èœã¡ãããšã¯ãªããšèšã£ãŠããã¹ãŠãèšã£ãŠããŸãã ãããããã¹ãŠãæ©èœããããã«ã¯ãä»ã«äœããããå¿ èŠããããŸãã ãã®ãã©ã°ã䜿çšããŠããããã°äžã«ããã»ã¹ãéå§ããŸããã€ãŸãããããã°ã€ãã³ããåãåããŸãã ããããåŠçãããªãå Žåãããã»ã¹ã¯åããªããŸãŸã«ãªããŸãã ããããåŠçããã«ã¯ã WaitForDebugEventãšContinueDebugEventã® 2ã€ã®é¢æ°ã®ã¿ãå¿ èŠã§ãã
ãã ãããã¹ãŠã®ããã°ã©ã ããããã¬ã«æ£åžžã«é¢é£ããŠããããã§ã¯ãããŸãããïŒ ãŠã€ã«ã¹ã®ããã«æ確ã«äŸå€ãäœæããããã§ã¯ãããŸãããããããã¬ãŒãåæããæ¹ãè¯ãã§ãããã ãããã¬ãæžãããã«ããã«ããããã§ã¯ãããŸããã ãããŠãããã§ãæå€ãªããšã«ãè€éããçããŸãããã®ã¢ã¯ã·ã§ã³ã¯ãããããææžåãããŠããªãæ©èœãæããŸããMSDNã§èŠã€ããããªãã£ãããã§ãã ãããã£ãŠãProcess Hackerã®ããã¥ã¡ã³ãã䜿çšããŸãã ãããã£ãŠã ntdll.dllã®NtRemoveProcessDebugé¢æ°ãå¿ èŠã§ã ã 圌女ã¯DebugObjectHandleãå¿ èŠãšããŸã ãããã¯NtQueryInformationProcessã䜿çšããŠååŸã§ãã ProcessDebugClassãšããŠProcessDebugObjectHandle = 30ãèŠæ±ããŸãã 以äžã§ãã ãã ã...ä»ã®äººã®ããã»ã¹ã§ã¯ãããè¡ããªãæ¹ãè¯ãã§ãããã圌ãã®ãããã¬ãŒã¯çŸæç¹ã§ãããã°ã€ãã³ããåŸ ã€ããšãã§ãã圌ãèªèº«ã§kill-on-closeãæå¹ã«ããããšãã§ããŸãã
UPDã
ç§ã¯ééã£ãŠããã®ã§ãããè€éãªæ¹æ³ã§è¡ã£ãã ããã«ã¯ææžåãããé¢æ°ããããããã¯DebugActiveProcessStopã§ãã äžç·ã«DebugSetProcessKillOnExitã䜿çšããããšããå§ãããŸãã
ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã®å®¹éã«é¢é£ããæ©èœãããããšã«æ³šæããŠãã ããã32ãããããã»ã¹ã¯ãDEBUG_PROCESSãã©ã°ã䜿çšããŠ64ãããããã»ã¹ãéå§ã§ããŸããã ãããã64ãããã¯èª°ã§ãå®è¡ã§ããŸãã
ããããŸã èŠããŠããŸããïŒ äžèšã§ã¯ãã€ã³ã¿ãŒã»ãããããããã»ã¹ã®åŸç¶ã®èµ·åãšã®äºææ§ããããã«åäžãããå¥ã®ããªãã¯ã«ã€ããŠèª¬æããããšãçŽæããŸããã
ã¢ã«ãŠã³ãå¶åŸ¡ããžãã¯
ã¢ã«ãŠã³ãå¶åŸ¡ã¯äœãèµ·ãã£ãŠãããã«ãŸã£ããåå¿ããªãããšã¯æ¢ã«è¿°ã¹ãŸããã ãããŠãããªãïŒããšãã質åãããå Žåãééããªãããã«ããŸãã
UACã¯ã©ã®ããã«æ©èœããç¹æš©ãšã¹ã«ã¬ãŒã·ã§ã³ã¯ã©ã®ããã«æ©èœããŸããïŒ ãã®è³ªåã«å¯Ÿããé©åãªåçã¯ã Vista UACïŒThe Definitive Guideã«èšèŒãããŠããŸãã èŠããã«ãShellExecuteExã¯ãCOMåŒã³åºãã®ãžã£ã³ã°ã«ãéãæããŠãAppInfoãµãŒãã¹ã«ã¢ã¯ã»ã¹ããŸãã 圌ã¯ããã»ã¹acknowledge.exeãäœæããŸãããã®ããã»ã¹ã¯ãèµ·åã確èªããèŠæ±ãšãšãã«ãã®ãŠã£ã³ããŠã衚瀺ããå¿ èŠã«å¿ããŠãã¹ã¯ãŒããå ¥åããŸãã ããã»ã¹ã®ãŸãã«äœæã¯ãåœç¶ããã®ãã¹ãŠã®åŸã«çºçããŸãã ãããŠãæãæ®éã®CreateProcessAsUserãããã§äœ¿çšãããŸãã ãã®æ®µéã§IFEOãããªã¬ãŒãããããã»ã¹ã®äœæãã€ã³ã¿ãŒã»ããããŠéå§ããŸãã ããããã¢ã«ãŠã³ãå¶åŸ¡ãããã«ã€ããŠäœãç¥ããªãçç±ã§ãã
æãç¬åµçãªäººã¯ãã§ã«è³ªåãããŠããã¯ãã§ãïŒããã»ã¹ãä»ã®èª°ãã«ãã£ãŠäœæãããå Žåãã©ã®ããã«ããŠãªã¯ãšã¹ãã®èŠªããªã¯ãšã¹ãã®ã€ãã·ãšãŒã¿ãŒã§ããããšãããããŸããïŒ
Windows Vista以éã®CreateProcessã§ã¯ã STARTUPINFOã®ä»£ããã«STARTUPINFOEXãã¹ãªããã§ããŸãïŒ EXTENDED_STARTUPINFO_PRESENTãã©ã°ã䜿çšããå ŽåïŒã ãã¹ãŠã®åãæ å ±+ lpAttributeListãšããã»ã¹å±æ§ã®ãªã¹ããå«ãŸããŠããŸãã ãã®å±æ§ã®ãªã¹ãã¯ã InitializeProcThreadAttributeListãåŒã³åºããŠäœæãã UpdateProcThreadAttributeã䜿çšããŠæŽæ°ããå¿ èŠããããŸãã PROC_THREAD_ATTRIBUTE_PARENT_PROCESSãã©ã°ãæå®ããç®çã®ããã»ã¹ãžã®ãã³ãã«ãæäŸããããšã«ããã芪ããã»ã¹ãå€æŽã§ããŸãã ããã§èŠããŠãã䟡å€ããããã®ïŒ
- æ°ãã芪ãäœæããããã»ã¹ã®ãã³ãã«ã¯ã PROCESS_CREATE_PROCESSç¹æš©ãæã¡ ã DeleteProcThreadAttributeListã®åŒã³åºãã«å¯Ÿå¿ããå¿ èŠããããŸãã
- ãã¹ããããSTARTUPINFOã®cbãã£ãŒã«ãã®å€ãSizeOfïŒSTARTUPINFOEXïŒã«èšå®ããå¿ èŠããããŸãã
CïŒã®æ¢è£œã®äŸã¯StackOverflowã«ãããŸãã
ããšãã°ãã³ã³ãã¥ãŒã¿ãŒäžã®äžå¯©ãªã¢ã¯ãã£ããã£ãåæããå Žåã誰ãã©ã®ããã»ã¹ãéå§ããã®ã§ããïŒ ãããä»ããªãã¯çµ¶å¯Ÿã«ããããã€ããã¯ãªãã
ããã€ãã®èå³æ·±ãæ©èœããããŸãã ãã挫ç»ã®éã³å¿ã®ãããã¬ãŒãºãæãåºããŸãããããã¯æ¬¡ã®ããã«èãããŸãããã ãããçãŸãããšãã§ãã䞡芪ã¯èª°ãããªãã£ã...ã å¥åŠãªããšã«ãããã§ãåæ§ã®ããšãå¯èœã§ãã OpenProcess 'aã®åŒã³åºããšããã»ã¹èªäœã®äœæã®éã«ãå²ãåœãŠããã芪ãå®äºããå Žå-ããã¯éèŠã§ã¯ãããŸããã åããã»ã¹ã¯ãå®äºåŸã«èŠªã«ãã£ãŠããããããäœæãããã ãã§ãã ãªãã ã
ãã¹ãŠããŸããããŸããããã®ããªãã¯ã¯ShellExecuteExã§ã¯æ©èœããŸããããã¹ãŠãåçŽã§ããåŒã³åºããã®ã¯èŠªã§ãã ãã ããIFEOããªã³ã«ãªã£ãŠãããããæåŸã®åèªã¯åžžã«CreateProcessã«æ®ããŸããããããªããšãååããæãåºãããšã¯ã§ããŸããã ãã®ãããäžé£ã®ããã»ã¹ãæ©ããŠãããšããã®ãã¹ãŠãæåã«éå§ãã人ãèŠã€ããŠã圌ã芪ãšããŠä»»åœããããšãã§ããŸãã ãããããããã»ã¹ãšã¯ã¹ãããŒã©ãŒãšããã»ã¹ããã«ãŒã§ã¯çµæãããã»ã©çŸããèŠããªããããããŸããããä»ã®èª°ãã®ããã»ã¹ã®èŠ³ç¹ããèŠããšããã¹ãŠãæŽç¶ãšããŠããŸãã ãŸãããããããèµ·åæã«ç»å Žããã€ã³ã¿ãŒã»ãããããããã»ã¹ã®ãªã¿ãŒã³ã³ãŒããæåŸ ãããäžæ£ãªãåäŸãé€ããŸãã äœãããå¿ èŠã¯ãããŸããã
ãã®å³ã¯ã Ask.exeã¢ã¯ã·ã§ã³ãå²ãåœãŠãããŠããFar.exeããnsx.exeãå®è¡ããæ¹æ³ã®å³ã瀺ããŠãããå®è¡ã«ã¯ææ Œããç¹æš©ãå¿ èŠã§ãã
æ£çŽã«èšããšã芪ããã»ã¹ã眮ãæãããšããã¢ã€ãã¢ã¯ãããäžã€ã®çŽ æŽããããã£ã³ã¹ã ãšæã£ãã ãããã圌女ã¯ããã€ãã®åé¡ãä¿®æ£ããŸããã ãã®ãããåãFar Managerã2çªç®ã®ããã»ã¹ãäœæããŠãããç¹æš©ã®ããã¢ã¯ã·ã§ã³ãå®è¡ã§ããŸããã€ã³ã¿ãŒã»ãããããå Žåããã®æ©èœã¯æ©èœããªããªããŸãã 芪ã®çœ®æã¯åã³ãããä¿®æ£ããŸããã
ããŠã¯ãããªãããš
é·ãéãç§ã¯èªåã®ã³ã³ãã¥ãŒã¿ãŒã§ããããã§ãã¯ããããšãæ¢ããŠããŸããã§ãããä»®æ³ãã·ã³ãå±éããã®ãé¢åã ã£ãããã§ãã 幞ããªããšã«ã倧äžå€«ã§ãã ããããããããç§ã¯æ éã«ãªãããããããããŠãµã€ã¯ã«A â B â Aãäœæããããšãããš...ãã®ãããªç§ã®ã³ã³ãã¥ãŒã¿ãŒäžã®ä»®èª¬ããã§ãã¯ããŸããã§ããã ãŸããéèŠãªã·ã¹ãã ããã»ã¹ã®ååã確ç«ããããšãã䟡å€ã¯ãªããšæããŸãïŒã¢ã¯ã·ã§ã³ã®ç¢ºèªãšãšãã«ç»é²ãŠãŒãã£ãªãã£ã«ãªã¹ããçµã¿èŸŒã¿ãŸããïŒã ããããç§ã¯äœãèµ·ããã®ãèå³ããããŸãã SYSTEMã«ä»£ãã£ãŠéå§ãããã¹ãŠãååãããŸããã ãã®ããããã®ãããªå Žåã«UI0DetectãµãŒãã¹ã«äŸåããªãããã«ããŒãã»ãã·ã§ã³ã§ãã¹ãŠã®ãã€ã¢ãã°ããã¯ã¹ã®æå¶ãè¿œå ããŸããã
æåŸã«ãåãã¿ã€ãã®å€ãã®ããã»ã¹ãäœæããããã°ã©ã ã«ã¢ã¯ã·ã§ã³ãè¿œå ããããšã¯ãå§ãããŸããã 1ã€ã®ããš-ããã€ãã®è¿œå ããã»ã¹ããã1ã€-倧矀ã , . , . , : chrome.exe . : . .
Windows . Native (), Windows CUI ( ), Windows GUI ( ). â , . â : ? , , â . , GUI : svchost.exe , Windows GUI.
. , , . , . ? ãããããªãã , Application Compatibility Toolkit -, , , , « ». , . , . , : , - , , . , . , Delphi â , : 02 03 0x15C.
ãããã«
, « 1001 Windows» . , Delphi, WinApi, , , .
. Windows 7 , Windows Vista â . â .
P. S. , - â , , . ããããšã