monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
阅读:1494回复:8

异常奇怪的问题,地址变代码,怎么回事??

楼主#
更多 发布于:2003-07-24 11:36
最近出现了非常奇怪的问题,本来是Hook后的一个地址,可是编译器将它编译成了代码,然后当然就是死机了!为什么呢?
情况是这样的,在98下我使用HOOK_DEVICE_SERVICE来截包,用sysNdisSend来保存NdisSend的地址,sysNdisSend的地址为C01BE5EB,它的内容为C0124403也就是NdisSend被Hook后回到发送数据到网卡的入口处,可是在系统执行的时候将C10BE5EB当成了指令地址,然后将C0124403解析为ADD EAX,[EDX+EDX-40]。这条奇怪的指令让人很困惑,因为从来没有见过这样的指令,所以我怀疑是把地址换成了指令代码来执行了,于是我用机器码算了一下,果然如此,实在搞不清楚怎么回事。高手指教!
工具:VtoolsD3.0 VC6.0。
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
沙发#
发布于:2003-07-24 12:06
这个话题,没仔细看你的内容,多半是指向指针的指针之类的基本概念问题,好好看看,估计搞清楚了,就不会出错了。
最近在什么单位干活?主要做什么产品?
mikeluo
驱动老牛
驱动老牛
  • 注册日期2001-09-04
  • 最后登录2007-05-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-07-24 14:49
肯定是什么地方的指针饮用出了问题。
学而不思则罔,思而不学则殆 学而思之,思而学之,岂非圣人乎?
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-07-24 20:14
为什么错误我想你们知道了会非常郁闷的,我开始更加讨厌98这个破烂了。使用VtoolsD的时候,可以不定义然后编译,只要连接的时候Link能够找到这个变量就可以了,因为我在引用sysNdisSend的哪个源文件里没有包括sysNdisSend的定义,所以就出现了这个问题。不知道是不是VtoolsD做的这么变态,害得我跟了半天,最后还要找机器码算,才知道是这样。希望编译器以后不要开这种玩笑,多了会气死人的!:) :) :) :)
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-07-24 20:18
Fracker,我也好久没有看见你了。我做VPN的客户端,主要是维护代码,不象兄弟那么爽啊,可以做自己的东西,完全按照自己的意思去做!什么时候上网,咱们好好聊聊?呵呵!
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
antspower
驱动中牛
驱动中牛
  • 注册日期2002-10-17
  • 最后登录2010-08-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值2点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-07-24 21:03
好象他天天在啊。
monkey你有linux 下 FTP的代码不?
现在做NAT遇到FTP的一点麻烦郁闷呢。
放弃瘟草,现吃李草
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-07-24 21:18
郁闷到要读代码?我没有代码,你看看RFC不就好了吗?
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
fracker
驱动太牛
驱动太牛
  • 注册日期2001-06-28
  • 最后登录2021-03-30
  • 粉丝0
  • 关注0
  • 积分219分
  • 威望81点
  • 贡献值0点
  • 好评度23点
  • 原创分0分
  • 专家分1分
  • 社区居民
7楼#
发布于:2003-07-25 10:20
为什么错误我想你们知道了会非常郁闷的,我开始更加讨厌98这个破烂了。使用VtoolsD的时候,可以不定义然后编译,只要连接的时候Link能够找到这个变量就可以了,因为我在引用sysNdisSend的哪个源文件里没有包括sysNdisSend的定义,所以就出现了这个问题。不知道是不是VtoolsD做的这么变态,害得我跟了半天,最后还要找机器码算,才知道是这样。希望编译器以后不要开这种玩笑,多了会气死人的!:) :) :) :)

不可置信,你写一个最简单的工程看看。
monkeyy
驱动中牛
驱动中牛
  • 注册日期2001-12-06
  • 最后登录2010-10-10
  • 粉丝0
  • 关注0
  • 积分315分
  • 威望84点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-07-25 12:39
兄弟,信不信由你了,反正结果就是这样的。:) :)
在VtoolsD中不定义可以编译是确实存在,并且一旦代码量大了,会很奇怪的,不过这次的问题我确实没有见到过。呵呵!
听说老虎会吃人,所以从没想过去摸老虎的屁股。:( :(
游客

返回顶部