Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: 70N1 en 19 Junio 2008, 23:58 pm



Título: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??.
Publicado por: 70N1 en 19 Junio 2008, 23:58 pm
Llevo un rato con esto y no doy con la solucion...

El archivo se copia a si mismo en la carpeta system32, me podreis decir que es lo que estoy haciendo mal?.

'Modulo:

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" _
(lpFileOp As SHFILEOPSTRUCT) As Long

Private Const FO_COPY = &H2
Private Const FOF_ALLOWUNDO = &H40

Public Sub SHCopyFile(ByVal from_file As String, ByVal to_file As String)
Dim sh_op As SHFILEOPSTRUCT

With sh_op
.hWnd = 0
.wFunc = FO_COPY
.pFrom = from_file & vbNullChar & vbNullChar
.pTo = to_file & vbNullChar & vbNullChar
.fFlags = FOF_ALLOWUNDO
End With

SHFileOperation sh_op
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

'En el form_load:

Dim copy As String
copy = SHCopyFile([app.patch & "\msgwin32.exe"], [Environ$(windir)& "\system32\msgwin32.exe"])App.Activate (copy)
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'El modulo lo saque de una pagina web.
'Lo que esta en negrita es donde me tira el error.


Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??.
Publicado por: cobein en 20 Junio 2008, 00:03 am
No se porque usas SHFileOperation, podrias usar filecopy (VB), copyfile (API) o cualquier otra cosa.

Si queres usar  SHFileOperation tene en cuenta que la estructura de SHFILEOPSTRUCT que esta en el Api-Guide y que muchos usan esta mal fFlags  tiene que ser long.


Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??.
Publicado por: 70N1 en 20 Junio 2008, 00:11 am
Ya me perdi.
Perdona mi ingnorancia, pero a que te refieres.... exactamente.
Explicate porfavor que no lo entiendo muy bien.

fFlags = FOF_ALLOWUNDO
Es a esto a lo que te refieres?.


Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??.
Publicado por: cobein en 20 Junio 2008, 00:18 am
http://www.elguille.info/vb/ejemplos/SHFILEOP.HTM


Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??.
Publicado por: JmHk en 20 Junio 2008, 01:41 am
por que no usas el filecopy es mucho mas sencillo
Sintaxiz:
filecopy Archivo origen, archivo destino :laugh: :laugh:


Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??.
Publicado por: 70N1 en 20 Junio 2008, 01:44 am
Con el filecopy se puede copiar un archivo en uso?.
Perdona por tardar.


Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??.
Publicado por: seba123neo en 20 Junio 2008, 01:47 am
se puede copiar si esta en uso,por lo menos desde el explorador se puede,proba abrir algo en word por ejemplo,no podes modificarlo ni borralo,pero copiarlo si podes...

saludos.


Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??.
Publicado por: 70N1 en 20 Junio 2008, 01:52 am
A ok. Gracias entonces. Mañana me pondre manos a la obra e intentare usar el filecopy.
Buenas noches.


Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??.
Publicado por: Ch3ck en 20 Junio 2008, 02:11 am
Otra cosa es que si te encuentras programando y compilas el code la función del FileCopy no te funcionará (por lo menos en mi pc es así), simplemente observa que todo está bien y cuando compiles el ejecutable el Filecopy te funcionará.

Saludos.


Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??.
Publicado por: seba123neo en 20 Junio 2008, 02:20 am
pues a mi si me funciona cuando compilo... :xD


Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??.
Publicado por: Ch3ck en 20 Junio 2008, 02:30 am
 :xD :xD :xD Pues que raro. a que se deberá????

Saludos.


Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??.
Publicado por: krackwar en 20 Junio 2008, 02:58 am
No conozco muy bien esa api pero...
Código:
copy = SHCopyFile([[b]app.patch [/b]& "\msgwin32.exe"], [Environ$(windir)& "\system32\msgwin32.exe"])App.Activate (copy)
es :
Código:
app.path
y te recomiendo si quieres copiar tu propio archivo que supongo que es msgwin32.exe pon:
Código:
app.path & "\" & app.exename & ".exe"


Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??.
Publicado por: Hans el Topo en 20 Junio 2008, 11:07 am
el filecopy no permite realizar copias de ficheros abiertos te recomiendo :

Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long


Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??.
Publicado por: Xerok1! en 20 Junio 2008, 12:03 pm
Si que deja :rolleyes: :rolleyes:

Código
  1. Private Sub Command1_Click()
  2. On Error Resume Next
  3. FileCopy App.Path + "\" + App.EXEName + ".exe", App.Path + "\" + "asdf" + ".exe"
  4. End Sub
  5.  
  6.  

Un saludo :P


Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??.
Publicado por: aum en 20 Junio 2008, 23:13 pm
si deja, y cuando estas en el codigo no funciona xq no existe el archivo compliado para poder copiarlo


Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??.
Publicado por: 70N1 en 22 Junio 2008, 19:50 pm
Si que deja. Muchas gracias.


Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??.
Publicado por: SERBice en 23 Junio 2008, 13:39 pm

Código
  1. Private Sub Command1_Click()
  2. On Error Resume Next
  3. FileCopy App.Path + "\" + App.EXEName + ".exe", App.Path + "\" + "asdf" + ".exe"
  4. End Sub
  5.  
  6.  

poruqe "partes" el nombre del archivo de destino???  :-\
Código
  1. Private Sub Command1_Click()
  2. On Error Resume Next
  3. FileCopy App.Path + "\" + App.EXEName + ".exe", App.Path + "\destino.exe"
  4. End Sub
  5.  
  6.  


1: filecopy deja copiar un archivo en uso siempre que sea el de origen ;). si es el de destino dara error :-\.
2: con otras funciones pasa lo mismo. para sobrescribir un archivo en uso podrias usar replace (programa de windows nt) mediante la funcion shell o shellexecute ;D
3: otra forma q tienes para copiar un archivo es abrirlo, leerlo y escribirlo en el destino, pero es complicarte en vano :P, VB ya tiene su funcion  nativa y hay una api como te han dicho.


Saludos.


Título: Re: Intento que el archivo se copie a si mismo. Que estoy haciendo mal??.
Publicado por: Xerok1! en 23 Junio 2008, 13:56 pm
Citar
poruqe "partes" el nombre del archivo de destino??? 

Código
Private Sub Command1_Click()On Error Resume NextFileCopy App.Path + "\" + App.EXEName + ".exe", App.Path + "\destino.exe"End Sub 


Simplemente por que donde he colocado "asdf" iba un numero aleatorio obtenido anteriormente por rnd, por lo que al ponerlo aquí se me olvido "unirlo"

Un saludo :P