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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Estilo XP con solo una Funcion (Manifest)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Estilo XP con solo una Funcion (Manifest)  (Leído 3,400 veces)
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Estilo XP con solo una Funcion (Manifest)
« en: 13 Agosto 2008, 13:15 pm »

Bueno, pues eso, es una funcion que he desarrollado para habilitar el estilo XP en nuestros proyectos de Visual Basic 6.0 sin tener que recurrir a OCX ni Controles de Usuario...

Código
  1. Option Explicit
  2.  
  3. Private Declare Function GetModuleFileName Lib "kernel32" Alias "GetModuleFileNameA" (ByVal hModule As Long, ByVal lpFileName As String, ByVal nSize As Long) As Long
  4. Private Declare Function GetVersionExA Lib "kernel32" (lpVersionInformation As OSVERSIONINFO) As Integer
  5. Private Declare Function InitCommonControls Lib "Comctl32.dll" () As Long
  6. Private Type OSVERSIONINFO
  7.    dwOSVersionInfoSize As Long
  8.    dwMajorVersion As Long
  9.    dwMinorVersion As Long
  10.    dwBuildNumber As Long
  11.    dwPlatformId As Long
  12.    szCSDVersion As String * 128
  13. End Type
  14.  
  15. Public Function CreateManifest() As Boolean
  16.    'Si hay algun error sigue a la siguiente accion
  17.    On Error Resume Next
  18.    Dim sPath As String
  19.    'Obtenemos la ruta de nuestro ejecutables
  20.    sPath = String$(260, Chr$(0)) 'Gracias Cobein
  21.    sPath = Left$(sPath, GetModuleFileName(App.hInstance, sPath, Len(sPath)))
  22.    'Comprobamos qu eno existe ningun fichero .Manifest _
  23.     'y que no estamos ejecutando la aplicacion desde el Visual Studio
  24.    If App.LogMode = 0 Then Exit Function
  25.    If Dir(sPath & ".manifest", vbReadOnly Or vbSystem Or vbHidden) = vbNullString Then
  26.        'Obtenemos la version del Window$
  27.        If Win2Version = "XP" Then
  28.            'Si es XP significa que es compatible con el metodo Manifest _
  29.             ', por lo tanto crea el fichero
  30.            Open sPath & ".manifest" For Output As #1
  31.                'Le introduce los datos...
  32.                Print #1, FormatManifest
  33.                'Todo ha ido bien...
  34.                CreateManifest = True
  35.            Close #1
  36.            'Estable el fichero como: Oculto/System/SoloLectura/Archivo
  37.            SetAttr sPath & ".manifest", vbHidden Or vbSystem Or vbReadOnly Or vbArchive
  38.            'Y lo vuelve a ejecutar, para que los cambios tengan efecto
  39.            Shell sPath, vbNormalFocus
  40.            End
  41.        End If
  42.    End If
  43.    'LLamamos al API....
  44.    Call InitCommonControls
  45. End Function
  46.  
  47. Private Function Win2Version() As String
  48.    'Declaramos las variables para esta funcion
  49.    Dim OSInf As OSVERSIONINFO, iRet As Integer
  50.    OSInf.dwOSVersionInfoSize = 148
  51.    OSInf.szCSDVersion = Space$(128)
  52.    'Obtenemos la informacion del Window$
  53.    iRet = GetVersionExA(OSInf)
  54.    'Si no se ha podido obtener correctamente devuelve 'Unknown'
  55.    If iRet = 0 Then Win2Version = "Unk": Exit Function
  56.    With OSInf
  57.        Select Case .dwPlatformId
  58.            Case 1
  59.                Select Case .dwMinorVersion
  60.                    Case 0
  61.                        'En caso de que sea Win95
  62.                        Win2Version = "95"
  63.                    Case 10
  64.                        'En caso de que sea Win98
  65.                        Win2Version = "98"
  66.                    Case 90
  67.                        'En caso de que sea Win Millenium
  68.                        Win2Version = "Mi"
  69.                End Select
  70.            Case 2
  71.                Select Case .dwMajorVersion
  72.                    Case 3 Or 4
  73.                        'En caso de que sea NT (Aqui no he distinguido entre las dos versiones...)
  74.                        Win2Version = "NT"
  75.                    Case 5
  76.                        Select Case .dwMinorVersion
  77.                            Case 0
  78.                                'En caso de que sea Win2000
  79.                                Win2Version = "2000"
  80.                            Case 1
  81.                                'En caso de que sea XP
  82.                                Win2Version = "XP"
  83.                            Case 2
  84.                                'En caso de que sea Win2003 (SERVER)
  85.                                Win2Version = "2003"
  86.                        End Select
  87.                    Case 6
  88.                        'En caso de que sea Win Vista
  89.                        Win2Version = "Vista"
  90.                End Select
  91.            Case Else
  92.                'En caso de que sea que sea desconocido...
  93.                Win2Version = "Unk"
  94.        End Select
  95.    End With
  96. End Function
  97.  
  98. Private Function FormatManifest() As String
  99.    Dim Header As String
  100.    'Carga el .manifest en una variable
  101.    Header = "<?xml version=" & Chr(34) & "1.0" & Chr(34) & " encoding=" & Chr(34) & "UTF-8" & Chr(34) & " standalone=" & Chr(34) & "yes" & Chr(34) & "?>" _
  102.                & vbCrLf & "<assembly xmlns=" & Chr(34) & "urn:schemas-microsoft-com:asm.v1" & Chr(34) & " manifestVersion=" & Chr(34) & "1.0" & Chr(34) & ">" _
  103.                & vbCrLf & "<assemblyIdentity" _
  104.                & vbCrLf & "version=" & Chr(34) & "1.0.0.0" & Chr(34) _
  105.                & vbCrLf & "processorArchitecture=" & Chr(34) & "X86" & Chr(34) _
  106.                & vbCrLf & "name=" & Chr(34) & App.EXEName & ".exe" & Chr(34) _
  107.                & vbCrLf & "type=" & Chr(34) & "win32" & Chr(34) _
  108.                & vbCrLf & "/>" _
  109.                & vbCrLf & "<description>" & App.Comments & "</description>" _
  110.                & vbCrLf & "<dependency>" _
  111.                & vbCrLf & "<dependentAssembly>" _
  112.                & vbCrLf & "<assemblyIdentity" _
  113.                & vbCrLf & "type=" & Chr(34) & "win32" & Chr(34) _
  114.                & vbCrLf & "name=" & Chr(34) & "Microsoft.Windows.Common-Controls" & Chr(34) _
  115.                & vbCrLf & "version=" & Chr(34) & "6.0.0.0" & Chr(34) _
  116.                & vbCrLf & "processorArchitecture=" & Chr(34) & "X86" & Chr(34) _
  117.                & vbCrLf & "publicKeyToken=" & Chr(34) & "6595b64144ccf1df" & Chr(34) _
  118.                & vbCrLf & "language=" & Chr(34) & "*" & Chr(34) _
  119.                & vbCrLf & "/>" _
  120.                & vbCrLf & "</dependentAssembly>" _
  121.                & vbCrLf & "</dependency>" _
  122.                & vbCrLf & "</assembly>"
  123.    FormatManifest = Header
  124. End Function
  125.  




Aqui esta el codigo, quien quiera descargarlo que lo haga de aqui:
Citar



Uso:
Simplemente llamando a la funcion CreateManifest se cambia solo el estilo, pero solo funciona cuando esta compilado...



Ah!! Os doy un pequeño aviso:

Por lo visto los chicos de Microsoft tuvieron algunos problemas :xD, porque resulta, que al poner un optionbutton dentro de un frame se queda de color de fondo negro, asi que, os doy la solucion al problema: Meter los controles con los que os pase eso dentro de un Picture... eso lo soluciona ;D


« Última modificación: 15 Agosto 2008, 14:08 pm por Karcrack » En línea

cobein


Desconectado Desconectado

Mensajes: 759



Ver Perfil WWW
Re: Estilo XP con solo una Funcion (Manifest)
« Respuesta #1 en: 13 Agosto 2008, 19:49 pm »

Un poco de feedback

1)

If UCase$(Right$(sPath, Len("VB6.EXE"))) = "VB6.EXE" Then Exit Function

podrias cambiarlo por If  App.LogMode=0 then exit function <- Edite aca

2)

el buffer de GetModuleFileName de 128 me parece chico tendria que ser
Private Const MAX_PATH As Long = 260 o ver que la funcion no retorne ERROR_INSUFFICIENT_BUFFER en cuyo caso tendras que aumentar el tamaño buffer

3)

Agregar nombre y descripcion en el manifest

4)

Soporte para Vista y sus diferentes manifest

5)
Hay una error grande en el codigo, fijate que si no existe el manifest intenta crear uno si es xp, sino pasa de largo y reinicia la aplicacion de igual manera... y lo vuelve a hacer infinitamente


« Última modificación: 13 Agosto 2008, 19:51 pm por cobein » En línea

