Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];

Вниз

Уже вторые сутки не могу прочитать байты из буфера   Найти похожие ветки 

 
Новичоккк   (2006-07-01 11:21) [0]

DLL внедряется в чужое приложение и ставит Hook на SEND из WinSock32.dll.

function MySend(socket: TSocket; var buf; len, flags: Integer): Integer; stdcall;
var
str:string;
begin
Result := TrueSend(socket, StrMess, len, flags);
end;

Как скопировать buf в строку string? Как только не делал - всегда при чтении буфера получаю "Access Violation at address...", хотя если buf не трогать, а просто передать в TrueSend - сетевое приложение работает без ошибок.


 
Kerk ©   (2006-07-01 11:59) [1]

ммм....пальцем в небо...

SetLength строке пробовал?


 
Новичоккк   (2006-07-01 12:17) [2]

function MySend(s: TSocket; var buf; len, flags: Integer): Integer; stdcall;
var
 BufData: pchar;
begin
 Result := 0;
 GetMem(BufData, Result);
 MessageBoxA(0, "BEFORE", "INFO", MB_ICONEXCLAMATION);
 try
   CopyMemory(BufData, @Buf, Result);
   BufData[0]:=chr(0); //ТУТ ВОЗНИКАЕТ ОШИБКА !!!
   CopyMemory(@Buf, BufData, Result);
   MessageBoxA(0, "AFTER", "INFO", MB_ICONEXCLAMATION);
 finally
   FreeMem(BufData);
 end;
 Result := TrueSend(s, Buf, len, flags);
end;

Хотя вроде всё правильно... Помогите решить проблему
---
Вот DLL и программа, которая её внедряет:
http://webfile.ru/1009692 (21кб)
Скомпилируйте оба проекта, запустите Inject.exe, укажите заголовок окна любого сетевого приложения и нажмите кнопку Inject (если увидите сообщение "DLL Injected", значит библиотека внедрена в приложение). Функция Send будет перехвачена, но при отправке сетевым приложением пакета - произойдет критическая ошибка.


 
Ketmar ©   (2006-07-01 12:18) [3]

подземный стук.


 
Ketmar ©   (2006-07-01 12:21) [4]

вах. плакаю не переставая. советую сначала думать, потом писать.

Result := 0;
GetMem(BufData, Result);
да? точно? "GetMem(BufData, 0);" просто таки обязана выделить немеряно памяти?

ну что за манера нынче -- языка толком не знаем, а уже хуки ставим...


 
Юрий Зотов ©   (2006-07-01 13:10) [5]

> Новичоккк   (01.07.06 11:21)  

> Как скопировать buf в строку string?

Точно так же, как и из любого другого буфера-источника в любой другой буфер-приемник.

1. Сначала для буфера-применика выделяем память размером, равным длине буфера-источника (а не ноль, как у Вас).
2. Потом используем CopyMem или Move.

Примечания.
1. Когда буфер-приемник перестанет быть нужным, выделенную под него память не забываем освободить.
2. В качестве буфера-приемника можно использовать и строку - но что Вы с ней будете делать в чужом приложении? Ее можно будет использовать только внутри самой DLL.


 
Desdechado ©   (2006-07-01 15:12) [6]

> Уже вторые сутки не могу прочитать байты из буфера
Пробки, надо полагать. Увеличь буфер, пробки рассосутся :)



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2006.07.30;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.013 c
15-1151842148
SergProger
2006-07-02 16:09
2006.07.30
Индекс символа в PHP


6-1142779386
Godness
2006-03-19 17:43
2006.07.30
Узнать настройки прокси в explorer е


15-1151906609
Кручен-Верчен
2006-07-03 10:03
2006.07.30
Как научиться красиво говорить?


15-1151645539
Ega23
2006-06-30 09:32
2006.07.30
С Днём рождения! 30 июня


15-1151921987
Megabyte
2006-07-03 14:19
2006.07.30
Фрагментация данных и переиндексация в MSSQL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский