Тема: Зчитування та запис у потік на С/С++
Доброго часу доби!
Програма запускає процес, але виводить повідомлення "-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");
    }