以下のインターセプトされた関数では、buff
バッファーへのポインターとして、新しい独自のバッファーを作成せずにデータを変更するにはどうすればよいですか?
int WINAPI OwnRecv(SOCKET s, char FAR *buff, int len, int flags)
{
if(s == ServerSocket)
{
int received = pTrampolineRecv(s, buff, len, flags);
if(received <= 0)
{
return received;
}
unsigned char ReceiveBuffer[1024]; // how can i avoid creatin this by changing buff directly?
do_decrypt((const unsigned char *) buff, ReceiveBuffer, received, KeyTest, NULL);
buff = (char *) ReceiveBuffer;
return received;
}
return pTrampolineRecv(s, buff, len, flags);
}
upd
do_decrypt
関数を追加しました
bool do_decrypt(const unsigned char *in, unsigned char *out, int inlen)
{
int buflen, tmplen;
if(!EVP_DecryptUpdate(&Decrypt_ctx, out, &buflen, in, inlen))
{
return false;
}
if(!EVP_DecryptFinal_ex(&Decrypt_ctx, out + buflen, &tmplen))
{
return false;
}
return true;
}