Carrey的专栏

首页博文目录订阅
博 文

52rd出问题了!

(2006/8/2 23:28)
今天回复访客的留言变成了修改访客的留言,52rd的出来管管呀!同时,我也对不慎修改了留言的那位客人说声对不起,下次我一定注意看看是回复还是修改。
今天不小心又找到一个Bug。Bug的现象是当某项操作的进度执行到100%以后就会出现非法操作。通过反汇编非操报告的模块和地址,定位到一个消息处理函数中。分析这个函数源代码,判断是由于消息处理函数的第二个参数为空或者野指针造成。于是,在追查所有发送这个消息的函数后,定位到一个线程主函数return前的PostMessage()调用中。这里调用的PostMessage()在第二个参数中传递了一个结构给出现非操的那个消息处理…
如果你的函数是一个递归函数,请一定注意节约使用局部变量。因为一个线程的堆栈是有限的,局部变量总是保存在线程堆栈里面,要等到函数返回时才会释放。在递归调用中,因为递归函数没有返回,局部变量也就不会释放,直到所有递归完成。因此,每递归一次,递归函数中的局部变量就会吞噬线程堆栈中的一段空间,当线程堆栈被吞噬完后,就会出现寄存器ebp的值归零或者异常,从而导致局部变量混乱而出现非法操作。…
最近这段时间,因为AOL的案子Debug的事情比较多。今天又遇到一例局部变量混乱的问题。问题时这样的,某个AP级程序在执行几秒钟后就会非操,RD估计是发生在某个函数中。调试这个函数,发现局部变量File的值无故发生了变化,分析File变量的地址,该变量的地址发生了偏移(增大了1),因此,初步判断是由于堆栈(也就是寄存器ebp)的值发生了变化造成。下面就是需要找到ebp在什么时候变化的,特别要留意函数调…

Driver Debug一例

(2006/5/24 23:07)
今天下班正准备回家,被一位同事叫住帮忙解决一个Driver蓝屏的Bug。初看起来蓝屏是出现在自己的Driver里面,并且Softice没有拦截到这个错误。用Windbg打开蓝屏的Dump文件,Windbg告知蓝屏出现在Driver的xxxx位置。然后在Softice中设置好Driver的源码文件,使用Softice的mod指令找到该Driver的基地址,蓝屏代码的位置应该就在基地址+xxxx的附近。使用u指令反汇编这个位置的代码,正好在一个名为BT_xxx()的函数…

今天我的Blog开张了

(2006/5/23 23:22)
常常听到和看到一些关于Blog的事情,一直都不以为然。前几天,公司让我分析如何解决Vista权限的UAP问题,苦于资料短缺,把我折腾了半天,最后没想到在一位微软RD的Blog上找到了答案,一下子激起了我Blog的热情。
1
博 主
进入Carrey的首页
博客名称:carrey
日志总数:6
评论数量:5
访问次数:41802
建立时间:2006/5/23 23:14
导 航
公 告
评 论