Menú

Mostrar Mensajes

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ú

Mensajes - sabeeee

#61
Código (cpp) [Seleccionar]
#include <stdio.h>
#include <stdlib.h>
int main()
{

char clave[6];
printf("Escriba su clave: ");
scanf("%s",clave);
if(strcmp(clave,"passbasico")==0)
{
system("echo sencillo a ejecutar");
printf("\n");
}
else
{
printf("Clave no valida");
}

return 0;
}


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
Cita de: Shout en  1 Enero 2015, 05:39 AM
Código (cpp) [Seleccionar]

if ( !v7ed2d0(stream, 16, 0, 0) )
    return 0;
    if ( v2 )
    {
    CCollisionPlugin__SetModelInfo(&v12->__parent.__parent);
    CVehicleModelInfo__UseCommonVehicleTexDicationary();
    }
    v11 = RpClumpStreamRead(stream);
    if ( v2 )
    {
    CCollisionPlugin__SetModelInfo(0);
    restoreTextureFindCallback();
    }
    if ( !v11 )
    return 0;
    ((void (__thiscall *)(CVehicleModelInfo *, RpClump *))v12->__parent.__parent.__vmt[1]._m04)(v12, v11);
    if ( v3 == 508 )
    v12->ucDoorCount = 2;
    return 1;

Desde cuándo existen los thiscalls en C++? :P

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

Pero sirve eso?
#63
Cita de: Dezcian en 30 Diciembre 2014, 22:07 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 C/C++ / Re: Pasar de c++ a ensamblador
31 Diciembre 2014, 22:35 PM
Cita de: xenahort95 en 31 Diciembre 2014, 19:32 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
https://github.com/jte/GTASA

¿Sera cierto? ¿ se puede compilar esto?

#66
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 (cpp) [Seleccionar]
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
int main()
{
    FILE *fp;
    char filename[30];          //filename for source code

    // starting header of outputted file
    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";
   
    //all the includes in output file
    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";

    //end part of output file
    char end[50] = "\treturn 0;\n}";
   
    //for command
    char cmd[150];

    //para el resto, la clave
    char cmb[350];

    printf("\t+----------------------------+\n");
    printf("\t|BATCH TO C SOURCE CONVERTER |\n");
    printf("\t|CODED BY SAMARDHWOJ ACHARYA |\n");
    printf("\t+----------------------------+\n");
   
    printf("\nEnter the filename(with .c extension): ");
    scanf("%s",filename);

    printf("\nContraseña: ");
    scanf("%s",cmb);
   
    fp = fopen(filename,"w");
    if (fp==NULL)
    {
     printf("Some error occurred while opening file");
     getch();
     exit(1);
    }
    else
    {
        fprintf(fp,"%s%s",header,incs);
        fprintf(fp,"char clave[6];\n");
        fprintf(fp,"printf(\"escriba su clave: \");\n");
        fprintf(fp,"scanf(\"%%s\",clave);\n");
        fprintf(fp,"if(strcmp(clave,\"%s\")==0)\n",cmb);
        fprintf(fp,"{\n");

        printf("\nNow start entering DOS commands: \n");
        printf("When finished, type 'end' for the end of commands\n");

        printf("\nStart:\n\n");
       
        gets(cmd);
        while (1)
        {
              gets(cmd);
              if (!strcmp(cmd,"end"))
                 {
                 break;              //if end is typed, get out of loop
                 }
              fprintf(fp,"\tsystem(\"%s\");\n",cmd);

        }
        fprintf(fp,"\tprintf(\"\\n\");\n");
        fprintf(fp,"\t}\nelse\n{\n");
        fprintf(fp,"\tprintf(\"Clave no valida\");\n}\n");

        fprintf(fp,"\n%s",end);
       
        printf("\n\nFile successfully created");
        printf("\nNow compile it with any C compiler");
        printf("\nThanks for using this little app");
        fclose(fp);
    }
    getch();
}     
#67
Cita de: yoel_alejandro en 24 Diciembre 2014, 19:51 PM
Así:

Código (cpp) [Seleccionar]

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


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 (cpp) [Seleccionar]

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 (cpp) [Seleccionar]

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>

