Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Асинхронный режим в WinInet (https://forum.antichat.xyz/showthread.php?t=99307)

JuliaSmit 03.01.2009 20:01

Асинхронный режим в WinInet
 
Ну собственно хотелось бы наглядно понять что это такое асинхронный режим и с чем его едять. Ну и проблема вот такого рода у меня необходимо считать данные при перехвате функции InternetReadFileEx делаю так.

Код:

type
far_jmp = packed record
  PuhsOp: byte;
  PushArg: pointer;
  RetOp: byte;
 end;

 OldCode = packed record
  One: dword;
  two: word;
 end;

var

 JmpZwq9: far_jmp;
 OldZwq9: OldCode;
 PtrZwq9: pointer;


function TrueInternetReadFileEx(hFile: HINTERNET;  lpBuffersOut: Pointer;
  dwFlags: DWORD; dwContext: DWORD): BOOL; stdcall;
var
 Written:Dword;
begin
WriteProcessMemory(INVALID_HANDLE_VALUE, PtrZwq9,@OldZwq9, SizeOf(OldCode), Written);
Result:= InternetReadFileEx(hFile,lpBuffersOut,dwFlags,dwContext);
WriteProcessMemory(INVALID_HANDLE_VALUE, PtrZwq9,@JmpZwq9, SizeOf(far_jmp), Written);
end;



function NewInternetReadFileEx(hFile: HINTERNET;  lpBuffersOut: Pointer;
  dwFlags: DWORD; dwContext: DWORD): BOOL; stdcall;
var
 Rec:PInternetBuffers;
 F:File of Byte;
begin;
Result:=TrueInternetReadFileEx(hFile,lpBuffersOut,dwFlags,dwContext);
Rec:=lpBuffersOut;


AssignFile(F,'c:\1.data');
Rewrite(F);
BlockWrite(F,Rec^.lpvBuffer,Rec^.dwBufferLength);
CLoseFile(F);
end;


Procedure HookInternetReadFileEx;
var
 Written:DWord;
 Lib:Cardinal;
begin
Lib:=GetModuleHandle('wininet.dll');
if Lib=0 then
  Lib:=LoadLibrary('wininet.dll');

PtrZwq9  := GetProcAddress(Lib,'InternetReadFileExA');
ReadProcessMemory(INVALID_HANDLE_VALUE, PtrZwq9, @OldZwq9, SizeOf(OldCode), Written);
JmpZwq9.PuhsOp  := $68;
JmpZwq9.PushArg := @NewInternetReadFileEx;
JmpZwq9.RetOp  := $C3;
WriteProcessMemory(INVALID_HANDLE_VALUE, PtrZwq9, @JmpZwq9, SizeOf(far_jmp), Written);
end;

Получаю вместо html данных какой то бред ((( Вообщем трабл тут function NewInternetReadFileEx
может я не правельно понемаю структуру InternetBuffers или обращаюсь к указателю на html код незнаю... Помогите чем могите :-)

Основная задача изменять HTML данные в этой функции она вызываеться при обнавлении страницы.

p.S. С Новым Годом...

bons 04.01.2009 17:55

попробуй так
Код:

BlockWrite(F,Rec^.lpvBuffer^,Rec^.dwBufferLength);
Если не помогло то укажи пожалуйста как у тебя описана структура PInternetBuffers


Время: 00:24