Проблемы при реализации подмены котента.

Тема в разделе "WASM.BEGINNERS", создана пользователем Active, 6 апр 2007.

  1. Active

    Active New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2007
    Сообщения:
    38
    Столкнулся с проблемой при такой реализации подмены контента:
    Перехватывается recv() из wsock32. В перехватчике вызываем оригинальную функцию с переданными ей параметрами, изменяем полученные данные в буфере, подсчитываем количество возвращенных байт с учетом изменений, которое возвратит (в eax) наш перехватчик.

    Изменение данных производится только при получении конкретной (заранее указанной) страницы. Изменяются только ссылки (причем "обрезанные" с начала или с конца пакета ссылки игнорируются) и повреждение html кода исключено. Просто отдельный пакет может вырасти (уменьшиться) в размерах, но это, как уже сказано, мы прочитываем. Все возвращаемые recv() данные, не содержащие html код передаются браузеру в первоначальном виде.

    - если следовать вышеописанному способу, то после подгрузки первого измененного пакета (при низкой скорости соединения это можно даже увидеть) браузер (был использован Internet Explorer) вылетает с ошибкой, мол "страница не найдена". Если не учитывать изменения и просто вернуть в качестве количества возвращенных байт оригинальное значение, то та же ошибка вылетает после загрузки примерно трети страницы (по разному - 5-го или 6-го измененного пакета, номера пакетов беру исходя из счетчика, прописанного в перехватчике). Само собой, необходимо, чтобы грузилась вся страница и желательно без ошибок - подскажите пожалуйста, где ошибка в моих выкладках? Может быть для IE важен определенный размер пакета?
     
  2. roman_pro

    roman_pro New Member

    Публикаций:
    0
    Регистрация:
    9 фев 2007
    Сообщения:
    291
    Думаю дело в том, что от сервера приходит в заголовке ответа поле Content-Length: некоторое число, после чего IE видимо пытается читать ровно столько байт, сколько было в этом поле, но после ваших махинаций размер изменяется, вот IE и капризничает...
     
  3. Active

    Active New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2007
    Сообщения:
    38
    Я тоже сначала так думал, но оказалось что Content-Length в заголовке нет.
     
  4. Active

    Active New Member

    Публикаций:
    0
    Регистрация:
    20 фев 2007
    Сообщения:
    38
    Сколько ни ломаю голову, кроме Content-Length ничего на ум не приходит. Есть какая-то другая причина, но уже потерял надежду самостоятельно ее определить. Неужели ни кто не интересовался ньюансами подмены? Помогите пожалуйста хоть ссылкой или намеком на особенности работы IE (а лучше браузеров вообще) с пакетами.