Главная страница
    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.012 c
2-1152634378
AlonZo
2006-07-11 20:12
2006.07.30
Занесение системной даты в Edit


15-1151649322
antonn
2006-06-30 10:35
2006.07.30
небольшой вопрос по веб-программингу


15-1151578256
Gero
2006-06-29 14:50
2006.07.30
Прием денег кредитными карточками


4-1144750855
The_Kurs
2006-04-11 14:20
2006.07.30
Составление списка активных окон в системе из сервиса


2-1152188298
FFFF
2006-07-06 16:18
2006.07.30
В запросе не работает "NZ"





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский