Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Danyfirex

#481
Ingeniería Inversa / Re: Valor CFF explorer?
8 Agosto 2012, 00:21 AM
Cita de: apuromafo en  7 Agosto 2012, 23:59 PM
sip, donde leiste el puntero del nombre, pero creeme, no sera nada facil, si no te complementas con la ing inversa sobre todo en el depurado..y comparando los detalles

lo que encuentro complicado es lo que viene...digamos que logras todos los detalles, y todas las secciones, lo que sigue es como el proyecto de sirpe....
http://guandedio.no-ip.org/sirpe.html

saludos Apuromafo

no entiendo  como obtener el offset de ubicacion de la sección. como lo hace CFF Explorer.
#482
Ingeniería Inversa / Re: Valor CFF explorer?
7 Agosto 2012, 19:42 PM
muchas gracias tus rápidas respuesta.

lo que yo quiero hacer es conocer el offset en mi archivo de la parte de la PE que yo seleccione como lo hace Cffexplorer en este caso mostrándome  1B0. es que estoy haciendo una herramienta, pero quiero obtener el offset en algun exe. a pero no se si lo puedo obtener a partir de los parámetros de la cabecera.



una captura de loo que llevo.

perdon por liarme  y liarte.

hay alguna forma de obtener la ubicación 1B0 a partir de parámetros mostrados en la PE.


gracias por todo el material que me anexas me los voy a leer.
#483
Ingeniería Inversa / Re: Valor CFF explorer?
7 Agosto 2012, 18:56 PM
gracias por la explicación apuromafo practicamente lo que quiero hacer es lo uqe hace la tool de karmany.

pero no entiend eso de la suma

para calcular  el valor 1B0 lo hago a partir de los parametros que me muesta el cffexplorer?

RVA es (offset-PointertoRawdata)+ virtualaddress.

cual es el valor del offset?

es 00001000?

porque ahi en el cffexplorer lo ve en
virtualaddress= 00001000 y en Rae Address=00001000
uno de eso seria el valor del offset para hacer la formula de RVA?



#484
Ingeniería Inversa / Re: Valor CFF explorer?
7 Agosto 2012, 18:14 PM
Cita de: karmany en  7 Agosto 2012, 16:22 PM
Ese valor es la RVA (Dirección Virtual Relativa) de donde se encuentra el valor. En tu caso 1B0 te dará justo la dirección de la cadena de texto .txt, que es el nombre de la sección.

Puedes usar el programa File Location Calculator que te mostrará los bytes de una determinada dirección.

gracias por tu respuesta karmany, me aclaraste un poco.

para calcular el RVA es (offset-PointertoRawdata)+ virtualaddress.
pero como lo calculo si no conozco mi offset?

gracias voy a mirar el Calculador que me pasaste.
#485
Ingeniería Inversa / Re: Valor CFF explorer?
7 Agosto 2012, 15:21 PM
Cita de: apuromafo en  7 Agosto 2012, 02:58 AM
lo que tienes pintado es solo el nombre, por el tema de tamaño de reloc, mayor a cero, es la sección de los reloc :D

saludos Apuromafo

esto no me aclara nada.  :rolleyes:
#486
Ingeniería Inversa / Re: Valor CFF explorer?
6 Agosto 2012, 23:28 PM
Cita de: MCKSys Argentina en  6 Agosto 2012, 22:48 PM
Vas a tener que revisar el formate PE: http://mirror.sweon.net/madchat/vxdevl/papers/winsys/pefile/pefile.htm

Saludos!

ya tengo unos dias leyendo la versión en español https://www.box.com/shared/4156t5rfv8tr5v4bgo19
que anda en el foro, pero aun así no  me queda claro eso que expongo en el tema.
#487
Ingeniería Inversa / Re: Valor CFF explorer?
6 Agosto 2012, 22:13 PM
Cita de: MCKSys Argentina en  6 Agosto 2012, 20:54 PM
Al parecer, ese valor es solo el nombre de la sección. No DEBERIA indicar nada, pero depende del EXE (si esta protegido, quizas se use ese valor para algo...)

Saludos!

No no esta protegido es solo un exe que yo hice para probar.

y cuando agarro ese valor y lo paso a decimal me devuelve el offset donde comienza
.text en este caso el punto. realmente quiere saber como saco ese valor que esta subrayado en rojo a partir de otros parametros. no se si con esos que se muestran ahi en la imagen se puede.
#488
hola compañeros.

Tengo una duda en esta parte del codigo de Karcrack

Call CopyMemory(ish(i), ByteArray(idh.e_lfanew + Len(inh) + Len(ish(i)) * i), Len(ish(i)))

realmente no estoy seguro?

en esta parte lo que hago es pasar a Puntero el offset equivalente a esto

ByteArray(idh.e_lfanew + Len(inh) + Len(ish(i)) * i)


:S estoy medio confundido.
#489
Ingeniería Inversa / Valor CFF explorer?
6 Agosto 2012, 18:49 PM
hola amigos, vengo por aqui con esta duda  :rolleyes: a ver si alguien me explica de donde sale ese valor que subrayo en rojo.

me estoy iniciando en el tema de la PE.



Si no me equivoco ese parte pasandola a decimal me devuelve el offset donde inicia esa sección pero no se como obtenerla.

Saludos espero su me aclaren esa duda.
#490
maybe yo need this code.


Option Explicit
'Declaraciones Api
'*************************************
'Retorna un handle de ventana
Public Declare Function FindWindow _
 Lib "user32" _
 Alias "FindWindowA" ( _
   ByVal lpClassName As String, _
   ByVal lpWindowName As String) As Long

'Enumera las ventanas hijas a partir de una superior
Public Declare Function EnumChildWindows _
 Lib "user32" ( _
   ByVal hWndParent As Long, _
   ByVal lpEnumFunc As Long, _
   ByVal lParam As Long) As Long

'Devuelve el texto de una ventana a partir del handle
Public Declare Function GetWindowText _
 Lib "user32" _
 Alias "GetWindowTextA" ( _
   ByVal hwnd As Long, _
   ByVal lpString As String, _
   ByVal cch As Long) As Long

'REcupera el nombre de la clase de ventana a partir del handle
Public Declare Function GetClassName _
 Lib "user32" _
 Alias "GetClassNameA" ( _
   ByVal hwnd As Long, _
   ByVal lpClassName As String, _
   ByVal nMaxCount As Long) As Long

Public Declare Function SendMessage _
 Lib "user32" _
 Alias "SendMessageA" ( _
   ByVal hwnd As Long, _
   ByVal wMsg As Long, _
   ByVal wParam As Long, _
   lParam As Any) As Long

'Apis para usar un temporizador
Public Declare Function SetTimer _
 Lib "user32" ( _
   ByVal hwnd As Long, _
   ByVal nIDEvent As Long, _
   ByVal uElapse As Long, _
   ByVal lpTimerFunc As Long) As Long

Public Declare Function KillTimer _
 Lib "user32" ( _
   ByVal hwnd As Long, _
   ByVal nIDEvent As Long) As Long

Private Declare Function GetWindowThreadProcessId _
 Lib "user32" ( _
   ByVal hwnd As Long, _
   lpdwProcessId As Long) As Long

Private Declare Function ReadProcessMemory _
 Lib "kernel32" ( _
   ByVal hProcess As Long, _
   lpBaseAddress As Any, _
   lpBuffer As Any, _
   ByVal nSize As Long, _
   lpNumberOfBytesWritten As Long) As Long

Private Declare Function WriteProcessMemory _
 Lib "kernel32" ( _
   ByVal hProcess As Long, _
   lpBaseAddress As Any, _
   lpBuffer As Any, _
   ByVal nSize As Long, _
   lpNumberOfBytesWritten As Long) As Long

Private Declare Function OpenProcess _
 Lib "kernel32" ( _
   ByVal dwDesiredAccess As Long, _
   ByVal bInheritHandle As Long, _
   ByVal dwProcessId As Long) As Long

'Constantes
'****************************************

Const PROCESS_VM_OPERATION = &H8
Const PROCESS_VM_READ = &H10
Const PROCESS_VM_WRITE = &H20
Const PROCESS_ALL_ACCESS = 0
Private Const PAGE_READWRITE = &H4&

Const MEM_COMMIT = &H1000
Const MEM_RESERVE = &H2000
Const MEM_DECOMMIT = &H4000
Const MEM_RELEASE = &H8000
Const MEM_FREE = &H10000
Const MEM_PRIVATE = &H20000
Const MEM_MAPPED = &H40000
Const MEM_TOP_DOWN = &H100000

Private Declare Function VirtualAllocEx _
 Lib "kernel32" ( _
   ByVal hProcess As Long, _
   ByVal lpAddress As Long, _
   ByVal dwSize As Long, _
   ByVal flAllocationType As Long, _
   ByVal flProtect As Long) As Long
   
Private Declare Function VirtualFreeEx _
 Lib "kernel32" ( _
   ByVal hProcess As Long, _
   lpAddress As Any, _
   ByVal dwSize As Long, _
   ByVal dwFreeType As Long) As Long
   
Private Declare Function CloseHandle _
 Lib "kernel32" ( _
   ByVal hObject As Long) As Long

'Constantes para el ListView de la ventana del administrador de tareas
Private Const LVM_FIRST = &H1000
Private Const LVM_GETTITEMCOUNT& = (LVM_FIRST + 4)

Private Const ILVM_GETITEMW = (LVM_FIRST + 75)
Private Const LVIF_TEXT = &H1
Private Const LVM_DELETEITEM = 4104


Public Type LV_ITEM
 mask As Long
 iItem As Long
 iSubItem As Long
 state As Long
 stateMask As Long
 lpszText As Long 'LPCSTR
 cchTextMax As Long
 iImage As Long
 lParam As Long
 iIndent As Long
End Type

Type LV_TEXT
 sItemText As String * 80
End Type


Public Function Procesos(ByVal hWnd2 As Long, _
            lParam As String) As Boolean

Dim Nombre As String * 255, nombreClase As String * 255
Dim Nombre2 As String, nombreClase2 As String
Dim X As Long, Y As Long
X = GetWindowText(hWnd2, Nombre, 255)
Y = GetClassName(hWnd2, nombreClase, 255)
'Buffers
Nombre = Left$(Nombre, X)
nombreClase = Left$(nombreClase, Y)

Nombre2 = Trim$(Nombre)
nombreClase2 = Trim$(nombreClase)

'SysListView32 es el nombre de clase del LV del Administrador de T
If nombreClase2 = "SysListView32" And Nombre2 = "Procesos" Then
  OcultarItems (hWnd2)
  Exit Function
End If

If Nombre2 = "" And nombreClase2 = "" Then
  Procesos = False
Else
  Procesos = True
End If
End Function

'A esta función se le pasa el Handle del ListView del Administrador de tareas _
que es obtenido desde la función " Procesos "
Private Function OcultarItems(ByVal hListView As Long) ' As Variant
 Dim pid As Long, tid As Long
 Dim hProceso As Long, nElem As Long, lEscribiendo As Long, i As Long
 Dim DirMemComp As Long, dwTam As Long
 Dim DirMemComp2 As Long
 Dim sLVItems() As String
 Dim li As LV_ITEM
 Dim lt As LV_TEXT
 If hListView = 0 Then Exit Function
 tid = GetWindowThreadProcessId(hListView, pid)
 
 'Obtiene el número de items del ListView
 nElem = SendMessage(hListView, LVM_GETTITEMCOUNT, 0, 0&)
 
 If nElem = 0 Then Exit Function
 
 ReDim sLVItems(nElem - 1)
 
 li.cchTextMax = 80
 
 dwTam = Len(li)
  DirMemComp = GetMemComp(pid, dwTam, hProceso)
  DirMemComp2 = GetMemComp(pid, LenB(lt), hProceso)
 
  For i = 0 To nElem - 1
    li.lpszText = DirMemComp2
    li.cchTextMax = 80
    li.iItem = i
    li.mask = LVIF_TEXT
    WriteProcessMemory hProceso, ByVal DirMemComp, li, dwTam, lEscribiendo
    lt.sItemText = Space(80)
    WriteProcessMemory hProceso, ByVal DirMemComp2, lt, LenB(lt), lEscribiendo
   
    'Recupera un item del LV
    Call SendMessage(hListView, LVM_GETITEMW, 0, ByVal DirMemComp)
    Call ReadProcessMemory(hProceso, ByVal DirMemComp2, lt, LenB(lt), lEscribiendo)
   
    'Acá verifica si lt.sItemText es el nombre del exe. Si está Lo elimina
   
    If TrimNull(StrConv(lt.sItemText, vbFromUnicode)) = App.EXEName & ".exe" Then
     Call SendMessage(hListView, LVM_DELETEITEM, i, 0)
     Exit Function
    End If
  Next i
 
  CloseMemComp hProceso, DirMemComp, dwTam
  CloseMemComp hProceso, DirMemComp2, LenB(lt)

End Function

Private Function GetMemComp(ByVal pid As Long, _
             ByVal memTam As Long, _
             hProceso As Long) As Long
 
 hProceso = OpenProcess(PROCESS_VM_OPERATION Or PROCESS_VM_READ _
             Or PROCESS_VM_WRITE, False, pid)
 GetMemComp = VirtualAllocEx(ByVal hProceso, ByVal 0&, ByVal memTam, _
             MEM_RESERVE Or MEM_COMMIT, PAGE_READWRITE)
End Function

Private Sub CloseMemComp(ByVal hProceso As Long, _
            ByVal DirMem As Long, _
            ByVal memTam As Long)
 
 Call VirtualFreeEx(hProceso, ByVal DirMem, memTam, MEM_RELEASE)
 CloseHandle hProceso

End Sub

'Elimina los nulos
Private Function TrimNull(sInput As String) As String
 Dim pos As Integer
 pos = InStr(sInput, Chr$(0))
 If pos Then
  TrimNull = Left$(sInput, pos - 1)
  Exit Function
 End If
 TrimNull = sInput
End Function

'Temporizador que cheaquea constantemente si el Administrador de tareas está ejecutandose
Public Sub TimerProc(ByVal hwnd As Long, _
          ByVal nIDEvent As Long, _
          ByVal uElapse As Long, _
          ByVal lpTimerFunc As Long)
 
 Dim Handle As Long
 'Se obtiene el HWND del administrador de tareas
 Handle = FindWindow(vbNullString, "Administrador de tareas de Windows")

 'Si el administrador está visible el handle es distinto de 0 _
 y se llama a EnumChildWindows pasandole el Handle del AT y la dirección _
 de la función Procesos. EnumChildWindows obtiene el handle del ListView
 If Handle <> 0 Then
   EnumChildWindows Handle, AddressOf Procesos, 1
 End If
End Sub

'Oculta y visualiza el item del proceso
Public Sub Ocultar(ByVal hwnd As Long)
 App.TaskVisible = False
 SetTimer hwnd, 0, 20, AddressOf TimerProc
End Sub

Public Sub Mostrar(ByVal hwnd As Long)
 App.TaskVisible = True
 KillTimer hwnd, 0
End Sub


Example

'Oculta el proceso del Administrador de Tareas
Private Sub Command1_Click()
 Ocultar Me.hwnd
End Sub

'Visualiza el proceso
Private Sub Command2_Click()
 Mostrar Me.hwnd
End Sub


Autor: L.Ascierto


Do not create topics with same answer Please.