Esempio n. 1
0
	ParsedArgument ValidateArguments(SoNewArgumentParser &argParser, int argc, char **argv) {
		
		UIntTypeValidator *inj_validator = new UIntTypeValidator(1, 4);
		UIntTypeValidator *pid_validator = new UIntTypeValidator();
		FilePathValidator *fp_validator = new FilePathValidator();
		SetArguments(&argParser, inj_validator, pid_validator, fp_validator);
		ParsedArgument pa;
		try {
			pa = argParser.parse(argc, argv);
			// check if we're just listing processes first.
			if (pa.hasArgument("-l")) {
				PrintProcessList();
				exit(0);
			}
			if (pa.hasArgument("-h")) {
				ShowUsage(argParser);
				exit(0);
			}
			if (!pa.hasArgument("-p") && !pa.hasArgument("-n"))
				ShowError(argParser, L"Error: We require a process name or pid!");
			if (!pa.hasArgument("-i"))
				ShowError(argParser, L"Error: We require an injection method!");
		} catch(InvalidArgumentException iae) {
			String message = StringToWstring(iae.what());
			ShowError(argParser, message);
		}
		delete inj_validator;
		delete pid_validator;
		delete fp_validator;
		return pa;
	}
Esempio n. 2
0
int main()
{
	DWORD aProcess[1024], cbNeeded, cProcesses;
	unsigned int i;
	if (!EnumProcesses(aProcess, sizeof(aProcess), &cbNeeded)) {
		printf("Enumerate Process is failed!!\n");
		_exit(0);
	}

	cProcesses = cbNeeded / sizeof(DWORD);
	for (i = 0; i < cProcesses; i++) {
		if (aProcess[i] != 0) {
			PrintProcessList(aProcess[i]);
		}
	}
	getchar();
}
Esempio n. 3
0
File: main.cpp Progetto: w4kfu/whook
void test(void)
{
    std::list<PROCESSENTRY32>  lProcess;
    std::list<MODULEENTRY32> lModules;
    DWORD   dwPid = 0;
    std::list<MEMORY_BASIC_INFORMATION> lMemBI;
    std::list<THREADENTRY32> lThreads;
    std::list<LPCVOID> lAddress;
    DWORD dwBaseAddress = 0;
    IMAGE_DOS_HEADER DosHeader;
    IMAGE_NT_HEADERS NTHeader;

    lProcess = GetProcessList();

    PrintProcessList(lProcess);

    dwPid = GetPidProcess("notepad++.exe");
    PrintPidProcess("notepad++.exe", dwPid);

    lModules = GetModuleList(dwPid);
    PrintModulesList(lModules);

    lMemBI = GetMemoryInformation(dwPid);
    PrintMemoryInfo(lMemBI);

    lThreads = GetThreadsList(dwPid);
    PrintThreadsInfo(lThreads);

    SuspendAllThread(dwPid);
    Sleep(1000);
    ResumeAllThread(dwPid);

    lAddress = ScanPattern("\x42\x42\x42", 3, dwPid);
    PrintPatternMatch(lAddress);

    dwBaseAddress = GetRemoteBaseAddress(dwPid);
    printf("BaseAddress = %08X\n", dwBaseAddress);

    DosHeader = GetDosHeader(dwPid);
    PrintDosHeader(&DosHeader);

    NTHeader = GetNTHeader(dwPid);
    PrintNTHeader(&NTHeader);
}
Esempio n. 4
0
int CmdProcessing()
{

	if (!_tcscmp(cmdTokenList[0], _T("exit"))){
		return TRUE;
	}
	else if (!_tcscmp(cmdTokenList[0], _T("pwd")))
	{
		TCHAR cDIR[MAX_STR_LEN];
		GetCurrentDirectory(MAX_STR_LEN, cDIR);

		_tprintf(_T("%s\n"), cDIR);
	}
	else if (!_tcscmp(cmdTokenList[0], _T("cls")))
	{
		_tsystem(_T("cls"));
	}
	else if (!_tcscmp(cmdTokenList[0], _T("start")))
	{
		StartProcess(_T("windows"));
	}
	else if (!_tcscmp(cmdTokenList[0], _T("list")))
	{
		if (!PrintProcessList())
		{
			return -1;
		}
	}
	else if (!_tcscmp(cmdTokenList[0], _T("cd")))
	{
		ChangeCurrentDirectory();
	}
	else if (!_tcscmp(cmdTokenList[0], _T("kill")))
	{
		if (!KillProcess())
		{
			return -1;
		}
	}
	else if (!_tcscmp(cmdTokenList[0], _T("dir")))
	{
		if (!PrintFileList())
		{
			return -1;
		}
	}
	else if (!_tcscmp(cmdTokenList[0], _T("mkdir")))
	{
		if (!MakeDirectory())
		{
			return -1;
		}
	}
	else if (!_tcscmp(cmdTokenList[0], _T("rmdir")))
	{
		if (!RemoveDirectory())
		{
			return -1;
		}
	}
	else if (!_tcscmp(cmdTokenList[0], _T("del")))
	{
		if (!DeleteFile())
		{
			return -1;
		}
	}
	else if (!_tcscmp (cmdTokenList[0], _T("ren")))
	{
		if (!RenameFile())
		{
			return -1;
		}
	}
	else if (!_tcscmp(cmdTokenList[0], _T("help")))
	{
		_tprintf(_T("pwd\t현재 디렉토리를 보여줍니다.\n"));
		_tprintf(_T("cls\t화면을 지웁니다.\n"));
		_tprintf(_T("help\t명령어 목록을 보여줍니다.\n"));
		_tprintf(_T("exit\t프로그램을 종료합니다.\n"));
		_tprintf(_T("echo\t문자열을 출력합니다.\n"));
		_tprintf(_T("start\t프로그램을 실행합니다.\n"));
		_tprintf(_T("list\t실햄중인 프로세스 목록을 보여줍니다.\n"));
		_tprintf(_T("kill\t프로세스를 강제로 종료시킵니다. \n"));
		_tprintf(_T("dir\t현재 디렉토리 하위의 파일 목록을 보여줍니다. \n"));
		_tprintf(_T("mkdir\t현재 디렉토리 하위에 새 디렉토리를 생성합니다. \n"));
		_tprintf(_T("rmdir\t현재 디렉토리 하위의 지정한 디렉토리를 삭제합니다. \n"));
		_tprintf(_T("del\t현재 디렉토리 하위의 지정한 파일을 삭제합니다. \n"));
		_tprintf(_T("ren\t현재 디렉토리 하위의 지정한 파일 이름을 변경합니다.\n"));
		_tprintf(_T("cd\t현재 디렉토리를 변경합니다.\n"));
		_tprintf(_T("history\t지금까지 입력한 명령어 목록을 보여줍니다.\n"));
		_tprintf(_T("type\t파일의 내용을 화면에 출력합니다.\n"));
		_tprintf(_T("sort\t입력한 문자열을 정렬하여 출력합니다.(Ctrl+Z로 종료)\n"));
		_tprintf(_T("!(명령어)\t가장 최근에 수행한 (명령어)를 수행합니다.\n"));
		_tprintf(_T("!!\t바로 전에 수행한 명령어를 실행합니다.\n"));
	}
	else if (!_tcscmp(cmdTokenList[0], _T("echo")))
	{
		EchoString();
	}
	else if (!_tcscmp(cmdTokenList[0], _T("type")))
	{
		TypeTextFile();
	}
	else if (!_tcscmp(cmdTokenList[0], _T("sort")))
	{
		SortString();
	}
	else if (!_tcscmp(cmdTokenList[0], _T("history")))
	{
		PrintHistory();
	}
	else
	{
		StartProcess(cmdTokenList[0]);
	}
	return 0;
}
Esempio n. 5
0
/*
 *
 *  Function: SortProcessList
 *
 *  Purpose: Sorts a given Glist of processess by the giver parameter
 *      
 *  Parameters:
 *            input    	A pointer to the start of the list and a paramenter
 *					 	of how its going to be sorted
 *
 *            output   	A Glist pointer to the start of the ordered list
 *
 */
