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 - AlxSpy

#71
hice un codigo para buscar datos en la memoria de un proceso, uso el OpenProcess y la constante PROCESS_ALL_ACCESS, lo he ejecutado con varios procesos y anda bien, ahora quise probarlo con el juego StarCraft, al ejecutar este juego me fijo en el taskmgr en la columna donde dice si es un proceso "SYSTEM" o "serivcio de red" o "usuario"  dice que es proceso "usuario" pero no puedo abrir el proceso.
#72
Gracias por sus respuestas me sirven de  mucho.
#73
holas, estoy iniciandome en c++, ya llevo un tiempito practicando , quisiera empezar a practicar con las apis de windows, ya he usado varias apis en visual basic 6.0, en c++ veo que es mas complejo,  hay mas tipos de datos que se usan con las apis (en C++: HMODULE,FARPROC,HWND,SOCKET, LPVOID, en visual basic cualquier de estos seria un Long ), he buscado en google tipos de datos C++ pero solo salen los tipos de datos basicos (char,int,long,BYTE) ¿me recomendarian algun tutorial, web, documento o libro sobre el uso de apis en español? y si hubiera alguna explicacion sobre los tipos de datos que usan estas apis (HANDLE, LPVOID y demas).
gracias de antemano.
#74
quise hacer algo parecido, intente copiar las claves de spool.exe (proceso de sistema) sustituyendo la ruta de spool.exe por la ruta de mi .exe, en una maquina virtual con win xp, y al reiniciarlo mi .exe se veia como system en el taskmrg, pero se podia cerrar como cualkier otro .exe y sino se  cerraba solo a los 30 segundos.
#75
hola, agregue esa api a mi codigo:

Código (vb) [Seleccionar]
'Form1.frm
Option Explicit
Private Sub Command1_Click()
    Dim PID As Long, Buffer(1 To 5000) As Byte, BytesLeidos As Long
    Dim hProcess As Long, Address As Long, Res As Long, ViejaProte As Long
    PID = Val(txtPID.Text)
    hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, PID)
    If hProcess = 0 Then
        MsgBox "No se pudo abrir el proceso", vbCritical, ""
        Exit Sub
    End If
    Address = 10
    Res = VirtualProtectEx(hProcess, ByVal Address, 100, PAGE_READWRITE, ViejaProte)
   
    Call ReadProcessMemory(hProcess, Address, Buffer(1), 5000, BytesLeidos)
    Call CloseHandle(hProcess)
    Me.Caption = BytesLeidos
    MsgBox "Resultado: " & Res
    MsgBox "Vieja proteccion: " & ViejaProte
End Sub



Código (vb) [Seleccionar]
'module1.bas

Option Explicit
Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long

Declare Function VirtualProtectEx Lib "kernel32" (ByVal hProcess As Long, lpAddress As Any, ByVal dwSize As Long, ByVal flNewProtect As Long, lpflOldProtect As Long) As Long

Public Const PROCESS_ALL_ACCESS = &H1F0FFF
Public Const PAGE_READWRITE As Long = &H4




lo probe con el PID del notepad.exe bajo win xp y win7 pero en ambos casos no lee nada, osea en BytesLeidos me devuelve 0, y la funcion VirtualProtectEx tambien me devuelve 0, hay un programa el: "cheat engine" que abre un proceso y puedes buscar bytes, string etc. mas o menos algo asi es lo que quiero hacer, nu se como lo hace pero este prog. si logra leer la memoria y obtener los datos buscados. y tambien vi un post de "Zealot" de un codigo hecho en VB6.0 lo que hacia era abrir con OpenProcess el taskmgr ,leer  con ReadProcessMemoryy buscar el nombre de un proceso y usaba WriteProcessMemory para sobreescribir ese nombre, de esta manera ocultaba un proceso, ese codigo es el que uso de referencia. ¿por que sera que puede abrir el PID y no puede leer la memoria?¿que podria ser?

el post de zealot que vi:
http://foro.elhacker.net/analisis_y_diseno_de_malware/ocultar_proceso_en_taskmgr_sin_hooks_parte2-t99549.0.html
salu2
#77
como ponerlo en esa barra al ladito del reloj, y mostrar esos mensajes que salen cuando una aplicacion se oculta y guarda en esa barra.

Image Hosting
#78
quiero leer la memoria de algunos procesos activos uso OpenProcess y ReadProcessMemory para abrir el PID y leer, pero hay algunos que SI abren pero  al leer devuelven puros bytes nulos, y 1 o 2 q no devuelven nada, estaba leyendo un documento eso es porque estan protegidas la memoria de esos procesos con VirtualProtec y que esa api solo se usa desde el proceso que la llama , ¿que funcion api podria usar para que mi .exe cambie la proteccion de otro proceso y poder leer? ejem: notepad.exe
weno asi lo entendi el documento , sino please corrijanme.

-algo mas, ¿que otra api podria usar para calcular la memoria que esta ocupando un proceso?,por ahora uso el ReadProcessMemory para sumar todos los bytes leidos, pero hay algunos procesos que son muy pesados y los del sistema que no se pueden abrir ni leer y no se como calcularlos.
#79
eso debe ser el fallo.   ;-) thanks
#80
cambie el string buffer a array de bytes, este code mas chico y mas entendible:

Código (vb) [Seleccionar]

'Form1.frm
Option Explicit

Private Sub Command1_Click()
   Dim PID As Long, Buffer(1 To 5000) As Byte, BytesLeidos As Long
   Dim hProcess As Long, Address As Long
   PID = Val(txtPID.Text)
   hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, PID)
   If hProcess = 0 Then
       MsgBox "No se pudo abrir el proceso", vbCritical, ""
       Exit Sub
   End If
   
   Address = 10
   
   Call ReadProcessMemory(hProcess, Address, Buffer(1), 5000, BytesLeidos)
   Call CloseHandle(hProcess)
   Me.Caption = BytesLeidos
End Sub


y las apis:
Código (vb) [Seleccionar]

'module1.bas
Option Explicit

Declare Function OpenProcess Lib "Kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long
Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long


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

Public Const PROCESS_ALL_ACCESS = &H1F0FFF


pero es extraño lo he chequeado una y otra ves y no anda, no lee.Lo he ejecutadoo en mi pc y en mi maquina virt. y nada. ¿que podra ser?
Incluso intente cambiando la declaracion del parametro "lpBuffer as any" a typo Byte pero tampoco.