StillPhelix
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Доброе время суток! Программа запускает процесс, и выводит сообщение "-ERR:incorrect ver!". А должна заменить байты в потоке. Исходник приведен ниже. Помогите разобраться! #include <stdio.h> #include <malloc.h> #include <Windows.h> int main(int c, char **v) { DWORD N; STARTUPINFO si; _PROCESS_INFORMATION pi; unsigned char *buf; // данные для замены unsigned char x_old[] = {0x74,0x17}; // оригинальные байты unsigned char x_new[] = {0x90,0x90}; // заменяемые байты int x_off = 0x0056912C; // адрес для замены memset(&si,0,sizeof(si)); buf=(unsigned char*)malloc(sizeof(x_old)); // запуск процесса для замены if (!CreateProcess(0,GetCommandLine()+strlen(v[0])+((GetCommandLine()[0]=='\"')?3:1),0,0,0,0,0,0,&si,&pi)) return printf("-ERR:run %s\x7\n",GetCommandLine()+strlen(v[0])+((GetCommandLine()[0]=='\"')?3:1)); // ждем завершения распаковки for (N=0;N<69;N++) {printf("pls,wait:%c\r","-\\|/"[N%4]); Sleep(100);} // начинаем замену printf("ok\n"); // проверка версии программы ReadProcessMemory(pi.hProcess, &x_off, buf, sizeof(x_old), &size); if (N != sizeof(x_old)) return printf("-ERR:reading vm-memory!\x7\n"); if (memcmp(x_old,buf,sizeof(x_old))) return printf("-ERR:incorrect ver!\x7\n"); // делаем замену WriteProcessMemory(pi.hProcess, &x_off,x_new,sizeof(x_new),&N); if (N != sizeof(x_new)) return printf("-ERR:writing vm-memory!\x7\n"); } |