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 - ThunderCls

#381
Programación C/C++ / Re: [Duda] CallBack
17 Enero 2011, 18:22 PM
Cita de: Eternal Idol en 17 Enero 2011, 17:57 PM
¿Te referis a esto?
https://foro.elhacker.net/programacion_cc/c_ayuda_con_esta_clase-t311243.0.html

La solucion es la misma que te dieron en ese hilo, si queres usar la clase entonces el metodo tiene que ser estatico (como dije en este mismo hilo para pasar el puntero this podes usar GWL_USERDATA). Lee todo con atencion, incluidos los enlaces e hilos relacionados.

Eternal Idol, recuerdo haber leido la respuesta de Littlehorse, pero al final me parece que no pude lograr hacerlo como queria, igual deberia seguir intentandolo y leyendo, aunque bueno...un pedacito de codigo sencillo como el ejemplo que puse en ese hilo, pero funcional, no me vendria mal, por eso le pedi algun ejemplo a BlackZeroX▓▓▒▒░░ que al parecer lo consiguio en su codigo.
De todas formas gracias por responder  ;-)
Saludos
#382
Programación C/C++ / Re: [Duda] CallBack
17 Enero 2011, 17:49 PM
Cita de: BlackZeroX▓▓▒▒░░ en 17 Enero 2011, 10:06 AM
.
Esto ya esta solucionado con GWL_WNDPROC+GWL_USERDATA me las apañare perfectamente inclusive quitare ese feo vector con ese feo For.

Dulces Lunas!¡.

Hola BlackZeroX▓▓▒▒░░, hace un tiempo tuve el mismo problema y busque en cada rincon y en cada foro que pude, pero las soluciones que encontre no me sirvieron, al final deje a un lado lo que intentaba hacer por si me surgia alguna solucion. Por lo que leo, al final sabes como lograrlo. Podias exponer el metodo que usastes en algo de codigo y asi ver si asi saco esta espina que tengo :(
Saludos y gracias de antemano ;)
#383
Este hilo deberia ir en Ingenieria Inversa  :-\
Para lo que deseas necesitas saber antes que nada si tu aplicacion esta empacada/comprimida/protegida, eso lo puedes saber con PeID, RDG Packer Detector, etc..., ya que si lo esta, deberas antes desempacarla/desprotegerla para poder cambiar lo que deseas.
En caso de que no lo este...bueno, aqui podrias usar varias herramientas para lograr lo que quieres, pero como varian las herramientas, asi varia la dificultad a la hora de trabajar con ellas, ademas, ya que dices que es un VB, lo mejor para editarle los recursos a un VB es con el VBReformer. Es una aplicacion sencilla, con una interfaz bien intuitiva, en cuanto lo abras, sabras como arreglartelas  :P
Saludos
#384
http://ricardonarvaja.info/WEB/CURSO%20NUEVO/TEORIAS%20NUMERADAS/1101-1200/1157-Incrustar%20musica%20XM%20en%20c%2B%2B%20builder%20by%20ZELT%40.rar

Se podria hacer tambien de otra forma...a base de recursos, por ejemplo...pero bueno, con este metodo lograras lo que quieres ;)
Saludos
#385
Si lo que deseas es abrir el documento dentro de tu propia aplicacion....bueno, pues...opino igual que Leo Gutiérrez y do-while  :rolleyes:
Ahora, si lo que quieres es simplemente ejecutarlo desde el SO, puedes hacerlo asi:

Código (cpp) [Seleccionar]
ShellExecute (NULL, "Open", "C:\\archivo.doc", NULL, NULL, SW_SHOWNORMAL);

Saludos
#386
Un saludos amigos, a ver si me pueden sacar de esta. Trasteando con clases y otras cosas me han surgido algunos problemas con una clase y su implementacion. El codigo es el siguiente:

Código (cpp) [Seleccionar]
//---------------------------------------------------------------------------
class a
{
  private:
    WNDPROC lpPrevProc;
    LRESULT CALLBACK NewProc(HWND, UINT, WPARAM, LPARAM);

  public:
    void Hookea (HANDLE);
    ...
};

//---------------------------------------------------------------------------
void a::Hookea (HANDLE hWnd)
{
  lpPrevProc = (WNDPROC)GetWindowLong((HWND__*)hWnd, GWL_WNDPROC);

  SetWindowLongA((HWND__*)hWnd, GWL_WNDPROC, (DWORD)NewProc);
  // E2235 Member function must be called or its address taken Compiler error
  // Probe con "(DWORD)&a::RealWinWndProc" pero me dice
  // E2031 Cannot cast from 'type1' to 'type2' Compiler error
}

//---------------------------------------------------------------------------
LRESULT CALLBACK a::NewProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
  switch(uMsg)
  {
    case WM_DESTROY:
      MessageBox(hwnd, "Adios Mundo", "Bye!!!", MB_ICONINFORMATION);
    break;
  }
 
  return CallWindowProc(lpPrevProc, hwnd, uMsg, wParam, lParam);
}
//---------------------------------------------------------------------------


Alli estan los errores comentados que me tira el compilador, pero no entiendo el por que, pues he visto algun ejemplo en VC++ y justamente se hace esto:
Código (cpp) [Seleccionar]
SetWindowLongA(hWnd, GWL_WNDPROC, (DWORD)(&a::NewProc));

Pero cuando lo paso al CBuilder e intento compilar me sale con que:
E2031 Cannot cast from 'long (__stdcall a::*)(HWND__ *,unsigned int,unsigned int,long)' to 'unsigned long'

