Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[Cramel] Regedit.cml ~ Crea, Edita y Elimina claves del Registro

  • 0 Respuestas
  • 3544 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado BlackBlex

  • *
  • Underc0der
  • Mensajes: 49
  • Actividad:
    0%
  • Reputación 4
    • Ver Perfil
  • Skype: blackblex
  • Twitter: blackblex
« en: Julio 05, 2017, 08:30:39 pm »
Les traigo este código el cual te facilita la creación, edición o eliminación de claves del Registro

Información
  • Compatible con Cramel: 2.0.0.362
  • Librerías requeridas: MSVBVM60.cml


Tiene los siguientes métodos:
  • crearClaveCadena:Booleano - Crea un valor cadena, o una clave con su valor cadena
  • crearClaveWord:Booleano - Crea un valor Dword, o una subclave con su valor Dword
  • establecerClaveCadena:Booleano - Establece el valor cadena de una clave existente, sino crea el valor
  • establecerClaveWord:Booleano - Establece el valor word de una clave existente, sino crea el valor
  • leerClaveCadena:Cadena - Devuelve el valor cadena de una clave
  • leerClaveWord:Word - Devuelve el valor word de una clave
  • borrarValor:Booleano - Borra un valor de una clave
  • borrarClave:Booleano - Borra una clave

Tiene las siguientes Propiedades:
  • hClave - Establece la HKEY que se usara | HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, HKEY_LOCAL_MACHINE, HKEY_USERS, HKEY_PERFORMANCE_DATA, HKEY_PERFORMANCE_TEXT, HKEY_PERFORMANCE_NLSTEXT, HKEY_CURRENT_CONFIG o HKEY_DYN_DATA
  • sClave - Establece la SubKEY que se usara
  • Clave - Establece la clave o el valor que se recuperará, creará o borrará
  • ValorCadena - Establece el contenido del valor
  • ValorWord - Establece el contenido del valor

Para usarla solo es de Importar la librería Cramel, Regedit, su archivo de constantes y apis propia; después declaramos una variable del tipo Regedit y creamos el objecto.

Y es todo por el momento.

