J'utilise Deviare de Nektra pour accrocher les appels de méthodes d'envoi de winsock. Mon idéia est d'apprendre à envoyer aussi des messages par le même socket que l'application originale. Donc ce que je fais c'est quand je détecte le premier appel à envoyer un message, je sauvegarde l'identifiant de socket (le premier argument de la fonction d'envoi), donc je peux l'utiliser plus tard.Envoyer une chaîne avec des sockets (pas si facile!)
Alors, voici mon code:
uint socket = 0;
[DllImport("Ws2_32.dll")]
private static extern int send(uint socket, string buf, int len, int flags);
void _proxy_OnFunctionCalled(DeviareTools.IProcess proc, DeviareParams.ICallInfo callInfo, Deviare.IRemoteCall rCall)
{
socket = (uint)callInfo.Params.get_Item(0).Value;
}
et plus tard
int ret = send(socket, "ABC", 3, 0);
MessageBox.Show(ret.ToString());
Ce dernier est messagebox POPING toujours -1. Pourquoi devrait-il être cela?
Merci
modifier: l'appel retourne WSAGetLastError() 2. Ce que je ne sais pas ce que cela signifie, car il ne semble pas apparaître sur msdn.
Il a une certaine valeur, 1564, en ce moment. –
Eh bien, je fixe la valeur du socket à 123 et il apparaît la même erreur. Étrange. Alors peut-être que ça a quelque chose à voir avec l'id de la socket qui n'est pas valide? Je ne comprends pas pourquoi. –