commit
61dbbeb902
17
.gitattributes
vendored
Normal file
17
.gitattributes
vendored
Normal file
@ -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
|
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
gui/command.cpp
|
@ -50,24 +50,24 @@ DWORD ProcessCommand(const std::wstring& cmd, DWORD pid)
|
|||||||
if (Parse(m[1].str(), hp))
|
if (Parse(m[1].str(), hp))
|
||||||
Host_InsertHook(pid, &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 from = std::stoul(m[1].str(), NULL, 16);
|
||||||
DWORD to = std::stoul(m[2].str(), NULL, 16);
|
DWORD to = std::stoul(m[2].str(), NULL, 16);
|
||||||
Host_AddLink(from, to);
|
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);
|
DWORD from = std::stoul(m[1].str(), NULL, 16);
|
||||||
Host_UnLink(from);
|
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);
|
ConsoleOutput(Usage);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ConsoleOutput(L"Unknown command. Type :h or :help for help.");
|
ConsoleOutput(L"알 수 없는 명령어. 도움말을 보시려면, :h 나 :help를 입력하세요.");
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
141
gui/language.cpp
141
gui/language.cpp
@ -14,44 +14,44 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
const wchar_t* Warning=L"Warning!";
|
const wchar_t* Warning = L"경고!";
|
||||||
//command.cpp
|
//command.cpp
|
||||||
const wchar_t* ErrorSyntax=L"Syntax error";
|
const wchar_t* ErrorSyntax = L"명령어 오류";
|
||||||
const wchar_t* Usage = L"Syntax:\r\n\
|
const wchar_t* Usage = L"명령어:\r\n\
|
||||||
\r\n\
|
\r\n\
|
||||||
:H[ELP] - print help\r\n\
|
도움말 //도움말을 출력합니다\r\n\
|
||||||
:Lfrom-to - link from thread 'from' to thread 'to'\r\n\
|
출발 도착 // '출발'스레드에서 '도착'스레드로 연결합니다\r\n\
|
||||||
:Ufrom - unlink link from thread 'from'\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\
|
\r\n\
|
||||||
Loader options:\r\n\
|
로더 옵션:\r\n\
|
||||||
/P[{process_id|Nprocess_name}] - attach to process\r\n\
|
/P[{process_id|Nprocess_name}] //프로세스에 부착\r\n\
|
||||||
\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\
|
/H[X]{A|B|W|S|Q}[N][data_offset[*drdo]][:sub_offset[*drso]]@addr[:module[:{name|#ordinal}]]\r\n\
|
||||||
\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\
|
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\
|
||||||
Set additional custom hook\r\n\
|
추가 사용자정의 후킹설정\r\n\
|
||||||
\r\n\
|
\r\n\
|
||||||
Hook types :\r\n\
|
후킹 종류 :\r\n\
|
||||||
A - DBCS char\r\n\
|
A - DBCS 문자\r\n\
|
||||||
B - DBCS char(big-endian)\r\n\
|
B - DBCS 문자(big-endian)\r\n\
|
||||||
W - UCS2 char\r\n\
|
W - UCS2 문자\r\n\
|
||||||
S - MBCS string\r\n\
|
S - MBCS 문자열\r\n\
|
||||||
Q - UTF-16 string\r\n\
|
Q - UTF-16 문자열\r\n\
|
||||||
\r\n\
|
\r\n\
|
||||||
Parameters:\r\n\
|
매개변수:\r\n\
|
||||||
X - use hardware breakpoints\r\n\
|
X - 하드웨어 구획점 사용\r\n\
|
||||||
N - don't use contexts\r\n\
|
N - 문법을 사용하지 않음\r\n\
|
||||||
data_offset - stack offset to char / string pointer\r\n\
|
data_offset - stack offset to char / string pointer\r\n\
|
||||||
drdo - add a level of indirection to data_offset\r\n\
|
drdo - add a level of indirection to data_offset\r\n\
|
||||||
sub_offset - stack offset to subcontext\r\n\
|
sub_offset - stack offset to subcontext\r\n\
|
||||||
drso - add a level of indirection to sub_offset\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\
|
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\
|
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\
|
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";
|
All numbers except ordinal are hexadecimal without any prefixes";
|
||||||
|
|
||||||
//inject.cpp
|
//inject.cpp
|
||||||
const wchar_t* ErrorRemoteThread=L"Can't create remote thread.";
|
const wchar_t* ErrorRemoteThread = L"원격 스레드를 생성할 수 없음.";
|
||||||
const wchar_t* ErrorOpenProcess=L"Can't open process.";
|
const wchar_t* ErrorOpenProcess = L"프로세스를 열 수 없음.";
|
||||||
const wchar_t* ErrorNoProcess=L"Process not found";
|
const wchar_t* ErrorNoProcess = L"프로세스를 찾을 수 없음";
|
||||||
const wchar_t* SelfAttach=L"Please do not attach to ITH.exe";
|
const wchar_t* SelfAttach = L"ITH.exe에 부착하지 말아 주세요";
|
||||||
const wchar_t* AlreadyAttach=L"Process already attached.";
|
const wchar_t* AlreadyAttach = L"프로세스가 이미 부착됨.";
|
||||||
const wchar_t* FormatInject=L"Inject process %d. Module base %.8X";
|
const wchar_t* FormatInject = L"프로세스 %d에 인젝션. 모듈 기반 %.8X";
|
||||||
//main.cpp
|
//main.cpp
|
||||||
const wchar_t* NotAdmin=L"Can't enable SeDebugPrevilege. ITH might malfunction.\r\n\
|
const wchar_t* NotAdmin = L"SeDebugPrevilege을 활성화 할 수 없습니다. ITH가 제대로 작동하지 못합니다.\r\n\
|
||||||
Please run ITH as administrator or turn off UAC.";
|
관리자 계정으로 실행하시거나 UAC를 끄시고 ITH를 실행해 주세요.";
|
||||||
//pipe.cpp
|
//pipe.cpp
|
||||||
const wchar_t* ErrorCreatePipe=L"Can't create text pipe or too many instance.";
|
const wchar_t* ErrorCreatePipe = L"텍스트 파이프를 생성할 수 없거나, 요청이 너무 많습니다.";
|
||||||
const wchar_t* FormatDetach=L"Process %d detached.";
|
const wchar_t* FormatDetach = L"프로세스 %d가 탈착됨.";
|
||||||
const wchar_t* ErrorCmdQueueFull=L"Command queue full.";
|
const wchar_t* ErrorCmdQueueFull = L"명령어 대기열이 가득참.";
|
||||||
const wchar_t* ErrorNoAttach=L"No process attached.";
|
const wchar_t* ErrorNoAttach = L"프로세스가 부착되지 않음.";
|
||||||
|
|
||||||
//profile.cpp
|
//profile.cpp
|
||||||
const wchar_t* ErrorMonitor=L"Can't monitor process.";
|
const wchar_t* ErrorMonitor = L"프로세스를 감시할 수 없음.";
|
||||||
//utility.cpp
|
//utility.cpp
|
||||||
const wchar_t* InitMessage = L"Copyright (C) 2010-2012 kaosu <qiupf2000@gmail.com>\r\n\
|
const wchar_t* InitMessage = L"Copyright (C) 2010-2012 kaosu <qiupf2000@gmail.com>\r\n\
|
||||||
Copyright (C) 2015 zorkzero <zorkzero@hotmail.com>\r\n\
|
Copyright (C) 2015 zorkzero <zorkzero@hotmail.com>\r\n\
|
||||||
Source code <https://code.google.com/p/interactive-text-hooker/>\r\n\
|
소스코드 <https://code.google.com/p/interactive-text-hooker/>\r\n\
|
||||||
General discussion <https://groups.google.com/forum/?fromgroups#!forum/interactive-text-hooker>";
|
일반토론 <https://groups.google.com/forum/?fromgroups#!forum/interactive-text-hooker>\r\n\
|
||||||
const wchar_t* BackgroundMsg=L"Type \":h\" or \":help\" for help.";
|
한글화 @mireado<https://twitter.com/mireado>";
|
||||||
const wchar_t* ErrorLinkExist=L"Link exist.";
|
const wchar_t* BackgroundMsg = L"도움말을 보시려면, \"help\", \"도움말\"이나 \"도움\"을 입력하세요.";
|
||||||
const wchar_t* ErrorCylicLink=L"Link failed. No cyclic link allowed.";
|
const wchar_t* ErrorLinkExist = L"연결이 존재함.";
|
||||||
const wchar_t* FormatLink=L"Link from thread%.4x to thread%.4x.";
|
const wchar_t* ErrorCylicLink = L"연결실패. 순환연결은 허용되지 않습니다.";
|
||||||
const wchar_t* ErrorLink=L"Link failed. Source or/and destination thread not found.";
|
const wchar_t* FormatLink = L"출발스레드%.4x에서 도착스레드%.4x로 연결.";
|
||||||
const wchar_t* ErrorDeleteCombo=L"Error delete from combo.";
|
const wchar_t* ErrorLink = L"연결실패. 출발/도착 스레드를 찾을 수 없음.";
|
||||||
|
const wchar_t* ErrorDeleteCombo = L"글상자에서 지우기 실패.";
|
||||||
|
|
||||||
//window.cpp
|
//window.cpp
|
||||||
const wchar_t* ClassName = L"ITH";
|
const wchar_t* ClassName = L"ITH";
|
||||||
const wchar_t* ClassNameAdmin=L"ITH (Administrator)";
|
const wchar_t* ClassNameAdmin = L"ITH (관리자)";
|
||||||
const wchar_t* ErrorNotSplit=L"Need to enable split first!";
|
const wchar_t* ErrorNotSplit = L"먼저 문단 나누기를 활성화해주세요!";
|
||||||
const wchar_t* ErrorNotModule=L"Need to enable module first!";
|
const wchar_t* ErrorNotModule = L"먼저 모듈을 활성화해주세요!";
|
||||||
//Main window buttons
|
//Main window buttons
|
||||||
const wchar_t* ButtonTitleProcess=L"Process";
|
const wchar_t* ButtonTitleProcess = L"프로세스";
|
||||||
const wchar_t* ButtonTitleThread=L"Thread";
|
const wchar_t* ButtonTitleThread = L"스레드";
|
||||||
const wchar_t* ButtonTitleHook=L"Hook";
|
const wchar_t* ButtonTitleHook = L"후킹";
|
||||||
const wchar_t* ButtonTitleProfile=L"Profile";
|
const wchar_t* ButtonTitleProfile = L"프로필";
|
||||||
const wchar_t* ButtonTitleOption=L"Option";
|
const wchar_t* ButtonTitleOption = L"옵션";
|
||||||
const wchar_t* ButtonTitleClear=L"Clear";
|
const wchar_t* ButtonTitleClear = L"지우기";
|
||||||
const wchar_t* ButtonTitleSave=L"Save";
|
const wchar_t* ButtonTitleSave = L"저장";
|
||||||
const wchar_t* ButtonTitleTop=L"Top";
|
const wchar_t* ButtonTitleTop = L"항상위";
|
||||||
//Hook window
|
//Hook window
|
||||||
const wchar_t* SpecialHook=L"Special hook, no AGTH equivalent.";
|
const wchar_t* SpecialHook = L"H코드 후킹, AGTH 코드는 지원하지 않습니다.";
|
||||||
//Process window
|
//Process window
|
||||||
const wchar_t* TabTitlePID = L"PID";
|
const wchar_t* TabTitlePID = L"PID";
|
||||||
const wchar_t* TabTitleMemory=L"Memory";
|
const wchar_t* TabTitleMemory = L"메모리";
|
||||||
const wchar_t* TabTitleName=L"Name";
|
const wchar_t* TabTitleName = L"이름";
|
||||||
const wchar_t* TabTitleTID = L"TID";
|
const wchar_t* TabTitleTID = L"TID";
|
||||||
const wchar_t* TabTitleStart=L"Start";
|
const wchar_t* TabTitleStart = L"시작";
|
||||||
const wchar_t* TabTitleModule=L"Module";
|
const wchar_t* TabTitleModule = L"모듈";
|
||||||
const wchar_t* TabTitleState=L"State";
|
const wchar_t* TabTitleState = L"상태";
|
||||||
const wchar_t* SuccessAttach=L"Attach ITH to process successfully.";
|
const wchar_t* SuccessAttach = L"프로세스에 ITH 부착성공.";
|
||||||
const wchar_t* FailAttach=L"Failed to attach ITH to process.";
|
const wchar_t* FailAttach = L"프로세스에 ITH 부착실패.";
|
||||||
const wchar_t* SuccessDetach=L"ITH detach from process.";
|
const wchar_t* SuccessDetach = L"프로세스에서 ITH 탈착성공.";
|
||||||
const wchar_t* FailDetach=L"Detach failed.";
|
const wchar_t* FailDetach = L"ITH 탈착실패.";
|
||||||
//Profile window
|
//Profile window
|
||||||
const wchar_t* ProfileExist=L"Profile already exists.";
|
const wchar_t* ProfileExist = L"프로필이 이미 존재함.";
|
||||||
const wchar_t* SuccessAddProfile=L"Profile added.";
|
const wchar_t* SuccessAddProfile = L"프로필 추가됨.";
|
||||||
const wchar_t* FailAddProfile=L"Fail to add profile";
|
const wchar_t* FailAddProfile = L"프로필 추가실패";
|
||||||
const wchar_t* TabTitleNumber = L"No.";
|
const wchar_t* TabTitleNumber = L"No.";
|
||||||
const wchar_t* NoFile=L"Can't find file.";
|
const wchar_t* NoFile = L"파일을 찾을 수 없음.";
|
||||||
const wchar_t* PathDismatch=L"Process name dismatch, continue?";
|
const wchar_t* PathDismatch = L"프로세스 이름이 일치하지 않습니다, 계속하시겠습니까?";
|
||||||
const wchar_t* SuccessImportProfile=L"Import profile success";
|
const wchar_t* SuccessImportProfile = L"프로필 가져오기 성공";
|
||||||
//const wchar_t* SuccessAddProfile=L"Profile added.";
|
//const wchar_t* SuccessAddProfile=L"Profile added.";
|
@ -50,24 +50,24 @@ DWORD ProcessCommand(const std::wstring& cmd, DWORD pid)
|
|||||||
if (Parse(m[1].str(), hp))
|
if (Parse(m[1].str(), hp))
|
||||||
Host_InsertHook(pid, &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 from = std::stoul(m[1].str(), NULL, 16);
|
||||||
DWORD to = std::stoul(m[2].str(), NULL, 16);
|
DWORD to = std::stoul(m[2].str(), NULL, 16);
|
||||||
Host_AddLink(from, to);
|
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);
|
DWORD from = std::stoul(m[1].str(), NULL, 16);
|
||||||
Host_UnLink(from);
|
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);
|
ConsoleOutput(Usage);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ConsoleOutput(L"알 수 없는 명령어. 도움말을 보시려면, :h 나 :help를 입력하세요.");
|
ConsoleOutput(L"알 수 없는 명령어. 도움말을 보시려면, :h 나 :help를 입력하세요.");
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -14,44 +14,44 @@
|
|||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
const wchar_t* Warning = L"경고!";
|
const wchar_t* Warning = L"경고!";
|
||||||
//command.cpp
|
//command.cpp
|
||||||
const wchar_t* ErrorSyntax = L"명령어 오류";
|
const wchar_t* ErrorSyntax = L"명령어 오류";
|
||||||
const wchar_t* Usage = L"명령어:\r\n\
|
const wchar_t* Usage = L"명령어:\r\n\
|
||||||
\r\n\
|
\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\
|
||||||
로더 옵션:\r\n\
|
로더 옵션:\r\n\
|
||||||
/P[{process_id|Nprocess_name}] //프로세스에 부착\r\n\
|
/P[{process_id|Nprocess_name}] //프로세스에 부착\r\n\
|
||||||
\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\
|
/H[X]{A|B|W|S|Q}[N][data_offset[*drdo]][:sub_offset[*drso]]@addr[:module[:{name|#ordinal}]]\r\n\
|
||||||
\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\
|
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\
|
\r\n\
|
||||||
후킹 종류 :\r\n\
|
후킹 종류 :\r\n\
|
||||||
A - DBCS 문자\r\n\
|
A - DBCS 문자\r\n\
|
||||||
B - DBCS 문자(big-endian)\r\n\
|
B - DBCS 문자(big-endian)\r\n\
|
||||||
W - UCS2 문자\r\n\
|
W - UCS2 문자\r\n\
|
||||||
S - MBCS 문자열\r\n\
|
S - MBCS 문자열\r\n\
|
||||||
Q - UTF-16 문자열\r\n\
|
Q - UTF-16 문자열\r\n\
|
||||||
\r\n\
|
\r\n\
|
||||||
매개변수:\r\n\
|
매개변수:\r\n\
|
||||||
X - 하드웨어 구획점 사용\r\n\
|
X - 하드웨어 구획점 사용\r\n\
|
||||||
N - 문법을 사용하지 않음\r\n\
|
N - 문법을 사용하지 않음\r\n\
|
||||||
data_offset - stack offset to char / string pointer\r\n\
|
data_offset - stack offset to char / string pointer\r\n\
|
||||||
drdo - add a level of indirection to data_offset\r\n\
|
drdo - add a level of indirection to data_offset\r\n\
|
||||||
sub_offset - stack offset to subcontext\r\n\
|
sub_offset - stack offset to subcontext\r\n\
|
||||||
drso - add a level of indirection to sub_offset\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\
|
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\
|
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\
|
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";
|
All numbers except ordinal are hexadecimal without any prefixes";
|
||||||
|
|
||||||
//inject.cpp
|
//inject.cpp
|
||||||
const wchar_t* ErrorRemoteThread = L"원격 스레드를 생성할 수 없음.";
|
const wchar_t* ErrorRemoteThread = L"원격 스레드를 생성할 수 없음.";
|
||||||
const wchar_t* ErrorOpenProcess = L"프로세스를 열 수 없음.";
|
const wchar_t* ErrorOpenProcess = L"프로세스를 열 수 없음.";
|
||||||
const wchar_t* ErrorNoProcess = L"프로세스를 찾을 수 없음";
|
const wchar_t* ErrorNoProcess = L"프로세스를 찾을 수 없음";
|
||||||
const wchar_t* SelfAttach = L"ITH.exe에 부착하지 말아 주세요";
|
const wchar_t* SelfAttach = L"ITH.exe에 부착하지 말아 주세요";
|
||||||
const wchar_t* AlreadyAttach = L"프로세스가 이미 부착됨.";
|
const wchar_t* AlreadyAttach = L"프로세스가 이미 부착됨.";
|
||||||
const wchar_t* FormatInject = L"프로세스 %d에 인젝션. 모듈 기반 %.8X";
|
const wchar_t* FormatInject = L"프로세스 %d에 인젝션. 모듈 기반 %.8X";
|
||||||
//main.cpp
|
//main.cpp
|
||||||
const wchar_t* NotAdmin = L"SeDebugPrevilege을 활성화 할 수 없습니다. ITH가 제대로 작동하지 못합니다.\r\n\
|
const wchar_t* NotAdmin = L"SeDebugPrevilege을 활성화 할 수 없습니다. ITH가 제대로 작동하지 못합니다.\r\n\
|
||||||
관리자 계정으로 실행하시거나 UAC를 끄시고 ITH를 실행해 주세요.";
|
관리자 계정으로 실행하시거나 UAC를 끄시고 ITH를 실행해 주세요.";
|
||||||
//pipe.cpp
|
//pipe.cpp
|
||||||
const wchar_t* ErrorCreatePipe = L"텍스트 파이프를 생성할 수 없거나, 요청이 너무 많습니다.";
|
const wchar_t* ErrorCreatePipe = L"텍스트 파이프를 생성할 수 없거나, 요청이 너무 많습니다.";
|
||||||
const wchar_t* FormatDetach = L"프로세스 %d가 탈착됨.";
|
const wchar_t* FormatDetach = L"프로세스 %d가 탈착됨.";
|
||||||
const wchar_t* ErrorCmdQueueFull = L"명령어 대기열이 가득참.";
|
const wchar_t* ErrorCmdQueueFull = L"명령어 대기열이 가득참.";
|
||||||
const wchar_t* ErrorNoAttach = L"프로세스가 부착되지 않음.";
|
const wchar_t* ErrorNoAttach = L"프로세스가 부착되지 않음.";
|
||||||
|
|
||||||
//profile.cpp
|
//profile.cpp
|
||||||
const wchar_t* ErrorMonitor = L"프로세스를 감시할 수 없음.";
|
const wchar_t* ErrorMonitor = L"프로세스를 감시할 수 없음.";
|
||||||
//utility.cpp
|
//utility.cpp
|
||||||
const wchar_t* InitMessage = L"Copyright (C) 2010-2012 kaosu <qiupf2000@gmail.com>\r\n\
|
const wchar_t* InitMessage = L"Copyright (C) 2010-2012 kaosu <qiupf2000@gmail.com>\r\n\
|
||||||
Copyright (C) 2015 zorkzero <zorkzero@hotmail.com>\r\n\
|
Copyright (C) 2015 zorkzero <zorkzero@hotmail.com>\r\n\
|
||||||
소스코드 <https://code.google.com/p/interactive-text-hooker/>\r\n\
|
소스코드 <https://code.google.com/p/interactive-text-hooker/>\r\n\
|
||||||
일반토론 <https://groups.google.com/forum/?fromgroups#!forum/interactive-text-hooker>\r\n\
|
일반토론 <https://groups.google.com/forum/?fromgroups#!forum/interactive-text-hooker>\r\n\
|
||||||
한글화 @mireado<https://twitter.com/mireado>";
|
한글화 @mireado<https://twitter.com/mireado>";
|
||||||
const wchar_t* BackgroundMsg = L"도움말을 보시려면, \"help\", \"도움말\"이나 \"도움\"을 입력하세요.";
|
const wchar_t* BackgroundMsg = L"도움말을 보시려면, \"help\", \"도움말\"이나 \"도움\"을 입력하세요.";
|
||||||
const wchar_t* ErrorLinkExist = L"연결이 존재함.";
|
const wchar_t* ErrorLinkExist = L"연결이 존재함.";
|
||||||
const wchar_t* ErrorCylicLink = L"연결실패. 순환연결은 허용되지 않습니다.";
|
const wchar_t* ErrorCylicLink = L"연결실패. 순환연결은 허용되지 않습니다.";
|
||||||
const wchar_t* FormatLink = L"출발스레드%.4x에서 도착스레드%.4x로 연결.";
|
const wchar_t* FormatLink = L"출발스레드%.4x에서 도착스레드%.4x로 연결.";
|
||||||
const wchar_t* ErrorLink = L"연결실패. 출발/도착 스레드를 찾을 수 없음.";
|
const wchar_t* ErrorLink = L"연결실패. 출발/도착 스레드를 찾을 수 없음.";
|
||||||
const wchar_t* ErrorDeleteCombo = L"글상자에서 지우기 실패.";
|
const wchar_t* ErrorDeleteCombo = L"글상자에서 지우기 실패.";
|
||||||
|
|
||||||
//window.cpp
|
//window.cpp
|
||||||
const wchar_t* ClassName = L"ITH";
|
const wchar_t* ClassName = L"ITH";
|
||||||
const wchar_t* ClassNameAdmin = L"ITH (관리자)";
|
const wchar_t* ClassNameAdmin = L"ITH (관리자)";
|
||||||
const wchar_t* ErrorNotSplit = L"먼저 문단 나누기를 활성화해주세요!";
|
const wchar_t* ErrorNotSplit = L"먼저 문단 나누기를 활성화해주세요!";
|
||||||
const wchar_t* ErrorNotModule = L"먼저 모듈을 활성화해주세요!";
|
const wchar_t* ErrorNotModule = L"먼저 모듈을 활성화해주세요!";
|
||||||
//Main window buttons
|
//Main window buttons
|
||||||
const wchar_t* ButtonTitleProcess = L"프로세스";
|
const wchar_t* ButtonTitleProcess = L"프로세스";
|
||||||
const wchar_t* ButtonTitleThread = L"스레드";
|
const wchar_t* ButtonTitleThread = L"스레드";
|
||||||
const wchar_t* ButtonTitleHook = L"후킹";
|
const wchar_t* ButtonTitleHook = L"후킹";
|
||||||
const wchar_t* ButtonTitleProfile = L"프로필";
|
const wchar_t* ButtonTitleProfile = L"프로필";
|
||||||
const wchar_t* ButtonTitleOption = L"옵션";
|
const wchar_t* ButtonTitleOption = L"옵션";
|
||||||
const wchar_t* ButtonTitleClear = L"지우기";
|
const wchar_t* ButtonTitleClear = L"지우기";
|
||||||
const wchar_t* ButtonTitleSave = L"저장";
|
const wchar_t* ButtonTitleSave = L"저장";
|
||||||
const wchar_t* ButtonTitleTop = L"항상위";
|
const wchar_t* ButtonTitleTop = L"항상위";
|
||||||
//Hook window
|
//Hook window
|
||||||
const wchar_t* SpecialHook = L"H코드 후킹, AGTH 코드는 지원하지 않습니다.";
|
const wchar_t* SpecialHook = L"H코드 후킹, AGTH 코드는 지원하지 않습니다.";
|
||||||
//Process window
|
//Process window
|
||||||
const wchar_t* TabTitlePID = L"PID";
|
const wchar_t* TabTitlePID = L"PID";
|
||||||
const wchar_t* TabTitleMemory = L"메모리";
|
const wchar_t* TabTitleMemory = L"메모리";
|
||||||
const wchar_t* TabTitleName = L"이름";
|
const wchar_t* TabTitleName = L"이름";
|
||||||
const wchar_t* TabTitleTID = L"TID";
|
const wchar_t* TabTitleTID = L"TID";
|
||||||
const wchar_t* TabTitleStart = L"시작";
|
const wchar_t* TabTitleStart = L"시작";
|
||||||
const wchar_t* TabTitleModule = L"모듈";
|
const wchar_t* TabTitleModule = L"모듈";
|
||||||
const wchar_t* TabTitleState = L"상태";
|
const wchar_t* TabTitleState = L"상태";
|
||||||
const wchar_t* SuccessAttach = L"프로세스에 ITH 부착성공.";
|
const wchar_t* SuccessAttach = L"프로세스에 ITH 부착성공.";
|
||||||
const wchar_t* FailAttach = L"프로세스에 ITH 부착실패.";
|
const wchar_t* FailAttach = L"프로세스에 ITH 부착실패.";
|
||||||
const wchar_t* SuccessDetach = L"프로세스에서 ITH 탈착성공.";
|
const wchar_t* SuccessDetach = L"프로세스에서 ITH 탈착성공.";
|
||||||
const wchar_t* FailDetach = L"ITH 탈착실패.";
|
const wchar_t* FailDetach = L"ITH 탈착실패.";
|
||||||
//Profile window
|
//Profile window
|
||||||
const wchar_t* ProfileExist = L"프로필이 이미 존재함.";
|
const wchar_t* ProfileExist = L"프로필이 이미 존재함.";
|
||||||
const wchar_t* SuccessAddProfile = L"프로필 추가됨.";
|
const wchar_t* SuccessAddProfile = L"프로필 추가됨.";
|
||||||
const wchar_t* FailAddProfile = L"프로필 추가실패";
|
const wchar_t* FailAddProfile = L"프로필 추가실패";
|
||||||
const wchar_t* TabTitleNumber = L"No.";
|
const wchar_t* TabTitleNumber = L"No.";
|
||||||
const wchar_t* NoFile = L"파일을 찾을 수 없음.";
|
const wchar_t* NoFile = L"파일을 찾을 수 없음.";
|
||||||
const wchar_t* PathDismatch = L"프로세스 이름이 일치하지 않습니다, 계속하시겠습니까?";
|
const wchar_t* PathDismatch = L"프로세스 이름이 일치하지 않습니다, 계속하시겠습니까?";
|
||||||
const wchar_t* SuccessImportProfile = L"프로필 가져오기 성공";
|
const wchar_t* SuccessImportProfile = L"프로필 가져오기 성공";
|
||||||
//const wchar_t* SuccessAddProfile=L"Profile added.";
|
//const wchar_t* SuccessAddProfile=L"Profile added.";
|
Loading…
Reference in New Issue
Block a user