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ú

Temas - karmany

#91
Ingeniería Inversa / Crackme 1.0 por Karmany
24 Marzo 2006, 22:19 PM
Hola a todos..
Hace un tiempo dedicaba bastante tiempo a esto de la ingeniería inversa, y la verdad que es un mundo muy interesante porque aprendes cómo trabaja o qué hace un programa..
Un día pensé hacer un crackme, por supuesto que no fuera muy sencillo, y sin protección(asprotect a mí me volvió loco), y aquí estoy para enseñaroslo.

Os comento el programa:
Es un programa en VB. Se introduce la contraseña y se pulsa en OK. He puesto hasta una interfaz agradable :-).
Tiene más de una solución. Yo pienso que descubrir el serial es bastante complicado..Me gustaría que lo probárais a ver si alguien consigue la contraseña. Como hacéis con todos los crackmes mandarme un privado con la solución...

El código del programa ocupa muy poco y he pensado en ir al grano, es decir, no he hecho código enredado sino todo lo contrario. Pienso también que tal vez sea muy fácil crackearlo eliminando la primera ventana, pero de eso no se trata...

Si tenéis alguna duda...

CRACKME:
http://rapidshare.de/files/16335688/CrK1.exe.html
#92
Hola a todos..
En una web, me pasaron (un tal José Miguel Sánchez) un código para modificar el border style de un formulario en tiempo de ejecución. La verdad que me ha resultado muy interesante y lo dejo aquí para el que quiera que lo pueda utilizar.

Option Explicit

'Bits o parametros de estilo de la ventana:
Const WS_MAXIMIZEBOX = &H10000
Const WS_MINIMIZEBOX = &H20000
Const WS_THICKFRAME = &H40000
Const WS_SYSMENU = &H80000
Const WS_CAPTION = &HC00000
Const GWL_STYLE = (-16)

'Funciones para modificar el estilo de la ventana:
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Dim WndStyle As Long

Private Sub Command1_Click()
Dim lStyle As Long

'Guardamos los parametros actuales del estilo de la ventana para luego poder restaurarla:
WndStyle = GetWindowLong(Me.hwnd, GWL_STYLE)

'Quitamos cualquier estilo a la ventana para conseguir una ventana rectangular:
lStyle = WndStyle And Not WS_MAXIMIZEBOX And Not WS_MINIMIZEBOX And Not WS_THICKFRAME And Not WS_CAPTION
Call SetWindowLong(Me.hwnd, GWL_STYLE, lStyle)

End Sub

Private Sub Command2_Click()
'Devolvemos cualquier estilo a la ventana:
Call SetWindowLong(Me.hwnd, GWL_STYLE, WndStyle)

'Oculta y muestra al instante la ventana para que se muestren los cambios.
Me.Hide
Me.Show

End Sub

#93
Programación Visual Basic / Curiosidades
13 Marzo 2006, 21:33 PM
Cuando programamos , alguna vez topamos con algo que nos sorprende.. Pues a mí me sorprendió esto:

Crear dos formularios: Form1 y Form2.
En Form1 este código:
Private Sub Form_Load()
    If Form2.Visible = True Then Stop
End Sub

En Form2 este código:
Private Sub Form_Load()
    Form1.Show
    Form1.Print "ERROR"
End Sub


Es bastante curioso... pero ahora cada vez que utilizo
If Formx.Visible = True/False Then, miro a ver si carga el Formx..

Un saludo
#94
Hola a todos..

A ver si me podéis echar una mano.
Soy incapaz en este foro de mandar a alguien un mensaje privado.

1) He entrado en mi perfil y no veo ninguna opción que diga mandar mensajes privados.
2)Los usuarios tienen todos los mensajes privados desconectados...

Gracias...
#95
Hola a todos..

Lo que quiero hacer es copiar un archivo que tengo:
C/: texto.txt
y que después se abra un CommonDialog para poder elegir dónde quiero pegarlo.

Llevo bastante tiempo intentándolo pero nada de nada...

