Но вместо валидной инфы вижу порнуху (в обоих случаях получения контекста - см. код). Подскажите, где ошибся (хотя есть подозрения, что дело, все-таки, в самостоятельности Делфей):
- Код: Выделить всё
function _handler(Exception: PExceptionRecord; EstablisherFrame: DWORD; Context: PContext; DispContext: DWORD): DWORD; cdecl;
var
c: _CONTEXT;
begin
ShowMessage('EDI: ' + IntToHex(Context.Edi, 8) + #13#10 +
'ESI: ' + IntToHex(Context.Esi, 8) + #13#10 +
'EBX: ' + IntToHex(Context.Ebx, 8) + #13#10 +
'EDX: ' + IntToHex(Context.Edx, 8) + #13#10 +
'ECX: ' + IntToHex(Context.Ecx, 8) + #13#10 +
'EAX: ' + IntToHex(Context.Eax, 8) + #13#10 );
c.ContextFlags := CONTEXT_FULL;
GetThreadContext(hThread, c);
ShowMessage('GetThreadContext' + #13#10 + 'EDI: ' + IntToHex(C.Edi, 8) + #13#10 +
'ESI: ' + IntToHex(C.Esi, 8) + #13#10 +
'EBX: ' + IntToHex(C.Ebx, 8) + #13#10 +
'EDX: ' + IntToHex(C.Edx, 8) + #13#10 +
'ECX: ' + IntToHex(C.Ecx, 8) + #13#10 +
'EAX: ' + IntToHex(C.Eax, 8) + #13#10 );
end;
procedure ThreadProc(lpParam: pointer); stdcall;
asm
//int 3
push offset _handler
xor eax, eax
push fs:[eax]
mov fs:[eax], esp
mov ebx, $12345678
mov [eax], eax
end;
procedure TForm1.Button3Click(Sender: TObject);
var
ThId: DWORD;
begin
hThread := CreateThread(nil, 0, @ThreadProc, nil, 0, ThId);
end;
[Хакер] :: Перенесено в Народный Треп. Вопросы, не связанные с VB, могут быть только здесь.