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 - MCKSys Argentina

#4051
Ingeniería Inversa / Re: Ayuda con ollydbg
30 Marzo 2013, 23:18 PM
No le debes estar pegando al salto correcto. Quizás el proggie está pensado para no ser parcheado de esa forma. Quizás sólo estés evitando el mensaje de error.

Tal vez convenga reversear la función que comprueba el serial.

En definitiva: Me parece que debes analizar más el programa...

Saludos!
#4052
Cita de: xivan25 en 30 Marzo 2013, 00:22 AM
si se compila en P-Code,practicamente indescifrable.

Si te refieres a VB6, PCODE es MUCHO mas sencillo que native code (A mi juicio).

En Nativo puedes 1 millón de cosas más asquerosas que en PCODE: Desde tocar el código hasta llamar a ASM usando Callbacks.

Saludos!
#4053
ASM / Re: Ayuda con funcion "Split"
30 Marzo 2013, 23:09 PM
Cita de: Binary_Death en 30 Marzo 2013, 04:48 AM
Ahora, si quieres hacer un split como el de VB (delimitador de más de un carácter), la cosa se complica. Lo difícil en ese caso es el algoritmo a usar, y hay que pensarlo bien para que sea óptimo.

Siempre puedes tracear el runtime de VB y ver qué hace... :)

Por supuesto, hay que tener en cuenta que VB usa UNICODE internamente.
#4054
ASM / Re: Ayuda con funcion "Split"
28 Marzo 2013, 05:21 AM
Veo que no tienes en cuenta algunas cosas. Examinemos el problema:

Quieres hacer en MASM lo mismo que en VB6: usar la función split.

La función split toma un string de largo arbitrario (por sencillez diremos que es un string terminado en zero) y otro string, el cual NORMALMENTE es de largo 1 (por sencillez lo tomaremos como de largo 1).

Lo que hace la función es partir el primer string en la posición de cada ocurrencia del segundo string. Cabe destacar que el string de separación (el segundo string) no se incluye en el resultado.

Luego, las strings obtenidas se colocan en un array (matriz en vb) de strings.

Faltan analizar los casos especiales, como por ej.: si no se encuentra el 2º string, pero por ahora basta con lo dicho.

Ahora, para lo anterior, debes tener en cuenta lo siguiente:

El array de cadenas: lo devuelves como puntero? Osea, la función se encarga de allocar la memoria, llenarla (partir la cadena) y devolver un ptr al array en eax? O mejor lo pides como parámetro? Si viene como parámetro: cuál debería ser el tamaño? Un array de strings en realidad sería un array de punteros, donde deberás especificar el tamaño, con lo que ya tendrías una estructura.

Como ves, no es tan sencillo como suena, pero tampoco imposible. Te aconsejo mirar la carpeta HELP del MASM. En especial el archivo masmlib. Verás que la lib de MASM tiene muchas cosas que puedes usar y que te permitirán implementar esta función de una forma sencilla. Ejemplos que te podrían servir en este caso:

create_array  Create an array of pointers to a user defined array
InString Find substring in zero terminated source string
szWcnt  Count the occurrence of text in a zero terminated string

y la lista sigue y sigue... :)

Saludos!
#4055
ASM / Re: Ayuda con funcion "Split"
27 Marzo 2013, 23:12 PM
Si tienes un buffer (Cadena), puedes usar la palabra offset para hacer referencia a la posicion donde esta.

mov eax, offset Cadena

Hace que eax apunte al primer byte de la cadena.

Ahora

mov eax, dword ptr [Cadena]

Hace que eax contenga "el dword que esta apuntado por" Cadena, osea los 4 primeros bytes de la misma.

Para recorrer el stringz char x char hay muchos metodos. Lo que hice YO al principio, fue hacer un programa que usaba las macros de masm (fijate el folder doc de la instalacion de masm), use StrCopy (no recuerdo bien cual fue con certeza), compile y miré el asm con Olly.
#4056
Te dejo el codigo de un "reloj de ajedrez" que hice hace un tiempo. Tiene la cuenta regresiva que pides y agunas cosillas mas (es el form completo).

Código (vb) [Seleccionar]

VERSION 5.00
Begin VB.Form Form1
   Caption         =   "Form1"
   ClientHeight    =   9495
   ClientLeft      =   165
   ClientTop       =   450
   ClientWidth     =   12345
   LinkTopic       =   "Form1"
   ScaleHeight     =   9495
   ScaleWidth      =   12345
   StartUpPosition =   2  'CenterScreen
   Begin VB.Timer Timer1
      Enabled         =   0   'False
      Interval        =   1000
      Left            =   960
      Top             =   3480
   End
   Begin VB.Label lblPause
      Alignment       =   2  'Center
      AutoSize        =   -1  'True
      BackStyle       =   0  'Transparent
      Caption         =   "PAUSADO"
      BeginProperty Font
         Name            =   "Arial"
         Size            =   8.25
         Charset         =   0
         Weight          =   700
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H000000FF&
      Height          =   210
      Left            =   3210
      TabIndex        =   2
      Top             =   3720
      Width           =   795
   End
   Begin VB.Label lblNegras
      Alignment       =   2  'Center
      BackColor       =   &H00000000&
      Caption         =   "00:00"
      BeginProperty Font
         Name            =   "Arial"
         Size            =   8.25
         Charset         =   0
         Weight          =   700
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H00FFFFFF&
      Height          =   1155
      Left            =   780
      TabIndex        =   1
      Top             =   1980
      Width           =   3795
   End
   Begin VB.Label lblBlancas
      Alignment       =   2  'Center
      BackColor       =   &H00FFFFFF&
      Caption         =   "00:00"
      BeginProperty Font
         Name            =   "Arial"
         Size            =   8.25
         Charset         =   0
         Weight          =   700
         Underline       =   0   'False
         Italic          =   0   'False
         Strikethrough   =   0   'False
      EndProperty
      ForeColor       =   &H00000000&
      Height          =   1035
      Left            =   720
      TabIndex        =   0
      Top             =   480
      Width           =   4335
   End
   Begin VB.Menu mnuArchivo
      Caption         =   "&Archivo"
      Begin VB.Menu mnuArchivoTiempo
         Caption         =   "Tiempo"
         Shortcut        =   ^T
      End
      Begin VB.Menu sep1
         Caption         =   "-"
      End
      Begin VB.Menu mnuArchivoSalir
         Caption         =   "Salir"
         Shortcut        =   ^Q
      End
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

Dim TurnoBlancas As Boolean
Dim UnSeg As Date
Dim Listo As Boolean
Dim Iniciado As Boolean
Dim Terminado As Boolean

Private Sub Form_KeyPress(KeyAscii As Integer)
If Terminado Then
    Exit Sub
End If
If Not Iniciado Then
    Iniciado = True
    Exit Sub
End If
If UCase(Chr(KeyAscii)) = "P" Then
    Timer1.Enabled = Not Timer1.Enabled
    lblPause.Visible = Not lblPause.Visible
    Exit Sub
End If
TurnoBlancas = Not TurnoBlancas
End Sub

Private Sub Form_Load()
Me.Caption = "Chess Clock v" & App.Major & "." & App.Minor & "." & App.Revision

UnSeg = CDate(CDate("00:00:02") - CDate("00:00:01"))
Listo = False
TurnoBlancas = False
Terminado = True
lblPause.Visible = False
Timer1.Enabled = False
End Sub

Private Sub Form_Resize()
Dim Tam As Long

If Me.WindowState = vbMinimized Then Exit Sub

lblBlancas.Width = Me.ScaleWidth
lblBlancas.Height = Me.ScaleHeight / 2
lblBlancas.Top = 0
lblBlancas.Left = 0

lblNegras.Width = Me.ScaleWidth
lblNegras.Height = Me.ScaleHeight / 2
lblNegras.Top = lblBlancas.Height
lblNegras.Left = 0

Tam = Me.ScaleY(lblBlancas.Height, vbTwips, vbPixels)
Tam = Tam - ((Tam * 35) \ 100)

lblBlancas.Font.Size = Tam
lblNegras.Font.Size = Tam

Tam = Tam - ((Tam * 30) \ 100)
lblPause.Font.Size = Tam
lblPause.Top = lblBlancas.Height - (lblPause.Height / 2)
lblPause.Left = (lblNegras.Width / 2) - (lblPause.Width / 2)
End Sub

Private Sub mnuArchivoSalir_Click()
Timer1.Enabled = False
Unload Me
End Sub

Private Sub mnuArchivoTiempo_Click()
Dim Tiempo As String
Dim strAux As String

Reponer:

strAux = InputBox("Ingresar la cantidad de tiempo en minutos (solo numeros enteros. Maximo 59 minutos). ", "Definir Cantidad de Tiempo", "15")
strAux = Trim(strAux)
If strAux = "" Then
    Exit Sub
End If
If Not IsNumeric(strAux) Then
    MsgBox "Ingrese solo numeros enteros"
    GoTo Reponer
End If
If Len(strAux) > 2 Then
    MsgBox "Numero muy grande!"
    GoTo Reponer
End If
If CLng(strAux) > 59 Then
    MsgBox "Numero muy grande!"
    GoTo Reponer
End If
SetStart (CLng(strAux))
End Sub

Private Sub SetStart(Tiempo As Long)
lblPause.Visible = False
Terminado = False
Iniciado = False
lblBlancas.Caption = IIf(Tiempo < 10, "0" & Tiempo, Tiempo) & ":00"
lblNegras.Caption = IIf(Tiempo < 10, "0" & Tiempo, Tiempo) & ":00"
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Dim T As Date
Dim strAux As String

If Not Iniciado Then Exit Sub

If TurnoBlancas Then
    T = CDate("00:" + lblBlancas.Caption) - UnSeg
    strAux = Format(T, "HH:mm:ss")
    lblBlancas.Caption = Mid(strAux, 4, 5)
    If (Second(T) = 0) And (Minute(T) = 0) Then
        Timer1.Enabled = False
        lblNegras.ForeColor = vbRed
        Terminado = True
    End If
Else
    T = CDate("00:" + lblNegras.Caption) - UnSeg
    strAux = Format(T, "HH:mm:ss")
    lblNegras.Caption = Mid(strAux, 4, 5)
    If (Second(T) = 0) And (Minute(T) = 0) Then
        Timer1.Enabled = False
        lblNegras.ForeColor = vbRed
        Terminado = True
    End If
End If
End Sub


Espero te sirva...

Saludos!
#4057
Opino que deberías leer el FAQ y hacer la introducción a Ollydbg.

No todos los programas se atacan usando strings references.

Necesitas aprender a caminar antes de querer correr.

Saludos!
#4058
Si esta en delphi, usa IDR.

La linea que has puesto no dice nada. ADODB es para acceder a bases de datos.
#4059
Foro Libre / Re: La historia de su nick
26 Marzo 2013, 01:05 AM
El mio son siglas de atributos/nicks anteriores (le aplique LZW a todos los nicks que tuve).
Le agregue Argentina porque habia un mcksys en Mexico (creo, no recuerdo bien).

La primer letra es un atributo.
La segunda, la profesion al momento de crearlo.
La tercera, un nick que usaba "de chico"
Y "Sys", es obvio...

Saludos!
#4060
Si te compras un reloj atómico, puedes conectarlo al proggie por USB...   ;D