阅读:1578回复:8
异常奇怪的问题,地址变代码,怎么回事??
最近出现了非常奇怪的问题,本来是Hook后的一个地址,可是编译器将它编译成了代码,然后当然就是死机了!为什么呢?
情况是这样的,在98下我使用HOOK_DEVICE_SERVICE来截包,用sysNdisSend来保存NdisSend的地址,sysNdisSend的地址为C01BE5EB,它的内容为C0124403也就是NdisSend被Hook后回到发送数据到网卡的入口处,可是在系统执行的时候将C10BE5EB当成了指令地址,然后将C0124403解析为ADD EAX,[EDX+EDX-40]。这条奇怪的指令让人很困惑,因为从来没有见过这样的指令,所以我怀疑是把地址换成了指令代码来执行了,于是我用机器码算了一下,果然如此,实在搞不清楚怎么回事。高手指教! 工具:VtoolsD3.0 VC6.0。 |
|
|
沙发#
发布于:2003-07-24 12:06
这个话题,没仔细看你的内容,多半是指向指针的指针之类的基本概念问题,好好看看,估计搞清楚了,就不会出错了。
最近在什么单位干活?主要做什么产品? |
|
板凳#
发布于:2003-07-24 14:49
肯定是什么地方的指针饮用出了问题。
|
|
|
地板#
发布于:2003-07-24 20:14
为什么错误我想你们知道了会非常郁闷的,我开始更加讨厌98这个破烂了。使用VtoolsD的时候,可以不定义然后编译,只要连接的时候Link能够找到这个变量就可以了,因为我在引用sysNdisSend的哪个源文件里没有包括sysNdisSend的定义,所以就出现了这个问题。不知道是不是VtoolsD做的这么变态,害得我跟了半天,最后还要找机器码算,才知道是这样。希望编译器以后不要开这种玩笑,多了会气死人的!:) :) :) :)
|
|
|
地下室#
发布于:2003-07-24 20:18
Fracker,我也好久没有看见你了。我做VPN的客户端,主要是维护代码,不象兄弟那么爽啊,可以做自己的东西,完全按照自己的意思去做!什么时候上网,咱们好好聊聊?呵呵!
|
|
|
5楼#
发布于:2003-07-24 21:03
好象他天天在啊。
monkey你有linux 下 FTP的代码不? 现在做NAT遇到FTP的一点麻烦郁闷呢。 |
|
|
6楼#
发布于:2003-07-24 21:18
郁闷到要读代码?我没有代码,你看看RFC不就好了吗?
|
|
|
7楼#
发布于:2003-07-25 10:20
为什么错误我想你们知道了会非常郁闷的,我开始更加讨厌98这个破烂了。使用VtoolsD的时候,可以不定义然后编译,只要连接的时候Link能够找到这个变量就可以了,因为我在引用sysNdisSend的哪个源文件里没有包括sysNdisSend的定义,所以就出现了这个问题。不知道是不是VtoolsD做的这么变态,害得我跟了半天,最后还要找机器码算,才知道是这样。希望编译器以后不要开这种玩笑,多了会气死人的!:) :) :) :) 不可置信,你写一个最简单的工程看看。 |
|
8楼#
发布于:2003-07-25 12:39
兄弟,信不信由你了,反正结果就是这样的。:) :)
在VtoolsD中不定义可以编译是确实存在,并且一旦代码量大了,会很奇怪的,不过这次的问题我确实没有见到过。呵呵! |
|
|