Ahora, si hago lo mismo, pero programando estructuradamente, o sea, sin clases, no hay problemas y me coge la linea de la siguiente forma sin quejarse:
Código (cpp) [Seleccionar]
SetWindowLongA((HWND__*)hWnd, GWL_WNDPROC, (DWORD)NewProc);

Mi pregunta, como puedo obtener el puntero al metodo a::NewProc para poder pasarlo como parametro en SetWindowLong como DWORD???, que estoy haciendo mal o que me falta por hacer???
Agradeceria cualquier ayuda al respecto, de verdad que esto ya me esta dando dolores de cabeza.  >:(
Gracias por leer
Saludos
#387
Hola
Te serviria usando GDI+ ???
No lo has intentado ???
saludos
#388
Hola Littlehorse, muchas gracias por responder  ;)
Veras, siguiendo en mi busqueda para lograr este objetivo que comento, he visto varios foros y paginas, en alguno de ellos, me parece que en Expert Exchange he leido algunas ideas como estas que corroboran lo que hablabamos anteriormente:

Per-pixel opacity is an entirely different painting model than the standard Win32 mechanism.  There is no WM_PAINT anymore.  Instead, the top-level window composes a bitmap and sends it to the OS to use as the visual representation of the window on screen.  Child windows are not drawn into this bitmap, and so they are not shown on the screen.  This is a general limitation of a WS_EX_LAYERED window when used via UpdateLayeredWindow().

You may have some luck by using a top-level window with the WS_EX_LAYERED style (instead of child windows), and then positioning the window over its location in the WPF application.  Keeping the app window and this "fake" top-level aligned on the screen may be difficult.

I confirmed this with our expert, Dwayne Need and here's what he had to say:

This is a limitation of using WS_EX_LAYERED and UpdateLayeredWindow().  This form of layered windows does not support child windows.  This is a Win32 limitation, not a WPF limitation.  Child windows could be used with constant opacity (WS_EX_LAYERED and SetLayeredWindowAttributes) but WPF does not support that mode, as it is more restrictive (constant versus per-pixel opacity).

Anyways, there are various ways to try and work around the limitation.  None are great.  Limitations like these are part of the motivation for a new generation of presentation APIs such as WPF.

Possible solutions (various degrees of hackery):

1)     Don't host legacy child HWND controls.  Try to find a WPF equivalent.

2)     Write a WPF equivalent of the HWND control (HTML content seems to be a popular request)

3)     Don't use per-pixel alpha.  Consider applying a HREGION instead.

4)     Place your HWND control in a regular top-level window that has the app window as its owner.  Position the control window where you want it.

5)     Use a timer and call Win32's PrintWindow (or send a WM_PRINT) to capture the HWND control to a bitmap, and display that bitmap in WPF.

6)     Try to wrap the containing window in a WS_EX_COMPOSITED window and respond to WM_PAINT to capture a bitmap and display the bitmap in WPF.

7)     Hook the HWND control's window proc and respond to WM_PAINT by capturing the bitmap and displaying it in WPF


Ahora, para que tengas una idea un poco mas clara de lo que tengo y lo que quiero lograr, puedes visitar este enlace: http://www.codeproject.com/KB/dialog/SemiTranDlgWithCtrls.aspx.
En las imagenes se puede ver claramante como se ha logrado el objetivo de insertar controles estandares en layered windows y eso justamente es lo que quiero lograr. He bajado las fuentes pero no me entero de nada, ademas que es .NET  :(
Por eso pido un poco de ayuda por aqui, para ver si al final se puede sacar algun code en C++ que cumpla este cometido.
Saludos y gracias una vez mas por tu tiempo en responder
#389
Un saludo a todos los del foro.
Bueno, aqui traigo una duda que me ha surgido usando la API UpdateLayeredWindow en un pequeño estudio de transparencias. Veran, estoy usando ULW para cargar una imagen png con alpha blending effects y crear una splash screen con ella, ahora, realmente se ve genial gracias a las cualidades del formato PNG, muy linda, todo bien, pero la cosa se complica de la siguiente forma: Todos los demas controles estandares(Botones, Edits, etc) en el formulario se hacen invisibles una vez corro la aplicacion, por lo que no consigo interactuar con ninguno de ellos ni aun mostrarlos encima de la imagen.
He buscado algo en la web y he visto muchas respuestas diciendo que algo como eso no se puede, que una vez que se utiliza esa API en una ventana, los CHILDS controls no se veran al no ser por otros metodos poco convencionales como crear una "fake" window "encima" de la original y asignarle algunas propiedades con SetLayeredWindowAttributes para de esta forma dar una perspectiva de como si tuvieramos los controles justo encima de nuestra splash. Bueno, eso fue lo que entendi de todo lo que encontre en la web, pero en realidad no capto muy bien todo esto.

Mi pregunta es la siguiente:
Alguien sabe como lograr esto de lo que he estado hablando???...alguien sabe como lograr hacer visibles los controles en una layered window con ULW, o por lo menos sabe de algun otro metodo que pueda servir para esto???

Saludos y gracias x su tiempo en leer este post
#390
Ingeniería Inversa / Re: [Crackme] Crackme #1
2 Agosto 2010, 23:52 PM
Recien lo veo  ::)
Y vaya.....si que ha estado entretenido, me ha puesto a sacar bastantes cuentas, todo por la vagancia de no hacerle un code para que me diera el serial....jeje, igual queria divertirme un poco con la calculadora  :xD...ahhh, se me olvidaba...no te desquicies mucho por lo del reto panda  :silbar:
saludos

PD: Revisa el privado