여기 거래가 있습니다. 타겟 프로세스에 DLL을 주입하고 레지스터 중 일부를 읽도록하겠습니다. 문제는 내 함수가 호출 될 때마다 내가 잡아야하는 콘텐츠의 크기가 끊임없이 변화한다는 것입니다.알몸 함수의 동적 크기 배열
벡터를 사용할 수 없기 때문에 미리 크기를 모르는 바이트 배열을 저장하는 경우 어떻게해야합니까?
여기 내 코드가 있는데, 분명히 C3068 때문에 컴파일되지 않습니다.
__declspec(naked) void _LocalHandleMessage()
{
__asm {
// Here i obviously have to store the data i'm sending to HandlePaquet
sub esp, __LOCAL_SIZE
pushad
pushfd
}
{
DWORD opcode;
DWORD size;
std::vector<BYTE> packetContent;
HandlePaquet(opcode, size, packetContent, true);
}
__asm {
popfd
popad
add esp, __LOCAL_SIZE
retn
}
}
또한, 나는 대상 프로세스에 클래스 멤버 메소드의 주소를 삽입 할 수 있기를 바라지 만 그것은 내가 충분히 구글 didnt는하지 않는 한이 불가능 보인다. 에서 VirtualAlloc - 데이터를 저장하는 데
왜 벡터를 사용할 수 없습니까? 어떤 이유로 동적 메모리 할당을 일반적으로 사용할 수 없기 때문입니까? –
정확히,이 바이트들을 하나의 유일한 컨테이너에 넣어야합니다. 그 기능은 알몸이기 때문에 벡터는 받아 들여지지 않을 것입니다. 그냥 객체를 선언하고 컴파일러가 파산 할 나체 함수를 컴파일 해보십시오. – Warpten
왜 정적 또는 전역 벡터를 사용하지 않습니까? –