diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..bdb0cab --- /dev/null +++ b/.gitattributes @@ -0,0 +1,17 @@ +# Auto detect text files and perform LF normalization +* text=auto + +# Custom for Visual Studio +*.cs diff=csharp + +# Standard to msysgit +*.doc diff=astextplain +*.DOC diff=astextplain +*.docx diff=astextplain +*.DOCX diff=astextplain +*.dot diff=astextplain +*.DOT diff=astextplain +*.pdf diff=astextplain +*.PDF diff=astextplain +*.rtf diff=astextplain +*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e8951bb --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +gui/command.cpp \ No newline at end of file diff --git a/gui/command.cpp b/gui/command.cpp index bfd8220..a2cfeed 100644 --- a/gui/command.cpp +++ b/gui/command.cpp @@ -50,24 +50,24 @@ DWORD ProcessCommand(const std::wstring& cmd, DWORD pid) if (Parse(m[1].str(), hp)) Host_InsertHook(pid, &hp); } - else if (regex_match(cmd, m, wregex(L":l([[:xdigit:]]+)-([[:xdigit:]]+)", wregex::icase))) + else if (regex_match(cmd, m, wregex(L"(?::|)(?:ㅇ|연|l|)([[:xdigit:]]+)(?:-| )([[:xdigit:]]+)", wregex::icase))) { DWORD from = std::stoul(m[1].str(), NULL, 16); DWORD to = std::stoul(m[2].str(), NULL, 16); Host_AddLink(from, to); } - else if (regex_match(cmd, m, wregex(L":u([[:xdigit:]]+)", wregex::icase))) + else if (regex_match(cmd, m, wregex(L"(?::|)(?:ㅎ|해|해제|u)([[:xdigit:]]+)", wregex::icase))) { DWORD from = std::stoul(m[1].str(), NULL, 16); Host_UnLink(from); } - else if (regex_match(cmd, m, wregex(L":(?:h|help)", wregex::icase))) + else if (regex_match(cmd, m, wregex(L"(?::|)(?:ㄷ|도|도움|도움말|h|help)", wregex::icase))) { ConsoleOutput(Usage); } else { - ConsoleOutput(L"Unknown command. Type :h or :help for help."); + ConsoleOutput(L"알 수 없는 명령어. 도움말을 보시려면, :h 나 :help를 입력하세요."); } return 0; } diff --git a/gui/language.cpp b/gui/language.cpp index 6149eb9..0e46d40 100644 --- a/gui/language.cpp +++ b/gui/language.cpp @@ -14,44 +14,44 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -const wchar_t* Warning=L"Warning!"; +const wchar_t* Warning = L"경고!"; //command.cpp -const wchar_t* ErrorSyntax=L"Syntax error"; -const wchar_t* Usage = L"Syntax:\r\n\ +const wchar_t* ErrorSyntax = L"명령어 오류"; +const wchar_t* Usage = L"명령어:\r\n\ \r\n\ -:H[ELP] - print help\r\n\ -:Lfrom-to - link from thread 'from' to thread 'to'\r\n\ -:Ufrom - unlink link from thread 'from'\r\n\ +도움말 //도움말을 출력합니다\r\n\ +출발 도착 // '출발'스레드에서 '도착'스레드로 연결합니다\r\n\ +ㅎ출발 // '출발'스레드에 연결된 링크를 해제합니다\r\n\ \r\n\ -'from' and 'to' and hexadecimal thread numbers. The thread number is the first number in the combo box.\r\n\ +'출발'과 '도착'에는 16진법(헥사코드) 스레드번호를 입력합니다. 스레드 번호는 맨 앞에 있는 첫 번째 숫자열입니다.\r\n\ \r\n\ -Loader options:\r\n\ -/P[{process_id|Nprocess_name}] - attach to process\r\n\ +로더 옵션:\r\n\ +/P[{process_id|Nprocess_name}] //프로세스에 부착\r\n\ \r\n\ -Hook options:\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\ -All numbers in /H (except ordinal) are hexadecimal without any prefixes"; +(서수를 제외한) /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\ -Set additional custom hook\r\n\ +추가 사용자정의 후킹설정\r\n\ \r\n\ -Hook types :\r\n\ -A - DBCS char\r\n\ -B - DBCS char(big-endian)\r\n\ -W - UCS2 char\r\n\ -S - MBCS string\r\n\ -Q - UTF-16 string\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\ -Parameters:\r\n\ -X - use hardware breakpoints\r\n\ -N - don't use contexts\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 - address of the hook\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\ @@ -64,69 +64,70 @@ Negative values of 'data_offset' and 'sub_offset' refer to registers: \r\n\ All numbers except ordinal are hexadecimal without any prefixes"; //inject.cpp -const wchar_t* ErrorRemoteThread=L"Can't create remote thread."; -const wchar_t* ErrorOpenProcess=L"Can't open process."; -const wchar_t* ErrorNoProcess=L"Process not found"; -const wchar_t* SelfAttach=L"Please do not attach to ITH.exe"; -const wchar_t* AlreadyAttach=L"Process already attached."; -const wchar_t* FormatInject=L"Inject process %d. Module base %.8X"; +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"Can't enable SeDebugPrevilege. ITH might malfunction.\r\n\ -Please run ITH as administrator or turn off UAC."; +const wchar_t* NotAdmin = L"SeDebugPrevilege을 활성화 할 수 없습니다. ITH가 제대로 작동하지 못합니다.\r\n\ +관리자 계정으로 실행하시거나 UAC를 끄시고 ITH를 실행해 주세요."; //pipe.cpp -const wchar_t* ErrorCreatePipe=L"Can't create text pipe or too many instance."; -const wchar_t* FormatDetach=L"Process %d detached."; -const wchar_t* ErrorCmdQueueFull=L"Command queue full."; -const wchar_t* ErrorNoAttach=L"No process attached."; +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"Can't monitor process."; +const wchar_t* ErrorMonitor = L"프로세스를 감시할 수 없음."; //utility.cpp -const wchar_t* InitMessage=L"Copyright (C) 2010-2012 kaosu \r\n\ +const wchar_t* InitMessage = L"Copyright (C) 2010-2012 kaosu \r\n\ Copyright (C) 2015 zorkzero \r\n\ -Source code \r\n\ -General discussion "; -const wchar_t* BackgroundMsg=L"Type \":h\" or \":help\" for help."; -const wchar_t* ErrorLinkExist=L"Link exist."; -const wchar_t* ErrorCylicLink=L"Link failed. No cyclic link allowed."; -const wchar_t* FormatLink=L"Link from thread%.4x to thread%.4x."; -const wchar_t* ErrorLink=L"Link failed. Source or/and destination thread not found."; -const wchar_t* ErrorDeleteCombo=L"Error delete from combo."; +소스코드 \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 (Administrator)"; -const wchar_t* ErrorNotSplit=L"Need to enable split first!"; -const wchar_t* ErrorNotModule=L"Need to enable module first!"; +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"Process"; -const wchar_t* ButtonTitleThread=L"Thread"; -const wchar_t* ButtonTitleHook=L"Hook"; -const wchar_t* ButtonTitleProfile=L"Profile"; -const wchar_t* ButtonTitleOption=L"Option"; -const wchar_t* ButtonTitleClear=L"Clear"; -const wchar_t* ButtonTitleSave=L"Save"; -const wchar_t* ButtonTitleTop=L"Top"; +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"Special hook, no AGTH equivalent."; +const wchar_t* SpecialHook = L"H코드 후킹, AGTH 코드는 지원하지 않습니다."; //Process window -const wchar_t* TabTitlePID=L"PID"; -const wchar_t* TabTitleMemory=L"Memory"; -const wchar_t* TabTitleName=L"Name"; -const wchar_t* TabTitleTID=L"TID"; -const wchar_t* TabTitleStart=L"Start"; -const wchar_t* TabTitleModule=L"Module"; -const wchar_t* TabTitleState=L"State"; -const wchar_t* SuccessAttach=L"Attach ITH to process successfully."; -const wchar_t* FailAttach=L"Failed to attach ITH to process."; -const wchar_t* SuccessDetach=L"ITH detach from process."; -const wchar_t* FailDetach=L"Detach failed."; +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"Profile already exists."; -const wchar_t* SuccessAddProfile=L"Profile added."; -const wchar_t* FailAddProfile=L"Fail to add profile"; -const wchar_t* TabTitleNumber=L"No."; -const wchar_t* NoFile=L"Can't find file."; -const wchar_t* PathDismatch=L"Process name dismatch, continue?"; -const wchar_t* SuccessImportProfile=L"Import profile success"; +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."; \ No newline at end of file diff --git a/i18n/gui_korean/command.cpp b/i18n/gui_korean/command.cpp index 79d5fb4..a2cfeed 100644 --- a/i18n/gui_korean/command.cpp +++ b/i18n/gui_korean/command.cpp @@ -50,24 +50,24 @@ DWORD ProcessCommand(const std::wstring& cmd, DWORD pid) if (Parse(m[1].str(), hp)) Host_InsertHook(pid, &hp); } - else if (regex_match(cmd, m, wregex(L"(?::|)(?:||l|)([[:xdigit:]]+)(?:-| )([[:xdigit:]]+)", wregex::icase))) + else if (regex_match(cmd, m, wregex(L"(?::|)(?:ㅇ|연|l|)([[:xdigit:]]+)(?:-| )([[:xdigit:]]+)", wregex::icase))) { DWORD from = std::stoul(m[1].str(), NULL, 16); DWORD to = std::stoul(m[2].str(), NULL, 16); Host_AddLink(from, to); } - else if (regex_match(cmd, m, wregex(L"(?::|)(?:|||u)([[:xdigit:]]+)", wregex::icase))) + else if (regex_match(cmd, m, wregex(L"(?::|)(?:ㅎ|해|해제|u)([[:xdigit:]]+)", wregex::icase))) { DWORD from = std::stoul(m[1].str(), NULL, 16); Host_UnLink(from); } - else if (regex_match(cmd, m, wregex(L"(?::|)(?:||||h|help)", wregex::icase))) + else if (regex_match(cmd, m, wregex(L"(?::|)(?:ㄷ|도|도움|도움말|h|help)", wregex::icase))) { ConsoleOutput(Usage); } else { - ConsoleOutput(L" ɾ. ÷, :h :help Էϼ."); + ConsoleOutput(L"알 수 없는 명령어. 도움말을 보시려면, :h 나 :help를 입력하세요."); } return 0; } diff --git a/i18n/gui_korean/language.cpp b/i18n/gui_korean/language.cpp index ee33716..0e46d40 100644 --- a/i18n/gui_korean/language.cpp +++ b/i18n/gui_korean/language.cpp @@ -14,44 +14,44 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -const wchar_t* Warning = L"!"; +const wchar_t* Warning = L"경고!"; //command.cpp -const wchar_t* ErrorSyntax = L"ɾ "; -const wchar_t* Usage = L"ɾ:\r\n\ +const wchar_t* ErrorSyntax = L"명령어 오류"; +const wchar_t* Usage = L"명령어:\r\n\ \r\n\ - // մϴ\r\n\ - // ''忡 '' մϴ\r\n\ - // ''忡 ũ մϴ\r\n\ +도움말 //도움말을 출력합니다\r\n\ +출발 도착 // '출발'스레드에서 '도착'스레드로 연결합니다\r\n\ +ㅎ출발 // '출발'스레드에 연결된 링크를 해제합니다\r\n\ \r\n\ -'' '' 16(ڵ) ȣ Էմϴ. ȣ տ ִ ù ° ڿԴϴ.\r\n\ +'출발'과 '도착'에는 16진법(헥사코드) 스레드번호를 입력합니다. 스레드 번호는 맨 앞에 있는 첫 번째 숫자열입니다.\r\n\ \r\n\ -δ ɼ:\r\n\ -/P[{process_id|Nprocess_name}] //μ \r\n\ +로더 옵션:\r\n\ +/P[{process_id|Nprocess_name}] //프로세스에 부착\r\n\ \r\n\ -Hڵ ŷ ɼ:\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(ڵ)Դϴ"; +(서수를 제외한) /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\ -ŷ :\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\ +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\ +매개변수:\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\ +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\ @@ -64,70 +64,70 @@ Negative values of 'data_offset' and 'sub_offset' refer to registers: \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"; +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 ּ."; +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"μ ."; +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"μ ."; +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"ۻڿ ."; +소스코드 \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" Ȱȭּ!"; +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"׻"; +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 ڵ ʽϴ."; +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* 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 Ż."; +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* 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* NoFile = L"파일을 찾을 수 없음."; +const wchar_t* PathDismatch = L"프로세스 이름이 일치하지 않습니다, 계속하시겠습니까?"; +const wchar_t* SuccessImportProfile = L"프로필 가져오기 성공"; //const wchar_t* SuccessAddProfile=L"Profile added."; \ No newline at end of file