Cambiar Bits de otro proceso.

Iniciado por LeandroA, 11 Diciembre 2011, 19:56 PM

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

LeandroA

Hola, se que esto ya se hablo en el foro, pero no recuerdo bien con que apis buscar, quiero modificar cierta parte de el array de bits de un proceso.
Se agradecen aportes.

seba123neo

La característica extraordinaria de las leyes de la física es que se aplican en todos lados, sea que tú elijas o no creer en ellas. Lo bueno de las ciencias es que siempre tienen la verdad, quieras creerla o no.

Neil deGrasse Tyson

x64core

yo tengo una duda! yo estuve estudiando fuerte ese tema hace poco e hice unos codigos de prueba
pero no se si es a lo que quieren :P
querer escribir en otro proceso diferente? :P

raul338

Es la memoria de ese proceso? O seia parte del ejecutable?

BlackZeroX

#4
OpenProcess
CloseHandle
ReadProcessMemomy
WriteProcessMemomy
y para desbloquear la memoria bloqueada:
VirtualProtectEx

Nota: No querias decir Bytes en lugar de Bits?... ya que con las apis que conozco solo usan en sus primitivas de acceso los bytes no los bits.

Dulces Lunas!¡.
The Dark Shadow is my passion.

x64core

Jeje Asi va mi codigo :3
solo que el mio:

findwindow
getwindowthreadprocessid
openprocess
virtualallocex
writeprocessmemory
close handle

Lo publicare esta semana :3 le estoy añadiendo asm inline :3


LeandroA

Hola ya me estoy reorientando, bien, si la idea es cambiar un array de Bytes por otro de un ejecutable externo, la idea era hacer un cheat par aun juego on line el cual creo que ya me vanearon asi que me lo meto en el ....
pero en fin volviendo al tema Gracias a lo que me paso Seba me puse a investigar un poco y me tope con el problema de ReadProcessMemory el cual desdusco que no me leia nada porque no se puede empezar a leer desde el bite 0

ReadProcessMemory ProcHandle, ByVal 0&, ByVal sBuffer, Len(sBuffer), BytesRead

hay una parte de la memoria que no se puede leer, lo cual se puede saber con VirtualQueryEx ((mbi.lType = MEM_PRIVATE) And (mbi.State = MEM_COMMIT))

como no se la dirección exacta en la memoria donde esta el array de bits que debo reemplazar tengo que buscar el array que tengo dentro del proceso, una vez encontrada la posición meter el nuevo array.

Saludos.




x64core

Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" _
   (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

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

Public Declare Function CreateToolhelp32Snapshot Lib "kernel32" _
(ByVal lFlags As Long, ByVal lProcessID As Long) As Long
   
Private Declare Function Module32Next Lib "kernel32" _
  (ByVal hSnapShot As Long, lpMe32 As MODULEENTRY32) As Long

Private Declare Function CloseHandle Lib "kernel32" _
   (ByVal hObject As Long) As Long


' Constantes APIs
Private Const PROCESS_ALL_ACCESS = &H1F0FFF
Private Const TH32CS_SNAPMODULE = &H8
Private Const MAX_PATH = 260

Private Type MODULEENTRY32
  dwSize               As Long
  th32ModuleID         As Long
  th32ProcessID        As Long
  GlblcntUsage         As Long
  ProccntUsage         As Long
  modBaseAddr          As Long
  modBaseSize          As Long
  hModule              As Long
  szModule             As String * 256
  szExePath            As String * MAX_PATH
End Type

Sub main()

Dim hWin            As Long
Dim pID             As Long
Dim hwSnap          As Long
Dim PTRMOD          As MODULEENTRY32
Dim retVal          As Long

hWin = FindWindow("Notepad", vbNullString)
   If hWin Then
       GetWindowThreadProcessId hWin, pID
       hwSnap = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, pID)
       If hwSnap Then
           PTRMOD.dwSize = Len(PTRMOD)
           retVal = Module32Next(hwSnap, PTRMOD)
           If retVal Then
               '... readprocessmemory,writeprocessmemory, etc
               CloseHandle (hwSnap)
           End If
       CloseHandle (hwSnap)
       End If
   Else
       Debug.Print "Notepad no esta en ejecucion"
   End If
End Sub


sin asm, no logre adaptarlo :P de ejemplo el notepad