-
-
[讨论]哪些情况下对API下的断点不会被触发?
-
发表于:
2005-5-16 10:03
4585
-
在Soft-ice的帮助文档里面找到如下字句:
一个断点的上下文包括下这个断点的地址空间(领空)和这个断点所在的代码模块。
对Win32程序来说,设在2G以上的地址的断点是全局的,在任何情况都会被触发。在
低于2G地址里的断点是和领空有关联的。
1。只有在下断点的同一领空里,Soft-ice才会被触发。
2。如果在同一代码模块里,Soft-ice会忽略领空。这就意味着在User32.dll
这种共享模块里的断点在每一个程序领空都会被触发。除非另外的程序把这个共享模块加载到内存的不同地方。(Using Soft-ice.pdf 127页)
我想大家对API下断点的时候,不会考虑领空问题吧?任何时候按下Ctrl+D,直接bpx GetDlgItemTextA,然后运行程序,输入密码,点击注册,就会触发断点了。
不过我在调试一个程序的时候,出现了问题:
在等待输入密码的时候,我按下Ctrl+D,来到Soft-ice,发现在CSRSS里,我下断点: bpx GetDlgItemTextA.然后回到程序里,点击注册,可是它不被触发!再回到Soft-ice,用addr来到程序的领空,u bp0(就是bpx GetDlgItemTextA这个断点),发现根本都没有断点的存在?!我用F9在这地方下断点,再回来点击注册,Soft-ice被触发了!请问这是为什么?对API的断点难道都要在程序领空里下吗?在哪些情况下API的断点不会被触发呢?
请各位大虾指点啊!
[培训]科锐逆向工程师培训第53期2025年7月8日开班!