在C ++中获取另一个进程变量值(或内存地址)

时间:2012-05-11 15:45:24

标签: c++ variables process hook

我在这里读过堆栈溢出的帖子,但没有人帮我解决这个问题。

我设法创建了一个程序,它可以获取所有正在运行的进程及其pid,如果需要,我也可以获取进程HANDLE,无论如何我知道我必须将代码挂钩到进程,这也是我必须解决的问题

我想要的是: 我有一个C ++程序,只是用这个代码(例如):

  

计划1:

using namespace std;

int main(){
    int var,a;
    do{
        cout<<"1 = Change Value, 2 = Check Value, 3 = Memory Address\n";
        cin>>a;
        switch(a){
            case 1:
                cout<<"Variable value: ";
                cin>>var;
                break;
            case 2:
                cout<<"Value: "<<var<<endl;
                break;
            case 3:
                cout<<"Memory Address: "<<&var<<endl;
                break;
        }
    }while(1);
    return 0;
}

我想创建另一个程序,也是在c ++中,它将挂钩到这个程序的进程,并通过它的值找到int var memory地址。

让我们说: 我将var设置为5 我在第二个程序中搜索值为5的整数值。 比在第一个程序中,我将var值更改为10。 我在第二个程序中搜索在找到值5之前的值列表中的值10。 该值只有一个地址,而另一个程序是int var;值。

所以现在我可以根据第一个值来制作第二个程序中的if语句。

任何人都可以帮助我?

1 个答案:

答案 0 :(得分:0)

共享内存是常用的方法。您可以定义共享内存的公共段,并从其开头使用偏移量作为“地址”。

这样你的代码就是可移植的。

例如,请参阅this boost library