Una ayuda...
#96
Hola
¿Sabéis dónde puedo conseguir información para utilizar el Microsoft Word desde Visual Basic?
Tiene tela!

Salu2
#97
Hola a todos, me estoy volviendo loco, pues se me ha acabado la lógica.   No lo entiendo!!

Tengo una base de datos con un sólo campo: "numero":1,11,15,55

Lo que quiero es conseguir el número de registros del campo "numero" que comiencen por 1. Que en este ejemplo tan sencillo son 3.

Pues hago lo siguiente:
Private Sub Form_Load()
    Data1.RecordSource = "SELECT * FROM Tabla1 WHERE numero LIKE '1*'"
    Data1.Refresh
    Text3.Text = Data1.Recordset.RecordCount
End Sub


Y ME ESCRIBE EN Text3 1!! De verdad que no lo entiendo! ¿Por qué no me da como es bien lógico 3? ¿Utilizo mal el RecordCount????

Gracias
#98
Hola a todos.
Tengo una base de datos con una tabla: tabla1, en esta tabla sólo he puesto dos campos: referencia1 y referencia2.
referencia1 tiene estos registros: 1,5,15,13
referencia2 tiene estos registros: 2,17,7,22

He accedido a la base de datos mediante un control de datos Data.
Yo lo que he hecho es seleccionar todos los registros de la tabla1 (es decir, todos los registros de los campos referencia1 y referencia2) que comiencen por 1.
Lo he conseguido de este modo: 
   Data1.RecordSource = "SELECT * FROM Tabla1 WHERE referencia2 LIKE '1*' or referencia1 LIKE '1*' "

Pero mi pregunta es: ¿Cómo puedo conseguir ordenar los registros para que se ordenen según he hecho en Data1.RecordSource?

Es decir, si yo tengo un textbox en mi formulario que enlaza a la referencia2 al pasar los registros uno a uno tendría que ver este orden: 2,22,7,17. ¿Entendéis mi pregunta verdad?

Muchísimas gracias por la ayuda.
#99
Conocéis cómo puedo saber si tengo las mayúsculas activadas o no, y si están desactivadas activarlas..
Gracias, he buscado por todos sitios y no encuentro nada...


PD para salir del apuro estoy utilizando Ucase.
#100
Hola!!
Tengo un formulario con sólo un Textbox y un módulo.
Lo que quiero hacer es que cuando en el textbox pulse con el botón derecho y seleccione la opción -lectura de derecha a izquierda- ese menú emergente se cierre y que esa opción -lectura de derecha a izquierda- no sea ejecutada.

Yo a lo máximo que he llegado ha sido a interceptar cuando paso el cursor, por encima de la opción: -lectura de derecha a izquierda-. Pero me es imposible cerrar el menú y aparte interceptar cuando se pulse la opción y no como he hecho yo cuando paso el cursor..

Tal vez sea algo complicado, pero a ver si alguien me echa una mano..
Dejo el código para que probéis lo que digo:

En el formulario hay un Textbox. Este es el simple código que hay que poner en el formulario:
Private Sub Form_Load()
    Activa
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    Desactiva
End Sub


Y este es el código que hay que poner en el módulo:
Option Explicit

Public Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long

Public Declare Function CallWindowProc Lib "user32" _
Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long


Public Const GWL_WNDPROC = (-4)
Global PrevWndProc As Long

Public Sub Activa()
    PrevWndProc = SetWindowLong(Form1.Text1.hWnd, GWL_WNDPROC, AddressOf interceptar)
End Sub

Public Sub Desactiva()
  Dim temp As Long
    temp = SetWindowLong(Form1.Text1.hWnd, GWL_WNDPROC, PrevWndProc)
End Sub

