_asm int 3 软件中断
int 3机器码0cch,是无数人的最爱,你不见VC++不管是链接还是初始化,都用这个 0CCh来填,你不见所有运行在ring3的debug都使用这个0cc来插入你想中断调试的位置,以至在不去掉断点的情况下写盘,在你的代码中会发现这个莫名其妙的0CCh。 int 3不过是一个软件断点中断,你自己就可以任意修改这个中断,在anti-debug中,你可以通过修改这个中断给调试者带来巨大的惊喜,如果你能更深入一步的了解int 3的机制,你甚至可以指挥deubg运行,即别人调试你的程序,单步往前走,你可以让他按一个单步执行键后倒退几步,哈哈(这些都是善意的,千万不要学将那个倒退的指令改成将别人硬盘的启动分区给删除了,将别人的文件分配表给删除了,或将人家硬盘给硬格式化了)。 int 3只不过是一个软件调试中断,通过他,你可以进入ring0,那个许多人都想进入的神秘世界。 int 3只不过是一个简单的中断,利用他,你可以完成你许多过去不敢想象的事,只要你敢去尝试。 int3是留给调试工具使用的中断,调试工具运行后会替换int3的向量,使得中断方式后执行自己的代码。在单步(例如Debug中的命令p)调试程序时,调试工具会将要执行代码的下一条指令改成int 3,这样执行完当前这行代码后就会执行调试工具的代码,而不会继续执行,从而实现单步调试。一些软件为了阻碍被人破解其程序,会估计使用int3,这样一来,利用int3的调试工具就无法正常调试他们的程序了。 嵌入断点中断INT3 #include <iostream> int main(INT argc,char*argv[]) { _asm INT 3; //调用断点中断 cout << "Hello world!" << endl; }
<编译后程序将停在INT3这个位置> 程序的执行过程中会触发断点: (编辑:台州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Windows Server 2016-Win Ser 2016新增功能
- 06、林信任快捷方式
- xaml – 如何将我的视图模型中的富文本(FlowDocument?)绑定
- cmd – 如何为特定应用程序强制传出ip? ForceBindIp似乎不
- api-ms-win-crt-runtime-|1-1-0.dll丢失的解决方法
- .net – 为什么我无法在2.0.0.0播放器框架中重用1.8.2.2 Pl
- 批处理文件 – Windows批处理将记录添加到主机文件
- Windows Containers 大冒险: 优化计划(Dockerfile)
- windows-runtime – 将Action绑定到XAML中UserControl的属性
- windows – JScript:如何运行外部命令并获得输出?
- EvoPDF库在Windows Azure托管站点上失败
- Qt 5 QML应用程序,包含许多Windows或复杂的UI
- pyshark无法在Windows 7(python)上捕获数据包
- resolveLocalFileSystemURI错误代码5 windows ph
- 如何使Windows Forms .NET应用程序显示为托盘图标
- windows – 使用cmd提示符搜索谷歌或其他搜索引擎
- batch-file – 用于在Windows 7中更改屏幕分辨率
- .net – 适用于Windows 7.0的蓝牙低功耗API
- 06、林信任快捷方式
- https – 如何在非Windows平台上忽略“System.Ne