åã®èšäºã§ ãWindowsãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ãã¡ããªã®æšæºã®cmd.exeã³ãã³ãã©ã€ã³ã€ã³ã¿ãŒããªã¿ãŒã«å«ãŸããCDã³ãã³ãã«ã/ DãããŒãæå®ããå¿ èŠãããç¶æ³ã®è§£æ±ºçã«ã€ããŠèª¬æããŸããã ç¹å¥ãªçç±ããªã倪å€ã®æããç¶ããŠããããã«å¥ã®è¡åã«ã€ããŠè©±ãæãæ¥ãŸããã
ä»åã¯ãã¹è£å®ã«ã€ããŠèª¬æããŸããããã¯ãã»ãšãã©ã®ç°å¢ãšãœãããŠã§ã¢è£œåïŒãã®å Žåãcmd.exeãäŸå€ã§ã¯ãããŸããïŒã§Tab / Shift-TabãæŒãããšã§è¡ãããŸãã ãã®æ©èœãéåžžã«æçšã§ãå€ãã®å Žåãç®çã®ãã¡ã€ã«ãŸãã¯ãã£ã¬ã¯ããªã®ãŠãŒã¶ãŒãžã®ãã«ãã¹ãæåã§å ¥åããã®ã«è²»ããããŠããæéãç¯çŽã§ãããšäž»åŒµãã人ã¯ããªããšæããŸãã ãã ããcmd.exeã«ãååšããã®ã¯çŽ æŽãããããšã§ãã...
è©ŠããŸãããã cmd.exeïŒWin-R-> cmdïŒãå®è¡ããã³ãã³ããCD CïŒ/ãã®å ¥åãéå§ããTabãæŒããŸãããProgram FilesãããWindowsããªã©ã®äºæ³ããããã£ã¬ã¯ããªã®ä»£ããã«ãïŒ HOMEPATHïŒ ããæåã®ã¢ã«ãã¡ããããªããžã§ã¯ããååŸããŸãã ãäžç·ã«ç«ã¡åŸçããšãCïŒ/ãïŒç§ã®å ŽåããCïŒ/ãVimãã®åœ¢åŒã§çµæãåºããŸããïŒã ãªãã§ïŒ æ¬è³ªçã«cmd.exeãé »ç¹ã«åŠçããªããã°ãªããªãã£ã人ãã¡ã¯ãããã§åé¡ãäœã§ããããæ¢ã«ç解ããŠãããšæããŸã-ã¹ã©ãã·ã¥ã®ä»£ããã«ãããã¯ã¹ã©ãã·ã¥ãæ£ããèªåè£å®ã«äœ¿çšããå¿ èŠããããŸãïŒãšããã§ããã®ç¹ã«ã¯ä»ã®äŸå€ããããŸãïŒã ããã¯ãããã¯ã¹ã©ãã·ã¥ã§ã¯ãªãã¹ã©ãã·ã¥ã ãããã¹åºåãæåãšããŠäœ¿çšãããä»ã®ã·ã¹ãã ïŒ* nixã®ãããªïŒã§ã»ãšãã©ã®æéãéãã人ã«ãšã£ãŠã¯ç¹ã«çããããšã§ãã ãã€ã¯ããœãããåœæå€ãã®ãŠãŒã¶ãŒã«æ¢ã«éŠŽæã¿ã®ã¹ã©ãã·ã¥ã®ä»£ããã«ãã®ç¹å®ã®èšå·ã䜿çšããããšã決ããçç±ã¯ãããšãã°ããã§èª¬æãããŠããŸã ã ããŠãããã«åæãããããããã¬
ããã»ã¹ãã©ã®ããã«é²ã¿ãã©ã®ããã«ãªã£ãã®ããã«ããã®äžã§èªãã§ãã ããïŒæ éã«ã å€ãã®ã¹ã¯ãªãŒã³ã·ã§ãã ïŒã
ãŸããcmd.exeãçªç¶ãŠãŒã¶ãŒæå®ã®ãã£ã¬ã¯ããªã§ã¯ãªããïŒ HOMEPATHïŒ ã®ãªããžã§ã¯ããæ€çŽ¢ããããšã«ããçç±ã確èªããå¿ èŠããããŸãã
WinAPIã䜿çšãããã£ã¬ã¯ããªå ã®ãªããžã§ã¯ãã®å埩åŠçã¯ãéåžžã FindFirstFile é¢æ°ãšFindNextFileé¢æ° ãããã³FindFirstFileEx ã FindFirstFileTransactedãªã©ã®åœ¢åŒã®ããªãšãŒã·ã§ã³ã䜿çšããŠè¡ãããŸãã OllyDbgãèµ·åãã ããã« cmd.exeãããŒããïŒãã¡ããã以åã« "ïŒ WINDIRïŒ \ system32"以å€ã®ãã£ã¬ã¯ããªã«ã³ããŒããŸããïŒãçžäºã¢ãžã¥ã©ãŒåŒã³åºãã®ãªã¹ãã§ãŠã£ã³ããŠãéããŸãïŒCPUãŠã£ã³ããŠãå³ã¯ãªãã¯->ãã¹ãŠã®çžäºã¢ãžã¥ã©ãŒåŒã³åºãïŒ ïŒããFindFirstFileããšèšè¿°ããF2ããŒã䜿çšããŠãã¹ãŠã®åŒã³åºãã«ãã¬ãŒã¯ãèšå®ããŸãã
調ã¹ãŠããã³ãã³ããCD CïŒ/ããå ¥åããTabããŒãæŒããšãç®ã®åã«æ¬¡ã®ç»åã衚瀺ãããŸãã
FindFirstFileExé¢æ°ã«æž¡ãããæåã®åŒæ°ã«æ³šæããŠãã ãã-ããã¥ã¡ã³ãã«ãããšãæ€çŽ¢ãå®è¡ããåºæºãèšå®ããã®ã¯åœŒã§ãã
lpFileName [å ¥å]
ãã£ã¬ã¯ããªãŸãã¯ãã¹ãããã³ãã¡ã€ã«åãã¯ã€ã«ãã«ãŒãæåãå«ããããšãã§ããŸããããšãã°ãã¢ã¹ã¿ãªã¹ã¯ïŒ*ïŒãŸãã¯çå笊ïŒïŒïŒ
ç§ã®å Žåã圌ã¯ãŠãã³ãŒãæååãCïŒ\ Program Files \ *ããæ ŒçŽãããŠããã¢ãã¬ã¹0x0030F660ãæããŠããŸãã ãªã圌女ãªã®ãïŒ ã¯ããCDã³ãã³ããå ¥åããæç¹ã§ããã«ããããã§ãã
ã¹ã©ãã·ã¥ã®ä»£ããã«ããã¯ã¹ã©ãã·ã¥ã䜿çšããŠåãããšãããŸãããã F9ãæŒããŠãã³ãã³ããCD CïŒ\ãã«ç¶ããŠTabãå ¥åãã以äžãåç §ããŸã
ã¯ããçŸåšããã®åŒæ°ã¯æååãCïŒ\ *ããæããŠããŸãã ãããã£ãŠããã¹ã»ãã¬ãŒã¿ãŒãšããŠã¹ã©ãã·ã¥ã䜿çšããå Žåãcmd.exeã¯çŸåšã®ãã£ã¬ã¯ããªã®èªåè£å®ã«é©ãããªããžã§ã¯ããå®è¡ããŸãã
Alt-KããŒãæŒããšéãã³ãŒã«ã¹ã¿ãã¯ããããã¹ãŠã®ããã·ãŒãžã£ã®ã³ãŒã«ãå®è¡ããŸããããããã®ããã·ãŒãžã£ã®è¿ãã«ãããŠãŒã¶ãŒããéä¿¡ãããã³ãã³ãã®è§£æã«äŒŒããã®ã衚瀺ãããŸãã
ãã®æé ã®æåã«ãã¬ãŒã¯ã眮ãïŒç§ã®å Žåã¯0x4ACE1877 ïŒãF9ãæŒããããã¯ã¹ã©ãã·ã¥ãšTabã䜿çšããŠã³ãã³ããå ¥åããã¹ããããã€ã¹ãããã®ãããã°ãéå§ããŸãã F7ãæŒããŠéããªãããŠãŒã¶ãŒãå ¥åããã³ãã³ãã®ãã¹ãŠã®æåãå®è¡ãããµã€ã¯ã«ã«ããããšã«æ°ä»ããŸãã
EBP + 8ã¯ã³ãã³ãã§Unicodeæååãæãã EBP + 10ã¯ã³ãã³ãã®é·ããå«ã¿ã EDIã¯ã«ãŒãã«ãŠã³ã¿ãŒã§ãã
ãã®ãµã€ã¯ã«ã®ã»ãŒçŽåŸã«ã std :: memcpyé¢æ°ã®åŒã³åºããèŠã€ãããŸããããã®çµæãããã¯ã¹ã©ãã·ã¥ã䜿çšãããšãdestã¯ãCïŒ\ããååŸããŸãã
ãããã³ã¹ã©ãã·ã¥ã®å Žåã空ã®è¡ïŒ
ããŠããã®äœæ¥ã®ã¢ã«ãŽãªãºã ãé«ã¬ãã«ã®ããã°ã©ãã³ã°èšèªã«å€æããããšã«ããããã®ãµã€ã¯ã«ã§äœãèµ·ããããç解ããŠã¿ãŸãããã IDA Proã¯ã³ãŒããéã³ã³ãã€ã«ã§ããŸãããæ®å¿µãªããããªãã®ãéãèŠæ±ããã®ã§ãèªåã§C ++ã«ç¿»èš³ããŠã¿ãŸãããã
#include <cstddef> #include <cstring> #include <cwchar> #include <iostream> #include <string> int main() { std::wstring command; std::getline(std::wcin, command); auto command_size = command.size(); int ebx = -1; int esi = 0; int edx = 0; const int ebp_24 = 0; // Always 0 in our case cause it changes in the '"' branch // Not actually used in our case int ebp_1c = 0; int ebp_28 = 0; int ebp_2c = 0; /** * 4ACE18C7 | > / 897D D0 / MOV DWORD PTR SS : [EBP - 30], EDI * 4ACE18CA | . | 8B45 10 | MOV EAX, DWORD PTR SS : [EBP + 10] * 4ACE18CD | . | 3BF8 | CMP EDI, EAX * 4ACE18CF | . | 0F8D 90000000 | JGE cmd.4ACE1965 */ for (std::wstring::size_type i = 0; i < command_size; ++i) { /** * 4ACE18D5 | . 8B45 08 | MOV EAX, DWORD PTR SS : [EBP + 8] * 4ACE18D8 | . 0FB70478 | MOVZX EAX, WORD PTR DS : [EAX + EDI * 2] */ const wchar_t cur_symbol = command[i]; // 4ACE18DC | . 66:83F8 2F | CMP AX, 2F if (cur_symbol == L'/') { /** * 4ACE18E2 | . 8D77 01 | LEA ESI, DWORD PTR DS : [EDI + 1] * 4ACE18E5 | . 8975 D8 | MOV DWORD PTR SS : [EBP - 28], ESI */ esi = i + 1; ebp_28 = esi; } else if (cur_symbol == L'"') { // ... } // 4ACE18F0 | . 3955 DC | CMP DWORD PTR SS : [EBP - 24], EDX if (ebp_24 == edx) { /** * 4ACE190C | . 50 | PUSH EAX; / w * 4ACE190D | . 68 E008D04A | PUSH cmd.4AD008E0; | wstr = " &()[]{}^=;!%'+,`~" * 4ACE1912 | .FF15 F010CC4A | CALL DWORD PTR DS : [<&msvcrt.wcschr>]; \wcschr * 4ACE1918 | . 59 | POP ECX * 4ACE1919 | . 59 | POP ECX * 4ACE191A | . 85C0 | TEST EAX, EAX */ if (std::wcschr(L" &()[]{}^=;!%'+,`~", cur_symbol) != NULL) { /** * 4ACE191E |. 8D77 01 |LEA ESI,DWORD PTR DS:[EDI+1] * 4ACE1921 |. 8975 D8 |MOV DWORD PTR SS:[EBP-28],ESI * 4ACE1924 |. 8365 E4 00 |AND DWORD PTR SS:[EBP-1C],0 * 4ACE1928 |. 33D2 |XOR EDX,EDX */ esi = i + 1; ebp_28 = esi; ebp_1c = 0; edx = 0; } else { // 4ACE192C | > \33D2 | XOR EDX, EDX edx = 0; /** * 4ACE1935 | . 66:83F8 3A | CMP AX, 3A * 4ACE1939 | . 74 1B | JE SHORT cmd.4ACE1956 * 4ACE193B | . 66 : 83F8 5C | CMP AX, 5C * 4ACE193F | . 74 15 | JE SHORT cmd.4ACE1956 */ if (cur_symbol == L':' || cur_symbol == L'\\') { /** * 4ACE1956 | > \8D5F 01 | LEA EBX, DWORD PTR DS : [EDI + 1] * 4ACE1959 | . 895D D4 | MOV DWORD PTR SS : [EBP - 2C], EBX * 4ACE195C | > 8955 E4 | MOV DWORD PTR SS : [EBP - 1C], EDX */ ebx = i + 1; ebp_2c = ebx; ebp_1c = edx; } else if (cur_symbol == L'*' || cur_symbol == L'?') { // ... } } } } /** * 4ACE1965 |> \83FB FF CMP EBX,-1 * 4ACE1968 |. 74 04 JE SHORT cmd.4ACE196E * 4ACE196A |. 3BDE CMP EBX,ESI * 4ACE196C |. 7D 05 JGE SHORT cmd.4ACE1973 */ if (ebx == -1 || ebx < esi) { /** * 4ACE196E | > \8BDE MOV EBX, ESI * 4ACE1970 | . 895D D4 MOV DWORD PTR SS : [EBP - 2C], EBX */ ebx = esi; ebp_2c = ebx; } /** * 4ACE1973 | > \2BC6 SUB EAX, ESI * 4ACE1975 | . 03C0 ADD EAX, EAX * 4ACE1977 | . 8BF8 MOV EDI, EAX * 4ACE1979 | . 57 PUSH EDI; / n * 4ACE197A | . 8B45 08 MOV EAX, DWORD PTR SS : [EBP + 8]; | * 4ACE197D | . 8D0470 LEA EAX, DWORD PTR DS : [EAX + ESI * 2]; | * 4ACE1980 | . 50 PUSH EAX; | src * 4ACE1981 | .FF75 E0 PUSH DWORD PTR SS : [EBP - 20]; | dest * 4ACE1984 | .E8 52FAFDFF CALL <JMP.&msvcrt.memcpy>; \memcpy */ const std::size_t count = (command_size - esi) * 2; wchar_t dest[1024] = { 0 }; std::memcpy(dest, command.substr(esi).c_str(), count); std::wcout << "Result: " << dest << std::endl; }
ã³ã¡ã³ãã// ...ãã§ããŒã¯ãããå Žæã¯ãæ€èšäžã®ã±ãŒã¹ã§ã¯åœ±é¿ãåããŸããã
ã*ããã\ããªã©ã®æåã¯ãASCIIã³ãŒãããŒãã«ã䜿çšããŠå®çŸ©ãããŸããã
å ¥åãè©ŠããŠã¿ããšã次ã®ããšãããããŸãã
CD CïŒ\
çµæïŒCïŒ\
CD CïŒ/
çµæïŒ
CD CïŒ\ Windows \
çµæïŒCïŒ\ Windows \
CD CïŒ/ Windows \
çµæïŒWindows \
ã¹ã©ãã·ã¥ã¯ããŠãŒã¶ãŒãå ¥åãããã¹ã®æåŸïŒå°ãªããšãæåŸãå°ãªããšãäžå€®ïŒã®ã©ãã«ãããã«é¢ä¿ãªããåé¡ãåŒãèµ·ããããšã容æã«ããããŸãã
解決çã¯ãcmd.exeããªãŒãã³ã³ããªãŒããå®è¡ããå¿ èŠããããšèªèããçŽåŸã«ããã¹ãŠã®ã¹ã©ãã·ã¥ãããã¯ã¹ã©ãã·ã¥ã«çœ®ãæããããšã§ãã ãããè¡ãã«ã¯ãå察åŽããã¢ãããŒãããããšãææ¡ããŸãããŠãŒã¶ãŒãæšæºå ¥åã¹ããªãŒã ããããŒã¿ãå ¥åããçŽåŸã«ã段éçãªãããã°ãå®è¡ããããšã§ãã
ãã ããstdinããã®ããŒã¿ã®èªã¿åãã¯ããŸããŸãªæ¹æ³ã§å®è¡ã§ããŸãã cmd.exeã§äœãæ£ç¢ºã«äœ¿çšãããŠããããç解ããæ¹æ³ã¯ïŒ éåžžã«ç°¡åã§ã-F9ããŒãæŒããŠããF12ããŒïŒäžæåæ¢ïŒãæŒããã³ãŒã«ã¹ã¿ãã¯ãèŠãŠãåŒã³åºãã®äžã§ReadConsoleãšããWinAPIé¢æ°ã確èªããŸãã
ããã©ã«ãã§ã¯ã ReadConsoleã¯EnterããŒãæŒããåŸãåŒã³åºãå ã®ã³ãŒãã«å¶åŸ¡ãè¿ããŸãããæããã«ããã¯ããã§ã¯ãããŸããã ããšãã°ãTabããŒãæŒããåŸãäœæ¥ãââå®äºããå¿ èŠããããŸãã
ãœãããŠã§ã¢ãã¬ãŒã«ãŒãåŒã³åºããŠããªã¬ãŒããŸãã
ããã§pReservedãšåŒã°ããæåŸã®ãã©ã¡ãŒã¿ãŒã«æ³šæããŠãã ããã å®éãããã¯pInputControlãšåŒã°ãã次ã®åœ¹å²ãæãããŸãã
pInputControl [å ¥åããªãã·ã§ã³]
èªã¿åãæäœã®çµäºãç¥ãããå¶åŸ¡æåãæå®ããCONSOLE_READCONSOLE_CONTROLæ§é äœãžã®ãã€ã³ã¿ãŒã ãã®ãã©ã¡ãŒã¿ãŒã¯NULLã«ããããšãã§ããŸã
ç§ãã¡ã®å Žåãããã¯ãŸã£ããNULLã§ã¯ãªãããã CONSOLE_READCONSOLE_CONTROLæ§é ãã©ã®ããã«èŠããããèŠãŠã¿ãŸãããã
typedef struct _CONSOLE_READCONSOLE_CONTROL { ULONG nLength; ULONG nInitialChars; ULONG dwCtrlWakeupMask; ULONG dwControlKeyState; } CONSOLE_READCONSOLE_CONTROL, *PCONSOLE_READCONSOLE_CONTROL;
çã®ãã€ããèŠãã®ã¯ããŸã䟿å©ã§ã¯ãªãã®ã§ãStollyStructsãšåŒã°ããç¹å¥ãªOllyDbgãã©ã°ã€ã³ã䜿çšããŸããããããã¯ãæ§é ãèŠèŠåããããã«ç¹å¥ã«èšèšãããŠããŸãã .dllãš.iniãããŠã³ããŒãããŠãå®è¡å¯èœãã¡ã€ã«OllyDbgããããã£ã¬ã¯ããªã«è§£åãïŒãã¡ãããããã©ã«ãã§ãã©ã°ã€ã³ã®ãã¹ãšããŠæå®ãããŠããå ŽåïŒããããã¬ãåèµ·åããŸãã cmd.exeãåèµ·åãããšãã¢ãã¬ã¹ãå€æŽãããå ŽåããããŸãããã»ãšãã©ã®å Žåãã¢ãã¬ã¹ã®ãçµäºãã¯åããŸãŸã§ãã ããšãã°ã以åèå³ã®ããReadConsoleåŒã³åºãã0x4ACD3589ã«ãã£ãå Žå ããããã0xXXXXX589ã®åœ¢åŒã®ã¢ãã¬ã¹ã«ãªããŸã ã
ãã¬ãŒã¯ãã€ã³ããé 眮ããŠåæ¢ãã[ãã©ã°ã€ã³]-> [StollyStruct]-> [æ§é ã®éžæ]ãã¯ãªãã¯ãã pInputControlåŒæ°ãšããŠæž¡ãããã¢ãã¬ã¹ã[ã¢ãã¬ã¹]ãã£ãŒã«ãã«å ¥åããŸãã ãŸããèè ã¯ãWinAPIããã®ãã¹ãŠã®æ§é ãäºåã«èšå®ãããããšãçŽæããŸããã§ããã 2ã€ã®ãªãã·ã§ã³ããããŸã-ãã®æ§é ã®èª¬æããã©ã°ã€ã³æ§æãã¡ã€ã«ã«è¿œå ããããèå³ã®ããæ§é ã«äŒŒãå¥ã®æ§é ã䜿çšããŸãã ç§ãæåã«æãã€ããã®ã¯RECTæ§é ã§ãããã«ã¯4ã€ã®ãã£ãŒã«ããå«ãŸããŠããŸãããULONGã®ä»£ããã«LONGã䜿çšããŠãããšããå¯äžã®éãããããŸãã
typedef struct _RECT { LONG left; LONG top; LONG right; LONG bottom; } RECT, *PRECT;
ãã®çµæã次ã®ãã®ãåŸãããŸãã
å ¥åãåæ¢ããããã®æåã¯ã dwCtrlWakeupMaskãã£ãŒã«ãã䜿çšããŠæå®ãããŸãã
dwCtrlWakeupMask
èªã¿åããå®äºããããšãéç¥ããããã«äœ¿çšããããŠãŒã¶ãŒå®çŸ©ã®å¶åŸ¡æå
ã芧ã®ãšããããã®äŸã§ã¯ãå€0x200ãå«ãŸããŠããŸããããã¯ããããã·ããæŒç®1 << 0x9ã®çµæãšããŠååŸãããŸããã0x9ã¯Tabã®ASCIIã³ãŒãã§ãã
ãŠãŒã¶ãŒãEnterãŸãã¯Tabãå ¥åããåŸã ReadConsoleé¢æ°ããã®ãªã¿ãŒã³ãå®è¡ãããããã«ããŸããã ããã§ã¯ãã¹ããããã€ã¹ãããã®ãããã°ã«æ»ããŸãããã
å°ãå®è¡ããåŸããŠãŒã¶ãŒãå ¥åããã³ãã³ãå ã®ãã¹ãŠã®æåãå埩åŠçããå¥ã®ã«ãŒããèŠã€ããŸãã
ããã§ã EDIã¯ã³ãã³ãã§Unicodeæååãæãã EAXã¯ã«ãŒãã«ãŠã³ã¿ãŒã§ãã
ã芧ã®ãšãããåæåã¯æåã«0x0Dãšæ¯èŒããã次ã«0x4A1640A0ã®å€ãšæ¯èŒãã ã次ã«0x4A1640A4ã®ã³ã³ãã³ããšæ¯èŒãããŸãã ASCIIã³ãŒãã®è¡šãèŠããšã0x0Dã¯ãã£ãªããžãªã¿ãŒã³ã«ãããªãããšãããããŸãã åã«ç€ºããã¢ãã¬ã¹ã«ã¯ãåãå€0x9ãæ ŒçŽãããŸããããã¯ãåè¿°ã®ããã«ãTabã®ASCIIã³ãŒãã§ãã
ãŸããçŸåšã®æåãTabãšçããå Žåã«é·ç§»ãå®è¡ãããã¢ãã¬ã¹ããããã»ã©é ããªããšããã«ã転éãããã³ãã³ãã®è§£æã³ãŒãããããŸãã ãŸããç§ã®æèŠã§ã¯ãããã¯ç§ãã¡ã®ã³ãŒãæŽçªãžã®ç§»è¡ã眮ãã®ãæåã®å Žæã§ãã
ãã®äžã§äœãããŸããïŒ ç§ã¯æ¬¡ã®ããšãææ¡ããŸã-è¡ã®çµããããæåãŸã§è¡ããåæåãã¹ã©ãã·ã¥ãšçãããã©ãããæåã®ã¹ããŒã¹æåãŸã§ãã§ãã¯ããããã¯ã¹ã©ãã·ã¥ã«çœ®ãæããŸãã 次ã®ããã«ãªããŸãã
PUSHFD PUSHAD ; , TEST EAX,EAX JZ l1 ; ( ; , Tab') l4: DEC EAX ; ECX MOVZX ECX,WORD PTR DS:[EDI+EAX*2] CMP CX,2F ; forward slash JE l2 CMP CX,20 ; JE l1 JMP l3 l2: ; forward slash backslash MOV WORD PTR DS:[EDI+EAX*2],5C l3: ; , TEST EAX,EAX ; JNZ l4 l1: POPAD POPFD ; , ; JMP 4ACD42CD
ã³ãŒãã±ã€ãã®å ŽæãèŠã€ãïŒCtrl-B-> "HEX + 0C"ãã£ãŒã«ãã«å€æ°ã®ãŒããæ¿å ¥ããŠïŒã次ã®ã³ãŒããèšè¿°ããŸãïŒãã¡ãããã¢ãã¬ã¹ã¯ç°ãªãå ŽåããããŸãïŒã
4A163CC5 9C PUSHFD 4A163CC6 60 PUSHAD 4A163CC7 85C0 TEST EAX,EAX 4A163CC9 74 1D JE SHORT cmd.4A163CE8 4A163CCB 48 DEC EAX 4A163CCC 0FB70C47 MOVZX ECX,WORD PTR DS:[EDI+EAX*2] 4A163CD0 66:83F9 2F CMP CX,2F 4A163CD4 74 08 JE SHORT cmd.4A163CDE 4A163CD6 66:83F9 20 CMP CX,20 4A163CDA 74 0C JE SHORT cmd.4A163CE8 4A163CDC EB 06 JMP SHORT cmd.4A163CE4 4A163CDE 66:C70447 5C0>MOV WORD PTR DS:[EDI+EAX*2],5C 4A163CE4 85C0 TEST EAX,EAX 4A163CE6 ^ 75 E3 JNZ SHORT cmd.4A163CCB 4A163CE8 61 POPAD 4A163CE9 9D POPFD 4A163CEA ^ E9 DE05FFFF JMP cmd.4A1542CD
ããã§ã 0x4A1542CDã¯ã 0x4A154299ã«ããæ¡ä»¶åå²ã®çµæãšããŠç§»åããå¿ èŠããã£ãã¢ãã¬ã¹ã§ãããTabã®ã³ãã³ãã§çŸåšã®æåãçãããã©ããã確èªããŸãã ãã®é·ç§»ã¯ãããããã³ãŒãã±ã€ãã®ãžã£ã³ãã«çœ®ãæããããŸãã
圌ã次ã®æ瀺ãæ¶ããããšã«ãã§ã«æ°ã¥ãããšæããŸãã å®éã«ã¯ãçŸåšã®ãã£ã©ã¯ã¿ãŒãåãã¿ãã«çãããã©ããã®åæ§ã®ãã§ãã¯ã§ããããä»ã®æ¹æ³ã§ããã«å°éããããšã¯äžå¯èœã ã£ãã®ã§ã倧äžå€«ã§ãã ããã確èªããã«ã¯ãå€æŽã匷調衚瀺ããAlt-Backspaceã䜿çšããŠãã¹ãŠããã®ãŸãŸè¿ãããã®åœä»€ã§è¡ãéžæããCtrl-RãæŒããŸããåãã¢ãã¬ã¹ã®1ã€ã®è¡ããããŸãã
æäœæ§ããã§ãã¯ããŸã... TabãæŒããšãã¹ã©ãã·ã¥ã¯å®éã«ããã¯ã¹ã©ãã·ã¥ã«çœ®ãæããããŸãããã®çµæããŠãŒã¶ãŒãæåã«äœ¿çšããã¹ã©ãã·ã¥ã«é¢ä¿ãªãããŠãŒã¶ãŒãæå®ãããã£ã¬ã¯ããªã§èªåè£å®ãå®è¡ãããŸãã
ããšãã
ãããã¯ãã¹ãŠäºçŽ°ãªããšã ãšèª°ããèšããããããŸããã ãã€ã¯ããœããã®éçºè ã§ã¯ãªããç§ãã¡ããã®åé¡ã解決ãããšããäºå®ã奜ãŸãªã人ããããããããŸããã
å ¬å¹³ã«èšãã°ã PowerShellã§ã¯ããã®ãåé¡ããšãCDã³ãã³ãã®ã/ DãããŒã®ç¶æ³ããŸã ä¿®æ£ãããŠããããšã«æ³šç®ãã䟡å€ããããŸãã
ãæž èŽããããšãããããŸããããŸãããã®èšäºã誰ãã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã