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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Mensajes
Páginas: 1 ... 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 [38] 39 40 41 42 43 44 45 46 47
371  Programación / Ingeniería Inversa / Re: Luego de aceptar la licencia, al utilizarlo se conecta para corroborar [duda] en: 14 Junio 2011, 17:40 pm
Puedes darle una leida a estos y ver si sacas algo de ellos

http://ricardonarvaja.info/WEB/OTROS/AKIRA%20TODO/30.%20Estudio%20completo%20de%20aplicaciones%20internet%20e%20instaladores.rar

http://ricardonarvaja.info/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/301-400/315-Aproximacion%20a%20la%20activacion%20via%20internet_JuanJose.rar

Saludos
372  Programación / Programación C/C++ / TLS Callback en: 9 Mayo 2011, 22:18 pm
Hola amigos del foro.
He estado intentando implementar en C++ una TLS Callback. La cuestion es que no logro dar con mi objetivo. He estado buscando en la red algo de info y este es el codigo que encontre y que estoy usando:

Código
  1. #include <windows.h>
  2. char mensaje[] = "Hola desde la TLS Callback";
  3.  
  4. void __stdcall tls_callback(void * /*instance*/,
  5.                        DWORD reason,
  6.                        void * /*reserved*/)
  7. {
  8.  if ( reason == DLL_PROCESS_ATTACH )
  9.  {
  10.    MessageBox(NULL, "Proceso Adherido", "TLS Callback", MB_OK);
  11.    OutputDebugStringA(mensaje);
  12.  }
  13. }
  14.  
  15. DWORD _tls_index = 0;
  16. PIMAGE_TLS_CALLBACK callback = tls_callback;
  17. extern "C" IMAGE_TLS_DIRECTORY _tls_used = {0, 0, (DWORD)&_tls_index, (DWORD) &callback, 0, 0};
  18.  
  19. int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
  20. {
  21.    MessageBox(NULL,"Este es el WinMain!","Hola!",MB_OK);
  22.    return 0;
  23. }

El codigo compila sin problemas, pero al revisar el ejecutable creado, el mismo no contiene ninguna TLS Callback, por lo que no funciona. En la web donde encontre el codigo (no recuerdo bien donde) dicen que ese codigo les funcionaba, pero a mi no :( y no tengo idea de lo que pueda estar mal.
Si alguien sabe que puede estar mal o que falta, o de que otra forma se pudiera implementar una TLS Callback, le agradeceria algunos tips ;) Por cierto, estoy usando el BCBuilder6.
Saludos
373  Programación / Programación C/C++ / Re: leer puntero en asm en: 11 Marzo 2011, 18:38 pm
Código
  1. char _a='f';
  2. char *_buffer=&_a;
  3. int main()
  4. {
  5.  
  6. asm("movl $3,%eax");
  7. asm("movl $0,%ebx ");
  8. asm("mov _buffer,%ecx"); //asm("mov _a,%ecx ");    <---- esta linea
  9. asm("mov $30,%edx");
  10. asm("int $0x50");        
  11.  
  12.    system("PAUSE");
  13.    return EXIT_SUCCESS;
  14. }
  15.  

