int 3与0cch和0CCCCCCCCh是啥关系呀,很多资料是说int 3机器码0cch,这一点不难,但在那些资料上马上就出现了矛盾的地方,那就是下面
lea edi,[ebp-0c0h]
mov ecx,33h
mov eax,0CCCCCCCCh
rep stos dword ptr [edi]
几乎所有说int 3机器码0cch的资料,都会接着讲上面的代码,上面的代码大体意思是将一定的区域ebp-0c0h开始的区域初始化为0CCCCCCCCh,这是因为把它们全部初始化成0CCCCCCCCh后,运行到那里就会停止,这问题就出来了
上面不是说int 3机器码0cch是吗,所以填充那些区域的也应该是0cch呀,怎么会是0CCCCCCCCh?是我眼瞎还是作者眼瞎
------解决方案--------------------
0CCCCCCCCh 就是4个int 3啊 一般debug模式编译时候会编译这个
------解决方案--------------------
这几条指令填充的 是 4 * 33h 个 int 3 至于debug模式为啥编译这个 我不觉得你现在应该研究 等你需要的时候自然就明白了
指令可以写成如下形式,不过运行起来慢很多
mov ecx,4 * 33h
mov eax,0CCh
rep stos byte ptr [edi]