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:
Citar
Private 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
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
Código:
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
Código:
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]
Código:
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)