me dice [Linker Error] undefined reference to `buffer'  e probado colocando la variable "a" directamente pero medice en mismo problema con dicha variable

como lo arreglo  :) si me aclaran la duda

Me parece que tu problema esta con el uso de la sintaxis AT&T lee un poco sobre el asm inline con el compilador GCC, aqui te pongo un texto de referencia
http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html
374  Programación / Ingeniería Inversa / Re: [Duda] en: 11 Marzo 2011, 17:10 pm
...
Yo se bstante sobre el  tema pero podrías hacerme un tutorial o poner links de algunos buenos.
Por favor que incluyan algo de bugs y exploits aunque ese ya tengo buenos tutos y yo se com hacer yo uno.
Por favor correnselo un poco. Comentar y contesto ...

Att N30h}

Bastante modesto no?  :silbar:
Busca en esta web, alli encontraras mas de 1000 tutoriales

http://ricardonarvaja.info/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/
375  Programación / Programación C/C++ / Re: Ejecutar un archivo externo y esperar a que termine para eliminarlo en: 7 Marzo 2011, 22:18 pm
Bueno, ya que nadie aporta, me respondo yo mismo y de paso aporto tambien para alguien con el mismo problema que encuentre este post en la red. Por ahora lo he solucionado por la variante#2, aunque no estoy 100% conforme, pero bueno, es lo que hay, aun asi seguire investigando en la variante#1 y si logro algo lo posteo aqui tambien.

Variante#2 - Metodo1
================

Esta variante la he sacado de dos formas distintas. La primera es de un post parecido a este que encontre en el foro de VB el codigo lo pueden ver aqui: http://foro.elhacker.net/programacion_visual_basic/problemas_con_ejecutar_cualquier_archivo_y_esperar_a_que_termine-t205423.0.html
Asi que lo que hice fue pasarlo a CBuilder6 y aqui esta el codigo resultante:

Código
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include <psapi.h>
  4. #pragma hdrstop
  5. #pragma comment(lib,"C:\Archivos de programa\Borland\CBuilder6\Lib\Psdk\Psapi.lib")
  6.  
  7. #include "Unit1.h"
  8. //---------------------------------------------------------------------------
  9. #pragma package(smart_init)
  10. #pragma resource "*.dfm"
  11. TForm1 *Form1;
  12. //---------------------------------------------------------------------------
  13. __fastcall TForm1::TForm1(TComponent* Owner)
  14.    : TForm(Owner)
  15. {
  16. }
  17. //---------------------------------------------------------------------------
  18.  
  19. bool TForm1::ShellWait(AnsiString sShell, int eFocus)
  20. {
  21.    HANDLE lhProcess = NULL;
  22.    DWORD lRet = 0;
  23.    DWORD lProc = 0;
  24.    TList *cProcs = new TList();
  25.  
  26.    // Se ejecuta el archivo especificado
  27.    if ((INT)ShellExecute(0, "open", sShell.c_str(), NULL, NULL, eFocus) > 32)
  28.    {
  29.        // Se enumeran todos los procesos y se devuelve
  30.        // un listado de ellos
  31. cProcs = (TList*)EnumProcs();
  32.        // Se toma el ultimo proceso que se creo de la lista
  33. lProc = (*(DWORD*)cProcs->Items[cProcs->Count - 1]);
  34.    }
  35.  
  36.    // Se abre toma la informacion del proceso
  37.    lhProcess = OpenProcess(PROCESS_QUERY_INFORMATION, false, lProc);
  38.  
  39.    if (lhProcess == 0)
  40.        return false;
  41.  
  42.    do
  43.    {  // Se iterara mientras el proceso se mantenga activo
  44.       GetExitCodeProcess(lhProcess, &lRet);
  45.       Application->ProcessMessages();
  46.       Sleep(100);
  47.    }while(lRet == STILL_ACTIVE);
  48.  
  49.    // Liberamos memoria
  50.    CloseHandle(lhProcess);
  51.    delete cProcs;
  52.  
  53.    return true;
  54. }
  55. //---------------------------------------------------------------------------
  56.  
  57. TList* TForm1::EnumProcs()
  58. {
  59.    DWORD lvProcesses[1024] = {0};
  60.    DWORD lNedded = 0;
  61.    TList *cTemp = new TList();
  62.  
  63.    // Enumeramos todos los procesos en ejecucion
  64.    if (EnumProcesses(lvProcesses, sizeof(lvProcesses) * 4, &lNedded) != 0)
  65.    {
  66.        for(UINT i = 0; i < (lNedded / sizeof(DWORD)); i++)
  67.        {
  68.           // Almacenamos en una lista cada proceso
  69.           // Nota: Se almacenan por orden de ejecucion
  70.           if (lvProcesses[i] != 0)
  71.              cTemp->Add(&lvProcesses[i]);
  72.        }      
  73.    }
  74.  
  75.    return cTemp;
  76. }
  77. //---------------------------------------------------------------------------
  78.  
  79. void __fastcall TForm1::Button1Click(TObject *Sender)
  80. {
  81.    if(ShellWait("C:\\test.doc", SW_SHOWNORMAL))
  82.        Application->Terminate();
  83. }
  84. //---------------------------------------------------------------------------

Ahora, con respecto a este metodo, es de aclarar que no siempre es 100% efectivo, y me explico. Supongamos que vamos a probar el codigo que he puesto, el cual abre el archivo "test.doc", pero antes de hacerlo ya teniamos con anterioridad una instancia del "WORD.EXE" abierta, y luego de haber ejecutado una que otra aplicacion mas (Winrar, AdobeReader, etc), probamos nuestro codigo y...veremos que abre el "test.doc", pero aun al cerrarlo, nuestra aplicacion no se termina.
Esto es debido a que el codigo anterior se basa en hacer un listado de todos los procesos que se ejecutan en la PC, tomando como referencia el ultimo proceso creado, como el proceso de nuestro archivo, y por este sera por el que esperara a que termine. Ahora en el ejemplo que puse anteriormente, ya teniamos una instancia del "WORD.EXE" abierta, por lo que al lanzar el documento no se crea ningun nuevo proceso y se tomara como referencia el ultimo proceso de la lista, no siendo este el correcto.

Variante#2 - Metodo2
================

El segundo metodo que utilizo es el que comentaba en el primer post, y es haciendo uso de las API's ShellExecuteEx y WaitForSingleObject, aqui esta:

Código
  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #pragma hdrstop
  4.  
  5. #include "Unit1.h"
  6. //---------------------------------------------------------------------------
  7. #pragma package(smart_init)
  8. #pragma resource "*.dfm"
  9. TForm1 *Form1;
  10. //---------------------------------------------------------------------------
  11. __fastcall TForm1::TForm1(TComponent* Owner)
  12.    : TForm(Owner)
  13. {
  14. }
  15. //---------------------------------------------------------------------------
  16.  
  17. void __fastcall TForm1::Button1Click(TObject *Sender)
  18. {
  19.   SHELLEXECUTEINFO execInfo;
  20.   char filename[MAX_PATH] = "C:\\test.doc";
  21.  
  22.   ZeroMemory(&execInfo, sizeof(SHELLEXECUTEINFO));
  23.  
  24.   // Llenamos la estructura
  25.   execInfo.cbSize = sizeof(SHELLEXECUTEINFO);
  26.   execInfo.fMask = SEE_MASK_FLAG_DDEWAIT + SEE_MASK_FLAG_NO_UI + SEE_MASK_NOCLOSEPROCESS;
  27.   execInfo.lpVerb = "open";
  28.   execInfo.lpFile = filename;
  29.   execInfo.nShow = SW_SHOWNORMAL;
  30.  
  31.   // Lanzamos el archivo
  32.   ShellExecuteEx(&execInfo);
  33.  
  34.   // Verificamos que no hayan errores
  35.   if ((int)execInfo.hInstApp <= 32)
  36.   {
  37.      if ((int)execInfo.hInstApp == SE_ERR_NOASSOC)
  38.         MessageBox(NULL,
  39.                          "No existe una aplicación asociada \na la extensión del archivo",
  40.                          "Error",
  41.                          MB_ICONERROR);
  42.  
  43.      MessageBox(NULL,
  44.                       "No se ha podido ejecutar el archivo",
  45.                       "Error",
  46.                       MB_ICONERROR);
  47.   }
  48.  
  49.   // Esperamos a que termine el proceso
  50.   WaitForSingleObject(execInfo.hProcess, INFINITE);
  51.   Application->Terminate();
  52. }
  53. //---------------------------------------------------------------------------

Este metodo al igual que el primero, tiene sus "contras", algo bien parecido a lo que sucede con el primer codigo.

A pesar de estos inconvenientes que he expuesto para cada metodo, el que mejores resultados da de los dos es el primero, asi que gracias a cobein del foro de VB por ese codigo que posteo hace unos años.
Como dije al principio, seguire investigando en la primera variante que expuse, de seguro sale algo interesante.
376  Programación / Programación C/C++ / Ejecutar un archivo externo y esperar a que termine para eliminarlo en: 4 Marzo 2011, 16:31 pm
Un saludo a todos los amigos del foro y ti que lees este post.
Vamos a ver, tengo esta aplicacion cuyo objetivo es el de ejecutar un archivo externo (.txt, .pdf, etc) con ShellExecute, ahora, lo que quiero es que, una vez ejecutado y cerrado dicho archivo, se borre del HD sin mas. Lo que quiero es algo asi como un fichero temporal, suponiendo que sea un txt, pues que una vez mi aplicacion lo abra con el bloc de notas y luego el usuario lo cierre, que este se elimine. La cuestion esta en que, como muchos pensaran, podria programar un DeleteFile justo antes de salir de mi aplicacion y listo, pero lo que quiero hacer es lo siguiente:

Variante#1
========

1- Ejecuto mi aplicacion
2- Mi aplicacion ejecuta el archivo (txt, pdf, doc, etc)
3- Mi aplicacion se cierra
4- Se continua abriendo el archivo con su programa predeterminado
5- Se termina de trabajar con el archivo abierto y se cierra
6- El archivo se elimina automaticamente

Ahora, otra variante que pudiera hacer seria moviendo el punto 3:

Variante#2
========

1- Ejecuto mi aplicacion
2- Mi aplicacion ejecuta el archivo (txt, pdf, doc, etc)
3- Se continua abriendo el archivo con su programa predeterminado
4- Se termina de trabajar con el archivo abierto y se cierra
5- Mi aplicacion sabe que se cerro el archivo y lo elimina
6- Mi aplicacion se cierra

Ahora, la cosa se complica al no ser un .exe el que se ejecuta, sino cualquier tipo de archivo que depende de una segunda aplicacion para abrirse, por lo que no puedo hacer nada con WaitForSingleObject o cualquier API para el trabajo con procesos y su monitoreo (corriganme si estoy equivocado).

Variante#1
========

Para esto que quiero he estado investigando un poco las API's CreateFile y ShellExecuteEx. En cuanto a la primera, he visto un parametro muy interesante, me refiero a:

Código
  1. DWORD dwFlagsAndAttributes

especificamente en la bandera:

FILE_FLAG_DELETE_ON_CLOSE: The system deletes a file immediately after all of its handles are closed, which includes the specified handle and any other open or duplicated handles. If there are existing open handles to a file, the call fails unless they were all opened with the FILE_SHARE_DELETE share mode. Subsequent open requests for the file fail, unless the FILE_SHARE_DELETE share mode is specified.

Y yo tengo esto:

Código
  1. SECURITY_ATTRIBUTES secAttr;
  2. ZeroMemory(&secAttr, sizeof(SECURITY_ATTRIBUTES));
  3. secAttr.nLength = sizeof(SECURITY_ATTRIBUTES);
  4. secAttr.bInheritHandle = true; // Para que sea el mismo handle para todos los procesos
  5.  
  6. HANDLE hFile = CreateFile(filename,
  7.                          GENERIC_ALL, // GENERIC_READ
  8.                          FILE_SHARE_DELETE + FILE_SHARE_READ,
  9.                          &secAttr, // 0
  10.                          OPEN_EXISTING,
  11.                          FILE_FLAG_DELETE_ON_CLOSE, // FILE_ATTRIBUTE_NORMAL
  12.                          NULL);

Como ven eso es justo lo que necesito, pero aqui viene el otro problema, y es que una vez tomado el handle del archivo con estos valores, no tengo acceso permitido a el por una segunda aplicacion al no ser para eliminarlo, por lo que las llamadas con ShellExecute sobre el mismo daran error de acceso al intentar abrirlo.

Variante#2
========

Para la segunda variante, he investigado sobre la API ShellExecuteEx, exactamente hay un valor interesante en la estructura de parametro SHELLEXECUTEINFO, me refiero al valor:

Código
  1. HANDLE hProcess;

Handle to the newly started application. This member is set on return and is always NULL unless fMask is set to SEE_MASK_NOCLOSEPROCESS. Even if fMask is set to SEE_MASK_NOCLOSEPROCESS, hProcess will be NULL if no process was launched. For example, if a document to be launched is a URL and an instance of Microsoft Internet Explorer is already running, it will display the document. No new process is launched, and hProcess will be NULL.
Note ShellExecuteEx does not always return an hProcess, even if a process is launched as the result of the call. For example, an hProcess does not return when you use SEE_MASK_INVOKEIDLIST to invoke IContextMenu.


Y yo tengo esto:

Código
  1. SHELLEXECUTEINFO execInfo;
  2.  
  3. ZeroMemory(&execInfo, sizeof(SHELLEXECUTEINFO));
  4. execInfo.cbSize = sizeof(SHELLEXECUTEINFO);
  5. execInfo.fMask = SEE_MASK_FLAG_DDEWAIT + SEE_MASK_FLAG_NO_UI + SEE_MASK_NOCLOSEPROCESS;
  6. execInfo.lpVerb = "open";
  7. execInfo.lpFile = filename;
  8. execInfo.nShow = SW_SHOWNORMAL;
  9.  
  10. ShellExecuteEx(&execInfo);

Pero por lo que dicen de el, vemos que no seria confiable para esto, ademas que lo he intentado con el si exito alguno.

Perdon por este post tan largo, y gracias por el simple hecho de haber llegado hasta aqui (si es que llegaste...jeje), pero aqui es donde estoy detenido, y es que no se de que forma lograr lo que quiero,...si es con alguna combinacion exacta de valores en los parametros de CreateFile o en ShellExecuteEx que me permitan alguna de las dos variantes que expuse al principio.
Bueno, no doy mas lata...ya esta...alguien tiene alguna idea o me puede guiar a lo que quiero???
Saludos y gracias de antemano
377  Informática / Software / Re: Excel 2007-2010 Proteccion con password? en: 23 Febrero 2011, 16:46 pm
Claro de ahi viene mi pregunta, lo intente hacer todo desde excel, esa es la idea... pero no ha resultado, o una cosa o la otra...
Y la opcion de proteger celdas sin que se pueda borrar nada seria la optima, de hecho la es, pero tengo que repetir ese paso pestaña por pestaña y son como 40.
Gracias por responder.

Realmente no entiendo cual es la complicacion que tienes, pues es algo bien sencillo. Igual te dejo un enlace, si sigues teniendo problemas, usa el google con las palabras: proteger+celdas+excel

http://www.aulaclic.es/excel2000/t_6a_1.htm
378  Informática / Software / Re: Excel 2007-2010 Proteccion con password? en: 22 Febrero 2011, 01:08 am
Lo haz intentado con el mismo Excel??
En el menu "Herramientas", opcion "Proteger"
379  Programación / Programación Visual Basic / Re: Administar usuarios de Windows en: 21 Febrero 2011, 23:02 pm
Para administrar usuarios deberias investigar un poco sobre las funciones:
NetUserAdd, NetUserDel, NetUserEnum, NetUserGetInfo, NetUserSetInfo.
Saludos
380  Programación / Programación C/C++ / Re: ayuda con shlobj.h en: 21 Febrero 2011, 21:51 pm
Define en tu proyecto lo siguiente:

Código
  1. #define WIN_32_LEAN_AND_MEAN
Páginas: 1 ... 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 [38] 39 40 41 42 43 44 45 46 47
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines