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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Activador de Windows XP en Visual Basic 6
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Activador de Windows XP en Visual Basic 6  (Leído 1,940 veces)
P4nd3m0n1um


Desconectado Desconectado

Mensajes: 1.419



Ver Perfil
Activador de Windows XP en Visual Basic 6
« en: 29 Abril 2012, 22:41 pm »

En este caso realizaremos un Activador "Genuine" de Windows XP, simplemente lo que realizara nuestro programa es, mediante a un modulo, tomar datos del registro de windows y luego escribir en él.

Para ello utilizaremos una libreria incluida en Windows XP llamada "advapi32.dll", luego trabajaremos con la ruta de registro "SOFTWARE\MICROSOFT\Windows NT\CurrentVersion"; en esta ruta se encuentra nuestro serial codificado, que luego decodificaremos y a su ves codificaremos el nuevo serial.


Utilizaremos básicamente dos botones "Verificar" llamado "cmdComprobar" y "Registrar" llamado "CmdInsertar", luego dos labels, uno corresponderá a la versión llamado "lblVersion" y otro a la licencia "Label3", también un ComboBox llamado "cbSerial" el cual estará oculto. Los demás son simplemente para darle un aspecto mas provechoso al programa.

Bien, comenzaremos por el formulario principal (Main.frm):

Código
  1. Private Sub Form_Load()
  2.    Centrar Me
  3.    DatosActuales
  4.    CargarSeriales
  5. End Sub

Aquí primero centraremos el formulario en la pantalla. Luego:

Código
  1. Private Sub cmdComprobar_Click()
  2.    DatosActuales
  3.    If lblClave.Caption = "BVXT3-HMX82-3T69H-9WC87-7JJKW" Then
  4.        Label3.Caption = "Genuine"
  5.        Label3.ForeColor = vbBlue
  6.    Else
  7.        Label3.Caption = "Copia"
  8.        Label3.ForeColor = vbRed
  9.    End If
  10. End Sub

Tomaremos los datos actuales del windows y verificaremos si tiene el serial genuino, si es que no es copia.

Código
  1. Private Sub DatosActuales()
  2.    lblVersion.Caption = VerVersion
  3.    lblClave.Caption = SacarClave
  4. End Sub
  5.  
  6. Private Sub CargarSeriales()
  7.    cbSerial.Clear
  8.    cbSerial.AddItem "BVXT3-HMX82-3T69H-9WC87-7JJKW" 's
  9.    cbSerial.ListIndex = 0
  10. End Sub

Luego definimos las variables para los datos actuales y cargamos un serial por defecto en el combobox.

Código
  1. Private Sub CmdInsertar_Click()
  2.    InsertarSerial Trim(cbSerial.Text)
  3. End Sub

Por ultimo llamamos a la función para insertar el serial correspondiente en el registro de windows.

Bien, ahora vamos al modulo, agregaremos un modulo llamado "modulo.bas":

Código
  1. Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
  2. Private Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
  3. Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
  4.  
  5. Private Const REG_BINARY = 3
  6. Private Const HKEY_LOCAL_MACHINE = &H80000002
  7. Private Const REG_SZ = 1
  8. ' Ruta del registro donde Windows guarda la clave (codificada) y la versión
  9. Private Const RUTA_REGISTRO = "SOFTWARE\MICROSOFT\Windows NT\CurrentVersion"
  10.  
  11. ' Obtenemos la clave actual
  12.  
  13. Public Function SacarClave() As String
  14. Dim bID(164) As Byte, bKey(14) As Byte, bAsc(24) As Byte
  15. Dim lBit As Long, hKey As Long
  16.  
  17. If RegOpenKey(HKEY_LOCAL_MACHINE, RUTA_REGISTRO, hKey) = 0 Then
  18.    If RegQueryValueEx(hKey, "DigitalProductId", 0&, REG_BINARY, bID(0), 164) = 0 Then
  19.        For lBit = 52 To 66
  20.            bKey(lBit - 52) = bID(lBit)
  21.        Next lBit
  22.    Else
  23.        SacarClave = "No se puede leer la clave."
  24.        Exit Function
  25.    End If
  26. Else
  27.    SacarClave = "No se puede acceder al registro."
  28.    Exit Function
  29. End If
  30.  
  31. 'Descodificar la clave
  32.  
  33. bAsc(0) = Asc("B"): bAsc(1) = Asc("C"): bAsc(2) = Asc("D")
  34. bAsc(3) = Asc("F"): bAsc(4) = Asc("G"): bAsc(5) = Asc("H")
  35. bAsc(6) = Asc("J"): bAsc(7) = Asc("K"): bAsc(8) = Asc("M")
  36. bAsc(9) = Asc("P"): bAsc(10) = Asc("Q"): bAsc(11) = Asc("R")
  37. bAsc(12) = Asc("T"): bAsc(13) = Asc("V"): bAsc(14) = Asc("W")
  38. bAsc(15) = Asc("X"): bAsc(16) = Asc("Y"): bAsc(17) = Asc("2")
  39. bAsc(18) = Asc("3"): bAsc(19) = Asc("4"): bAsc(20) = Asc("6")
  40. bAsc(21) = Asc("7"): bAsc(22) = Asc("8"): bAsc(23) = Asc("9")
  41.  
  42. Dim i As Integer, j As Integer, sClave As String
  43. For lBit = 24 To 0 Step -1
  44.    i = 0
  45.    For j = 14 To 0 Step -1
  46.        i = i * 256 Xor bKey(j)
  47.        bKey(j) = Int(i / 24)
  48.        i = i Mod 24
  49.    Next j
  50.    sClave = Chr(bAsc(i)) & sClave
  51.    If lBit Mod 5 = 0 And lBit <> 0 Then sClave = "-" & sClave
  52. Next lBit
  53. SacarClave = sClave
  54. End Function
  55.  
  56. ' Obtenemos la clave actual
  57.  
  58. Public Function VerVersion()
  59. Dim lRet As Long
  60. RegOpenKey HKEY_LOCAL_MACHINE, RUTA_REGISTRO, lRet
  61. VerVersion = SacarValorRegistro(lRet, "ProductName")
  62. RegCloseKey lRet
  63. RegOpenKey HKEY_LOCAL_MACHINE, RUTA_REGISTRO, lRet
  64. VerVersion = VerVersion & " - " & SacarValorRegistro(lRet, "CSDVersion")
  65. RegCloseKey lRet
  66. End Function
  67.  
  68. ' Leer valor de registro
  69.  
  70. Function SacarValorRegistro(ByVal HKLM As Long, ByVal sValor As String) As String
  71. Dim lRet As Long, lInfoValor As Long
  72. Dim lLen As Long, sBuffer As String
  73.  
  74. lRet = RegQueryValueEx(HKLM, sValor, 0, lInfoValor, ByVal 0, lLen)
  75. If lRet = 0 Then
  76.    If lInfoValor = REG_SZ Then
  77.        sBuffer = String(lLen, Chr$(0))
  78.        lRet = RegQueryValueEx(HKLM, sValor, 0, 0, ByVal sBuffer, lLen)
  79.        If lRet = 0 Then
  80.            SacarValorRegistro = Left$(sBuffer, InStr(1, sBuffer, Chr$(0)) - 1)
  81.        End If
  82.    ElseIf lInfoValor = REG_BINARY Then
  83.        Dim strData As Integer
  84.        lRet = RegQueryValueEx(HKLM, sValor, 0, 0, strData, lLen)
  85.        If lRet = 0 Then SacarValorRegistro = strData
  86.    End If
  87. End If
  88. End Function
  89.  
  90. ' Cambiar serial del registro
  91.  
  92. Public Sub InsertarSerial(Serial As String)
  93.  
  94. On Error Resume Next
  95.  
  96. Dim TodoOk As Boolean
  97. TodoOk = True
  98.  
  99. If Serial = "" Then
  100.    MsgBox "Complete el Número de Serie que quiere insertar!", vbExclamation, "Nº de Serie inválido"
  101.    TodoOk = False
  102.    XPReg.cbSerial.SetFocus
  103. Else
  104.    If Len(Serial) <> 29 Then
  105.        MsgBox "El Número de Serie a Insertar debe poseer 29 dígitos" & vbCrLf & "Controle", vbExclamation, "Nº de Serie inválido"
  106.        TodoOk = False
  107.        XPReg.cbSerial.SetFocus
  108.    End If
  109. End If
  110.  
  111.    If TodoOk = True Then
  112.        Dim VOL_PROD_KEY As String
  113.        VOL_PROD_KEY = Replace(Serial, "-", "")
  114.  
  115.        For Each obj In GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf("win32_WindowsProductActivation")
  116.           result = obj.SetProductKey(VOL_PROD_KEY)
  117.           If Err <> 0 Then
  118.              MsgBox Err.Description, "0x" & Hex(Err.Number)
  119.              Err.Clear
  120.           End If
  121.        Next
  122.  
  123.        MsgBox "¡Su Microsoft Windows XP es Genuino!" & vbCrLf & vbCrLf & "Verifíquelo pulsando el botón Verificar", vbInformation, "Registro Exitoso!"
  124.        XPReg.cmdComprobar.SetFocus
  125.    End If
  126.  
  127. End Sub
  128.  
  129. ' Centrar el formulario
  130.  
  131. Public Sub Centrar(Frm As Form)
  132.    Frm.Left = (Screen.Width / 2) - (Frm.Width / 2)
  133.    Frm.Top = (Screen.Height / 2) - (Frm.Height / 2) - 600
  134. End Sub

Un modulo lo podemos utilizar para declarar funciones, acciones, variables y realizar calculos y llamarlos con tan solo poner el nombre de la funcion, en este caso la función "SacarClave"  la utilizamos para decodificar y mover el serial a una variable que luego comparamos con el serial original y damos como genuino o no al serial. A su ves también tenemos la función de "VerSerial", la cual solamente toma datos del registro; entre otras más...

FUENTE: http://www.nochesdecode.com.ar/2012/04/activador-de-windows-xp-en-visual-basic.html


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Registro de windows en visual basic
Programación Visual Basic
IvanUgu 2 5,344 Último mensaje 3 Julio 2004, 05:07 am
por IvanUgu
Visual Basic & Windows Vista « 1 2 3 »
Programación Visual Basic
KillerByte 25 7,138 Último mensaje 28 Julio 2007, 13:16 pm
por ~~
Visual Basic En Windows Vista « 1 2 »
Programación Visual Basic
kakinets 15 11,181 Último mensaje 8 Septiembre 2009, 06:58 am
por pilones
Windows 7 y Visual Basic. « 1 2 »
Programación Visual Basic
pungados 13 11,898 Último mensaje 15 Septiembre 2009, 04:45 am
por BlackZeroX
Activador KMS para Windows 8.1 contiene varios troyanos
Noticias
wolfbcn 0 1,647 Último mensaje 29 Octubre 2013, 14:05 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines