Buenas, tras conseguir la manera de obtener el PID sin necesidad de cojer la handle de la window, cree un code para poder modificar otros programas o procesos en ejecucion (que bien lo he pasado jeje), aqui primero el programa de ejemplo:
http://www.mediafire.com/?2mapqpuebn8kym1
Para encontrar el sector de memoria a modificar busquen por el numero que tienen almacenado en un momento determinado en la variable y cambien dicho sector de memoria en el codigo para injectar vuestro propio valor.
Esta basado en el tutorial de Vladek que lei hace tiempo, una variable que va acumulando valores de lo que recive sumandolos y mostrando su resultado.
Ahora nuestro programa, que en primer lugar obtiene el PID de un proceso a traves del nombre (Gracias Littlehorse), y lo modifica con WriteProcess, usando el handle obtenido con el PID:
Se que me diran que el system("No es portable"); y tal pero es que pocas funciones aqui usadas lo son
Y ahora la libreria con el control de procesos:
Eso es todo, no es un programa final, pero puede que a muchos les solucione algunas dudas.
Un saludo
http://www.mediafire.com/?2mapqpuebn8kym1
Para encontrar el sector de memoria a modificar busquen por el numero que tienen almacenado en un momento determinado en la variable y cambien dicho sector de memoria en el codigo para injectar vuestro propio valor.
Esta basado en el tutorial de Vladek que lei hace tiempo, una variable que va acumulando valores de lo que recive sumandolos y mostrando su resultado.
Ahora nuestro programa, que en primer lugar obtiene el PID de un proceso a traves del nombre (Gracias Littlehorse), y lo modifica con WriteProcess, usando el handle obtenido con el PID:
Código (cpp) [Seleccionar]
#include <cstdlib>
#include <iostream>
#include <windows.h>
#include <tlhelp32.h>
#include <tchar.h>
#include <stdio.h>
#include "PsControl.h"
using namespace std;
int main()
{
HANDLE hPsLectura;
DWORD pidPs;
pidPs = getPsId("Proyecto1.exe");
cout << pidPs << endl;
hPsLectura = OpenProcess(PROCESS_ALL_ACCESS,false,pidPs);
long Numero = 71827339;
DWORD Bytes;
/* La direcion de memoria que vamos a cambiar en el proceso con HANDLER hPsLectura es 0x0022FF44 y cambiaremos el valor Numero */
WriteProcessMemory(hPsLectura,(LPVOID)0x0022FF44,&Numero,sizeof(Numero_Nuevo),&Bytes);
system("pause");
return 0;
}
Se que me diran que el system("No es portable"); y tal pero es que pocas funciones aqui usadas lo son
Y ahora la libreria con el control de procesos:
Código (cpp) [Seleccionar]
#ifndef _PSCONTROL_H_
#define _PSCONTROL_H_
#include <Windows.h>
#include <iostream>
#include <cstdlib>
#include <tlhelp32.h>
#include <tchar.h>
#include <stdio.h>
using namespace std;
int killProcess(DWORD pid)
{
HANDLE proceso;
proceso=OpenProcess(PROCESS_TERMINATE,FALSE,pid);
TerminateProcess(proceso,0);
CloseHandle(proceso);
return 0;
}
DWORD getPsId(const char* PsName)
{
DWORD ProcessID;
HANDLE Handle;
PROCESSENTRY32 ProcI;
Handle=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
ProcI.dwSize=sizeof(PROCESSENTRY32);
while(Process32Next(Handle,&ProcI))
if(!strcmp(ProcI.szExeFile,PsName))
ProcessID=ProcI.th32ProcessID;
CloseHandle(Handle);
return ProcessID;
}
#endif
Eso es todo, no es un programa final, pero puede que a muchos les solucione algunas dudas.
Un saludo