吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3319|回复: 5
收起左侧

[C&C++ 转载] vc做keymaker的拦截内存数据需要用到那几个关键函数

[复制链接]
独霸首席 发表于 2015-1-1 17:50
vs2013 c++,我想用其打造一个类似于keymaker一样的可以在软件加载到内存时动态hook到执行到指定代码的 寄存器 以及 寄存器+偏移 内的数据

首先先指定到选定软件,这个不用说,我知道怎么做,句柄,PID......
然后,接下来要用什么方法(函数)来读取到软件执行到指定汇编代码时的数据?  比如这么一句:
00401234  cmp 1,EAX      
现在我要获取到软件访问到这句代码时   ebx+4的值。


发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

拓海真一 发表于 2015-1-1 19:07
首先你得占用该句下面的字节 先保存字节
然后自己写 例如
pushad
mov eax,dword ptr ds:[ebx+0x4]
Mov dword ptr ds:[xxxxxxx],eax
push 0
push 0
push 0x00
push 0x00
call SendMessageA
popad
jmp xxx
最好是申请个空间 然后跳转执行,执行完毕后 也就是程序收到SendMessage 的信息后 再将字节还原,使程序正常运行 而xxxxxxx地址内的值就是你要拿的值,这是一个思路 没办法平白无故的拿到某一段执行后的寄存器的值,所以只能以间接调试的方法来获取
风霜 发表于 2015-1-2 11:42

外挂

本帖最后由 风霜 于 2015-1-2 11:44 编辑

这种方法能获取到游戏外挂内存数据的公式不?
jingzzz 发表于 2015-1-2 12:56
 楼主| 独霸首席 发表于 2015-1-3 06:43
拓海真一 发表于 2015-1-1 19:07
首先你得占用该句下面的字节 先保存字节
然后自己写 例如
pushad

有一个地方不是很懂,在指定代码下面开辟一块空间(堆栈里)读取指定数据后再调回本该执行的代码这个我理解,但是为什么里面需要一个sendMessage函数呢,不能直接写成这样吗?
pushad
mov eax,dword ptr ds:[ebx+0x4]
Mov dword ptr ds:[xxxxxxx],eax
popad
jmp xxx  《《跳回本该执行的代码地址


点评

你需要得到指令来恢复那段代码 而SendMessageA 是用来投递信息的 让程序知道你已经运行到这一段了 然后开始恢复这段代码并取回数据  发表于 2015-1-3 23:42
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 11:11

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表