汇编语言全接触-86.如何获取真正中断入口地址

概述:

我们知道,DOS 的中断例程的入口地址存在 0000:0000 开始的中断向量表中,当程序要要建立一个中断例程时,需要修改中断向量表把入口地址指向自己的程序,为了使原来的中断例程能正常使用,在出口的时候还要用远跳转指令回到原中断的入口地址,如 DOS 中断 INT 21H,在 DOS 启动后,后面要挂上很多的新的例程,如 SMARTDRV 等等,磁盘中断 INT 13H 也是如此。

但在程序中,有时需要用到真正的中断入口,如 INT 13H 的 BIOS 入口举例说为 F000:EC59,为了反跟踪,程序中有时要用 PUSHF/CALL F000:EC59 的方法来调用,这就需要在程序开始运行时检测出真正的中断入口地址以备用。

检测真正的入口地址可以用单步中断的方法来进行,在调用 INT XX之前,把单步中断指向自己的程序,

在单步中断中,从堆栈中取出要返回的地址,这就起到的跟踪 INT XX 的执行的作用,举例程序中将跟踪 INT 21H 的执行,然后把执行的地址输出到屏幕上,在 INT 21H 中远跳转的地方给出提示。

真正的中断地址往往在远跳转的地方,在判断哪个远跳转是真正的中断地址时,不同的中断要具体判断,如跟踪 INT 13H 时,我们知道 BIOS 的段地址一般为 E000,所以一旦判断到段地址为 E000 时,就可以把这个地址保存下来作为真正 INT 13H 地址,而跟踪 INT 21H 时,INT 21H 在 DOS 的内核中,所以要先用第一个 MCB 地址的功能取出 MCB 地址,而第一个 MCB 地址之前是系统内核区,当判断到段地址小于第一个 MCB 地址时,这个地址就是真正的 INT 21H 地址。

汇编编程示例:

.286

CODE SEGMENT

ASSUME CS:CODE,DS:CODE

ORG 100H

start:

jmp install

D_MES1 DB 'CS:IP = %04h:%04h %,FLAG = %017b%,',0dh,0ah,0

DW _CS,_IP,_FLAG

_CS DW ?

_OLD_CS DW ?

_IP DW ?

_FLAG DW ?

D_MES2 DB '%14r- SEGMENT CHANGE %13r-',0dh,0ah,0

;新的单步中断 INT 1 例程

;

int1:

push ax

push bp

mov bp,sp ;

mov ax,ss:[bp+4] ;返回的 ip

mov cs:_ip,ax

mov ax,ss:[bp+6] ;返回的 cs

mov cs:_cs,ax

mov ax,ss:[bp+8] ;flag

mov cs:_flag,ax

pop bp

pop ax

pushf

pusha

push ds

push es

push cs

pop ds

push cs

pop es

mov ax,_cs

cmp ax,_old_cs

mov _old_cs,ax

jz int1_1

mov si,offset d_mes2 ;segment has changed

call printf

int1_1:

mov si,offset d_mes1 ;print return address

call printf ;and flags

pop es

pop ds

popa

popf

iret

install:

mov ax,cs

mov _old_cs,ax

mov ax,3501h ;keep int 01

int 21h

push es

push bx

mov ax,2501h ;set new int 01

mov dx,offset int1

int 21h

pushf

pop ax

or ax,0100h

push ax

popf ;set int 01 flag

;--------------------------------------------------------

xor ax,ax

mov es,ax ;从这一句开始单步中断

mov ah,-1 ;由于 INT 语句要清单步中断,所以

pushf ;要用 PUSHF/CALL FAR 的形式执行 INT 21H

call dword ptr es:[4*21h]

pushf

pop ax

and ax,0feffh

push ax ;跟踪完毕后清楚单步中断

popf ;clear int 01 flag

;---------------------------------------------------------

pop dx

pop ds

mov ax,2501h

int 21h ;restore old int 01

int 20h

INCLUDE PRINTF.ASM ;公用屏幕输出子程序

CODE ENDS

END START

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1155181.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑桌面整理软件,都需要的工作小助手,

软件获取地址 桌面整理软件 两个都值得推荐 一:腾讯桌面 腾讯桌面整理(GeskGo)是腾讯为 Windows 平台用户开发的一款桌面整理工具。此版本是独立版,体积较小,无需安装腾讯电脑管家即可使用。 软件功能 - 支持文件…

程序员项目管理能力提升手册:从技术执行者到项目主导者

很多程序员认为 “项目管理是项目经理的事”,只需专注编码即可。但实际工作中,程序员往往需要主导模块开发、协调跨角色协作、把控开发进度与质量,缺乏项目管理能力会导致:需求理解偏差、进度拖延、风险失控、协作混乱&#xff0c…

本体论与知识图谱:揭示语义技术的核心差异

What’s the Difference Between an Ontology and a Knowledge Graph? 文章摘要 本文深入探讨了本体论(Ontology)与知识图谱(Knowledge Graph)的概念与区别。本体论是一种通用的语义数据模型,用于定义领域内实体的类…

短剧系统搭建全攻略:从零到一,详细教程助你快速上手

一、系统概述与前期准备1.1 短剧系统核心功能模块用户管理:注册登录、个人中心、观看历史内容管理:短剧上传、分类标签、推荐算法播放系统:流畅播放、清晰度切换、进度记忆互动功能:评论点赞、收藏分享、弹幕系统支付模块&#xf…

‌测试在DevOps中的角色演变:从质量守门员到持续赋能者