Public Function interceptar(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
    If Msg = &H11F Then 'WM_MENUSELECT = &H11F
        If wParam = -2139062272 Then 'Es el parámetro wParam correspondiente.
            Debug.Print "Has pasado sobre -lectura de derecha a izquierda- " & Now & ""
            interceptar = True
        End If
    Else
        interceptar = CallWindowProc(PrevWndProc, hWnd, Msg, wParam, lParam)
    End If
End Function


Gracias por la ayuda
#101
He encontrado una forma de interceptar el menú que sale cuando pulsamos con el botón derecho por ej. en un textbox.
El problema es que hay una función que no entiendo lo que hace, ¿me podéis ayudar?

Hay un formulario con un Textbox, un Command y un módulo.
El código es el siguiente:
En el formulario:
Option Explicit
Private mbCapturado As Boolean
Private Sub Command1_Click()
   If Not mbCapturado Then
        gHW = Text1.hWnd
        Activa
        mbCapturado = True
   Else
        mbCapturado = False
        Desactiva
        gHW = 0
   End If
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
    If mbCapturado Then Desactiva
End Sub


En el módulo esto:
Option Explicit

Public Declare Function SetWindowLong Lib "user32" Alias _
"SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, _
ByVal dwNewLong As Long) As Long

Public Declare Function CallWindowProc Lib "user32" _
Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, _
ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, _
ByVal lParam As Long) As Long

Public Const GWL_WNDPROC = (-4)

Public Const WM_CONTEXTMENU = &H7B

Global lpPrevWndProc As Long
Global gHW As Long

Public Sub Activa()
    lpPrevWndProc = SetWindowLong(gHW, GWL_WNDPROC, _
    AddressOf gWindowProc)
End Sub

Public Sub Desactiva()
  Dim temp As Long
    temp = SetWindowLong(gHW, GWL_WNDPROC, lpPrevWndProc)
End Sub

Public Function gWindowProc(ByVal hWnd As Long, ByVal Msg As Long, _
ByVal wParam As Long, ByVal lParam As Long) As Long
    If Msg = WM_CONTEXTMENU Then
        Debug.Print "Interceptado  WM_CONTEXTMENU ( " & Now & ")"
        gWindowProc = True
    Else ' Send all other messages to the default message handler
        gWindowProc = CallWindowProc(lpPrevWndProc, hWnd, Msg, wParam, _
                    lParam)
    End If
End Function


La función que no entiendo es Function gWindowProc. No sé lo que hace. ¿Es de windows? ¿Es predefinida?
En la primera sentencia if, hace: gWindowProc = True. Viendo esto yo he puesto directamente (dentro de Activa): lpPrevWndProc = SetWindowLong(gHW, GWL_WNDPROC, True), pero se "cuelga" el VB.

Alguien q tenga conocimientos me lo puede explicar un poco??
Muchas gracias.
#102
A ver si me podéis ayudar:
Quiero pulsar la tecla Supr y que en un Textbox escriba una letra, por ejemplo la p.

Yo lo que he intentado hacer es esto:
Private Sub Text1_KeyDown(KeyCode As Integer, _
                            Shift As Integer)
    If KeyCode = 46 Then
       KeyCode = 80
    End If
   
End Sub


Me echáis un cable??
#103
Hola a todos, estoy traduciendo el programa Inno Setup Compiler 5.1.6 al español. Me quedan por traducir unos términos, a ver si me podéis echar un cable.

Cómo traduzco:
Build: Se encuentra en la barra de estado, el cuarto menú.
Target Setup y Target Uninstall: Se encuentran en la barra de herramientas.
Compiler Output y Debug Output: Se pueden mostrar u ocultar y están abajo. No sé muy bien para qué valen..



#104
Qué programa me recomendáis para empaquetar una aplicación que he terminado.??
El asistente de VB la verdad no deja muchas opciones de configuración. He estado viendo tb el installshield pero lo veo muy lioso..
Gracias
#105
Por mucho que he buscado no encuentro solución.

Tengo una base de datos .mdb. Para que no se abra desde Access le he puesto una contraseña.

Ahora bien, quiero abrirla desde VB. He abierto la base de datos desde el control de datos Data. Y:

