vc做keymaker的拦截内存数据需要用到那几个关键函数
vs2013 c++,我想用其打造一个类似于keymaker一样的可以在软件加载到内存时动态hook到执行到指定代码的 寄存器 以及 寄存器+偏移 内的数据首先先指定到选定软件,这个不用说,我知道怎么做,句柄,PID......
然后,接下来要用什么方法(函数)来读取到软件执行到指定汇编代码时的数据?比如这么一句:
00401234cmp 1,EAX
现在我要获取到软件访问到这句代码时 ebx+4的值。
首先你得占用该句下面的字节 先保存字节
然后自己写 例如
pushad
mov eax,dword ptr ds:
Mov dword ptr ds:,eax
push 0
push 0
push 0x00
push 0x00
call SendMessageA
popad
jmp xxx
最好是申请个空间 然后跳转执行,执行完毕后 也就是程序收到SendMessage 的信息后 再将字节还原,使程序正常运行 而xxxxxxx地址内的值就是你要拿的值,这是一个思路 没办法平白无故的拿到某一段执行后的寄存器的值,所以只能以间接调试的方法来获取
外挂
本帖最后由 风霜 于 2015-1-2 11:44 编辑这种方法能获取到游戏外挂内存数据的公式不? 这个我还不能接触啊。。 拓海真一 发表于 2015-1-1 19:07
首先你得占用该句下面的字节 先保存字节
然后自己写 例如
pushad
有一个地方不是很懂,在指定代码下面开辟一块空间(堆栈里)读取指定数据后再调回本该执行的代码这个我理解,但是为什么里面需要一个sendMessage函数呢,不能直接写成这样吗?
pushad
mov eax,dword ptr ds:
Mov dword ptr ds:,eax
popad
jmp xxx《《跳回本该执行的代码地址
页:
[1]