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

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


  Mostrar Temas
Páginas: [1] 2
1  Programación / Programación C/C++ / ayuda CreateProcess con variables de entorno de sistema en: 5 Junio 2010, 07:32 am
Hola, estoy intentando crear un proceso para una aplicación de consola, pero no quiero que el proceso creado herede las variables de entorno del proceso que lo crea, por eso quiero crear un bloque de proceso con solamente variables de sistema, sin embargo algo estoy haciendo mal porque CreateProcess me arroja error en el parámetro de la variable de entorno.

Código:
#include <windows.h>
#include <stdio.h>
#include <userenv.h>

int main()
{
    LPVOID env; 
    if (!CreateEnvironmentBlock(&env, NULL, FALSE))
    {
      printf("No CreateEnvironmentBlock. Error:%d\n",GetLastError());
    }
   
    PROCESS_INFORMATION pi;
    memset(&pi, 0, sizeof(pi));
   
    STARTUPINFO si;
    memset(&si, 0, sizeof(si));
    si.cb = sizeof(si);
    si.dwFlags = STARTF_USESHOWWINDOW;
    si.lpTitle = "";
    si.wShowWindow = SW_NORMAL;
   
    LPTSTR program = TEXT("cmd.exe");
    LPTSTR params = TEXT("/c \"C:\\Users\\Carlos\\Desktop\\hola.cmd\"");
   
   BOOL b;
    b = CreateProcess(program, params, NULL, NULL, FALSE, CREATE_NEW_CONSOLE|NORMAL_PRIORITY_CLASS, env, NULL, &si, &pi);
    if (!b)
    {
          printf("No CreateProcess. Error:%d\n",GetLastError());
    }
   
    WaitForSingleObject(pi.hProcess, INFINITE);
    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );
   
    getchar();
}



¿Alguien podría ayudarme por favor?
2  Programación / Programación C/C++ / main para unicode [solucionado] en: 1 Junio 2010, 11:40 am
Hola, por favor ¿me podrían ayudar?

Estoy haciendo una aplicación de consola, y tengo un problema, quiero aceptar nombres unicode de los archivos, por si mi aplicación corre en algún windows en chino o algo así.

El asunto es que el main me da problemas:

Código
  1. #define UNICODE
  2.  
  3. #include <windows.h>
  4. #include <stdio.h>
  5.  
  6. int main(int argc, TCHAR* argv[])
  7. {
  8.  
  9.    if (argc == 2)
  10.    {
  11.       HANDLE archivo;
  12.       int error;
  13.  
  14.       archivo = CreateFile(/*TEXT("texto.txt"),*/ argv[1],
  15.                            GENERIC_READ,
  16.                            FILE_SHARE_READ,
  17.                            NULL, // Descriptor de seguridad por defecto
  18.                            OPEN_EXISTING,
  19.                            FILE_ATTRIBUTE_NORMAL,
  20.                            NULL);
  21.  
  22.       error = GetLastError();
  23.       if (error != NO_ERROR) {
  24.          printf("Error: %d\n", error);
  25.       }
  26.       else
  27.       {
  28.          puts("No error");
  29.       }
  30.    }
  31.    else
  32.    {
  33.        puts("Use only one argument");
  34.    }
  35.  
  36.    return 0;
  37.  
  38. }
  39.  
  40.  

Así como está al especificar el nombre de archivo siempre me da error 2 (ERROR_FILE_NOT_FOUND), en cambio si descomento en el código y utilizo un nombre de archivo fijo existente, en este caso: texto.txt no da error.

A mi parecer el main es el que me da problemas, ¿cómo declaro un main que acepte unicode en la entrada?

He probado usando la cmd.exe en modo unicode:
cmd /u

y al especificar un nombre de archivo existente me da error 123 (ERROR_INVALID_NAME)

Entonces pienso que el problema está en la definición del main.
¿Por favor, alguien me puede ayudar? Tengo todo el resto del código listo para trabajar en unicode, pero me falta el poder aceptar un nombre de archivo desde el main, en este caso argv[1]

Estoy compilando con gcc 3.4.2 (mingw) bajo el ide Dev-C++ 4.9

EI: juntando mensajes.

busqué más información y leí que mingw no acepta wmain, así es que escribí esto como parche basado en: http://msdn.microsoft.com/en-us/library/bb776391%28v=VS.85%29.aspx


Código
  1. #ifdef UNICODE
  2. int main()
  3. #else
  4. int main(int argc, UCHAR* argv[])
  5. #endif
  6. {
  7.    #ifdef UNICODE
  8.    TCHAR** argv;
  9.    int argc;
  10.    argv = CommandLineToArgvW(GetCommandLineW(), &argc);
  11.    if (argv == NULL) {
  12.      return ERROR_DESCONOCIDO;
  13.    }
  14.    #endif
  15.  
  16.    int ret;
  17.    ret = mi_funcion(argv[1]);
  18.  
  19.    #ifdef UNICODE
  20.    LocalFree(argv);
  21.    #endif
  22.  
  23.    return ret;
  24. }
  25.  
3  Programación / Scripting / CarlitosSoft Batch Compiler 1.3 en: 1 Junio 2010, 02:46 am
Nueva versión de CarlitosSoft Batch Compiler

Versión: 1.3
Características:
  • Genera ejecutables que se ejecutan en modo invisible, normal, maximizado y minimizado
  • Hasta el momento el ejecutable generado no es detectado por ningún antivirus, y no debería.
  • Si en el registro se activa DisableCMD para impedir la ejecución de la cmd.exe o de archivos batch el batch compilado se ejecuta igualmente. Único compilador batch con esta característica.
  • Sólo puede compilarse un archivo batch.
  • El código plano del batch no es mostrado dentro del ejecutable.
  • Si se ve la ventana de la cmd, esta tiene un título vacío y no aparece ningún menú de Propiedades.
  • Testeado exitosamente en Windows XP y Windows Seven.


Link:
Código:
http://carlitossoft.110mb.com/cbc/
4  Programación / Programación C/C++ / modificar arreglo de cadena de caracteres en: 31 Mayo 2010, 10:18 am
Hola, quiero modificar un arreglo de cadena de caracteres, quiero asignarle al indice 0 de cada cadena un caracter, pero no funciona, ¿Alguien podría ayudarme?

Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5. char* listado[] = {
  6.        "_:\\mi_listado.txt",
  7.        "_:\\notas.txt",
  8.        "_:\\p.txt"
  9. };
  10.  
  11. int i;
  12.  
  13. for (i=0; i < 3; ++i)
  14. {
  15.     listado[i][0] = 'C';
  16.     printf("%s\n",listado[i]);
  17. }
  18.  
  19.  
  20. }
  21.  
  22.  
5  Programación / Programación C/C++ / No me funciona el unicode en: 29 Mayo 2010, 21:03 pm
Hola estoy usando el ide Dev-C++ para compilar lo siguiente, quiero usar unicode, pero no funciona.

Código
  1. #include <windows.h>
  2.  
  3. #define UNICODE
  4.  
  5. int main(int argc, char *argv[])
  6. {
  7.   TCHAR* ansi_o_unicode;
  8.   WCHAR* unicode;
  9.  
  10.   unicode = L"unicode";
  11.   ansi_o_unicode = TEXT("hola");
  12.  
  13.   return 0;
  14. }
  15.  
eso compila, pero si veo el ejecutable hola no está en unicode.
con un editor hexadecimal se ve así:

Código
  1. hola..u.n.i.c.o.d.e..
  2.  

y si quiero compilar lo siguiente no compila:

Código
  1. #include <windows.h>
  2.  
  3. #define UNICODE
  4.  
  5. int main(int argc, char *argv[])
  6. {
  7.   TCHAR* ansi_o_unicode;
  8.   WCHAR* unicode;
  9.  
  10.   unicode = L"unicode";
  11.   ansi_o_unicode = L"hola";
  12.  
  13.  
  14.   return 0;
  15. }
  16.  

al parecer el #define UNICODE no es considerado porque si se consideraría debería compilar porque en la msdn se dice que dice que TCHAR es definido así:

Código
  1. #ifdef UNICODE
  2. typedef WCHAR TCHAR;
  3. #else
  4. typedef char TCHAR;
  5. #endif
  6.  

¿Cual será el problema?

edito: ya lo encontré: tenía que definir UNICODE antes de incluir windows.h me da verguenza el error tonto de parte mía.
6  Programación / Programación C/C++ / Extraño error, puedo imprimir el texto pero no copiarlo. en: 29 Mayo 2010, 10:39 am
Quisiera que por favor alguien me ayudara con este código, logró obtener el texto que se necesita, pero no logro copiarlo a otro buffer.

Código
  1. #include <windows.h>
  2.  
  3. UCHAR* getUserSid();
  4.  
  5. int main(int argc, char *argv[])
  6. {
  7.   UCHAR* userSid;
  8.   userSid = getUserSid();
  9.   printf("%s",userSid);
  10.  
  11.   return 0;
  12.  
  13. }
  14.  
  15. UCHAR* getUserSid()
  16. {
  17.  HANDLE token = NULL;
  18.  DWORD dwBufferSize = 0;
  19.  PTOKEN_USER pTokenUser = NULL;
  20.  HANDLE currentProcess = NULL;
  21.  UCHAR* userSid = NULL;
  22.  
  23.  currentProcess = GetCurrentProcess();
  24.  if (OpenProcessToken(currentProcess, TOKEN_QUERY, &token))
  25.  {
  26.     GetTokenInformation(token, TokenUser, NULL, 0, &dwBufferSize);
  27.     pTokenUser = (PTOKEN_USER)malloc(dwBufferSize);
  28.     memset(pTokenUser, 0, dwBufferSize);
  29.     if (GetTokenInformation(token, TokenUser, pTokenUser, dwBufferSize, &dwBufferSize))
  30.     {
  31.         if (IsValidSid(pTokenUser->User.Sid))
  32.         {
  33.             UCHAR* localSID = NULL;
  34.             size_t len;
  35.  
  36.             if (ConvertSidToStringSidA(pTokenUser->User.Sid, &localSID))
  37.             {
  38.                printf("%s\n",localSID); //esto se imprime bien
  39.  
  40.                len = strlen(localSID);
  41.                printf("Len:%d\n",len); //esto se imprime bien
  42.  
  43.                userSid = (UCHAR*) malloc(len+1, sizeof(UCHAR));
  44.                if (userSid != NULL)
  45.                {
  46.                  printf("memoria dinamica bien\n"); //esto se imprime bien
  47.                  strncpy(userSid, localSID, len);
  48.                  userSid[len] = 0;
  49.                }
  50.                printf("%s\n",userSid); //esto NO SE IMPRIME BIEN
  51.                LocalFree(localSID);
  52.             }
  53.         }                        
  54.     }
  55.     free(pTokenUser);
  56.     CloseHandle(token);
  57.  }
  58.  CloseHandle(currentProcess);
  59.  return userSid;
  60. }
  61.  
  62.  
7  Seguridad Informática / Análisis y Diseño de Malware / Source BHC (Batch Hide Compiler 2.0) en: 25 Mayo 2010, 21:37 pm
Hola.¿Alguien tiene el souce de BHC (Batch Hide Compiler 2.0)?

El enlace que aparece en:
Código
  1. http://foro.elhacker.net/analisis_y_diseno_de_malware/bhc_batch_hide_compiler_20_by_whk_proyecto_para_abril_negro-t253872.0.html
  2.  
está caído.

Quisiera estudiar ese código de WHK para aprender.

Por favor si alguien lo tiene ¿podría enviarmelo?
8  Programación / Programación C/C++ / Problema con "Compilador" Batch en: 24 Mayo 2010, 23:31 pm
Solucionado.
9  Seguridad Informática / Análisis y Diseño de Malware / Ejecutar sin gui en: 24 Mayo 2010, 08:17 am
Hola quisiera saber si existe una forma de ejecutar un ejecutable en modo gui teniendo en el pe header el flag de aplicación de consola (3).
Pregunto esto porque tengo un ejecutable que no es virus ni nada y necesito ejecutarlo en modo gui. Estando en modo consola lo escaneo en virustotal y no detecta nada, pero si le cambio el flag en el pe header a aplación gui (2) inmediatamente es detectado por dos antivirus como:
TR/Crypt.XPACK.Gen
Packer.Win32.Agent.bk

y quiero tenerlo para ejecutarlo en modo gui pero que virustotal no dé esos falsos positivos.
10  Programación / Programación C/C++ / Ayuda puntero en: 23 Mayo 2010, 04:47 am
Hola. Estoy trabajando en la primera parte de una función, pero tengo un problema con un puntero de tipo unsigned char, resulta que le asigno memoria con malloc, y al salir de la función se pierde el contenido y no entiendo porqué.

¿Alguien podría ayudarme por favor, porque no logro ver el error ?

Código
  1. #include <windows.h>
  2.  
  3. int getSecureUserProfile(unsigned char* up);
  4.  
  5. int main(int argc, char* argv)
  6. {
  7.    unsigned char* up = NULL;
  8.    if (getSecureUserProfile(up))
  9.    {
  10.      printf("Fuera:%s\n",up);
  11.      free(up);
  12.    }
  13.  
  14.  
  15. }
  16.  
  17. int getSecureUserProfile(unsigned char* up)
  18. {
  19.  int ret;
  20.  unsigned int tam;
  21.  
  22.  ret = 0;
  23.  tam = GetWindowsDirectory(NULL, 0);
  24.  
  25.  up = (unsigned char*) malloc (tam * sizeof(*up));
  26.  
  27.  if (up != NULL)
  28.  {
  29.      GetWindowsDirectory(up, tam);
  30.      ret = 1;
  31.      printf("Dentro:%s\n",up);
  32.  }
  33.  
  34.  return ret;
  35.  
  36. }
  37.  

Páginas: [1] 2
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines