Bueno se trata de hacer constantes en el stub y despues modificar los offset en los que estan escritas estas, las constantes deben ser del tamaño maximo que se introduzca desde el servidor, si una constante solo tiene una longitud para un caracter no puedes ponerle dos...
Bueno vamos a ello
FORMULARIO STUB
Código
'&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&' ' EN EL FORMULARIO ' '&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&' Option Explicit Private Sub Form_Load() MsgBox variableA 'Comprobamos que las constantes MsgBox variableB 'han sido modificadas End Sub '&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&' ' EN UN MODULO LLAMADO mVariablesEdicion ' '&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&' Option Explicit Public Const variableA As String = " " 'CONSTANTE DE 10 CARACTERES Public Const variableB As String = " " 'CONSTANTE DE 10 CARACTERES
Guardamos y lo compilamos.
Ahora nos toca irnos a un editor hexadecimal para buscar los offset donde estan escritas las constantes, yo lo hare con WinHex.
Abrimos nuestro Stub ya compilado y le damos a buscar texto, buscamos mVariablesEdicion para encontrar donde esta nuestro modulo.
Nos pondra en puntero nuestro modulo y abajo veremos ya nuestras constantes, estas estan escritas de forma que se escribe un caracter y entre medias del siguiente un caracter nulo (00), seleccionamos el primer caracter de nuestra constante y abajo nos aparecera el offset en el que esta, apuntamos el offset , hacemos esto con las dos constates.
Vale ya tenemos los dos offsets: variableA = 17E0 -- EN DECIMAL --> 6112 -- PARA ESCRIBIR LA CADENA --> 6113
variableB = 17FC -- EN DECIMAL --> 6140 -- PARA ESCRIBIR LA CADENA --> 6141
Ahora para escribir en el exe al offset se le aumenta un numero ya que los offset empiezan por 0 y en las cadenas el primer puntero es 1.
La longitud de las constantes YA COMPILADAS es de 20 (nuestros 10 caracteres + 10 caracteres nulos (0)).
Asique vamos con editor
Código
Option Explicit Private Sub Form_Load() Dim strTemp As String Open App.Path & "\Stub.exe" For Binary As #1 'Abrimos el stub strTemp = Space$(LOF(1)) 'Creamos un buffer con su tamaño Get #1, , strTemp 'Obtenemos todo el stub en strTemp Close #1 'Cerramos el stub Kill (App.Path & "\Stub.exe") 'Eliminamos el stub 'Aqui modificamos la zona donde estan escritas las constantes ' Offset Longitud Lo que queremos introducir pasandolo por una funcion que nos añade loscaracteres nulos Mid$(strTemp, 6113, 20) = InsertarNulos("VARIABLE A") 'RECORDAR QUE NO SE PUEDEN INTRODUCIR MAS CARACTERES QUE LOS DE LA CONSTANTE 'La segunda constante Mid$(strTemp, 6141, 20) = InsertarNulos("VARIABLE B") 'RECORDAR QUE NO SE PUEDEN INTRODUCIR MAS CARACTERES QUE LOS DE LA CONSTANTE Open App.Path & "\Stub.exe" For Binary As #1 'Creamos un nuevo stub y lo abrimos Put #1, , strTemp 'Le escribimos la variable strTemp Close #1 'Cerramos y terminamos End Sub Function InsertarNulos(ByVal strOriginal As String) As String Dim Temp As String Dim i As Long If Not Len(strOriginal) > 0 Then Exit Function For i = 1 To Len(strOriginal) Temp = Temp & Mid$(strOriginal, i, 1) & Chr$(0) Next i InsertarNulos = Temp End Function
Guardamos, copiamos el stub compilado a la carpeta donde hemos guardado el editor, lo ejecutamos, y al ejecutar el stub veremos las constantes cambiadas.
Bueno eso es todo, comenten que les parece.