Form1.Data1.RecordSource = "SELECT * FROM Tabla1 WHERE nombre LIKE '*M*' ORDER BY nombre"
    Form1.Data1.Refresh 'aquí me da error 3031 No es válida la contraseña.


Cómo pongo la contraseña? La contraseña es "contraseña".
#106
Tengo esto en un módulo .bas que va todo bien:

Form1.Data1.RecordSource = "SELECT * FROM Tabla1 WHERE referencia LIKE '5*' ORDER BY referencia"

para que busque en el campo referencia todas las que empiecen con 5 y me las ordene.

Tengo esto otro en un formulario antes de hacer la llamada a la subrutina del módulo .bas:
valor = "referencia"
lo he definido como string.

y lo que quiero hacer es sustituir referencia de arriba por valor.. y no lo consigo, le he puesto de todo, comillas, paréntesis y nada...

muchas gracias
#107
Abrí una base de datos con el control de datos data.

Para hacer las consultas pienso que es mejor abrir la base de datos: Set Baseddatos = OpenDatabase("base.mdb").

Lógicamente el VB no me deja abrir la base de datos, porque ya la he abierto con el control de datos data..
Por mucho que he buscado no encuentro la manera de cerrar la base de datos para poder hacer las consultas..
Gracias
#108
Me ha dado error 91. Variable de tipo Object o la
variable de bloque With no está establecida, en una aplicación que estoy haciendo.
Estoy utilizando:
una base de datos: ejemplo.mdb
que contiene una tabla: tabla
y sólo le he puesto un campo: cantidad
con 5 registros: 1,2,3,4 y 5.
He hecho un ejemplo típico sencillo donde me sigue tirando este error:

Private Sub Form_Load()
    Dim BaseDatos As Database
    Dim Tabla As Recordset
    Set BaseDatos = OpenDatabase("ejemplo.mdb")
   
'Aquí es donde me marca el error:
    Tabla.OpenRecordset ("SELECT * FROM tabla WHERE cantidad = 2")
End Sub
#109
Programación Visual Basic / Bloquear un checkbox
28 Diciembre 2005, 02:37 AM
Podríais decirme cómo puedo bloquear un checkbox para que no se modifique pero se vea??

si lo inhabilito (enable) pierde el color y parece como si no quisiera mostrar el contenido del checkbox..

Yo lo que quiero hacer es:
Check1.Locked = True

Gracias...
#110
Programación Visual Basic / InhabilitarCajas: error
27 Diciembre 2005, 01:13 AM
Hola a todos..

Estoy haciendo una aplicación para tratar una base de datos..
Pues bien, para que nadie modifique los textbox nada más ejecutar la aplicación, he puesto lo siguiente:

Private Sub Form_Load()
Grabar.Enabled = False
InhabilitarCajas
End Sub

Me da error en InhabilitarCajas:
Error de compilación
Procedimiento Sub o Function no definido.

Me echáis una mano???
Gracias. Estoy con VB6
#111
Hola a todos..

Me gustaría crear una aplicación para manejar una base de datos.
La duda que tengo es qué base de datos utilizar.. Sé que desde VB puedo crear, editar etc.. bases de datos del Acces, Foxpro, SQL y Oracle.
El problema es que hice una .mdb y claro la gente la abría directamente con el Microsoft Acces.
Yo lo que quiero es eso: crear una base de datos y que sólo se pueda modificar desde la aplicación que cree con VB.

Cómo lo hacéis vosotros?
#112
Desde hace mucho tiempo tengo esta pregunta en mi cabeza: ¿Es posible, por ejemplo con un editor hexadecimal insertar bits y que el programa funcione correctamente?

Os pongo la última duda que me ha surgido.. Lo que quiero hacer es traducir algunos términos de un programa que tengo en inglés para mi hermano. Como los editores de recursos no lo abren (y no tiene protección ni nada de nada..), lo abrí con el Olly y llegué aquí:



