mira si el compilador que usas te deja especificar el subsystem y le pones gui, si no te deja igual te detecta al modificar al flag pq esta mal el cheksum.
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCitarNo he dicho que no tenga el manejador, el manejador lo tengo la cosa es como enviar al cliente por el socket ya abierto puesto que send envía al servidor.
CitarIf no error occurs, recv returns the number of bytes received and the buffer pointed to by the buf parameter will contain this data received. If the connection has been gracefully closed, the return value is zero.
CitarNo sé como dices que de la manera que explicas te funcione, posiblemente sigues sin entender el problema que tengo.
Citar
Este es la función hookeada, el packet 0x283 es el de cuando el jugador accede al juego, lo que hace es crear otro thread para enviar el broadcast una vez que ha entrado al juego (esto es lo que hice rápido a tu manera pero de la forma que yo quiero).
Citar
porque habrá que ejecutar la función (la cual no sé cómo será, tal vez estoy hoy espeso) para enviarle los datos al EXE.
Citar
P.D: Para que me entiendas, yo no quiero modificar lo que recibe el EXE (esto ya lo hago para otras cosas), lo que quiero es enviar algo nuevo al EXE desde el dll.
Citar
Ya me rindo en explicártelo, así no se puede, no se puede porque aunque ejecutas el recibir del EXE (el hookeado) EL BUFFER RESULTANTE no lo LEERÁ el EXE porque has ejecutado la función desde otra función en el DLL, la única manera de hacerlo como he dicho 10 veces es que cuando SE EJECUTE el recibir, modifiques el buffer y así el buf resultante pase al EXE.
CitarEse código que me pusiste me resulta un poco tonto, tengo poco nivel de ingeniería inversa pero sé leer la documentación de msdn y ejecutar recv.. de hecho sin eso nunca podría haber hecho un hook.
CitarYa me rindo en explicártelo, así no se puede, no se puede porque aunque ejecutas el recibir del EXE (el hookeado) EL BUFFER RESULTANTE no lo LEERÁ el EXE porque has ejecutado la función desde otra función en el DLL
do {
iResult = recv(ConnectSocket, recvbuf, recvbuflen, 0);
if ( iResult > 0 )
printf("Bytes received: %d\n", iResult);
else if ( iResult == 0 )
printf("Connection closed\n");
else
printf("recv failed: %d\n", WSAGetLastError());
} while( iResult > 0 );
Citar
"r" Open a file for reading. The file must exist.
"w" Create an empty file for writing. If a file with the same name already exists its content is erased and the file is treated as a new empty file.
"a" Append to a file. Writing operations append data at the end of the file. The file is created if it does not exist.
"r+" Open a file for update both reading and writing. The file must exist.
"w+" Create an empty file for both reading and writing. If a file with the same name already exists its content is erased and the file is treated as a new empty file.
"a+" Open a file for reading and appending. All writing operations are performed at the end of the file, protecting the previous content to be overwritten. You can reposition (fseek, rewind) the internal pointer to anywhere in the file for reading, but writing operations will move it back to the end of file. The file is created if it does not exist.
Citar
int recv(
__in SOCKET s,
__out char *buf,
__in int len,
__in int flags
);
Citar
con esto puedo recibir, modificar lo que recibe el EXE, leer lo que recibe.. etc, pero no puedo hacer que reciba algo nuevo al EXE..
CitarDesde que empezaste a responder en el tema sabía que no podías resolverme mi duda principal