GList * SortProcessList(GList *processList, enum OPTION param) {
	GList *orderedList = NULL, *i, *j;
	process *temp, *tempNext;
	int elements = 0;

	for (i = processList; i != NULL; i = i->next) { // Iterates over the linked list
		temp = i->data;
		//Choses the criteria to sort 
		int criteria;
		if (param == 0 ) {
			criteria = temp->arrival_time;
		}
		else if (param == 1) {
			criteria = temp->cpu_burst;
		}
		else if (param == 2) {
			criteria = temp->priority;
		}
		else if (param == 3) {
			criteria = temp->timeleft;
		}


		int added = 0;
		if (elements>0)	{ // Is there a element in the new list yet?

			for (j = orderedList; j != NULL; j = j->next) { // Iterate the ordered list
				tempNext = j->data;
				int comparison;
				if (param == 0 ) {
					comparison = tempNext->arrival_time;
				}
				else if (param == 1) {
					comparison = tempNext->cpu_burst;
				}
				else if (param == 2) {
					comparison = tempNext->priority;
				}
				else if (param == 3) {
					comparison= tempNext->timeleft;
				}

				if ((criteria < comparison) && (added == 0)) { 
					// If your parameter is smaller than the next one, you found your place 
					orderedList = g_list_insert_before(orderedList, j, temp);
					added = 1;
				}
			}

			if (added == 0)	{
				// If you are the biggest one, add in th end 
				orderedList = g_list_append(orderedList, temp);
			}
		}
		else { // Add first element in the new list
			orderedList = g_list_append(orderedList, temp);
		}
		elements++;
	}

	#ifdef DEBUG
		printf("Unordered list\n");
		PrintProcessList(processList);
		printf("\nordered list by %d\n",param);
		PrintProcessList(orderedList);
		printf("\n");
	#endif

	//g_list_free_timeSummation(processList);
	return orderedList;
}