Lo que he llegado a la conclusión en este programa es que:
Antes de llegar a definir el menú, el primero en este caso "mnuFile" pone dos números y es como una cuenta, me explico: los dos primeros números 2B y 07, por un lado y antes de llegar al siguiente menú 2C y 07. Y el siguiente 2D y 07..Después le sigue a todo final un cero.
Después de este primer 0 viene el código ASCII de lo que pone en el menu: File y yo quiero poner aquí: Archivo.

Este es el problema.. que no hay manera.
Alguien se le ocurre alguna idea? Me vale cualquier idea que se os ocurra para probar...

Como siempre gracias..
#113
Hola a todos. Es la primera vez que posteo aquí.

Utilizo el Paint Shop Pro 9. La verdad no lo suelo utilizar mucho, pues yo para esto del diseño gráfico creo que no valgo. Siempre he tenido una duda y viendo este foro os la voy a preguntar.

¿Es posible dibujar solamente el contorno de las figuras? me explico: cuando dibujo algo y luego lo guardo siempre se guarda en forma rectangular, y donde no he dibujado nada se pone por defecto en blanco.
Un ejemplo: ¿puedo guardar solamente un círculo?...para insertarlo por ejemplo después como una nueva capa en otro dibujo?

¿Me podéis explicar cómo se hace?

Os agradezco vuestra atención..
#114
Ingeniería Inversa / Tutorial Resource Hacker
18 Diciembre 2005, 14:39 PM
Hay mucha gente que entra aquí y tal vez sólo le interese cambiar la interfaz de sus programas o el idioma de su programa favorito que está en alemán o suprimir la nag que te avisa de que su tiempo de utilización del programa ha finalizado.

Pues para esta gente que no quiere entrar de lleno en el tema de ingeniería inversa y quiere algo más sencillo hice hace ya un tiempo un buen tutorial del manejo del programa Resource Hacker, que colgué en otra página.
Poco a poco fui corrigiendo algunas cosas y añadiendo muchas más, ampliándolo con otros programas y el resultado de todo esto lo puse en este foro aquí:

http://foro.elhacker.net/index.php/topic,134513.0.html

Espero os sirva de ayuda
#115
Resulta que tengo un programa con ASPROTECT.
He leído bastantes tutoriales de cómo desempacarlo y alguna vez lo he hecho yo, pero este programa tiene la curiosidad de que al ejecutarlo empieza y acaba... me explico, cuando se ejecuta lo único que hace es crear una clave en el registro y termina..
Por lo tanto no puedo hacer nada porque cuando lo pongo en el Olly y paso las excepciones el programa termina..

Alguien que sepa me puede dar algún consejo...
Muchas gracias...
#116
Antes de postear aquí he intentado informarme todo lo que he podido..

Según he averiguado la función GetLocalTime se encarga de obtener el tiempo actual. Mi pregunta es: pero para saber el tiempo que ha obtenido GetLocalTime, qué tengo que hacer? tengo que entrar dentro del kernel32? qué es lo que hace exactamente GetLocalTime?

Pongo mi caso, en un programa me encuentro con lo siguiente:
PUSH EAX
CALL <Jmp.&KERNELL32.GetLocalTime>

Antes de entrar en la llamada los registros de 32 bits, me dan lo siguiente:
EAX 0012FAB4
ECX 00001801
EDX 00B77E84
EBX 00000000
ESP 0012FAAC
EBP 0012FB24
ESI 0012FB24

Y cuando vuelve de GetLocalTime me varía estos dos registros:
ECX 0000002E
EDX 00000015

Esto tiene algún significado? Alguien sabe qué hace exactamente GetLocalTime..

Muchas gracias...
#117
Ingeniería Inversa / Explicar términos
25 Octubre 2005, 16:15 PM
Hola a todos, estoy empezando y me gustaría que por favor me explicaráis algunos términos que no entiendo:
¿qué significa?:
dumpear
tracear
handles
threads
run trace

me los podéis explicar? muchas gracias.