DevOps时代下的测试变革浪潮‌在软件开发的演进长河中,测试角色始终扮演着质量保障的核心角色。然而,随着DevOps的兴起——一种强调开发(Development)与运维(Operations)无缝协作的文化与实践体系——测试的…

AI万亿美金机遇:构建下一代AI Agent与企业决策的上下文图谱平台

摘要 本文探讨了AI代理时代,企业软件系统的演变。传统系统如Salesforce和Workday是记录系统,而AI代理需要决策痕迹作为基础。本文提出“上下文图谱”概念:通过记录决策过程的例外、 precedent 和跨系统上下文,形成可查询的决策记…

量化交易时代,普通散户的胜算还有多少?

在当今瞬息万变的资本市场中,您是否也曾感到困惑与无力?眼看着市场剧烈波动,却总是抓不住节奏,似乎总有一股强大的力量在主导一切。这股主导市场的力量并非无形,它有明确的名字:量化交易。这不仅是一种工具…

GLM-4.7底层技术拆解与落地避坑:开源大模型编码实战指南

在开源大模型编码能力日趋同质化的当下,智谱AI GLM-4.7凭借独特的推理架构设计与针对性优化,在SWE-bench Verified榜单中稳居开源第一梯队。不同于市面上侧重“功能罗列”的测评,本文从底层技术原理切入,拆解其思考机制的实现逻辑…

‌安全测试集成最佳实践

为什么安全测试必须“左移”并集成?‌在2026年的软件交付环境中,‌“安全是功能的一部分”‌ 已非口号,而是生存底线。根据Gartner 2025年报告,中国DevSecOps工具市场规模已达78亿元,年复合增长率42%,企业平…

‌2026年量子计算测试入门

一、为什么软件测试从业者必须关注量子计算?‌量子计算不再是实验室的专利。截至2026年初,全球已有超过‌47家云平台‌提供可编程量子计算服务(如IBM Quantum Network、Amazon Braket、阿里云量子实验室),‌NISQ&#…

GLM-4.7 实用化指南:提示词优化、本地化部署与跨场景适配秘籍

作为开源编码领域的标杆模型,GLM-4.7 不仅具备出色的代码生成能力,更凭借开源特性与灵活部署优势,成为开发者日常研发的高频工具。但多数使用者仅停留在“基础调用”层面,未能充分发挥其性能潜力。本文跳出传统测评框架&#xff0…

区块链应用测试全指南

迎接分布式信任的测试挑战区块链技术以其去中心化、不可篡改、透明可追溯等特性,正深刻重塑金融、供应链、物联网、身份认证等众多领域。作为软件测试从业者,我们面临着前所未有的机遇与挑战:如何确保构建在区块链这一独特架构之上的应用&…

matlab实现GMSK信号调制和解调

GMSK(Gaussian Minimum Shift Keying)是一种基于高斯滤波的调制技术,它结合了MSK(Minimum Shift Keying)和Gaussian滤波的特性,以减少频谱扩展和提高频带利用率。在MATLAB中实现GMSK信号的调制和解调可以分…

亚马逊跨境电商2026 开年这波“变量”到底怎么应对?

这两周我在卖家群里看到的关键词很统一:“成本又变了、直邮更不稳了、欧盟合规更麻烦了、流量入口开始被 AI 抢走了。” 如果把 2026 开年当成一个分水岭,我更愿意把它叫做——跨境从“会运营”进入“会经营”的阶段。 下面我按“你马上会踩到的坑”来拆…

深入浅出 Istio VirtualService:从基础路由到高级流量治理的实战指南

文章目录一、 核心逻辑:VirtualService 的“三位一体”模型二、 深度场景实战场景 1:南北流量入口——服务的“门面”担当场景 2:东西流量治理——平滑的金丝雀发布场景 3:A/B 测试——基于用户特征的精准画像路由场景 4&#xff…

【IEEE出版、连续4届稳定EI检索】第五届电气、控制与信息技术国际学术会议(ECITech 2026)

继往届ECITech年度系列会议的成功举办,第五届电气、控制与信息技术国际学术会议(ECITech 2026)由南京工业大学和安徽大学联合主办,会议将于2026年3月13日-15日在中国南京线下举办。 会议将继续围绕电气、控制与信息技术等研究领域…

深度解析 Istio 流量五虎将:Ingress、Egress、Gateway、ServiceEntry 与 VirtualService

文章目录一、 角色定位:谁是实体?谁是配置?二、 核心关联:流量是如何流动的?场景 1:南北流量——外部用户访问内部服务(Ingress)场景 2:东西/南北流量——内部服务访问外…

得物App智能巡检技术的探索与实践

一、背景 随着得物App各业务功能的丰富和升级,得物App内可供用户体验的内容和活动逐步增多,在用户App内体验时长不断增长的大背景下,App使用过程中的体验问题变得愈发重要。同时,在整个功能研发流程中,App端的测试时间…

英超阿森纳这个球队怎么样?

作为英超最长情的观察者(自1886年建队以来从未降级),阿森纳总能用它的独特魅力吸引你。它既是一部厚重的足球历史书,又是当下欧洲足坛最锋利、最沉稳的力量之一。下面让我为你展开这幅“兵工厂”的画卷。 一、 球队名片 昵称&…

收藏级干货!2025年AI工程化范式转移:从Chatbot到Agent的系统架构演进全解析

本文深入分析了2023-2025年AI工程生态的范式转移,从Chatbot到Agent与系统工程的演进。详细介绍了现代LLM应用的四层架构(智能层、能力层、连接层、编排层),探讨了智能体的定义、认知架构及多智能体系统,对比了Tools与S…