首页
社区
课程
招聘
变速齿轮导致的内存访问错误
发表于: 2010-8-27 15:30 4797

变速齿轮导致的内存访问错误

2010-8-27 15:30
4797
我使用R3 INLINEHOOK 了gettickcount后,用远程线程的方法注入了war3.exe

没开始游戏时,运行正常 ,而且有加速效果,一开始游戏后,一段时间就出现内存访问错误

.我查看war3的crash记录,发现crash的原因是由于ebx的值被修改,但是我的HOOK函数中

已经对有关寄存器进行保存.

war3的记录

The instruction at '0x00448566' referenced memory at '0x00000005'.
The memory could not be 'read'.

Played Maps\(2)BootyBay.w3m
Player  0 tutbo                     Race NightElf        StartLoc  0
Player  1 鐢佃剳 (绠€鍗曠殑)        Race Orc        StartLoc  1
Player  2 <Unused>                  Race Orc        StartLoc -1
Player  3 <Unused>                  Race Orc        StartLoc -1
Player  4 <Unused>                  Race Undead        StartLoc -1
Player  5 <Unused>                  Race Human        StartLoc -1
Player  6 <Unused>                  Race Orc        StartLoc -1
Player  7 <Unused>                  Race Undead        StartLoc -1
Player  8 <Unused>                  Race Undead        StartLoc -1
Player  9 <Unused>                  Race NightElf        StartLoc -1
Player 10 <Unused>                  Race Undead        StartLoc -1
Player 11 <Unused>                  Race Undead        StartLoc -1
------------------------------------------------------------------------------

----------------------------------------
    x86 Registers
----------------------------------------

EAX=00000000  EBX=00000001  ECX=7C810EB6  EDX=00000007  ESI=014E02D8
EDI=00000102  EBP=0291FF80  ESP=0291FF2C  EIP=00448566  ***=00010246
CS =001B      DS =0023      ES =0023      SS =0023      FS =003B      GS =0000

出错位置的指令:

call  [ebx+4]

我用这个程序HOOK自己写的程序时很正常,HOOk有的程序就出错,被这问题折磨几天了
请大家提供点思路....

为了检测HOOK时寄存器的情况,我向HOOK函数加入了下面的3个函数
              CreateFile
              WriteFile
              FlushFileBuffers
       打印出当时的寄存器状态

奇迹出现了 游戏居然没出错,只是由于写入操作,游戏延时严重,画面有些卡

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 59
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
我也不能确定,按你的说法。是后来写入的越多速度越来越慢。你有没有看系统消耗的内存情况。是不是你不停的申请内存单是没有释放啊?
我没有做过这么复杂的东西。也不是很懂。以一个外行人的身份来提示一下。
================
其实我是来混分的。!
================
================
楼下接力!
2010-8-29 13:40
0
雪    币: 16
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
不是内存释放的问题,变速齿轮只是修改了Gettickcount的返回值,查看资料说可能是线程同步的问题,如果是线程同步的问题应该是立即出错,而不该是一段时间后出错
2010-8-29 16:16
0
雪    币: 59
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
应该不是同步的问题吧,你只是改变它的值(开始的内存访问有可能会死同步问题影响的),也没有对互斥量的申请。
==========
我也不是很懂。
只是来混分的。如果没人回答的话希望能。。
==========
楼下接力
2010-8-29 17:35
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
可能是游戏的原因  这几款游戏都不容易开加速
2010-8-30 21:48
0
游客
登录 | 注册 方可回帖
返回
//