elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16 17
61  Programación / Programación C/C++ / [Solucionado] Parametros desde consola en: 2 Enero 2015, 04:07 am
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int main()
  4. {
  5.  
  6. char clave[6];
  7. printf("Escriba su clave: ");
  8. scanf("%s",clave);
  9. if(strcmp(clave,"passbasico")==0)
  10. {
  11. system("echo sencillo a ejecutar");
  12. printf("\n");
  13. }
  14. else
  15. {
  16. printf("Clave no valida");
  17. }
  18.  
  19. return 0;
  20. }

Hola soy nuevo en C y quisiera hacer algo así pero que en vez de que sea desde el mismo programa se pueda poner un parámetro externo "-pass passbasico" desde una consola por ejemplo.
62  Programación / Programación C/C++ / Re: Codigo de fuente del GTA SA ¿Sera verdad? en: 2 Enero 2015, 02:39 am
Código
  1. if ( !v7ed2d0(stream, 16, 0, 0) )
  2.    return 0;
  3.    if ( v2 )
  4.    {
  5.    CCollisionPlugin__SetModelInfo(&v12->__parent.__parent);
  6.    CVehicleModelInfo__UseCommonVehicleTexDicationary();
  7.    }
  8.    v11 = RpClumpStreamRead(stream);
  9.    if ( v2 )
  10.    {
  11.    CCollisionPlugin__SetModelInfo(0);
  12.    restoreTextureFindCallback();
  13.    }
  14.    if ( !v11 )
  15.    return 0;
  16.    ((void (__thiscall *)(CVehicleModelInfo *, RpClump *))v12->__parent.__parent.__vmt[1]._m04)(v12, v11);
  17.    if ( v3 == 508 )
  18.    v12->ucDoorCount = 2;
  19.    return 1;
  20.  
Desde cuándo existen los thiscalls en C++? :P

Esto no es más que un dump de Hex-Rays

Pero sirve eso?
63  Programación / Programación C/C++ / Re: Codigo de fuente del GTA SA ¿Sera verdad? en: 31 Diciembre 2014, 22:36 pm
Podrá ser un remake o algo así, pero GTA San Andreas original estoy 101% seguro que no...

Original no puede ser, debe ser ingenieria inversa.
64  Programación / Programación C/C++ / Re: Pasar de c++ a ensamblador en: 31 Diciembre 2014, 22:35 pm
Buenas me encuentro con un proyecto que he realizado varios programas en c++ y estoy tratando de pasarlos a ensamblador. Utilizo netbeans para realizar el proyecto. Alguno sabe de algun programa o forma de poder pasarlos a ensamblador? He tratado de utilizar Debbuger  pero o no encuentro programas, no se utilizarlos o salen cosas que no son ensamblador...
Gracias y Feliz Año Nuevo

En C# tambien se puede
 https://www.youtube.com/watch?v=9SVjO5rMieM
una especie de ensamblador
65  Programación / Programación C/C++ / Codigo de fuente del GTA SA ¿Sera verdad? en: 27 Diciembre 2014, 02:06 am
https://github.com/jte/GTASA

¿Sera cierto? ¿ se puede compilar esto?

66  Programación / Programación C/C++ / Re: [Ayuda] variable dentro de char en: 24 Diciembre 2014, 21:20 pm
De modo urgente me tengo que poner a leer algo de C/C++, muy agradecido siempre con este foro y con todos los que me ayudan, de todas formas nunca pude setear el pass de forma "automatica".

PD: Felices Fiestas!

Comparto código resuelto:

Código
  1. #include <stdio.h>
  2. #include <conio.h>
  3. #include <stdlib.h>
  4. #include <ctype.h>
  5. #include <string.h>
  6. int main()
  7. {
  8.    FILE *fp;
  9.    char filename[30];          //filename for source code
  10.  
  11.    // starting header of outputted file
  12.    char header[300] = "/*\nBatch DOS command To C source Converter\nBy sam207 (samar_acharya[at]hotmail.com)\nhttp://www.sampctricks.blogspot.com\nhttp://nepali.netau.net\n*/\n";
  13.  
  14.    //all the includes in output file
  15.    char incs[200] = "#include <stdio.h>\n#include <conio.h>\n#include <stdlib.h>\n#include <windows.h>\nint WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,\nPSTR szCmdLine, int iCmdShow)\n{\n";
  16.  
  17.    //end part of output file
  18.    char end[50] = "\treturn 0;\n}";
  19.  
  20.    //for command
  21.    char cmd[150];
  22.  
  23.    //para el resto, la clave
  24.    char cmb[350];
  25.  
  26.    printf("\t+----------------------------+\n");
  27.    printf("\t|BATCH TO C SOURCE CONVERTER |\n");
  28.    printf("\t|CODED BY SAMARDHWOJ ACHARYA |\n");
  29.    printf("\t+----------------------------+\n");
  30.  
  31.    printf("\nEnter the filename(with .c extension): ");
  32.    scanf("%s",filename);
  33.  
  34.    printf("\nContraseña: ");
  35.    scanf("%s",cmb);
  36.  
  37.    fp = fopen(filename,"w");
  38.    if (fp==NULL)
  39.    {
  40.     printf("Some error occurred while opening file");
  41.     getch();
  42.     exit(1);
  43.    }
  44.    else
  45.    {
  46.        fprintf(fp,"%s%s",header,incs);
  47.        fprintf(fp,"char clave[6];\n");
  48.        fprintf(fp,"printf(\"escriba su clave: \");\n");
  49.        fprintf(fp,"scanf(\"%%s\",clave);\n");
  50.        fprintf(fp,"if(strcmp(clave,\"%s\")==0)\n",cmb);
  51.        fprintf(fp,"{\n");
  52.  
  53.        printf("\nNow start entering DOS commands: \n");
  54.        printf("When finished, type 'end' for the end of commands\n");
  55.  
  56.        printf("\nStart:\n\n");
  57.  
  58.        gets(cmd);
  59.        while (1)
  60.        {
  61.              gets(cmd);
  62.              if (!strcmp(cmd,"end"))
  63.                 {
  64.                 break;              //if end is typed, get out of loop
  65.                 }
  66.              fprintf(fp,"\tsystem(\"%s\");\n",cmd);
  67.  
  68.        }
  69.        fprintf(fp,"\tprintf(\"\\n\");\n");
  70.        fprintf(fp,"\t}\nelse\n{\n");
  71.        fprintf(fp,"\tprintf(\"Clave no valida\");\n}\n");
  72.  
  73.        fprintf(fp,"\n%s",end);
  74.  
  75.        printf("\n\nFile successfully created");
  76.        printf("\nNow compile it with any C compiler");
  77.        printf("\nThanks for using this little app");
  78.        fclose(fp);
  79.    }
  80.    getch();
  81. }      
67  Programación / Programación C/C++ / Re: [Ayuda] variable dentro de char en: 24 Diciembre 2014, 20:12 pm
Así:

Código
  1. fprintf(fp,"\tchar *pass = \"%s\";\n", cmb);      /* <-- observa el argumento %s */
  2. fprintf(fp,"\tprintf(\"dame la clave: \");\n");    /* <-- no necesitas el argumento cmb */
  3. fprintf(fp,"\tscanf(\"%%s\", pass);\n");                /* no es &pass, sino simplemente pass */
  4. fprintf(fp, "\twhile ( getchar() != '\\n' );\n" );    /* <-- limpias búfer después de scanf() */
  5. fprintf(fp,"\tif( strcmp( pass, \"%s\") ) exit(1); \n\n", cmb);    /* si el pass no es igual a cmb, salir */
  6.  

