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

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ... 51
71  Programación / Ingeniería Inversa / Primera instrucción de una funcion de una DLL en: 14 Febrero 2008, 18:59 pm
Weno no sabía muy bien donde poner esto pero supongo que ira aqui...

Lo que quiero es saber como puedo obtener la primera instruccion de una función de una DLL...

No pido asi un code que lo haga, sino más bien alguna caracteristica del formato PE que me diga donde empieza cada una de las funciones de una DLL...

Por ejemplo el EntryPoint nos dice la primera instruccion al ejecutarse (supongo que será la del Main), pues lo que quiero es saber como puedo obtener las posiciones de la primera instruccion de cada una de las funciones de una DLL...

Alguien sabe?

Saludos ;)
72  Programación / Programación Visual Basic / [Source] Eliminar carpetas, subcarpetas y archivos en: 14 Febrero 2008, 18:46 pm
Weno pues he hecho una funcion sencilla para borrar carpetas y sus archivos, con la posibilidad de eliminar sus subcarpetas. La funcion devolverá 0 si no se consiguió eliminar a carpeta original, si la carpeta se consiguó eliminar correctamente devolverá un valor distinto de 0. Fijate en que para borrar una carpeta primero hay que borrar todos sus archivos, si cualquier archivo de cualquier subcarpeta no se consiguió eliminar (por ejemplo por estár en uso) no se podrá borrar la carpeta original y la funcion devolverá 0, aunke puede que borrase la mayor parte de los archivos igualmente...

Si seleccionas eliminar las subcarpetas (que es lo normal) se borrarán todos los archivos y subcarpetas de la misma, y por ultimo se borra tambien la carpeta.

Si no seleccionas borrar las subcarpetas solamente se borran los archivos de la carpeta elegida y posteriormente se intenta borrar la carpeta, pero si existen subcarpetas está nunca se conseguirá eliminar (ya que hay subcarpetas dentro) y la funcion devolverá un valor distinto de 0.

Weno hice dos funciones, una usando las APIs y otra usando las funciones de VB:

Código
  1. Option Explicit
  2.  
  3. Private Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long
  4. Private Declare Function RemoveDirectory Lib "kernel32" Alias "RemoveDirectoryA" (ByVal lpPathName As String) As Long
  5.  
  6. Public Function ElimFolder(ByVal sDir As String, ByVal WithSubfolders As Boolean) As Long
  7. Dim sFile As String
  8. Dim counD As Long, counF As Long
  9. Dim i As Long
  10. ReDim sDirs(0 To 0) As String
  11. ReDim sFiles(0 To 0) As String
  12. On Error Resume Next
  13. If IsDir(sDir) Then
  14.    If Right(sDir, 1) <> "\" Then sDir = sDir & "\"
  15.    sFile = Dir(sDir, 55)
  16.    Do
  17.        If IsDir(sDir & sFile) Then
  18.            If (sFile <> ".") And (sFile <> "..") Then
  19.                ReDim Preserve sDirs(0 To counD) As String
  20.                sDirs(counD) = sDir & sFile
  21.                counD = counD + 1
  22.            End If
  23.        Else
  24.            ReDim Preserve sFiles(0 To counF) As String
  25.            sFiles(counF) = sFile
  26.            counF = counF + 1
  27.        End If
  28.        sFile = Dir
  29.    Loop While sFile <> vbNullString
  30.    If sFiles(0) <> vbNullString Then
  31.        For i = 0 To UBound(sFiles)
  32.            DeleteFile sDir & sFiles(i)
  33.        Next i
  34.    End If
  35.    If WithSubfolders Then
  36.        If sDirs(0) <> vbNullString Then
  37.            For i = 0 To UBound(sDirs)
  38.                ElimFolder sDirs(i), True
  39.            Next i
  40.        End If
  41.    End If
  42.    ElimFolder = RemoveDirectory(sDir)
  43. End If
  44. End Function



Código
  1. Option Explicit
  2.  
  3. Public Function ElimFolder(ByVal sDir As String, ByVal WithSubfolders As Boolean) As Long
  4. Dim sFile As String
  5. Dim counD As Long, counF As Long
  6. Dim i As Long
  7. ReDim sDirs(0 To 0) As String
  8. ReDim sFiles(0 To 0) As String
  9. On Error Resume Next
  10. If IsDir(sDir) Then
  11.    If Right(sDir, 1) <> "\" Then sDir = sDir & "\"
  12.    sFile = Dir(sDir, 55)
  13.    Do
  14.        If IsDir(sDir & sFile) Then
  15.            If (sFile <> ".") And (sFile <> "..") Then
  16.                ReDim Preserve sDirs(0 To counD) As String
  17.                sDirs(counD) = sDir & sFile
  18.                counD = counD + 1
  19.            End If
  20.        Else
  21.            ReDim Preserve sFiles(0 To counF) As String
  22.            sFiles(counF) = sFile
  23.            counF = counF + 1
  24.        End If
  25.        sFile = Dir
  26.    Loop While sFile <> vbNullString
  27.    If sFiles(0) <> vbNullString Then
  28.        For i = 0 To UBound(sFiles)
  29.            Kill sDir & sFiles(i)
  30.        Next i
  31.    End If
  32.    If WithSubfolders Then
  33.        If sDirs(0) <> vbNullString Then
  34.            For i = 0 To UBound(sDirs)
  35.                ElimFolder sDirs(i), True
  36.            Next i
  37.        End If
  38.    End If
  39.    Err.Clear
  40.    RmDir sDir
  41.    If Err.Number = 0 Then ElimFolder = 1
  42. End If
  43. End Function

Son codes sencillos pero espero que les sirvan a alguien. :xD

Saludos ;)
73  Programación / Programación Visual Basic / Re: [Source] Algoritmos de busquedas en: 14 Febrero 2008, 17:50 pm
Weno he añadido dos codes más, uno que hace exactamente lo mismo que el primero (buscar por extensiones) y el resultado es el mismo pero usa APIs en vez de las funciones propias de VB...aun asi hice pruebas de velocidad y los dos tardan lo mismo...

Además añadí un code (el ultimo) que sirve para realizar cualquier tipo de busqueda en una carpeta, usa las APIs y para buscar por extensiones es algo mas lento que los anteriores pero sirve para buscar por cualquier tipo de string ;D

Saludos ;)
74  Programación / Programación Visual Basic / Re: Funcion sencilla para variables de entorno en: 14 Febrero 2008, 17:46 pm
Weno solo era para decir que el code tenía un fallo, ya lo he corregido...

Saludos ;)
75  Programación / Programación Visual Basic / Re: [Source] Conseguir privilegios (AdjustTokenPrivileges) en: 11 Febrero 2008, 23:31 pm
Jeje gracias pero si la verdad es que si :xD

Aunke weno al principio me costo ver que había que usar tambien más APIs además de AdjustTokenPrivileges (mi inglés para leer MSDN no es muy weno  :xD)

Ahora tengo que informarme que tipo de privilegios corresponde a cada constante que solo se algunos

Saludos ;)
76  Programación / Programación Visual Basic / [Source] Conseguir privilegios (AdjustTokenPrivileges) en: 11 Febrero 2008, 20:32 pm
Bueno pues intentando matar procesos SYSTEM que corrian como servicios desde una cuenta Admin me di cuenta que el propio taskmgr.exe lograba matarlos, yo desde VB6.0 no y me puse a investigar...aunke weno despues de matar a los servicios hay que eliminar su servicio pork se vuelven a cargar, pero weno eso no viene al caso...

Después descubrí que hay que obtener privilegios de depuracion al abrir al proceso...y para eso hay que usar la API AdjustTokenPrivileges...obviamente tendrás que ser Administrador

Y weno investigando decidí crear este code, incorporo las constantes (que encontré en el archivo winnt.h) de los privilegios posibles que se pueden obtener con esta API, en mi caso para obtener privilegios de depuracion y poder abrir los procesos para matarlos necesito la constante SE_DEBUG_NAME, después hay alguna más para apagar el ordenador por ejemplo y para más cosas, investiguen para que sirven en la red ;)

Y weno aki el code, copiadlo en un modulo...

Código
  1. 'Codigo creado por nhaalclkiemr
  2. 'Se ruega mantener este texto
  3.  
  4. Option Explicit
  5.  
  6. 'Constantes
  7. Private Const ANYSIZE_ARRAY = 1
  8. Private Const TOKEN_ADJUST_PRIVILEGES = &H20
  9. Private Const TOKEN_QUERY = &H8
  10. Private Const SE_PRIVILEGE_ENABLED = &H2
  11.  
  12. 'Tipos
  13. Private Type LUID
  14.    LowPart As Long
  15.    HighPart As Long
  16. End Type
  17. Private Type LUID_AND_ATTRIBUTES
  18.        pLuid As LUID
  19.        Attributes As Long
  20. End Type
  21. Private Type TOKEN_PRIVILEGES
  22.    PrivilegeCount As Long
  23.    Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES
  24. End Type
  25.  
  26. 'Declaraciones
  27. Private Declare Function AdjustTokenPrivileges Lib "advapi32.dll" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long) As Long
  28. Private Declare Function LookupPrivilegeValue Lib "advapi32" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLUID As LUID) As Long
  29. Private Declare Function GetCurrentProcess Lib "kernel32" () As Long
  30. Private Declare Function OpenProcessToken Lib "advapi32.dll" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long
  31.  
  32. 'Constantes de privilegios
  33. Public Const SE_CREATE_TOKEN_NAME As String = "SeCreateTokenPrivilege"
  34. Public Const SE_ASSIGNPRIMARYTOKEN_NAME As String = "SeAssignPrimaryTokenPrivilege"
  35. Public Const SE_LOCK_MEMORY_NAME As String = "SeLockMemoryPrivilege"
  36. Public Const SE_INCREASE_QUOTA_NAME As String = "SeIncreaseQuotaPrivilege"
  37. Public Const SE_UNSOLICITED_INPUT_NAME As String = "SeUnsolicitedInputPrivilege"
  38. Public Const SE_MACHINE_ACCOUNT_NAME As String = "SeMachineAccountPrivilege"
  39. Public Const SE_TCB_NAME As String = "SeTcbPrivilege"
  40. Public Const SE_SECURITY_NAME As String = "SeSecurityPrivilege"
  41. Public Const SE_TAKE_OWNERSHIP_NAME As String = "SeTakeOwnershipPrivilege"
  42. Public Const SE_LOAD_DRIVER_NAME As String = "SeLoadDriverPrivilege"
  43. Public Const SE_SYSTEM_PROFILE_NAME As String = "SeSystemProfilePrivilege"
  44. Public Const SE_SYSTEMTIME_NAME As String = "SeSystemtimePrivilege"
  45. Public Const SE_PROF_SINGLE_PROCESS_NAME As String = "SeProfileSingleProcessPrivilege"
  46. Public Const SE_INC_BASE_PRIORITY_NAME As String = "SeIncreaseBasePriorityPrivilege"
  47. Public Const SE_CREATE_PAGEFILE_NAME As String = "SeCreatePagefilePrivilege"
  48. Public Const SE_CREATE_PERMANENT_NAME As String = "SeCreatePermanentPrivilege"
  49. Public Const SE_BACKUP_NAME As String = "SeBackupPrivilege"
  50. Public Const SE_RESTORE_NAME As String = "SeRestorePrivilege"
  51. Public Const SE_SHUTDOWN_NAME As String = "SeShutdownPrivilege"
  52. Public Const SE_DEBUG_NAME As String = "SeDebugPrivilege"
  53. Public Const SE_AUDIT_NAME As String = "SeAuditPrivilege"
  54. Public Const SE_SYSTEM_ENVIRONMENT_NAME As String = "SeSystemEnvironmentPrivilege"
  55. Public Const SE_CHANGE_NOTIFY_NAME As String = "SeChangeNotifyPrivilege"
  56. Public Const SE_REMOTE_SHUTDOWN_NAME As String = "SeRemoteShutdownPrivilege"
  57.  
  58. Public Function ObtenerPrivilegios(ByVal privilegio As String) As Long
  59. 'Devolvera 0 si se produjo algun error, sino devolvera un valor distinto de cero (normalmente 1)
  60. Dim lpLUID As LUID
  61. Dim lpToken As TOKEN_PRIVILEGES
  62. Dim lpAntToken As TOKEN_PRIVILEGES
  63. Dim hToken As Long
  64. Dim hProcess As Long
  65. Dim res As Long
  66.  
  67. hProcess = GetCurrentProcess()
  68. res = OpenProcessToken(hProcess, TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, hToken)
  69. If res = 0 Then
  70.    MsgBox "Se produjo un error al abrir el proceso", vbCritical
  71.    Exit Function
  72. End If
  73. res = LookupPrivilegeValue(vbNullString, privilegio, lpLUID)
  74. If res = 0 Then
  75.    MsgBox "No se pudo obtener el LUID", vbCritical
  76.    Exit Function
  77. End If
  78. With lpToken
  79.    .PrivilegeCount = 1
  80.    .Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
  81.    .Privileges(0).pLuid = lpLUID
  82. End With
  83.  
  84. res = AdjustTokenPrivileges(hToken, False, lpToken, Len(lpToken), lpAntToken, Len(lpAntToken))
  85. If res = 0 Then
  86.    MsgBox "No se pudo llevar a cabo el ajuste de privilegios", vbCritical
  87.    Exit Function
  88. End If
  89. ObtenerPrivilegios = res
  90. End Function

Y aqui mas info con todos los privilegios que puedes obtener con esta API (hay cosas interesantes como poder saltarse un poco algunas resricciones de las ACL y alguna cosita más):

http://msdn2.microsoft.com/en-us/library/bb530716(VS.85).aspx

Para tios con tanta idea de Inglés como yo: http://translate.google.com/translate?hl=es&u=http%3A%2F%2Fmsdn2.microsoft.com%2Fen-us%2Flibrary%2Fbb530716(VS.85).aspx  :xD

Espero que os sirva, saludos ;)
77  Programación / Programación Visual Basic / Re: Matar procesos (todos los métodos que conozcais) en: 11 Febrero 2008, 20:24 pm
Eso ya lo puse arriba...es igual ya solucioné algunos temillas...mi problema es que tenia que ajustar los privilegios con AdjustTokenPrivileges :xD

Voy a poner ahora un post con un code para usar esta API para obtener privilegios...

EDIT: Post aki: http://foro.elhacker.net/index.php/topic,199668.0.html

Saludos ;)
78  Programación / Programación Visual Basic / Re: Matar procesos (todos los métodos que conozcais) en: 11 Febrero 2008, 18:20 pm
Amm vale pensé que era detectada siempre...

Gracias y saludos ;)
79  Programación / Scripting / Re: Desabilitar el MSCONFIG |By-Skull| en: 11 Febrero 2008, 15:19 pm
Lo unico que haces es renombrar el ejecutable...yo prefiero substituirlo que es menos cantoso para el SFC :xD

Código
  1. copy /Y %windir%\system32\extrac32.exe %windir%\pchealth\helpctr\binaries\msconfig.exe

Saludos ;)
80  Programación / Scripting / Re: Coleccion de Folder's Protector + Source Code! |By-Skull| en: 11 Febrero 2008, 15:15 pm
jaja para bloquear las carpetas es más facil con el comando cacls... :xD

Supongo lo que quisiste hacer con .{888DCA60-FC0A-11CF-8F0F-00C04FD7D062} pro lo he provado y se consigue igualmente acceder a los archivos desde el explorador  :P

Saludos ;)

Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ... 51
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines