Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: branon32 en 6 Diciembre 2018, 19:02 pm



Título: [?] ERRORLEVEL
Publicado por: branon32 en 6 Diciembre 2018, 19:02 pm
Hola buenas
Estoy haciendo un programa en c++ para un archivo bat y necesito pasarle variables al archivo por lotes, como hago para establecer %ERRORLEVEL%??


Hace mucho que busco información pero no encuentro nada  :-[


Título: Re: [?] ERRORLEVEL
Publicado por: AlbertoBSD en 6 Diciembre 2018, 19:17 pm
Código
  1. int main() {
  2. return 20; //El valor que retornes de la funcion principal es el indicado para el ERRORLEVEL, generalemnte siempre es return 0; cuando todo salio bien
  3. }
  4.  


(http://i.imgur.com/EkSw8af.png) (https://imgur.com/EkSw8af)


Título: Re: [?] ERRORLEVEL
Publicado por: branon32 en 6 Diciembre 2018, 21:15 pm
No está funcionando

array.exe
Código
  1. int main(){
  2. return 20;
  3. }
  4.  

main.bat
Código
  1. @echo off
  2.  
  3. array
  4. echo %ERRORLEVEL%
  5.  
  6.  

En lugar de devolver 20 devuelve -1073741819  :-X


Título: Re: [?] ERRORLEVEL
Publicado por: AlbertoBSD en 6 Diciembre 2018, 23:01 pm
Posiblemente tu programa no este terminando de manera correcta, posiblemente tienes algun bufferoverflow y el programa termina de forma inesperada y sin control de error. ejemplo

PROGAMA TOTALMENTE MAL:

Código
  1. #include<string.h>
  2.  
  3. void funcion() {
  4. char arreglo[20];
  5. memset(arreglo,'A',100); //BUFFER OVERFLOW !!
  6. }
  7.  
  8. int main() {
  9. funcion();
  10. return 1;
  11. }
  12.  

Ejemplo llamando a la funcion vulnerable.
(http://i.imgur.com/CrtXFo6.png) (https://imgur.com/CrtXFo6)


Ejemplo SIN llamar a la funcion vulnerable

(http://i.imgur.com/9E4sCfn.png) (https://imgur.com/9E4sCfn)


El programa anterior es totalemente vulnerable APROPOSITO, termina en la funcion(), sin volver a la funcion principal.

Revisa tu codigo posiblemente tienes un  BUG, si manejas memoria dinamica asegurate de no estar trabajando sobre apuntadores ya liberados, si trabajas con funciones como strcpy o similares segurate de cambiarlas por sus metodos seguros,

Asegurate de no salirte de los Limites del arreglo, algo muy comun es que si tienes un arreglo[10], y en el codigo realizas algo como for (i= 0; i <= 10, i++), en este caso estarias escribiendo UN SOLO byte fuera de la direccion del arreglo lo cual causaria un error de buffer overflow conocido como OFF by ONE



Saludos


Título: Re: [?] ERRORLEVEL
Publicado por: branon32 en 6 Diciembre 2018, 23:06 pm
El código que uso es el que puse arriba
Int main y return 20  :-\


Título: Re: [?] ERRORLEVEL
Publicado por: AlbertoBSD en 6 Diciembre 2018, 23:08 pm
No puede ser posible, algo esta mal.

  • No estes ejecutando el ejecutable que compilaste. Intenta borrar el exe y compilar de nuevo.
  • Puede ser algun problema de compilador que estes usando.


Título: Re: [?] ERRORLEVEL
Publicado por: branon32 en 6 Diciembre 2018, 23:19 pm
Esto es lo que tengo, y estoy utilizando CodeBlocks 13.12

Código
  1. #include <iostream>
  2. #include <stdlib.h>
  3. #include <stdio.h>
  4. #include <windows.h>
  5.  
  6. int main(int argc,char *argv[])
  7. {
  8.    //const char* str = argv[1];
  9.    //char pout = str[atoi(argv[2])];
  10.    //printf("hola");
  11.    return 20;
  12. }