int main() {

  FILE *fp;
  char filename[31];          //filename for source code
  char creador[51];       /* <-- cadena para contener el nombre del creador */
  char *cPtr;
  size_t i;

  // starting header of outputted file
  char header[300];

  //all the includes in output file
  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";

  //end part of output file
  char end[50] = "\treturn 0;\n}";

  //for command
  char cmd[150];

  //para el resto, la clave
  char cmb[350] = "abc566h7Tgfr";

  printf("\t+----------------------------+\n");
  printf("\t|BATCH TO C SOURCE CONVERTER |\n");
  printf("\t|CODED BY SAMARDHWOJ ACHARYA |\n");
  printf("\t+----------------------------+\n");

  printf("Introduce el nombre del creador: ");
  scanf("%s", creador);
  while ( getchar() != '\n' ) /* limpia el caracter ENTER de la entrada estandar */
     ;
  sprintf( header, "\nCodigo creado por %s\n", creador);       /* <-- revisa aqui */

  printf("\nEnter the filename(with .c extension): ");
  scanf("%s",filename);
  while ( getchar() != '\n' )    /* limpia el caracter ENTER de la entrada estandar */
     ;

  fp = fopen(filename,"w");
  if (fp==NULL)
  {
     printf("Some error occurred while opening file");
     getchar();
     exit(1);
  }
  else
  {
     fprintf(fp,"%s%s",header,incs);

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

     printf("\nNow start entering DOS commands: \n");
     printf("When finished, type 'end' for the end of commands\n");

     printf("\nStart:\n\n");

     fgets( cmd, 150, stdin );
     if ( ( cPtr = strchr( cmd, '\n' ) ) != NULL ) *cPtr = '\0';

     while ( strcmp( cmd, "end" ) )
     {
        fprintf(fp,"\tsystem(\"%s\");\n",cmd);
        fgets( cmd, 150, stdin );
        if ( ( cPtr = strchr( cmd, '\n' ) ) != NULL ) *cPtr = '\0';
     }
     fprintf(fp,"\tprintf(\"\\n\");");

     fprintf(fp,"\n%s",end);

     printf("\n\nFile successfully created");
     printf("\nNow compile it with any C compiler");
     printf("\nThanks for using this little app");
     fclose(fp);
  }
  getchar();
}


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)

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ó:


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
Cita de: yoel_alejandro en 24 Diciembre 2014, 19:09 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 (cpp) [Seleccionar]

while ( strcmp( cmd, "end" ) )
      {
         fprintf(fp,"\tsystem(\"%s\");\n",cmd);
         gets(cmd );
         printf( "cmd is: %s\n", cmd );
      }

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 (cpp) [Seleccionar]

fgets( cmd, 150, stdin );

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 (cpp) [Seleccionar]

size_t i;

fgets( cmd, 150, stdin );
for ( i = 0; cmd[i] != '\0'; i++ )
    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 (cpp) [Seleccionar]

char *cPtr;

fgets( cmd, 150, stdin );
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
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 (cpp) [Seleccionar]
/*********************************************
* Batch DOS To C Source Code Converter v.1.1 *
* Coded by Samar Dhwoj Acharya aka $yph3r$am *
* Website => http://sampctricks.blogspot.com *
* E-mail meh at samar_acharya[at]hotmail.com *
* Contact meh at +9779841150346 (NTC mobile) *
* I know to code: PHP, PERL, C, JAVA, PYTHON, ASM *
*********************************************/
/*
Some Notes:
    -The program was created in real hurry in between end term exams
    -So the program lacks all buffer overflow protections and optimization form
    -The code can be modified but please don't change the credits for the file
    -If you come up with better idea of implementing it in C, please contact me
    -If you feel program is complete crap, do comment me personally or here
    -If you loved my coding, I feel really glad for that.
    -If you need to understand the coding(in fact, its just easy), contact me..
    - Visit my site http://www.sampctricks.blogspot.com and my group site http://www.nepsecvulns.blogspot.com
*/

//include header files...
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
int main()
{
   FILE *fp;
   char filename[30];          //filename for source code

   // starting header of outputted file
   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";
   
   //all the includes in output file
   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";

   //end part of output file
   char end[50] = "\treturn 0;\n}";
   
   //for command
   char cmd[150];

   //para el resto, la clave
   char cmb[350];

   printf("\t+----------------------------+\n");
   printf("\t|BATCH TO C SOURCE CONVERTER |\n");
   printf("\t|CODED BY SAMARDHWOJ ACHARYA |\n");
   printf("\t+----------------------------+\n");
   
   printf("\nEnter the filename(with .c extension): ");
   scanf("%s",filename);

   printf("\nContraseña: ");
   scanf("%s",cmb);
   
   fp = fopen(filename,"w");
   if (fp==NULL)
   {
    printf("Some error occurred while opening file");
    getch();
    exit(1);
   }
   else
   {
       fprintf(fp,"%s%s",header,incs);
fprintf(fp,"int pass;\n",cmb);
fprintf(fp,"printf(\"dame la clave: \");\n",cmb);
fprintf(fp,"scanf(\"%s\" ,&pass);\n",cmb);
fprintf(fp,"if( pass== %s ){\n",cmb);

       printf("\nNow start entering DOS commands: \n");
       printf("When finished, type 'end' for the end of commands\n");

       printf("\nStart:\n\n");
       
       gets(cmd);
       while (1)
       {
             gets(cmd);
             if (!strcmp(cmd,"end"))
                {
                break;              //if end is typed, get out of loop
                }
             fprintf(fp,"\tsystem(\"%s\");\n",cmd);

       }
       fprintf(fp,"\tprintf(\"\\n\");\n");
       fprintf(fp,"\t}else\n");
       fprintf(fp,"\tprintf(\"Clave no valida\");");

       fprintf(fp,"\n%s",end);
       
       printf("\n\nFile successfully created");
       printf("\nNow compile it with any C compiler");
       printf("\nThanks for using this little app");
       fclose(fp);
   }
   getch();
}


Ejemplo del código resultante.

/*
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:

scanf("1234" ,&pass);

cuando tiene que dar:

scanf("%d" ,&pass);
#70
Cita de: ivancea96 en 24 Diciembre 2014, 01:10 AM
Eso es una función, (printf y compañía).
Si quieres inicializar el arreglo de char, puedes hacerlo así:
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