首先“0x12345EE” 这个地址是怎么来的,是内存的物理地址还是程序空间内4GB虚拟内存的地址?如是前者,则恐怕很难,要问候到NT的核心,用SoftICE比较方便了。(如果容易,SoftICE不用卖这么贵了)但我估计楼主说的是后者,既然你已经闯入了目标程序的4GB虚拟内存领空,该processID,mainHwnd等等当然是知道了,.NET FrameWork 内的System.Diagnostics.Process类基本上可以满足要求了。
调试欢乐多
因为那个地址是其他程序提供的,所以不能使用handle,
唯一能够提供的信息就是这个地址,想要通过这个地址取得Handle 然后发送一些信息给那个进程,比如sendmessage()
其它程序: 假设是[金山游侠.exe]
你的意思是先在系统执行[notepad.exe],
然后在[金山游侠.exe] 获得了这个“0x12345EE”这个地址,
现在你想根据这个“0x12345EE”找到Handle?是这样么? 如果不是,或者你详细说明吧
用System.Diagnostics.Process这个对象启动你的[notepad.exe]啊!!! 启动后你对这个[notepad.exe]就有了全部的权限,什么Handle都有了,然后通过[金山游侠.exe]获取那个地址,想干啥就干啥了。
不能够通过System.Diagnostics.Process再去启动!!!
换句话说,你给一个地址,每个进程都有这个地址阿,你怎么找这个地址是谁的阿?
他只要你给出一个HP地址,就可以帮你游戏的角色加HP,MP,(应该是通过发送一个键盘值到进程吧)
难道他不需要通过HP地址来查找Handle吗?那么大家考虑一下,是使用什么办法实现的呢?
你的第二种方法我没有看懂,不知道如何比对,不知道怎么做。(前面 shuker(我是一只小花猪) 提到:WIN32下每个进程都有自己的地址空间
换句话说,你给一个地址,每个进程都有这个地址阿,你怎么找这个地址是谁的阿?)
换句话说,你给一个地址,每个进程都有这个地址阿,你怎么找这个地址是谁的阿?这句话说得对,仅凭一个虚拟内存地址,是不能确定进程的。 必需通过其他的方法。窗口名称是不确定的,没所谓,还有GetWindowThreadProcessID这样的API,通过窗体句柄查找进程ID
某个游戏我同时开多个实例:
A,B,C没有实例对应的任务角色HP地址可能是0xAAAAAA,0xBBBBBB,0xCCCCC
没有角色的HP是不一样的,奇妙的是该外挂可以准确地同时为3个角色补HP,
我提供给外挂程序的只有0xAAAAAA,0xBBBBBB,0xCCCCC这3个地址而已,我不知道它如何分别给那3个进程发送消息。她如何区分那3个地址分别属于哪个进程。