VC++写WG内存不能为
OD上 用call测试工具 测试成功关闭OD 打开游戏 用call测试工具测试失败
在VC++写入汇编也是一样
请看图
第一幅图在 OD上 用 call测试工具测试成功
第二幅图关闭OD 打开游戏 打开Call测试工具 测试失败
push 5;加数1,这里不可能出现内存错误
push 5;加数2,这里同上
push 00A47170
call 00459924;地址,这里不可能变
看弹出的错误看来错误应该出在第三个参数错误
1.第三参数可能是动态值(自己向上找应该可以找到指针)
2.可能需要改变内存页属性为可读,用VirtualProtect或者VirtualProtectEx(这里可能性比较小)
如果第二种情况成立 代表程序自身也是用VirtualProtect来Call所以可能性很小,但作者找茬的话倒是可能 这是push 00A47170 静态的
用VC++DLL注入出现这样的错误
メ㊣逆ご帅☆ 发表于 2012-11-24 16:05 static/image/common/back.gif
push 5;加数1,这里不可能出现内存错误
push 5;加数2,这里同上
push 00A47170
push 00A47170 是静态的
很奇怪的是用OD加载游戏 然后运行用VC++DLL注入游戏能成功
然后关闭OD重新打开游戏 在用VC++DLL注入游戏 失败 本帖最后由 メ㊣逆ご帅☆ 于 2012-11-24 16:55 编辑
我去试下
发现不是静态的
第一次
ebx==00A87170
我测试调用成功
第二次
ebx== 00A77170
你RETN下看看能不能找到EBX的出处 我现在人在网吧,调试工具都在家里
要现场下载,刚才又不小心重启,所以
你自己先解决动态问题把,能解决最好
不能解决我晚上看看,我没碰过什么CALL,所以不知道能不能解决。。。 还有,我看你好像一会儿用CALL01测试
一会儿用CALL01_B测试
估计你是知道的,两个程序那个参数不同 还是搞不定 我是看着视频来做的 http://bbs.fishc.com/forum.php?mod=viewthread&tid=2025 是动态地址 我看错了 打开OD几次观察 才发现 A37170
A47170
A57170
A67170
只有第二位 才有变化 应该是这个样子、就知道个大概、变化应该就不是基址了。好像是测试的时候下F2断点停下来时候内存地址、然后要是写程序的时候应该使用基址。
页:
[1]