Aquí el código Regedit.cml:
Código: Text
  1. '/**
  2. ' * Regedit
  3. ' *
  4. ' * @author  Jovani Pérez Damián (@BlackBlex)
  5. ' *
  6. ' * ==============Information==============
  7. ' *      Filename: Regedit.cml
  8. ' * ---------------------------------------
  9. '*/
  10.  
  11. Clase Regedit,_
  12.     rhKey:Entero,_
  13.     rsKey,_
  14.     rKey,_
  15.     rValueC:Cadena,_
  16.     rType,_
  17.     rSize,_
  18.     rNorU,_
  19.     rPtr:Entero,_
  20.     rValueW:Word,_
  21.     rStrucSA:SECURITY_ATTRIBUTES
  22.  
  23.     Sección Privada
  24.         Proc setrhKey(nuevo:Entero)
  25.             rhKey = nuevo
  26.         FinProc
  27.         Proc getrhKey:Entero
  28.             Resultado = rhKey
  29.         FinProc
  30.  
  31.         Proc setrsKey(nuevo:Cadena)
  32.             rsKey = nuevo
  33.         FinProc
  34.         Proc getrsKey:Cadena
  35.             Resultado = rsKey
  36.         FinProc
  37.  
  38.         Proc setrKey(nuevo:Cadena)
  39.             rKey = nuevo
  40.         FinProc
  41.         Proc getrKey:Cadena
  42.             Resultado = rKey
  43.         FinProc
  44.  
  45.         Proc setrSize(nuevo:Entero)
  46.             rSize = nuevo
  47.         FinProc
  48.         Proc getrSize:Entero
  49.             Resultado = rSize
  50.         FinProc
  51.  
  52.         Proc setrPtr(nuevo:Entero)
  53.             rPtr = nuevo
  54.         FinProc
  55.         Proc getrPtr:Entero
  56.             Resultado = rPtr
  57.         FinProc
  58.  
  59.         Proc setrValueC(nuevo:Cadena)
  60.             rValueC = nuevo
  61.         FinProc
  62.         Proc getrValueC:Cadena
  63.             Resultado = rValueC
  64.         FinProc
  65.  
  66.         Proc setrValueW(nuevo:Word)
  67.             rValueW = nuevo
  68.         FinProc
  69.         Proc getrValueW:Word
  70.             Resultado = rValueW
  71.         FinProc
  72.  
  73.     Sección Pública
  74.         Prop hClave:Entero
  75.             Lectura:getrhKey
  76.             Escritura:setrhKey
  77.         FinProp
  78.        
  79.         Prop sClave:Cadena
  80.             Lectura:getrsKey
  81.             Escritura:setrsKey
  82.         FinProp
  83.        
  84.         Prop Clave:Cadena
  85.             Lectura:getrKey
  86.             Escritura:setrKey
  87.         FinProp
  88.        
  89.         Prop Tamaño:Entero
  90.             Lectura:getrSize
  91.             Escritura:setrSize
  92.         FinProp
  93.        
  94.         Prop Puntero:Entero
  95.             Lectura:getrPtr
  96.             Escritura:setrPtr
  97.         FinProp
  98.        
  99.         Prop ValorCadena:Cadena
  100.             Lectura:getrValueC
  101.             Escritura:setrValueC
  102.         FinProp
  103.        
  104.         Prop ValorWord:Word
  105.             Lectura:getrValueW
  106.             Escritura:setrValueW
  107.         FinProp
  108.  
  109.         Proc crearClaveCadena:Booleano
  110.             Resultado = Falso
  111.  
  112.             rStrucSA.lpSecurityDescriptor = 0
  113.             rStrucSA.bInheritHandle = 1
  114.             rStrucSA.nLength = &rStrucSA
  115.            
  116.             Si (RegCreateKey(EsteObjeto.hClave, EsteObjeto.sClave, 0, "", 0, KEY_WRITE, [email protected], [email protected], [email protected]) = ERROR_SUCCESS) Entonces
  117.                 rSize = CadLong(rValueC)
  118.                 Si ( RegSetValue(EsteObjeto.Puntero, EsteObjeto.Clave, 0, REG_SZ, StrPtr(rValueC), rSize) = ERROR_SUCCESS ) Entonces
  119.                     Resultado = Verdad
  120.                 FinSi
  121.             FinSi
  122.             RegCloseKey(EsteObjeto.Puntero)
  123.         FinProc
  124.  
  125.         Proc crearClaveWord:Booleano
  126.             Resultado = Falso
  127.  
  128.             rStrucSA.lpSecurityDescriptor = 0
  129.             rStrucSA.bInheritHandle = 1
  130.             rStrucSA.nLength = &rStrucSA
  131.            
  132.             Si (RegCreateKey(EsteObjeto.hClave, EsteObjeto.sClave, 0, "", 0, KEY_WRITE, [email protected], [email protected], [email protected]) = ERROR_SUCCESS) Entonces
  133.                 rSize = &rValueW
  134.                 rSize = rSize * 2
  135.                 Si ( RegSetValue(EsteObjeto.Puntero, EsteObjeto.Clave, 0, REG_DWORD, [email protected], rSize) = ERROR_SUCCESS ) Entonces
  136.                     Resultado = Verdad
  137.                 FinSi
  138.             FinSi
  139.             RegCloseKey(EsteObjeto.Puntero)
  140.         FinProc
  141.  
  142.         Proc establecerClaveCadena:Booleano
  143.             Resultado = Falso            
  144.             Si (RegOpenKey(EsteObjeto.hClave, EsteObjeto.sClave, 0, KEY_WRITE, [email protected]) = ERROR_SUCCESS) Entonces
  145.                 rSize = CadLong(rValueC)
  146.                 Si ( RegSetValue(EsteObjeto.Puntero, EsteObjeto.Clave, 0, REG_SZ, StrPtr(rValueC), rSize) = ERROR_SUCCESS ) Entonces
  147.                     Resultado = Verdad
  148.                 FinSi
  149.             FinSi
  150.             RegCloseKey(EsteObjeto.Puntero)
  151.         FinProc
  152.  
  153.         Proc establecerClaveWord:Booleano
  154.             Resultado = Falso            
  155.             Si (RegOpenKey(EsteObjeto.hClave, EsteObjeto.sClave, 0, KEY_WRITE, [email protected]) = ERROR_SUCCESS) Entonces
  156.                 rSize = &rValueW
  157.                 rSize = rSize * 2
  158.                 Si ( RegSetValue(EsteObjeto.Puntero, EsteObjeto.Clave, 0, REG_DWORD, [email protected], rSize) = ERROR_SUCCESS ) Entonces
  159.                     Resultado = Verdad
  160.                 FinSi
  161.             FinSi
  162.             RegCloseKey(EsteObjeto.Puntero)
  163.         FinProc
  164.  
  165.         Proc leerClaveCadena:Cadena
  166.             Resultado = "Desconocido"
  167.             Si (RegOpenKey(EsteObjeto.hClave, EsteObjeto.sClave, 0, KEY_QUERY_VALUE, [email protected]) = ERROR_SUCCESS) Entonces
  168.                 rType = REG_SZ
  169.                 RegQueryValue(EsteObjeto.Puntero, EsteObjeto.Clave, 0, [email protected], Nulo, [email protected])
  170.                 Resultado = Espacio(EsteObjeto.Tamaño)
  171.                 RegQueryValue(EsteObjeto.Puntero, EsteObjeto.Clave, 0, [email protected], StrPtr(Resultado), [email protected])
  172.                 Resultado = TruncarCadena(Resultado)
  173.             FinSi
  174.             RegCloseKey(EsteObjeto.Puntero)
  175.         FinProc
  176.  
  177.         Proc leerClaveWord:Word
  178.             Resultado = -1
  179.             Si (RegOpenKey(EsteObjeto.hClave, EsteObjeto.sClave, 0, KEY_QUERY_VALUE, [email protected]) = ERROR_SUCCESS) Entonces
  180.                 rType = REG_DWORD
  181.                 RegQueryValue(EsteObjeto.Puntero, EsteObjeto.Clave, 0, [email protected], Nulo, [email protected])
  182.                 RegQueryValue(EsteObjeto.Puntero, EsteObjeto.Clave, 0, [email protected], [email protected], [email protected])
  183.             FinSi
  184.             RegCloseKey(EsteObjeto.Puntero)
  185.         FinProc
  186.  
  187.         Proc borrarValor:Booleano
  188.             Resultado = Falso
  189.             Si (RegOpenKey(EsteObjeto.hClave, EsteObjeto.sClave, 0, KEY_SET_VALUE, [email protected]) = ERROR_SUCCESS) Entonces
  190.                 Si ( RegDeleteValue(EsteObjeto.Puntero, EsteObjeto.Clave) = ERROR_SUCCESS ) Entonces
  191.                     Resultado = Verdad
  192.                 FinSi
  193.             FinSi
  194.             RegCloseKey(EsteObjeto.Puntero)
  195.         FinProc
  196.  
  197.         Proc borrarClave:Booleano
  198.             Resultado = Falso
  199.             Si (RegOpenKey(EsteObjeto.hClave, EsteObjeto.sClave, 0, KEY_SET_VALUE, [email protected]) = ERROR_SUCCESS) Entonces
  200.                 Si (RegDeleteKey(EsteObjeto.Puntero, "") = ERROR_SUCCESS) Entonces
  201.                     Resultado = Verdad
  202.                 FinSi
  203.             FinSi
  204.             RegCloseKey(EsteObjeto.Puntero)
  205.         FinProc
  206.  
  207. FinClase
  208.  
  209. Proc WordCad(Valor:Word, Opcional Base:Entero = 16):Cadena
  210.     Resultado = TruncarCadena(itoa(Valor,Espacio(10),Base))
  211. FinProc

Archivo Constantes.cml <- Se recomienda que tengan un archivo propio de constantes (y que sea global), donde puedan poner todas las constantes que no contenta Cramel por defecto.
Código: Text
  1. '/**
  2. ' * Constantes para el Regedit
  3. ' *
  4. ' * @author  Jovani Pérez Damián (@BlackBlex)
  5. ' *
  6. ' * ==============Information==============
  7. ' *      Filename: Constantes.cml
  8. ' * ---------------------------------------
  9. '*/
  10.  
  11. 'Constantes Regedit'
  12.     'Registro'
  13.         Const HKEY_CLASSES_ROOT        = &80000000
  14.         Const HKEY_CURRENT_USER        = &80000001
  15.         Const HKEY_LOCAL_MACHINE       = &80000002
  16.         Const HKEY_USERS               = &80000003
  17.         Const HKEY_PERFORMANCE_DATA    = &80000004
  18.         Const HKEY_PERFORMANCE_TEXT    = &80000050
  19.         Const HKEY_PERFORMANCE_NLSTEXT = &80000060
  20.         Const HKEY_CURRENT_CONFIG      = &80000005
  21.         Const HKEY_DYN_DATA            = &80000006
  22.     'Registro'
  23.  
  24.     'Desired Access'
  25.         Const KEY_ALL_ACCESS         = &F003F
  26.         Const KEY_CREATE_LINK        = &0020
  27.         Const KEY_CREATE_SUB_KEY     = &0004
  28.         Const KEY_ENUMERATE_SUB_KEYS = &0008
  29.         Const KEY_EXECUTE            = &20019
  30.         Const KEY_NOTIFY             = &0010
  31.         Const KEY_QUERY_VALUE        = &0001
  32.         Const KEY_READ               = &20019
  33.         Const KEY_SET_VALUE          = &0002
  34.         Const KEY_WOW64_32KEY        = &0200
  35.         Const KEY_WOW64_64KEY        = &0100
  36.         Const KEY_WRITE              = &20006
  37.     'Desired Access'
  38.  
  39.     'Registry Value Type'
  40.         Const REG_NONE                       = 0
  41.         Const REG_SZ                         = 1
  42.         Const REG_EXPAND_SZ                  = 2
  43.         Const REG_BINARY                     = 3
  44.         Const REG_DWORD                      = 4
  45.         Const REG_DWORD_LITTLE_ENDIAN        = 4
  46.         Const REG_DWORD_BIG_ENDIAN           = 5
  47.         Const REG_LINK                       = 6
  48.         Const REG_MULTI_SZ                   = 7
  49.         Const REG_RESOURCE_LIST              = 8
  50.         Const REG_FULL_RESOURCE_DESCRIPTOR   = 9
  51.         Const REG_RESOURCE_REQUIREMENTS_LIST = 10
  52.         Const REG_QWORD                      = 11
  53.         Const REG_QWORD_LITTLE_ENDIAN        = 11
  54.     'Registry Value Type'
  55.  
  56.     'Error message'
  57.         Const ERROR_SUCCESS = &0
  58.     'Error message'
  59. 'Constantes Regedit'

Archivo APIS.cml <- Se recomienda que tengan un archivo propio de APIS (y que sea global), donde puedan poner todas las APIS que no contenta Cramel por defecto.
Código: Text
  1. '/**
  2. ' * APIS para el Editor de Registro
  3. ' *
  4. ' * @author  Jovani Pérez Damián (@BlackBlex)
  5. ' *
  6. ' * ==============Information==============
  7. ' *      Filename: APIS.cml
  8. ' * ---------------------------------------
  9. '*/
  10.  
  11. 'APIS Regedit'
  12.     API RegOpenKey(hKey:Entero, lpSubKey:Cadena, ulOptions, samDesired, phkResult:Entero):Entero, "Advapi32.dll" "RegOpenKeyExA"
  13.     API RegQueryValue(hKey:Entero, lpValueName:Cadena, lpReserved, lpType, lpData, lpcbData:Entero):Entero, "Advapi32.dll" "RegQueryValueExA"
  14.     API RegCloseKey(hKey:Entero):Entero, "Advapi32.dll"
  15.     API RegCreateKey(hKey:Entero, lpSubKey:Cadena, lpReserved:Entero, lpClass:Cadena, dwOptions:Entero, samDesired:Entero, lpSecurityAttributes:Entero, phkResult, lpdwDisposition:Entero):Entero, "Advapi32.dll" "RegCreateKeyExA"
  16.     API RegDeleteKey(hKey:Entero, lpSubKey:Cadena):Entero, "Advapi32.dll" "RegDeleteKeyA"
  17.     API RegSetValue(hKey:Entero, lpValueName:Cadena, lpReserved, lpType, lpData, cbData:Entero):Entero, "Advapi32.dll" "RegSetValueExA"
  18.     API RegDeleteValue(hKey:Entero, lpValueName:Cadena):Entero, "Advapi32.dll" "RegDeleteValueA"
  19. 'APIS Regedit'

Y aquí un ejemplo usando Regedit.cml
Código: Text
  1. Importar "Cramel.cml"
  2. Importar "MSVBVM60\MSVBVM60.cml"
  3. Importar "Constantes.cml"
  4. Importar "APIS.cml"
  5. Importar "Regedit.cml"
  6.  
  7. Var registro:Regedit
  8.  
  9. Crear registro
  10.  
  11.     'Creamos la subclave HelloCramel con una clave Test con valor "Prueba"'
  12.     registro.hClave = HKEY_CURRENT_USER
  13.     registro.sClave = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\HelloCramel"
  14.     registro.Clave  = "Test"
  15.     registro.ValorCadena = "Prueba"
  16.  
  17.     Si ( registro.crearClaveCadena ) Entonces
  18.         Mensaje("Correcto")
  19.     SiNo
  20.         Mensaje("Error")
  21.     FinSi
  22.  
  23.     'Establecemos la clave HelloCramel'
  24.     registro.hClave = HKEY_CURRENT_USER
  25.     registro.sClave = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"
  26.     registro.Clave  = "HelloCramel"
  27.     registro.ValorCadena = "Estamos aquí"
  28.  
  29.     Si ( registro.crearClaveCadena ) Entonces
  30.         Mensaje("Correcto")
  31.     SiNo
  32.         Mensaje("Error")
  33.     FinSi
  34.    
  35.     'SO'
  36.     registro.hClave = HKEY_LOCAL_MACHINE
  37.     registro.sClave = "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion"
  38.     registro.Clave  = "ProductName"
  39.     Mensaje(registro.leerClaveCadena)
  40.    
  41.     'Lang'
  42.     registro.hClave = HKEY_CURRENT_USER
  43.     registro.sClave = "Control Panel\\International"
  44.     registro.Clave  = "LocaleName"
  45.     Mensaje(registro.leerClaveCadena)
  46.    
  47.     'User path'
  48.     registro.hClave = HKEY_CURRENT_USER
  49.     registro.sClave = "Volatile Environment"
  50.     registro.Clave  = "USERPROFILE"
  51.     Mensaje(registro.leerClaveCadena)
  52.    
  53.     'Random Key value DWord'
  54.     registro.hClave = HKEY_LOCAL_MACHINE
  55.     registro.sClave = "SOFTWARE\\Microsoft\\Windows\\ScriptedDiagnosticsProvider"
  56.     registro.Clave  = "RemoteServerResponseId"
  57.     Mensaje(WordCad(registro.leerClaveWord, 16))
  58.  
  59.     'Borramos el valor HelloCramel'
  60.     registro.hClave = HKEY_CURRENT_USER
  61.     registro.sClave = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"
  62.     registro.Clave  = "HelloCramel"
  63.  
  64.     Si ( registro.borrarValor ) Entonces
  65.         Mensaje("Correcto")
  66.     SiNo
  67.         Mensaje("Error")
  68.     FinSi
  69.  
  70.     'Borramos la subclave HelloCramel'
  71.     registro.hClave = HKEY_CURRENT_USER
  72.     registro.sClave = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\HelloCramel"
  73.  
  74.     Si ( registro.borrarClave ) Entonces
  75.         Mensaje("Correcto")
  76.     SiNo
  77.         Mensaje("Error")
  78.     FinSi
  79.  
  80.     'Establecemos una clave String'
  81.     registro.hClave = HKEY_CURRENT_USER
  82.     registro.sClave = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"
  83.     registro.Clave  = "HelloCramelC"
  84.     registro.ValorCadena = "\"C:\test.exe\""
  85.  
  86.     Si ( registro.crearClaveCadena ) Entonces
  87.         Mensaje("Correcto")
  88.     SiNo
  89.         Mensaje("Error")
  90.     FinSi
  91.  
  92.     'Establecemos una clave DWord'
  93.     registro.hClave = HKEY_CURRENT_USER
  94.     registro.sClave = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"
  95.     registro.Clave  = "HelloCramelW"
  96.     registro.ValorWord = &c0a
  97.  
  98.     Si ( registro.crearClaveWord ) Entonces
  99.         Mensaje("Correcto")
  100.     SiNo
  101.         Mensaje("Error")
  102.     FinSi
  103.  
  104.     'Cambiamos el valor de HelloCramelW'
  105.     registro.hClave = HKEY_CURRENT_USER
  106.     registro.sClave = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"
  107.     registro.Clave  = "HelloCramelW"
  108.     registro.ValorWord = &fffc
  109.  
  110.     Si ( registro.establecerClaveWord ) Entonces
  111.         Mensaje("Correcto")
  112.     SiNo
  113.         Mensaje("Error")
  114.     FinSi
  115.  
  116. Destruir registro


