|
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 ... 130 131 [132] 133 134 ... 205
3276
« en: Sábado 25 de Noviembre de 2006, 15:51 »
El usuario debe tener instalado el certificado privado para poder acceder al instalador , así que accede y queda instalado, pero no puede instalarlo en otra máquina porque el HDWRE ID cambia y la validación del certificado daría invalido, adicionalmente al día siguiente se vence el certificado así que menos podrá volverlo a insatalar en la máquina. ¿Y que le impide copiar el programa a otra maquina despues de instalarlo?
3277
« en: Sábado 25 de Noviembre de 2006, 12:56 »
Pido por favor a algun moderador o administrador de la web q borre mi registro de usuario ya q por lo visto no se puede preguntar nada. Solo haces una pregunta y parece q a la gente le molesta. Deberian hacerlo ya que sos un mal educado y mentiroso; se te explico de muy buena gana como funciona el foro.
3278
« en: Sábado 25 de Noviembre de 2006, 10:32 »
La única manera (en caso que esté en cd) es que se atentifique a través de la web antes de seguir ejecutandose, y que cada ejecutable sea diferente por supuesto con una clave que coincida con otra que exista en el servidor, y se desactive.
Por supuesto que se puede crackear, pero no es tan facil, si el programa se actualiza frecuentemente puedes cambiar la web y además. Lo mismo que con los dongles: mucho cuidado de hacer miles de comprobaciones para que al final sea cambiar un par de instrucciones en el ejecutable para que funcione. Realmente hay que preguntarse si vale la pena el esfuerzo, si tu producto es interesante habra gente que pague por el pero mucha mas que lo consiga gratis, alguien lo crackeara y sin ningun problema. Sino ver los juegos ... cada vez hacen sistemas mas complejos y cada vez son crackeados ...
3279
« en: Sábado 25 de Noviembre de 2006, 10:27 »
Tenemos TODOS que hacer un mayor esfuerzo, no podemos estar esperando siempre que nos den la comida en la boca. #include <windows.h> #pragma comment(lib, "advapi32") void main() { HKEY hKey = 0; LONG Ret = RegCreateKeyEx(HKEY_LOCAL_MACHINE, "Software\\Prueba", 0, 0, 0, KEY_ALL_ACCESS, 0, &hKey, 0); if (Ret == ERROR_SUCCESS) { RegCloseKey(hKey); } }
3280
« en: Sábado 25 de Noviembre de 2006, 10:03 »
3282
« en: Sábado 25 de Noviembre de 2006, 09:51 »
Bueno, no se si sera conveniente seguir este hilo pero bueno... Lo correcto seria crear el/los foro/s de el/los lenguaje/s en cuestion ya que este es para otros lenguajes.
3283
« en: Viernes 24 de Noviembre de 2006, 18:18 »
3284
« en: Viernes 24 de Noviembre de 2006, 10:41 »
Uff la lista es interminable ... me gustan un par de generos por sobre los demas.
Deportes: EA Rugby Sensible World of Soccer Top Spin Virtua Tennis Winning Eleven
Aventura grafica: Broken Sword Gabriel Knight Monkey Island Secret Files: Tunguska Sherlock Holmes
3285
« en: Jueves 23 de Noviembre de 2006, 21:58 »
¿Alguna vez se preguntaron que hace la instruccion return de CC++ y porque estamos limitados a devolver un solo valor cuando podemos pasarle varios a una funcion? ¿Que es lo que hace la instruccion return? Algo muy simple que es ajustar la pila segun la llamada, darle un valor a eax y saltar a la instruccion siguiente a la que llamo a nuestra funcion. Lo que nos interesa es esto __asm { mov eax,valor }
En Windows el valor que devuelve una funcion se guarda en el registro eax; pero eax no es el unico registro que existe ni mucho menos, existen 4 registros de uso general (eax,ebx,ecx y edx). eax viene de acumulador, ebx de base (no lo podemos usar para devolver nada porque Windows lo maneja), ecx de contador y edx de dato. Entonces tenemos 2 lugares mas donde devolver valores de una funcion, como si tuvieras un return1, return2 y un return3!!. Vamos a ver un ejemplo muy simple para empezar: #include <windows.h> void SayLong(int number) { char Data[5]; ltoa(number,Data,10); MessageBox(0,Data,"El Numero",0); } int mi_funcion() { //__asm mov eax,76 return 76; } void main() { DWORD Resultado = 0; Resultado = mi_funcion(); SayLong(Resultado); }
Que hace este programa? Algo muy simple muestra con un MessageBox el valor que devuelve la funcion mi_funcion, pero esto nos va a servir para demostrar lo que les conte antes; descomenten la linea que comienza con __asm (le dice al compilador que escriba una o varias instrucciones de ensamblador) y comenten la que empieza con return. Que funciona exactamente igual? Si, si, Windows devuelve el valor de una funcion en eax. Ahora vamos a lo bueno, si no existe solo eax y tambien tenemos 2 registros como ecx y edx eso significa que podemos devolver hasta 3 valores de una funcion! #include <windows.h> void SayLong(int number) { char Data[5]; ltoa(number,Data,10); MessageBox(0,Data,"El Numero",0); } void return1(DWORD Valor) { __asm mov eax,Valor } void return2(DWORD Valor) { __asm mov ecx,Valor } void return3(DWORD Valor) { __asm mov edx,Valor } void sin_valor(); void main() { DWORD Valor1,Valor2,Valor3; sin_valor(); __asm mov Valor1,eax __asm mov Valor2,ecx __asm mov Valor3,edx SayLong(Valor1); SayLong(Valor2); SayLong(Valor3); } void sin_valor() { return1(66); return2(75); return3(99); }
Finalmente ahora viene lo bueno, creamos un array de punteros (tipo string) en una funcion y la utilizamos en otra: #include <windows.h> void SayLong(int number) { char Data[5]; ltoa(number,Data,10); MessageBox(0,Data,"El Numero",0); } void return1(DWORD Valor) { __asm mov eax,Valor } DWORD Trozear(char *str) { DWORD Max = strlen(str); DWORD Palabras = 0; char **str_array = (char**)malloc(1*4); //un solo puntero a string str_array[0] = (char*)malloc(1024); ZeroMemory(str_array[0],1024); for (int x = 0;x < Max;x++) { DWORD Pos = strlen(str_array[Palabras]); if (str[x] == 32) { Palabras++; str_array = (char**)realloc(str_array,(Palabras+1)*4); str_array[Palabras] = (char*)malloc(1024); ZeroMemory(str_array[Palabras],1024); } str_array[Palabras][Pos] = str[x]; str_array[Palabras][Pos+1] = 0; } __asm { mov ecx,[str_array] } return Palabras+1; } void main() { DWORD Palabras = 0; char *texto = (char*)malloc(1024); strcpy(texto,"Esta es una prueba para que separe por espacios"); Trozear(texto); char **str_ptr; __asm mov Palabras,eax __asm mov [str_ptr],ecx SayLong(Palabras); for (int y = 0;y < Palabras;y++) { MessageBox(0,str_ptr[y],"Palabra",0); free(str_ptr[y]); } free(str_ptr); free(texto); }
Bueno, espero que les haya gustado, se que ya habra algunos diciendome que podria haber usado un doble puntero en el prototipo de la funcion y obtener el mismo resultado; si, pero sin saber como funciona. Por cierto en mi trabajo utilize este metodo para devolverme otros valores de una DLL creada por una compañera, asi seguia siendo compatible (en cuanto a parametros). Saludos, Mariano. Autor: Mariano Ventaja http://www.c0d3rz.com.arDescarga: http://www.c0d3rz.com.ar/foro/viewtopic.php?t=53
3286
« en: Jueves 23 de Noviembre de 2006, 21:56 »
3287
« en: Jueves 23 de Noviembre de 2006, 08:21 »
¿Para Windows hay algo como STDIN, STDOUT? Es decir, hay algo llamado standar I/O streams como archivos o todo se haria por stdio.h? Podes usar stdin y stdout para leer y escribir y en realidad si estas en Windows todo se "haria" por Windows.h para tener maximo control ... http://msdn2.microsoft.com/en-us/library/3...kth(VS.80).aspx
3288
« en: Jueves 23 de Noviembre de 2006, 08:16 »
Como podes ver en mi mensaje y en el codigo que te dejaron la comparacion no se hace contra 0 o 9 sino contra '0' y '9' osea contra sus equivalentes en ASCII. Lo mismo va para las mayusculas y minusculas.
podrrido: por favor que no se haga costumbre poner el codigo con la resolucion como primera medida, asi no aprende nadie.
3289
« en: Jueves 23 de Noviembre de 2006, 08:12 »
Tal como los recibis (que es en decimal) los vas poniendo uno al lado del otro (en bytes consecutivos quiero decir) y el ultimo tiene que ser un 0. Creo recordar que en MS-DOS se terminaban las cadenas con $ en vez de con 0 ... busca en Google o proba.
3290
« en: Jueves 23 de Noviembre de 2006, 08:09 »
Si, es bastante simple, de nada.
3291
« en: Miércoles 22 de Noviembre de 2006, 22:37 »
Eternal, aquí están esas macros: Debug function reference Habia visto algo por Google pero no esta pagina, igual lo mas interesante es esto: Macro Required Header Compatibility _RPT macros <crtdbg.h> Win NT, Win 95_RPTF macros <crtdbg.h> Win NT, Win 95
3292
« en: Miércoles 22 de Noviembre de 2006, 20:44 »
Y esta "gran" parodia de Let it be: Write in C When I find my code in tons of trouble, Friends and colleagues come to me, Speaking words of wisdom: "Write in C." As the deadline fast approaches, And bugs are all that I can see, Somewhere, someone whispers: "Write in C." Write in C, Write in C, Write in C, oh, Write in C. LOGO's dead and buried, Write in C. I used to write a lot of FORTRAN, For science it worked flawlessly. Try using it for graphics! Write in C. If you've just spent nearly 30 hours Debugging some assembly, Soon you will be glad to Write in C. Write in C, Write in C, Write in C, yeah, Write in C. Only wimps use BASIC. Write in C. Write in C, Write in C Write in C, oh, Write in C. Pascal won't quite cut it. Write in C. Write in C, Write in C, Write in C, yeah, Write in C. Don't even mention COBOL. Write in C.
3293
« en: Miércoles 22 de Noviembre de 2006, 16:48 »
Ven, dime eso de las 10 personas que existen - La verdad no entendi - . Sos de la clase que no sabe binario  10 en binario es 2 en decimal
3294
« en: Miércoles 22 de Noviembre de 2006, 15:55 »
Para saber si es un numero comparas el caracter contra '0' y '9' si es mayor o igual a '0' y menor o igual a '9' entonces es un numero. Para saber si es minuscula lo mismo pero comparando con 'A' y 'Z' y para minusculas con 'a' y 'z'.
En decimal: '0' es 48, '9' es 57, 'A' es 65, 'Z' es 90, 'a' es 97 y 'z' es 122.
No se piden tareas ni codigo asi como asi, si tenes algun problema especifico te ayudaremos.
3295
« en: Miércoles 22 de Noviembre de 2006, 12:09 »
No la use ni la escuche nombrar jamas ... tal vez algo asi sea mas simple: #ifdef _DEBUG #define outDbg printf #else #define outDbg #endif
3296
« en: Miércoles 22 de Noviembre de 2006, 11:58 »
¿Tenes alguna duda especifica? ¿Intentaste hacer algo? Tenes que leer del teclado los posibles comandos (empeza con cosas simples como cls) ...
3297
« en: Miércoles 22 de Noviembre de 2006, 07:57 »
En MASM lo unico que tenes que hacer es pasarle al enlazador (link.exe) por linea de comandos los archivos objetos (soporta COFF con lo cual podes enlazar codigo escrito originalmente en C con codigo en assembly).
Un ejemplo seria: link calc.obj math.obj str.obj
3298
« en: Martes 21 de Noviembre de 2006, 22:43 »
No uso Borland asi que te recomiendo usar el Google. Para ver si las funciones estan exportadas correctamente podes usar el Dependency Walker: http://www.dependencywalker.com/Tienen que ser 100% exactas, coincidiendo todos los caracteres en case sensitive para que encuentre las funciones.
3299
« en: Martes 21 de Noviembre de 2006, 16:21 »
¿Que problema tenes especificamente? if ( (*cptr == 'k') || ( (*cptr >= '1') && (*cptr <= '9') ) ) { //blablabla }
PD. No se, ni quiero saber, que es el rut.
3300
« en: Martes 21 de Noviembre de 2006, 15:44 »
Nintendo:
...A diferencia de nuestros competidores, no tenemos otros motivos: no estamos aquí para vender televisiones de alta definición ni para convertirnos en el sistema operativo de la sala de estar ni nada parecido....
Eso se vera reflejado en el bolsillo de cada quien... Yo creo que ganaran su cuota de mercado, perdida anteriormente, pero los comentarios que leo apuntan a que Wii tiene mucha jugabilidad pero pocos GFX y en ese campo se pelearan XBox 360 y PS3. La ultima apenas si esta saliendo, con muchisimos problemas, y con un precio mayor ...
Páginas: 1 ... 130 131 [132] 133 134 ... 205
|
|
|