Как оправлять через c++ данные методом POST на сервер, есть что почитать? Базовые знания есть, создавал сервер который слушает порт, и клиент, который на порт который слушает сервер отправляет данные.
Всем привет. Кому не трудно, набросайте пожалуйста программку, которая Скопирует сама себя в папку C:\Windows Или дайте ссылку на мануалы по этим функциям
qwert135 Если не вдаваться в объяснения. то f''(x) = (f(x_left)-2f(x)+f(x_right))/(h^2) h = |x_left-x|=|x_right-x| = что-то оч. малое x_left-x<0; x_right-x>0; --------------- В общем тут всё понятно, так как вторая производная это производная первой производной...
Можно юзать file_stat Code: // read file status, print size, dates etc #include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int main() { struct stat file_stat; int status; char filename[50]={0}; printf("enter filename ? "); scanf("%s", filename); int fildes = open(filename, O_RDWR); // open file // get file status for details see // http://www.opengroup.org/onlinepubs/007908799/xsh/fstat.html status = fstat(fildes, &file_stat); // get its status // print file status informations for details see // http://www.opengroup.org/onlinepubs/007908799/xsh/sysstat.h.html printf("file %s size %d\n", filename, file_stat.st_size); // print status printf("last access %s\n", ctime(&file_stat.st_atime)); printf("last mofification %s\n", ctime(&file_stat.st_mtime)); printf("last status change %s\n", ctime(&file_stat.st_ctime)); return 0; }
Помогите выгрузить Dll Здравствуйте. У меня есть код инжекта DLL Code: #include <windows.h> #include <stdio.h> #include <tlhelp32.h> #include <shlwapi.h> #include <iostream> using namespace std; #pragma comment(lib, "shlwapi.lib") //I could just use PROCESS_ALL_ACCESS but it's always best to use the absolute bare minimum of priveleges, so that your code works in as //many circumstances as possible. #define CREATE_THREAD_ACCESS (PROCESS_CREATE_THREAD | PROCESS_QUERY_INFORMATION | PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_VM_READ) BOOL WriteProcessBYTES(HANDLE hProcess,LPVOID lpBaseAddress,LPCVOID lpBuffer,SIZE_T nSize); BOOL LoadDll(char *procName, char *dllName); BOOL InjectDLL(DWORD ProcessID, char *dllName); unsigned long GetTargetProcessIdFromProcname(char *procName); bool IsWindowsNT() { // check current version of Windows DWORD version = GetVersion(); // parse return DWORD majorVersion = (DWORD)(LOBYTE(LOWORD(version))); DWORD minorVersion = (DWORD)(HIBYTE(LOWORD(version))); return (version < 0x80000000); } //int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){ int main() { cout << "Hello\n"; Sleep(2000); while(1) { cout << "\n---------------------------------------------\n"; char process[101], dllname[101]; cout << "Enter process name (example: hl.exe)\n"; cin.getline(process, 100); cout << "Enter dll name (example: 1vs16.dll)\n"; cin.getline(dllname, 100); cout << "Try inject...\n"; cout << "Process: " << process << " dll: " << dllname << endl; if(IsWindowsNT()) LoadDll(process, dllname); else cout << "Your system does not support this method"; } return 0; } BOOL LoadDll(char *procName, char *dllName) { DWORD ProcID = 0; ProcID = GetTargetProcessIdFromProcname(procName); cout << "Process ID: " << ProcID << endl; if(!(InjectDLL(ProcID, dllName))) cout << "Process located, but injection failed\n"; else cout << "Successful!\n"; return true; } BOOL InjectDLL(DWORD ProcessID, char *dllName) { HANDLE Proc; char buf[50]={0}; LPVOID RemoteString, LoadLibAddy; if(!ProcessID) return false; Proc = OpenProcess(CREATE_THREAD_ACCESS, FALSE, ProcessID); if(!Proc) { sprintf(buf, "OpenProcess() failed: %d", GetLastError()); cout << buf << endl; return false; } LoadLibAddy = (LPVOID)GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA"); RemoteString = (LPVOID)VirtualAllocEx(Proc, NULL, strlen(dllName), MEM_RESERVE|MEM_COMMIT, PAGE_READWRITE); WriteProcessMemory(Proc, (LPVOID)RemoteString, dllName, strlen(dllName), NULL); CreateRemoteThread(Proc, NULL, NULL, (LPTHREAD_START_ROUTINE)LoadLibAddy, (LPVOID)RemoteString, NULL, NULL); CloseHandle(Proc); return true; } unsigned long GetTargetProcessIdFromProcname(char *procName) { PROCESSENTRY32 pe; HANDLE thSnapshot; BOOL retval, ProcFound = false; thSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if(thSnapshot == INVALID_HANDLE_VALUE) { cout << "Error: unable to create toolhelp snapshot\n"; return false; } pe.dwSize = sizeof(PROCESSENTRY32); retval = Process32First(thSnapshot, &pe); while(retval) { if(StrStrI(pe.szExeFile, procName) ) { ProcFound = true; break; } retval = Process32Next(thSnapshot,&pe); pe.dwSize = sizeof(PROCESSENTRY32); } return pe.th32ProcessID; } он работает. Вопрос - как выгрузить длл, загруженную таким образом, из процеса
В этой строчке? Code: LoadLibAddy = (LPVOID)GetProcAddress(GetModuleHandle("kernel32.dll"), "LoadLibraryA"); LoadLibraryA-> FreeLibrartA ? Пробовал, не выгружается так.
да, точно. функция требует хэндл библиотеки. ну вариантов два - либо через tool help функции обойти все модули в требуемом процессе и найти нужную, либо сделать сделать инъекцию кода который внутри того процесса выполнит GetModuleHandle, FreeLibrary
здрасти в ето строке Code: char** arr=malloc(sizeoff(char*)*count); выдает ерор cannot convert from void to char, как исправить ето?
To olesy: Ошибки говорят о том, что не определены arr и size, следовательно могу предположить что ты просто все скопировал не объявил необходимых переменных. Твой пример будет выглядеть примерно так: Code: char **arr = (char**)malloc( sizeof(char*) * count ); Дабы не возник вопрос типа: Отвечу - необходимо заранее объявить переменную count. Например так: Code: int count = 10;
olesy, ты все со своими заданиями мучаешься? Если в Visual Studio компилируешь, делай примерно так: PHP: #include "stdlib.h" #include "stdio.h" #include "string.h" int main() { int count = 5; int good = 0; int i, j, len, num = 0; char** arr = (char**) malloc(sizeof(char*) * count); arr[0] = "string 1"; arr[1] = "string 2"; arr[2] = "string without numbers"; arr[3] = "also, no numbers"; arr[4] = "str 5"; printf("Strings that do not contain any numbers:\n"); for(i=0; i<count; i++) { good = 1; for(j=0, len = strlen(arr[i]); j < len; j++) { if(arr[i][j] >= 48 && arr[i][j] <= 57) { good = 0; break; } } if(good) { num++; printf("\n%s", arr[i]); } } printf("\n\nTotal number: %u", num); free(arr); return 0; }