/* 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.";