|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - Eternal Idol
Páginas: 1 ... 128 129 [130] 131 132 ... 205
3226
« en: Jueves 30 de Noviembre de 2006, 10:59 »
Lo que podes hacer es declarla sin definirla haciendo: extern "C" class SMRpunto3D; y extern "C" class SMRcuaternio; Tal vez eso te ayude ... no es lo ideal pero ... (comente algunas cosas para compilarlo). SMRpunto3D.cpp: #include "SMRpunto3D.h" #include "SMRcuaternio.h" SMRpunto3D SMRpunto3D::GiraByCuaternio(SMRcuaternio c) { c.GetConjugado(); return *this; }
SMRpunto3D.h: extern "C" class SMRcuaternio; extern "C" class SMRpunto3D { private: float valores[3]; public: SMRpunto3D(); SMRpunto3D(float v1,float v2,float v3); SMRpunto3D operator-(const SMRpunto3D& p); int operator*(const SMRpunto3D& p); // prod escalar SMRpunto3D operator*(float escalar); SMRpunto3D operator& (const SMRpunto3D &p); // prod mixto SMRpunto3D& operator = (const SMRpunto3D& p); float& operator [](int i); float *GetVector(){return this->valores;} SMRpunto3D GiraByCuaternio(SMRcuaternio c); float GetNorma(); //friend ostream& operator<<(ostream&, const SMRpunto3D&); };
SMRcuaternio.cpp: #include "SMRcuaternio.h" #include "SMRpunto3D.h" SMRcuaternio::SMRcuaternio(SMRpunto3D euler) { euler.GetVector(); }
SMRcuaternio.h: extern "C" class SMRpunto3D; extern "C" class SMRcuaternio { private: float valores[4]; public: //Constructores SMRcuaternio(); SMRcuaternio(float c0,float c1,float c2,float c3); SMRcuaternio(float ang, /*SMRvector*/int eje); SMRcuaternio(SMRpunto3D euler); //Sobrecarga de Operadores bool operator==(const SMRcuaternio& c); float& operator [](int i); SMRcuaternio operator+(const SMRcuaternio& c); SMRcuaternio operator-(const SMRcuaternio& c); SMRcuaternio operator*(const SMRcuaternio& c); SMRcuaternio operator*(float escalar); SMRcuaternio& operator = (const SMRcuaternio& c); //Otros Metodos SMRcuaternio GetConjugado(); float *GetValQ(){return this->valores;} };
3227
« en: Jueves 30 de Noviembre de 2006, 10:18 »
Creo que lo que deberias evitar es un diseño como ese. ¿No se puede plantear de otra manera? ¿Que clases son esas?
3228
« en: Jueves 30 de Noviembre de 2006, 10:08 »
No voy a ponerme a ver un extracto de codigo de MFC, no tengo tiempo. Pero acabo de poner tu mismo codigo de inicializacion, cambiado las cabeceras de los ejemplos (windows.h y winsock.h) y reemplazado el close por closesocket y funcionan perfectamente bajo Windows.
PD. El cliente recibe y el servidor envia ... como se entera el servidor quien tiene que recibir y cuando ...
3229
« en: Jueves 30 de Noviembre de 2006, 09:55 »
¿Viste los ejemplos? No tenes que usar ni listen, ni accept ni connect para nada.
3230
« en: Jueves 30 de Noviembre de 2006, 08:10 »
Segun recuerdo era asi como decis, proba, hace años que no programo en VB. ¿Queres agregar codigo? Eso es MUCHO mas complejo que obtener el entry point ... el codigo no puede estar en cualquier lado, no podres agregarlo "al final del archivo" tiene que estar en una seccion, ya existente o crear una nueva (si hay lugar) ...
3231
« en: Miércoles 29 de Noviembre de 2006, 23:44 »
El archivo empieza con la cabecera MZ (IMAGE_DOS_HEADER), en la misma hay un campo llamado e_lfanew esa es la cantidad de bytes que tenes que "adelantar" para llegar a las cabeceras PE (IMAGE_PE_HEADERS). En las cabeceras PE vas a encontrar el campo AddressOfEntryPoint en OptionalHeader, ese es el offset del punto de entrada. Ademas ahi tenes tambien ImageBase que te sirve para calcular la direccion virtual (sumando estos dos campos). Y eso seria todo
3232
« en: Miércoles 29 de Noviembre de 2006, 20:12 »
Muchas gracias por tu ayuda. Ahora estoy en casa. Mañana en el trabajo intentaré a ver si consigo algo. La página de ejemplos que has puesto al parecer son en Unix, supongo que no hay diferencia entre Unix y windows no? Un saludo. Practicamente nada, Winsock necesita la inicializacion (que ya tenes) y provee mas funciones pero todas las standard las soporta.
3233
« en: Miércoles 29 de Noviembre de 2006, 20:11 »
No se usa ninguna API necesariamente, tenes que buscar informacion sobre el formato PE y leer el archivo en cuestion (como binario). En concreto necesitas la cabecera MZ (IMAGE_DOS_HEADER) y la cabecera PE (IMAGE_NT_HEADERS). Eso esta definido en winnt.h ... busca mas informacion en Google.
3234
« en: Miércoles 29 de Noviembre de 2006, 18:25 »
El bind no tenes que eliminarlo. Puede ser que estos ejemplos te ayuden: http://pont.net/socket/
3235
« en: Miércoles 29 de Noviembre de 2006, 18:09 »
De aventuras: Indiana Jones y el misterio de la Atlantida (el primer juego de aventuras que me gustó!!!), Sam & Max, Mokey Island.
shoot'em-up : Duke Nukem 3D (me gustaba tanto como el Doom2, pero corría lento en mi PC ), Soldier of fortune, Hitman, Turok, Serious Sam.
Lindo haberlos vivido, para poderlos contar Si, Indiana Jones at the Fate of Atlantis, muy bueno y Sam & Max tambien. Day of the Tentacle ... muchos, muchos de Lucas Arts. Hitman tambien me gusto.
3236
« en: Miércoles 29 de Noviembre de 2006, 16:56 »
No mire el codigo sino lo que comentabas. ¿Cambiaste tambien recv por recvfrom?
3237
« en: Miércoles 29 de Noviembre de 2006, 16:16 »
De nada; en cuanto a depuradores yo uso el WinDbg ya que me permite trabajar tanto en modo Usuario como en modo Kernel. Me parece que ustedes no hacen "hooks" propiamente dichos, los hooks implican modificacion del codigo en tiempo de ejecucion entre otras cosas, sino que hacen una bifurcacion del codigo en el propio ejecutable. Los hooks se usan para modificar el comportamiento de algun modulo, generalmente los del S.O. como puede ser por ejemplo NtCreateProcess. Entonces lo que se hace es modificar los bytes del comienzo de esta funcion para que salte a tu codigo, procesar la llamada (retornando error para ciertos procesos por ejemplo) y despues ejecutar "a mano" las instrucciones que se tuvieron que sobreescribir y continuar con las siguientes mediante un salto al codigo original + X bytes de instrucciones reemplazadas. Suerte con eso y no deberias tener ningun problema
3238
« en: Miércoles 29 de Noviembre de 2006, 15:57 »
De nada y si estan ahi las funciones y variables a lo sumo tendras que poner sus direcciones a mano como esta hecho con lo demas. Solo me queda la duda de como ves las funciones/variables (a menos que esten exportadas por el exe claro).
3239
« en: Miércoles 29 de Noviembre de 2006, 15:43 »
Estuve mirando un poco mas (ayer solo saque los errores del ensamblador) y no pienso perder mi tiempo en esto. Es una especie de "utilidad" de dudosa legalidad (eso en realidad me da igual) que esta "hardcodeada" (todas las funciones que imagino seran del servidor estan puestas a mano con lo cual cualquier diferente version que salga puede que no coincida para nada). Puede que esa funcion que falta tambien tenga que ser encontrada asi ... me da lo mismo. ¿Para que queres esa DLL?
3240
« en: Miércoles 29 de Noviembre de 2006, 15:28 »
Para empezar no es una DLL completa, no tiene DllMain asi que probablemente sea un agregado para un esqueleto ya existente. Ese esqueleto puede ser, seguramente lo sera, codigo o incluso una libreria estatica o codigo objeto (.obj).
No tiene sentido enlazar la DLL en este momento y no lo podras hacer ya que te falta la funcion ChaosMixLog, eso esta en algun lugar de los que digo arriba, incluso puede que este en el servidor que nombras (.exe) o en alguna DLL del mismo, tendrias que investigar otras DLLs de ese servidor para ver como funciona.
El error que ves en el enlazador es por el espacio que dejas entre los : y el mydll.obj, cuando lo pongas sin espacio veras que no es capaz de resolver ni ChaosMixLog ni DllMainCRTStartup.
PD. Tanto MixPrize como CSplinterArmour son externas, solo sirve para ensamblarlas pero la DLL final no tiene que darles valor.
3241
« en: Miércoles 29 de Noviembre de 2006, 15:10 »
Pobrecitos los de SysIternals ... segun comentan Mark se resistio hasta mas no poder y esta muy triste por trabajar en Microsoft como cuenta en su blog Todas las herramientas continuan estando disponibles, la pagina fue mejorada y algunas herramientas actualizadas. Hace ya bastantes años que Mark y David trabajan JUNTO a Microsoft editando Windows Internals y dando conferencias. Ahora ya son empleados en todo derecho. Lo que digo se puede ver en: http://blogs.technet.com/Sysinternals/http://blogs.technet.com/MarkRussinovich/
3242
« en: Miércoles 29 de Noviembre de 2006, 14:36 »
CivCity Rome http://fireflyworlds.com/ccr_index.php
La verdad que nunca me llamaron la atención los juegos de estrategia, pero este me está gustando bastante. De estrategia: Warcraft, Sim City, Cossacks y Patrician se me vienen ahora a la cabeza.
3243
« en: Miércoles 29 de Noviembre de 2006, 10:20 »
No se si proviene de Argentina pero si se usa alla.
3244
« en: Miércoles 29 de Noviembre de 2006, 10:11 »
No sabia que hubieran sacado otro sensible, pero por curiosidad vi ahora una imagen y parece que es en 3D (por cierto que con unos cabezones desorbitados) asi que habra perdido toda su gracia.
Lo que me gustaba del SS es que era dificil llegar a ganar al ordenador y aunque pasaras años jugando aun te podia ganar. Ademas de la cantidad de equipos que tenia creo que de la liga italiana o inglesa llegaba a tener 4 divisiones. Tambien me gustaba que no llevabas el balon pegado a los pies como hacen muchos otros juegos de futbol , y si ibas hacia atras o de manera brusca hacia un lado te dejabas el balon. Y cuando cogia el balon un buen jugador se notaba la velocidad o que podias dar mas efecto a la pelota, se notaba mucho tambien el tiempo de partido cuando llevaban 80 min no corrian tanto , y los diferentes terrenos de juego donde corria mas o menos el balon. Vamos que podran hacer juegos con unos graficos espectaculares, pero no creo que sean tan adictivos Si ... unas cabezas enormes ... un desproposito realmente, el juego tiene bastante jugabilidad (sic) pero no es lo mismo, como decis en el original la pelota se te podia escapar y aca la llevas pegada y los movimientos son algo mas lentos, en el original el jugador hacia EXACTAMENTE lo que uno le decia. Y si ... el manager es insuperable (hablo del SWOS 96/97), 4 ligas de U.K. y de Honduras!  Segun contaban lo de Honduras lo hicieron para una presentacion y asi quedo  Lo mejor sin duda era la posibilidad de ser entrenador de selecciones nacionales ... que tiempos ... en fin que era un arcade de futbol.
3245
« en: Miércoles 29 de Noviembre de 2006, 09:44 »
Como bien dice shakka eso es simplemente una infima parte del trabajo de un S.O., ALGO del FileSystem.
Supongo que no vieron como bootear una maquina asi que mucho menos les va a pedir que hagan un FS por su cuenta entonces lo que seguramente debian haber hecho es un simple "file commander" tipo Norton Commander. Para eso podes usar la API del S.O., si es para MS-DOS busca las interrupciones necesarias y si es para Windows en la MSDN tenes toda la informacion necesaria.
3246
« en: Miércoles 29 de Noviembre de 2006, 09:40 »
Ya lo hice, gracias por tu ayuda. A ver, si yo el ejemplo que me pusiste lo entiendo, entiendo lo que quieres decir, el puntero modifica su valor apuntado cada vez que algo llama a la funcion... Lo mismo que en el caso de int, char se pasa por valor y no por referencia.
3247
« en: Miércoles 29 de Noviembre de 2006, 09:38 »
Porque tiene que ser "char*"? no estabamos devolviendo antes cad? que deberia ser lo mismo que &cad? cad es char[5] y &cad es char(*)[5], char[5] es convertido automaticamente a char*. Pero cambia, porque invocaste a la funcion primero con 3 y luego con 77, entonces logicamente, la direccion de memoria de v contendra el ultimo valor que le diste, en este caso 77, y te imprime de hecho 77. Pero en el caso que yo puse arriba, invoque a la funcion solo con un valor, solo una vez, y sin embargo, la pila es modificada mientras que con "&v" no. Las variables LOCALES tienen un ambito restringido a la funcion, eso viene en cualquier libro de C basico. Este tipo de variables usa la pila y el punto es que la pila es totalmente volatil, no podes usarla, no tiene importancia que durante un X tiempo tu valor sea valido ya que no sabes si lo seguira siendo y lo mas probable es que NO lo sea. En tu caso es la funcion printf la que cambia el valor, al entrar y poner tres registros en la pila (ebx, esi y edi). En el caso del int si funciona ya que a printf se le pasa directamente el VALOR y no un puntero al valor. Todo esto se ve muy claramente si depuras el programa: #include<stdio.h> #include<string.h> #include<stdlib.h> typedef char *Pchar; typedef char cadena[5]; Pchar devuelve(int); int *dame(int); void main() { printf("%s",devuelve(1)); printf("%d\r\n", *dame(3)); } int *dame(int t) { int x = t; return &x; } Pchar devuelve(int i) { cadena cad; if (i==0) strcpy(cad," cero"); else strcpy(cad," uno"); return cad; }
En el caso de devuelve pasa esto: push 1 call devuelve add esp, 4;arregla la pila push eax;en eax esta la direccion de memoria devuelta por devuelve push offset $SG1245;"%s" call _printf
Al entrar printf modifica la pila. En el caso de dame pasa esto: push 3 call dame add esp, 4;arregla la pila ;en este punto eax es la direccion de memoria devuelta por dame mov eax,dword ptr [eax] ;ahora es el valor contenido por esa direccion de memoria push eax;que es pasada como parametro aca push offset $SG1246;"%d" call _printf
Entonces no importa si el contenido de la direccion de memoria varia ya que %d es pasado por valor.
3248
« en: Miércoles 29 de Noviembre de 2006, 09:15 »
Mofar lo podes buscar en el diccionario y es un sinonimo de burlar.
Bardear en este caso podria ser agredir pero basicamente lo que decia es que se podia explicar con mas tacto (no estoy de acuerdo).
3249
« en: Miércoles 29 de Noviembre de 2006, 08:17 »
De nada; CreateProcess te devuelve un handle al proceso sobre el cual podes hacer un WaitForSingleObject y tambien podes probar con ShellExecuteEx que tiene un campo del mismo tipo en la estructua que usa. http://msdn.microsoft.com/library/default....llexecuteex.aspNo hay NADA que puedas hacer en lenguajes desconocidos de cuarta categoria que no puedas hacer en C.[/size]
3250
« en: Miércoles 29 de Noviembre de 2006, 08:06 »
De nada, poniendo lo que te dije podes ensamblarlo con MASM perfectamente pero para que te sea util necesitas otros archivos ... busca el codigo en Google ... esto es una DLL para un juego sino me equivoco ...
Páginas: 1 ... 128 129 [130] 131 132 ... 205
|
|
|