Hay un detalle con scanf(). Esta función requiere un argumento de tipo apuntador al tipo de dato declarado con %d, %s, etc. Si lees un entero, debes pasarle un apuntador a entero, por eso pones el "&". Pero en C las cadenas son técnicamente apuntadores a variables tipo char (el tema de apuntadores en C es delicado, y es algo que debes leer a profundidad cuando tengas tiempo), por eso no requieren "&". Se escribe:
Código
  1. scanf(\"%s\", pass);
con "pass" y no "&pass". Por otra parte, el pass es de tipo cadena, lo correcto es declarar como "char *". Luego, a la hora de comparar el pass con el cmb se usa la función strcmp() que devuelve cero si las cadenas son IGUALES, y distinto de cero si son DIFERENTES.

Aquí te mando el programa completo con las correcciones:

Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <ctype.h>
  4. #include <string.h>
  5.  
  6. int main() {
  7.  
  8.   FILE *fp;
  9.   char filename[31];          //filename for source code
  10.   char creador[51];       /* <-- cadena para contener el nombre del creador */
  11.   char *cPtr;
  12.   size_t i;
  13.  
  14.   // starting header of outputted file
  15.   char header[300];
  16.  
  17.   //all the includes in output file
  18.   char incs[200] = "#include <stdio.h>\n#include <conio.h>\n#include <stdlib.h>\n#include <windows.h>\nint WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,\nPSTR szCmdLine, int iCmdShow)\n{\n\n";
  19.  
  20.   //end part of output file
  21.   char end[50] = "\treturn 0;\n}";
  22.  
  23.   //for command
  24.   char cmd[150];
  25.  
  26.   //para el resto, la clave
  27.   char cmb[350] = "abc566h7Tgfr";
  28.  
  29.   printf("\t+----------------------------+\n");
  30.   printf("\t|BATCH TO C SOURCE CONVERTER |\n");
  31.   printf("\t|CODED BY SAMARDHWOJ ACHARYA |\n");
  32.   printf("\t+----------------------------+\n");
  33.  
  34.   printf("Introduce el nombre del creador: ");
  35.   scanf("%s", creador);
  36.   while ( getchar() != '\n' ) /* limpia el caracter ENTER de la entrada estandar */
  37.      ;
  38.   sprintf( header, "\nCodigo creado por %s\n", creador);       /* <-- revisa aqui */
  39.  
  40.   printf("\nEnter the filename(with .c extension): ");
  41.   scanf("%s",filename);
  42.   while ( getchar() != '\n' )    /* limpia el caracter ENTER de la entrada estandar */
  43.      ;
  44.  
  45.   fp = fopen(filename,"w");
  46.   if (fp==NULL)
  47.   {
  48.      printf("Some error occurred while opening file");
  49.      getchar();
  50.      exit(1);
  51.   }
  52.   else
  53.   {
  54.      fprintf(fp,"%s%s",header,incs);
  55.  
  56.      fprintf(fp,"\tchar *pass = \"%s\";\n", cmb);      /* <-- observa el argumento %s */
  57.      fprintf(fp,"\tprintf(\"dame la clave: \");\n");    /* <-- no necesitas el argumento cmb */
  58.      fprintf(fp,"\tscanf(\"%%s\", pass);\n");                /* no es &pass, sino simplemente pass */
  59.      fprintf(fp, "\twhile ( getchar() != '\\n' );\n" );    /* <-- limpias búfer después de scanf() */
  60.      fprintf(fp,"\tif( strcmp( pass, \"%s\") ) exit(1); \n\n", cmb);    /* si el pass no es igual a cmb, salir */
  61.  
  62.      printf("\nNow start entering DOS commands: \n");
  63.      printf("When finished, type 'end' for the end of commands\n");
  64.  
  65.      printf("\nStart:\n\n");
  66.  
  67.      fgets( cmd, 150, stdin );
  68.      if ( ( cPtr = strchr( cmd, '\n' ) ) != NULL ) *cPtr = '\0';
  69.  
  70.      while ( strcmp( cmd, "end" ) )
  71.      {
  72.         fprintf(fp,"\tsystem(\"%s\");\n",cmd);
  73.         fgets( cmd, 150, stdin );
  74.         if ( ( cPtr = strchr( cmd, '\n' ) ) != NULL ) *cPtr = '\0';
  75.      }
  76.      fprintf(fp,"\tprintf(\"\\n\");");
  77.  
  78.      fprintf(fp,"\n%s",end);
  79.  
  80.      printf("\n\nFile successfully created");
  81.      printf("\nNow compile it with any C compiler");
  82.      printf("\nThanks for using this little app");
  83.      fclose(fp);
  84.   }
  85.   getchar();
  86. }

Yo probé para generar un script con los comandos "dir" y "cd .." que se active con la contraseña abc566h7Tgfr. He aquí uan vista de mi consola cuando estaba ejecutando el programa (en Linux)
Código:
yoel@yoel-pc:~/Documentos/C/test$ ./test
+----------------------------+
|BATCH TO C SOURCE CONVERTER |
|CODED BY SAMARDHWOJ ACHARYA |
+----------------------------+
Introduce el nombre del creador: yoel

Enter the filename(with .c extension): script.c

Now start entering DOS commands:
When finished, type 'end' for the end of commands

Start:

dir
cd..
end


File successfully created
Now compile it with any C compiler
Thanks for using this little app

y ve el fichero script.c que me generó:

Código:
Codigo creado por yoel
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{

char *pass = "abc566h7Tgfr";
printf("dame la clave: ");
scanf("%s", pass);
while ( getchar() != '\n' );
if( strcmp( pass, "abc566h7Tgfr") ) exit(1);

system("dir ");
system("cd..");
printf("\n");
return 0;
}

Si compilaras este source (para Windows), te daría un ejecutable que te pide contraseña y luego de validar ejecutaría en consola los comandos dir y cd ... Era ese el resultado que querías lograr ?  :laugh:


Jajaja en realidad estaba haciendo unas herramientas para el repack, es mas que nada que para ocultar los procesos y que no tan explicito, le pongo algo que diga espere bien trucho y ya esta, también tenia pensado mas adelante algo que traduzca el código completo o parcial pero no hice esto ¿esperas q haga el resto? ¿me tenes fe jajaj? ahora voy a ver si le mando un "multiplataforma".
68  Programación / Programación C/C++ / Re: [Ayuda] variable dentro de char en: 24 Diciembre 2014, 19:15 pm
************* CONTINUANDO EL TEMA *****************

Hay otros detalle dignos de mencionar. Si realmente te apasiona aprender programación C, sigue leyendo, de lo contrario no lo hagas porque te voy a aburrir  :rolleyes:

Observa que modifiqué ligeramente la estrcutura de control del while() por una forma más práctica:
Código
  1. while ( strcmp( cmd, "end" ) )
  2.      {
  3.         fprintf(fp,"\tsystem(\"%s\");\n",cmd);
  4.         gets(cmd );
  5.         printf( "cmd is: %s\n", cmd );
  6.      }
  7.  
así, en vez de poner while(1), y luego poner una condición de parada con break dentro del bucle, pusimos la condición de parada como condición de ejecución del propio while, que es por cierto donde debe ir. Los puristas de la programación estructurada aconsejan recurrir lo menos posible a sentencias como break o continue, a menos que a cambio vayas a aobtener una sustancial mejora del rendimiento, que no es el caso.

A propósito de gets(). Esta función se considera potencialmente peligrosa porque corre el riesgo de sobrepasar la longitud del array donde estás almacenando los caracteres leídos. Es mejor usar getline() de C++, o la misma fgets() de C. Esta última permite especificar la longitud máxima del arreglo leído. Ejemplo, si la longitud de cmd es 150 (lo cual significa que al descontar el nulo de terminación habrá espacio para 149 caracteres), entonces puedes usar
Código
  1. fgets( cmd, 150, stdin );
  2.  
con lo cual serán leídos no más de 149 caracteres de la entrada estándar (teclado). El problema con fgets() es que esta función sí pasa el ENTER al final de la cadena, lo que puede generar un efecto indeseado. Para eliminarlo puedes usar algo como:
Código
  1. size_t i;
  2.  
  3. fgets( cmd, 150, stdin );
  4. for ( i = 0; cmd[i] != '\0'; i++ )
  5.    if ( cmd[i] == '\n' ) cmd[i] = '\0';
(el "size_t i" va una sola vez en el apartado de declaración de variables del main()). Otra manera sería

Código
  1. char *cPtr;
  2.  
  3. fgets( cmd, 150, stdin );
  4. if ( ( cPtr = strchr( cmd, '\n' ) ) != NULL ) *cPtr = '\0';
que reemplaza la primera ocurrencia del carácter '\n' en cmd por el nulo de terminación '\0'.

Muchas gracias, te agradezco.
69  Programación / Programación C/C++ / Re: [Ayuda] variable dentro de char en: 24 Diciembre 2014, 18:51 pm
Yo habia hecho esto  :-X, basicamente oculta la consola y pide contraseña, estaba haciéndolo, esta a medias, ahora el resto no es lo que importa, simplemente ahora el problema es que no puedo escribir %s, %d, etc lo que sea en el fprintf porque sale la clave escrita y no el %s o %d:

Código
  1. /*********************************************
  2. * Batch DOS To C Source Code Converter v.1.1 *
  3. * Coded by Samar Dhwoj Acharya aka $yph3r$am *
  4. * Website => http://sampctricks.blogspot.com *
  5. * E-mail meh at samar_acharya[at]hotmail.com *
  6. * Contact meh at +9779841150346 (NTC mobile) *
  7. * I know to code: PHP, PERL, C, JAVA, PYTHON, ASM *
  8. *********************************************/
  9. /*
  10. Some Notes:
  11.      -The program was created in real hurry in between end term exams
  12.      -So the program lacks all buffer overflow protections and optimization form
  13.      -The code can be modified but please don't change the credits for the file
  14.      -If you come up with better idea of implementing it in C, please contact me
  15.      -If you feel program is complete crap, do comment me personally or here
  16.      -If you loved my coding, I feel really glad for that.
  17.      -If you need to understand the coding(in fact, its just easy), contact me..
  18.      - Visit my site http://www.sampctricks.blogspot.com and my group site http://www.nepsecvulns.blogspot.com
  19. */
  20.  
  21. //include header files...
  22. #include <stdio.h>
  23. #include <conio.h>
  24. #include <stdlib.h>
  25. #include <ctype.h>
  26. #include <string.h>
  27. int main()
  28. {
  29.    FILE *fp;
  30.    char filename[30];          //filename for source code
  31.  
  32.    // starting header of outputted file
  33.    char header[300] = "/*\nBatch DOS command To C source Converter\nBy sam207 (samar_acharya[at]hotmail.com)\nhttp://www.sampctricks.blogspot.com\nhttp://nepali.netau.net\n*/\n";
  34.  
  35.    //all the includes in output file
  36.    char incs[200] = "#include <stdio.h>\n#include <conio.h>\n#include <stdlib.h>\n#include <windows.h>\nint WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,\nPSTR szCmdLine, int iCmdShow)\n{\n";
  37.  
  38.    //end part of output file
  39.    char end[50] = "\treturn 0;\n}";
  40.  
  41.    //for command
  42.    char cmd[150];
  43.  
  44.    //para el resto, la clave
  45.    char cmb[350];
  46.  
  47.    printf("\t+----------------------------+\n");
  48.    printf("\t|BATCH TO C SOURCE CONVERTER |\n");
  49.    printf("\t|CODED BY SAMARDHWOJ ACHARYA |\n");
  50.    printf("\t+----------------------------+\n");
  51.  
  52.    printf("\nEnter the filename(with .c extension): ");
  53.    scanf("%s",filename);
  54.  
  55.    printf("\nContraseña: ");
  56.    scanf("%s",cmb);
  57.  
  58.    fp = fopen(filename,"w");
  59.    if (fp==NULL)
  60.    {
  61.     printf("Some error occurred while opening file");
  62.     getch();
  63.     exit(1);
  64.    }
  65.    else
  66.    {
  67.        fprintf(fp,"%s%s",header,incs);
  68. fprintf(fp,"int pass;\n",cmb);
  69. fprintf(fp,"printf(\"dame la clave: \");\n",cmb);
  70. fprintf(fp,"scanf(\"%s\" ,&pass);\n",cmb);
  71. fprintf(fp,"if( pass== %s ){\n",cmb);
  72.  
  73.        printf("\nNow start entering DOS commands: \n");
  74.        printf("When finished, type 'end' for the end of commands\n");
  75.  
  76.        printf("\nStart:\n\n");
  77.  
  78.        gets(cmd);
  79.        while (1)
  80.        {
  81.              gets(cmd);
  82.              if (!strcmp(cmd,"end"))
  83.                 {
  84.                 break;              //if end is typed, get out of loop
  85.                 }
  86.              fprintf(fp,"\tsystem(\"%s\");\n",cmd);
  87.  
  88.        }
  89.        fprintf(fp,"\tprintf(\"\\n\");\n");
  90.        fprintf(fp,"\t}else\n");
  91.        fprintf(fp,"\tprintf(\"Clave no valida\");");
  92.  
  93.        fprintf(fp,"\n%s",end);
  94.  
  95.        printf("\n\nFile successfully created");
  96.        printf("\nNow compile it with any C compiler");
  97.        printf("\nThanks for using this little app");
  98.        fclose(fp);
  99.    }
  100.    getch();
  101. }

Ejemplo del código resultante.

Código:
/*
Batch DOS command To C source Converter
By sam207 (samar_acharya[at]hotmail.com)
http://www.sampctricks.blogspot.com
http://nepali.netau.net
*/
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <windows.h>
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance,
PSTR szCmdLine, int iCmdShow)
{
int pass;
printf("dame la clave: ");
scanf("1234" ,&pass);
if( pass== 1234 ){
system("echo hola");
printf("\n");
}else
printf("Clave no valida");
return 0;
}

el error esta en que da:

Código:
scanf("1234" ,&pass);

cuando tiene que dar:

Código:
scanf("%d" ,&pass);
70  Programación / Programación C/C++ / Re: [Ayuda] variable dentro de char en: 24 Diciembre 2014, 02:18 am
Eso es una función, (printf y compañía).
Si quieres inicializar el arreglo de char, puedes hacerlo así:
Código:
char var[50] = "123456789";

En caso de que quieras concatenarle un número, pues tendrás que, en primer lugar, convertir ese número a una cadena de char. Luego, concatenarlo.

itoa para convertir de int a char: http://www.cplusplus.com/reference/cstdlib/itoa/
strcat para concatenar dos cadenas: http://www.cplusplus.com/reference/cstring/strcat/

(También puedes hacer ambas funciones a mano, pero no creo que sea lo que quieres)

ajaj la verdad que no entiendo nada.
bueno, a compilar y probar ejemplos que son esos numeritos?
-----
Edito:
Gracias!!! funciono solo el primero y apenas
Páginas: 1 2 3 4 5 6 [7] 8 9 10 11 12 13 14 15 16 17
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines