2015-05-13 4 views
0

Я пытаюсь добавить дополнительный пакет в функцию MyRecv, но я не знаю, почему он не работает. Я попытался разобрать входящие пакеты, и функция работает нормально. Так что, вероятно, мой путь к отправке пользовательского пакета в приложение не соответствует действительности.C++ Обход на winsock recv hooking - пользовательский пакет

В общем предположении я просто хочу отправить подготовленный пакет в приложение. Этот пакет я взял у WPE PRO.

Код с функцией MyRecv:

INT WINAPI MyRecv(SOCKET sock, CHAR* buf, INT len, INT flags) { 
    CHAR buffer[256]; 

    char msg2[] = { 0x1B, 0, 0x04, 0x06, 0, 0x5A, 0x65, 0x6E, 0x74, 0x61, 
        0x78, 0x06, 0, 0x5A, 0x65, 0x6E, 0x74, 0x61, 0x78, 0x05, 0x07, 0, 
        0x66, 0x61, 0x6A, 0x6E, 0x69, 0x65, 0x65 }; 

    int ret = precv(sock, buf, len, flags); 
    if (ret <= 0) { 
    return ret; 
    } 

    if (fake_recv) { 
    char tmp[256]; 
    fake_recv = false; 
    printf("Fake1-> Lenght:%d Size:%d", len, strlen(buf)); 
    strcat(buf, msg2); 
    printf("Fake2-> Lenght:%d Size:%d", len, strlen(buf)); 
    return ret; 
    } 

    return ret; 
} 
+0

код форматирования. –

ответ

0

msg2 не оканчивается нулем строку. На самом деле он имеет внутренний нуль. Поэтому использование strlen() и strcat() с ним никогда не сработает.

Точно так же вы ни знать, ни все равно, что уже в buf, поэтому вызов strcat() и strlen() на это и бессмысленно и опасно: если она не содержит аннулирует на все, что вы чрезмерно запустить его, и в лучшем случае чрезмерно докладе длины, и в худшем случае.

И вы не корректируете ret за дополнительные данные, добавленные в буфер.

И никакая полезная цель не достигается путем объявления неиспользуемой переменной tmp[].

Попробуйте это:

if (fake_recv) {           
    fake_recv = false; 
    printf("Fake1-> Length:%d Received:%d", len, ret); 
    int len2 = min(len-ret, sizeof msg2); 
    memcpy(&buf[ret], msg2, len2); 
    ret += len2; 
    printf("Fake2-> Length:%d Received:%d", len, ret); 
    return ret;   
} 
+0

большое спасибо. – h4b00

 Смежные вопросы

  • Нет связанных вопросов^_^