De arriba hacia abajo, de izquierda a derecha.

Cualquier sugerencia, o error, comenten.

 

¿Te gustó el post? COMPARTILO!



Como trabajar Cramel con Sublime Text | Actualizado [Cramel2| 20/Junio/17]

Iniciado por BlackBlex

Respuestas: 1
Vistas: 2173
Último mensaje Febrero 23, 2017, 08:18:21 am
por ANTRAX
[Cramel] Brute Force Dictionary Creator by 79137913 [Aplicación + Source]

Iniciado por BlackBlex

Respuestas: 0
Vistas: 3594
Último mensaje Julio 01, 2017, 07:04:10 pm
por BlackBlex
[Cramel] File pumper + (Source) | Agrega peso a tus archivos

Iniciado por BlackBlex

Respuestas: 8
Vistas: 5374
Último mensaje Marzo 23, 2017, 07:58:04 pm
por Riojas
[Cramel] Archivo.cml ~ Lee y escribe archivos | 25 de Junio del 2017

Iniciado por BlackBlex

Respuestas: 4
Vistas: 4361
Último mensaje Mayo 13, 2017, 11:50:12 pm
por rollth
[Cramel] Componentes para Ventanas | 5 de Julio del 2017

Iniciado por BlackBlex

Respuestas: 0
Vistas: 3619
Último mensaje Abril 10, 2017, 04:25:47 pm
por BlackBlex