/* Copyright (C) 2010-2012 kaosu (qiupf2000@gmail.com) * This file is part of the Interactive Text Hooker. * Interactive Text Hooker is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ const wchar_t* Warning = L"°æ°í!"; //command.cpp const wchar_t* ErrorSyntax = L"¸í·É¾î ¿À·ù"; const wchar_t* Usage = L"¸í·É¾î:\r\n\ \r\n\ µµ¿ò¸» //µµ¿ò¸»À» Ãâ·ÂÇÕ´Ï´Ù\r\n\ Ãâ¹ß µµÂø // 'Ãâ¹ß'½º·¹µå¿¡¼­ 'µµÂø'½º·¹µå·Î ¿¬°áÇÕ´Ï´Ù\r\n\ ¤¾Ãâ¹ß // 'Ãâ¹ß'½º·¹µå¿¡ ¿¬°áµÈ ¸µÅ©¸¦ ÇØÁ¦ÇÕ´Ï´Ù\r\n\ \r\n\ 'Ãâ¹ß'°ú 'µµÂø'¿¡´Â 16Áø¹ý(Çí»çÄÚµå) ½º·¹µå¹øÈ£¸¦ ÀÔ·ÂÇÕ´Ï´Ù. ½º·¹µå ¹øÈ£´Â ¸Ç ¾Õ¿¡ Àִ ù ¹ø° ¼ýÀÚ¿­ÀÔ´Ï´Ù.\r\n\ \r\n\ ·Î´õ ¿É¼Ç:\r\n\ /P[{process_id|Nprocess_name}] //ÇÁ·Î¼¼½º¿¡ ºÎÂø\r\n\ \r\n\ HÄÚµå ÈÄÅ· ¿É¼Ç:\r\n\ /H[X]{A|B|W|S|Q}[N][data_offset[*drdo]][:sub_offset[*drso]]@addr[:module[:{name|#ordinal}]]\r\n\ \r\n\ (¼­¼ö¸¦ Á¦¿ÜÇÑ) /HÄÚµåÀÇ ¸ðµç ¼ýÀÚ´Â ¾Æ¹«°Íµµ 󸮵ÇÁö ¾ÊÀº 16Áø¹ý(Çí»çÄÚµå)ÀÔ´Ï´Ù"; const wchar_t* ExtendedUsage = L"/H[X]{A|B|W|S|Q}[N][data_offset[*drdo]][:sub_offset[*drso]]@addr[:[module[:{name|#ordinal}]]]\r\n\ \r\n\ Ãß°¡ »ç¿ëÀÚÁ¤ÀÇ ÈÄÅ·¼³Á¤\r\n\ \r\n\ ÈÄÅ· Á¾·ù :\r\n\ A - DBCS ¹®ÀÚ\r\n\ B - DBCS ¹®ÀÚ(big-endian)\r\n\ W - UCS2 ¹®ÀÚ\r\n\ S - MBCS ¹®ÀÚ¿­\r\n\ Q - UTF-16 ¹®ÀÚ¿­\r\n\ \r\n\ ¸Å°³º¯¼ö:\r\n\ X - Çϵå¿þ¾î ±¸È¹Á¡ »ç¿ë\r\n\ N - ¹®¹ýÀ» »ç¿ëÇÏÁö ¾ÊÀ½\r\n\ data_offset - stack offset to char / string pointer\r\n\ drdo - add a level of indirection to data_offset\r\n\ sub_offset - stack offset to subcontext\r\n\ drso - add a level of indirection to sub_offset\r\n\ addr - ÈÄÅ·ÇÒ ÁÖ¼Ò\r\n\ module - name of the module to use as base for 'addr'\r\n\ name - name of the 'module' export to use as base for 'addr'\r\n\ ordinal - number of the 'module' export ordinal to use as base for 'addr'\r\n\ \r\n\ Negative values of 'data_offset' and 'sub_offset' refer to registers: \r\n\ - 4 for EAX, -8 for ECX, -C for EDX, -10 for EBX, -14 for ESP, -18 for EBP, -1C for ESI, -20 for EDI\r\n\ \r\n\ \"Add a level of indirection\" means in C/C++ style: (*(ESP+data_offset)+drdo) instead of (ESP+data_offset)\r\n\ \r\n\ All numbers except ordinal are hexadecimal without any prefixes"; //inject.cpp const wchar_t* ErrorRemoteThread = L"¿ø°Ý ½º·¹µå¸¦ »ý¼ºÇÒ ¼ö ¾øÀ½."; const wchar_t* ErrorOpenProcess = L"ÇÁ·Î¼¼½º¸¦ ¿­ ¼ö ¾øÀ½."; const wchar_t* ErrorNoProcess = L"ÇÁ·Î¼¼½º¸¦ ãÀ» ¼ö ¾øÀ½"; const wchar_t* SelfAttach = L"ITH.exe¿¡ ºÎÂøÇÏÁö ¸»¾Æ ÁÖ¼¼¿ä"; const wchar_t* AlreadyAttach = L"ÇÁ·Î¼¼½º°¡ ÀÌ¹Ì ºÎÂøµÊ."; const wchar_t* FormatInject = L"ÇÁ·Î¼¼½º %d¿¡ ÀÎÁ§¼Ç. ¸ðµâ ±â¹Ý %.8X"; //main.cpp const wchar_t* NotAdmin = L"SeDebugPrevilegeÀ» È°¼ºÈ­ ÇÒ ¼ö ¾ø½À´Ï´Ù. ITH°¡ Á¦´ë·Î ÀÛµ¿ÇÏÁö ¸øÇÕ´Ï´Ù.\r\n\ °ü¸®ÀÚ °èÁ¤À¸·Î ½ÇÇàÇϽðųª UAC¸¦ ²ô½Ã°í ITH¸¦ ½ÇÇàÇØ ÁÖ¼¼¿ä."; //pipe.cpp const wchar_t* ErrorCreatePipe = L"ÅؽºÆ® ÆÄÀÌÇÁ¸¦ »ý¼ºÇÒ ¼ö ¾ø°Å³ª, ¿äûÀÌ ³Ê¹« ¸¹½À´Ï´Ù."; const wchar_t* FormatDetach = L"ÇÁ·Î¼¼½º %d°¡ Å»ÂøµÊ."; const wchar_t* ErrorCmdQueueFull = L"¸í·É¾î ´ë±â¿­ÀÌ °¡µæÂü."; const wchar_t* ErrorNoAttach = L"ÇÁ·Î¼¼½º°¡ ºÎÂøµÇÁö ¾ÊÀ½."; //profile.cpp const wchar_t* ErrorMonitor = L"ÇÁ·Î¼¼½º¸¦ °¨½ÃÇÒ ¼ö ¾øÀ½."; //utility.cpp const wchar_t* InitMessage = L"Copyright (C) 2010-2012 kaosu \r\n\ Copyright (C) 2015 zorkzero \r\n\ ¼Ò½ºÄÚµå \r\n\ ÀϹÝÅä·Ð \r\n\ ÇѱÛÈ­ @mireado"; const wchar_t* BackgroundMsg = L"µµ¿ò¸»À» º¸½Ã·Á¸é, \"help\", \"µµ¿ò¸»\"À̳ª \"µµ¿ò\"À» ÀÔ·ÂÇϼ¼¿ä."; const wchar_t* ErrorLinkExist = L"¿¬°áÀÌ Á¸ÀçÇÔ."; const wchar_t* ErrorCylicLink = L"¿¬°á½ÇÆÐ. ¼øȯ¿¬°áÀº Çã¿ëµÇÁö ¾Ê½À´Ï´Ù."; const wchar_t* FormatLink = L"Ãâ¹ß½º·¹µå%.4x¿¡¼­ µµÂø½º·¹µå%.4x·Î ¿¬°á."; const wchar_t* ErrorLink = L"¿¬°á½ÇÆÐ. Ãâ¹ß/µµÂø ½º·¹µå¸¦ ãÀ» ¼ö ¾øÀ½."; const wchar_t* ErrorDeleteCombo = L"±Û»óÀÚ¿¡¼­ Áö¿ì±â ½ÇÆÐ."; //window.cpp const wchar_t* ClassName = L"ITH"; const wchar_t* ClassNameAdmin = L"ITH (°ü¸®ÀÚ)"; const wchar_t* ErrorNotSplit = L"¸ÕÀú ¹®´Ü ³ª´©±â¸¦ È°¼ºÈ­ÇØÁÖ¼¼¿ä!"; const wchar_t* ErrorNotModule = L"¸ÕÀú ¸ðµâÀ» È°¼ºÈ­ÇØÁÖ¼¼¿ä!"; //Main window buttons const wchar_t* ButtonTitleProcess = L"ÇÁ·Î¼¼½º"; const wchar_t* ButtonTitleThread = L"½º·¹µå"; const wchar_t* ButtonTitleHook = L"ÈÄÅ·"; const wchar_t* ButtonTitleProfile = L"ÇÁ·ÎÇÊ"; const wchar_t* ButtonTitleOption = L"¿É¼Ç"; const wchar_t* ButtonTitleClear = L"Áö¿ì±â"; const wchar_t* ButtonTitleSave = L"ÀúÀå"; const wchar_t* ButtonTitleTop = L"Ç×»óÀ§"; //Hook window const wchar_t* SpecialHook = L"HÄÚµå ÈÄÅ·, AGTH ÄÚµå´Â Áö¿øÇÏÁö ¾Ê½À´Ï´Ù."; //Process window const wchar_t* TabTitlePID = L"PID"; const wchar_t* TabTitleMemory = L"¸Þ¸ð¸®"; const wchar_t* TabTitleName = L"À̸§"; const wchar_t* TabTitleTID = L"TID"; const wchar_t* TabTitleStart = L"½ÃÀÛ"; const wchar_t* TabTitleModule = L"¸ðµâ"; const wchar_t* TabTitleState = L"»óÅÂ"; const wchar_t* SuccessAttach = L"ÇÁ·Î¼¼½º¿¡ ITH ºÎÂø¼º°ø."; const wchar_t* FailAttach = L"ÇÁ·Î¼¼½º¿¡ ITH ºÎÂø½ÇÆÐ."; const wchar_t* SuccessDetach = L"ÇÁ·Î¼¼½º¿¡¼­ ITH Å»Âø¼º°ø."; const wchar_t* FailDetach = L"ITH Å»Âø½ÇÆÐ."; //Profile window const wchar_t* ProfileExist = L"ÇÁ·ÎÇÊÀÌ ÀÌ¹Ì Á¸ÀçÇÔ."; const wchar_t* SuccessAddProfile = L"ÇÁ·ÎÇÊ Ãß°¡µÊ."; const wchar_t* FailAddProfile = L"ÇÁ·ÎÇÊ Ãß°¡½ÇÆÐ"; const wchar_t* TabTitleNumber = L"No."; const wchar_t* NoFile = L"ÆÄÀÏÀ» ãÀ» ¼ö ¾øÀ½."; const wchar_t* PathDismatch = L"ÇÁ·Î¼¼½º À̸§ÀÌ ÀÏÄ¡ÇÏÁö ¾Ê½À´Ï´Ù, °è¼ÓÇϽðڽÀ´Ï±î?"; const wchar_t* SuccessImportProfile = L"ÇÁ·ÎÇÊ °¡Á®¿À±â ¼º°ø"; //const wchar_t* SuccessAddProfile=L"Profile added.";