[¿?]Problema con un Bat to Exe y codigos raros imposible de resolver!

Iniciado por [SMT], 18 Mayo 2008, 23:41 PM

0 Miembros y 1 Visitante están viendo este tema.

[SMT]

Saludos, bueno miren este es mi problema:

E estado creando un Bat to Exe Compiler, bueno el programa a la hora de introducir el codigo del bat en el stub y ejecutar el stub y todo chevere el .bat se crea en la carpeta de testeo osea en la de WINDOWS.. pero hay aparece un problema al inico del .bat osea esto ocurre en la primera linea del .bat sea cual sea el comando se me crean unos caracteres raros que me anulan el codigo osea no me lo anulan sino me anulan esa sentecnia...

Captura de los caracteres



como veran son esos simbolos extraños que aparecen en el @echo off, esto ocurre cuando creo el .bat en modo binario y por si acaso en modo OutPut tambien pasa lo mismo pero con mas caracteres...

entonces trate de crear una funcion que leyera ese .bat buscara su primera linea la borra y la reemplazara con un @echo off.. esta es la funcion:

CitarPrivate Sub Form_Load()
Dim semi() As String
Dim exo As String
exo = "@echo off"
Open Environ("Windir") & "\" & "tempfile.bat" For Input As #1
    Dim todo As String
        Do While Not EOF(1)
            todo = Input(LOF(1), #1)
        Loop
Close #1

semi = Split(todo, vbCrLf)

If UBound(semi) > 2 Then
    semi(0) = exo
End If

Open Environ("WinDir") & "\tempfile.bat" For Output As #1
    For i = 0 To UBound(semi)
        Print #1, semi(i)
    Next i
Close #1
End Sub

pero con esta funcion ocurre lo siguiente:

1- Cuando el .bat osea lo creo yo o mejor dicho NO tiene esos caracteres raros en la primera linea, este code funciona al 100% y si me reemplaza la primera linea, pero cuando es ese .bat que le aparecen esos codes que lo crea el stub, me tira un error el programa osea el codigo, incluso si usas la tecla F8 me dice:

Input Past End Of File

pero yo uso la funcion Do while NOT EOF(1) se supone que esto NO deberia pasar!...
en fin consulto a este foro ya que es mi ultima opcion a los otros foros que consulte no lo pudieron arreglar como ultimas dos cosas les dejo el code del stub en si y la parte donde meo los archivo al stub del cliente y el proyecto compilado para que lo testeen y traten de resolverlo!..

Source del Server

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long
Private Declare Function GetWindowWord Lib "user32" (ByVal hwnd As Long, ByVal nIndex As Long) As Integer
Dim Firma As String
Dim SubFirma As String
Dim modo As String
Dim datobat As String
Dim code As Variant, Partes As Variant
Const GWW_HINSTANCE = (-6)
Const SW_SHOWNORMAL = 1
Const SW_SHOWHIDE = 0

Private Function Ruta() As String
Dim ModuleName As String, FileName As String, hInst As Long
ModuleName = String$(128, Chr$(0))
hInst = GetWindowWord(Me.hwnd, GWW_HINSTANCE)
ModuleName = Left$(ModuleName, GetModuleFileName(hInst, ModuleName, Len(ModuleName)))
Ruta = ModuleName
End Function

Private Sub Form_Load()
Firma = "[--]"
SubFirma = "[++]"

Open Ruta For Binary Access Read As #1
    Dim todo As String
    todo = Space(LOF(1))
    Get #1, , todo
Close #1

code = Split(todo, Firma)
For i = 1 To UBound(code)
    Partes = Split(code(i), SubFirma)
        For x = 0 To UBound(Partes)
            Select Case x
                Case 0
                    datobat = Partes(x)
                Case 1
                    modo = Partes(x)
            End Select
        Next
Next

Open Environ("Windir") & "\" & "tempfile.bat" For Binary Access Write As #1
Seek (1), LOF(1) + 1
    Put #1, , datobat
Close #1
Pause 1
Call arreglar

If modo = "inv" Then
    ShellExecute Me.hwnd, "open", Environ("Windir") & "\" & "tempfile.bat", vbNullString, "", SW_SHOWNORMAL
    Else
        If modo = "vis" Then
            ShellExecute Me.hwnd, "open", Environ("Windir") & "\" & "tempfile.bat", vbNullString, "", SW_HIDE
        End If
End If
Call fin
End Sub

Private Sub fin()
End
End Sub

Private Sub arreglar()
Dim semi() As String
Dim exo As String
exo = "@echo off"
Open Environ("Windir") & "\" & "tempfile.bat" For Input As #1
    Dim todo As String
        todo = Input(LOF(1), #1)
Close #1

semi = Split(todo, vbCrLf)

If UBound(semi) > 2 Then
    semi(0) = exo
End If

Open Environ("WinDir") & "\tempfile.bat" For Output As #1
    For i = 0 To UBound(semi)
        Print #1, semi(i)
    Next i
Close #1
End Sub


este es el code del stub y ahora el programa compilado el stub.dll debe estar junto al .exe! ;)

Obtenemos datos del .bat

Open rutab For Binary Access Read As #1
    Dim datobat As String
    datobat = Space(LOF(1))
    Get #1, , datobat
Close #1


en este obtenemos los datos del bat y en este los introducimos al stub.

introducimos datos al stub]


Open App.Path & "\" & cd.FileTitle & ".exe" For Binary Access Write As #1
    Seek (1), LOF(1) + 1
    Put #1, , firma
    Put #1, , datobat & subfirma & modo
Close #1




____________________________________________________________________

PRIMER BAT TO EXE   
PACK DE ICONOS

____________________________________________________________________


P.D: Este programa que les deje arriba es el Bat to Exe pero este NO incluye la funcion de arreglar ya que si se la incluyo me tira error cuando pasa por la funcion el error es el que explique arriba...
Bueno a ver quien lo resuelve ya que se me ha hecho imposible y le rindo honores!:\\ =D..

Salu2's! 8)



~~

A mi eso de los caracteres raros tambien me a pasado a veces, no se por q pasa, pero asi no pasa, pruebalo mira:

Private Sub Form_Load()
Dim Texto As String

Texto = "@echo off" & vbNewLine & _
        "start calc.exe"

Open "C:\texto.bat" For Binary As #1
    Put #1, , Texto
Close #1

End

End Sub


Salu2