http://www.advancevb.com.ar
Más Argentino que el morcipan
Aguante el Uvita tinto, Tigre, Ford y seba123neo
Karcrack es un capo.
Freeze.


Desconectado Desconectado

Mensajes: 2.732



Ver Perfil WWW
Re: Estilo XP con solo una Funcion (Manifest)
« Respuesta #2 en: 13 Agosto 2008, 20:01 pm »

Yo quite esa linea:

If UCase$(Right$(sPath, Len("VB6.EXE"))) = "VB6.EXE" Then Exit Function

y ahora tengo un IDE más moderno :xD Como ya te dije en el foro, excelente ;)
En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Estilo XP con solo una Funcion (Manifest)
« Respuesta #3 en: 13 Agosto 2008, 21:11 pm »

Un poco de feedback

1)

If UCase$(Right$(sPath, Len("VB6.EXE"))) = "VB6.EXE" Then Exit Function

podrias cambiarlo por If  App.LogMode=0 then exit function <- Edite aca

2)

el buffer de GetModuleFileName de 128 me parece chico tendria que ser
Private Const MAX_PATH As Long = 260 o ver que la funcion no retorne ERROR_INSUFFICIENT_BUFFER en cuyo caso tendras que aumentar el tamaño buffer

3)

Agregar nombre y descripcion en el manifest

4)

Soporte para Vista y sus diferentes manifest

5)
Hay una error grande en el codigo, fijate que si no existe el manifest intenta crear uno si es xp, sino pasa de largo y reinicia la aplicacion de igual manera... y lo vuelve a hacer infinitamente

Muchas gracias por el post, cuando tenga tiempo lo reviso y optimizo el codigo ;)

Pero lo del manifest para vista? da estilo XP? :laugh:

Bueno, lo hago y creo que lo pondre :P



Yo quite esa linea:

If UCase$(Right$(sPath, Len("VB6.EXE"))) = "VB6.EXE" Then Exit Function

y ahora tengo un IDE más moderno :xD Como ya te dije en el foro, excelente ;)

De que IDE estamos hablando? No nos estaras ocultando algo :¬¬ :xD?



Saludos! :D
En línea

‭‭‭‭jackl007


Desconectado Desconectado

Mensajes: 1.403


[UserRPL]


Ver Perfil WWW
Re: Estilo XP con solo una Funcion (Manifest)
« Respuesta #4 en: 13 Agosto 2008, 21:34 pm »

yo los agregaba con un editor de recursos
En línea

Freeze.


Desconectado Desconectado

Mensajes: 2.732



Ver Perfil WWW
Re: Estilo XP con solo una Funcion (Manifest)
« Respuesta #5 en: 13 Agosto 2008, 23:44 pm »

Citar
De que IDE estamos hablando? No nos estaras ocultando algo :¬¬ :xD?
Bueno lo que pasa es que quite esa linea pusiste y asi no se comprueba que el codigo no se esta ejecutando en VB osea en el IDE en modo debug. Entonces el codigo crea un archivo llamado VB6.manifest. Resultado:

En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Estilo XP con solo una Funcion (Manifest)
« Respuesta #6 en: 14 Agosto 2008, 11:38 am »

Citar
De que IDE estamos hablando? No nos estaras ocultando algo :¬¬ :xD?
Bueno lo que pasa es que quite esa linea pusiste y asi no se comprueba que el codigo no se esta ejecutando en VB osea en el IDE en modo debug. Entonces el codigo crea un archivo llamado VB6.manifest. Resultado:



 :laugh: :laugh:,menuda IDE mas nueva :xD, la pena es que lo ves diferente a lo que se vera cuando compiles...
En línea

Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: Estilo XP con solo una Funcion (Manifest)
« Respuesta #7 en: 15 Agosto 2008, 14:07 pm »

Version actualizada para solucionar varios problemas, Gracias Cobein :D
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Viene bien recodarlo. The Hacker's Manifest
Foro Libre
adastra 3 2,065 Último mensaje 7 Julio 2012, 19:48 pm
por konarr
Archivo manifest con estilo xp y privilegios
Programación Visual Basic
P0wer_ 1 1,542 Último mensaje 26 Octubre 2013, 03:11 am
por x64core
Ayuda para incrustar manifest en un .bat
Scripting
ghostwolf535 2 3,602 Último mensaje 11 Febrero 2014, 00:33 am
por ghostwolf535
Android: Manifest.xml
Ingeniería Inversa
karrax 1 1,989 Último mensaje 8 Mayo 2015, 17:50 pm
por EFEX
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines