汇编语言全接触-85.检测DOS程序执行的目录

概述:

在 DOS 程序执行时,要确定当前目录是很容易的,有现成的 DOS 中断,但当程序是在 PAHT 指定的目录中执行时,有时要用到相同目录下的数据文件,这样就需要获得执行程序所在的目录。

DOS 程序执行时,系统要建立一个用于进程的环境块,文件刚开始执行时,DS 和 ES 指向 PSP 地址,而 PSP 段的偏移 002CH 处的一个字的内容就是环境块的段地址。环境块里面是用 SET 命令可以看到的环境字符串,包括 PATH,PROMPT 串等等,每个串以 00 结尾,整个环境块以 00 00 结束,在环境串以后为字节 01 00,再接下去就是包括全路径的执行文件名,对这个字符串进行处理,截去最后的文件名,得到的就是当前文件所在的目录。

C:\> debug

-d 002c

1577:002C D6 0E 4E 01 ..N.

(0ED6:0000 即环境块段地址)

-d 0ed6:0

0ED6:0000 43 4F 4E 46 49 47 3D 4E-6F 72 00 54 4D 50 3D 43 CONFIG=Nor.TMP=C

0ED6:0010 3A 5C 57 49 4E 44 4F 57-53 5C 54 45 4D 50 00 54 :\WINDOWS\TEMP.T

0ED6:0020 45 4D 50 3D 43 3A 5C 57-49 4E 44 4F 57 53 5C 54 EMP=C:\WINDOWS\T

0ED6:0030 45 4D 50 00 77 69 6E 62-6F 6F 74 64 69 72 3D 43 EMP.winbootdir=C

0ED6:0040 3A 5C 57 49 4E 44 4F 57-53 00 43 4F 4D 53 50 45 :\WINDOWS.COMSPE

0ED6:0050 43 3D 43 3A 5C 57 49 4E-44 4F 57 53 5C 43 4F 4D C=C:\WINDOWS\COM

0ED6:0060 4D 41 4E 44 2E 43 4F 4D-00 50 41 54 48 3D 45 3A MAND.COM.PATH=E:

0ED6:0070 5C 42 4F 52 4C 41 4E 44-5C 42 49 4E 3B 44 3A 5C \BORLAND\BIN;D:\

0ED6:0080 41 44 56 53 43 48 3B 43-3A 5C 57 49 4E 44 4F 57 ADVSCH;C:\WINDOW

0ED6:0090 53 3B 43 3A 5C 57 49 4E-44 4F 57 53 5C 43 4F 4D S;C:\WINDOWS\COM

0ED6:00A0 4D 41 4E 44 3B 43 3A 5C-54 4F 4F 4C 53 3B 43 3A MAND;C:\TOOLS;C:

0ED6:00B0 5C 44 4F 53 3B 43 3A 5C-4E 4F 52 54 4F 4E 3B 44 \DOS;C:\NORTON;D

0ED6:00C0 3A 5C 50 52 4F 54 45 4C-3B 44 3A 5C 50 46 57 3B :\PROTEL;D:\PFW;

0ED6:00D0 44 3A 5C 50 46 57 00 50-52 4F 4D 50 54 3D 24 70 D:/PFW.PROMPT=$P

0ED6:00E0 24 67 20 00 77 69 6E 64-69 72 3D 43 3A 5C 57 49 $g .windir=C:\WI

0ED6:00F0 4E 44 4F 57 53 00 42 4C-41 53 54 45 52 3D 41 32 NDOWS.BLASTER=A2

0ED6:0100 32 30 20 49 35 20 44 31-20 54 36 20 50 33 31 30 20 I5 D1 T6 P310

0ED6:0110 00 43 4D 44 4C 49 4E 45-3D 64 65 62 75 67 00 00 .CMDLINE=debug..

0ED6:0120 01 00 43 3A 5C 57 49 4E-44 4F 57 53 5C 43 4F 4D ..C:\WINDOWS\COM

0ED6:0130 4D 41 4E 44 5C 44 45 42-55 47 2E 45 58 45 00 CD MAND\DEBUG.EXE..

0ED6:0140 5A EB 0E 15 91 C0 CD 21-44 45 42 55 47 00 21 C3 Z......!DEBUG.!.

0ED6:0150 CD 20 00 A0 00 9A F0 FE-1D F0 14 03 16 0D 6D 01 . ............m.

(红字 00 00 即环境块结束,蓝字为当前执行文件名)

汇编编程示例:

...

mov es,ds:[002ch] ;DS指向PSP段地址,DS的002C为环境块段地址

mov cx,0ffffh ;取环境块段地址

xor di,di

xor al,al

cld

re_scan:

repnz scasb ;查找 00

scasb ;判断 下一个字节是否为 00

jnz re_scan ;不是则继续查找

inc di ;找到 00 00 则加 2 字节地址就是文件名

inc di ;现在ES:DI所指的就是执行的文件名

...

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

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

相关文章

黑客成长第一步:什么是CTF比赛?要怎样才能参加?CTF比赛入门到进阶的完整学习路线图(2026版)

‌黑客成长第一步:什么是CTF比赛?要怎样才能参加?CTF比赛入门到进阶的完整学习路线图(2026版) 竞赛形式,其大致流程是,参赛团队之间通过进行攻防对抗、程序分析等形式,从主办方给出…

吸顶与面板AP:美观背后的真实体验与隐形“坑”

美观、简洁、算得上现在网络设备的重要标签。而已以此为代表的各类AP设备,也在近几年的市场表现中,逐渐强盛,甚至在逐渐取代传统路由器,成为新装修家庭和办公场所的首选。这些,真的能完美替代传统网络设备吗&#xff1…

知识图谱+大模型“驱动的生物制药企业下一代主数据管理:Neo4j知识图谱与GraphRAG及GenAI的深度整合

文章摘要 制药行业主数据管理(MDM)面临数据复杂性和关系互联的挑战。本文探讨将Neo4j知识图谱与GraphRAG和生成AI整合的创新框架,提升数据准确性、一致性和可访问性。通过图谱数据库捕捉药物、患者和临床试验间的复杂关系,结合向…

大数据平台中Doris的安装与配置指南

大数据平台中Apache Doris 完整安装与配置指南:从0到1搭建生产级OLAP服务 摘要/引言 在电商实时报表、物流轨迹分析、广告投放归因等场景中,实时OLAP(在线分析处理) 是业务决策的核心支撑。然而传统方案却普遍面临痛点&#xff1a…

程序员软技能提升手册:不止于技术,成就综合型人才

在程序员的职业发展中,技术能力是基础,但软技能往往决定了能走多远、站多高。很多技术扎实的程序员,因缺乏软技能陷入困境:沟通不畅导致需求偏差、不懂职场表达错失晋升机会、协作能力不足影响团队效率、抗压能力弱难以应对紧急场…

LLM能否成为知识图谱构建的优秀图判断者?

Can LLMs be Good Graph Judge for Knowledge Graph Construction?摘要本文提出GraphJudge框架,通过结合开源和闭源大语言模型来解决知识图谱构建中的三大挑战:文档噪声、领域知识不足和幻觉现象。该框架采用实体中心文本去噪、知识感知监督微调和图判断…

LLM能否成为知识图谱构建的优秀图判断者?

Can LLMs be Good Graph Judge for Knowledge Graph Construction?摘要本文提出GraphJudge框架,通过结合开源和闭源大语言模型来解决知识图谱构建中的三大挑战:文档噪声、领域知识不足和幻觉现象。该框架采用实体中心文本去噪、知识感知监督微调和图判断…

数据库性能优化实战指南:从索引到架构,根治性能瓶颈

数据库是系统的核心基础设施,其性能直接决定了整个系统的响应速度与稳定性。很多系统上线初期运行流畅,随着数据量增长、并发量提升,逐渐出现慢查询、接口卡顿、数据库负载过高甚至宕机等问题 —— 这些性能瓶颈,本质是数据库设计…

深度剖析XSS攻击:原理、危害与全方位防御指南

深度剖析XSS攻击:原理、危害与全方位防御指南 在Web安全领域,XSS(Cross-Site Scripting,跨站脚本攻击)是最常见且危害深远的漏洞之一。根据OWASP Top 10(2021)报告,注入类漏洞&…

深度剖析XSS攻击:原理、危害与全方位防御指南

深度剖析XSS攻击:原理、危害与全方位防御指南 在Web安全领域,XSS(Cross-Site Scripting,跨站脚本攻击)是最常见且危害深远的漏洞之一。根据OWASP Top 10(2021)报告,注入类漏洞&…

运维转网安:从“保障运行”到“守护安全”的转型指南

运维转网安:从“保障运行”到“守护安全”的转型指南 在数字化浪潮下,网络安全已成为企业数字化转型的“必修课”,行业人才缺口持续扩大。而运维工程师作为与服务器、网络、系统最亲近的群体,凭借对IT基础设施的深刻理解&#xf…

Doris在制造业大数据预测分析中的应用

Doris在制造业大数据预测分析中的应用 关键词:Doris数据库、制造业大数据、预测分析、设备故障预测、质量缺陷检测、供应链优化、MPP架构 摘要:本文深入探讨Apache Doris在制造业大数据预测分析场景中的核心应用。首先解析Doris的MPP架构特性与制造业数据特征的匹配性,通过设…

测试报告撰写与呈现技巧:提升软件测试从业者的专业影响力

测试报告的核心价值与行业意义 在软件开发生命周期中,测试报告不仅是质量保证的“收官之作”,更是沟通缺陷、推动改进的关键桥梁。作为软件测试从业者,我们深知一份优秀的测试报告能直接影响项目决策:它帮助开发团队快速定位问题…

PasteMD:一键将 Markdown 与 AI 对话内容完美粘贴到 Word、WPS 与 Excel 的效率工具

PasteMD 是什么? PasteMD 是一款专为 AI 用户和文档工作者设计的效率工具,它让你可以一键将 Markdown 内容和 AI 网页对话(如 ChatGPT、DeepSeek)精准粘贴到 Word、 WPS 或 Excel 文档中,彻底解决格式错乱、公式乱码的…

2026-保姆级网络安全学习路线图:从入门小白到实战大神的全路径指南

保姆级网络安全学习路线图:从入门小白到实战大神的全路径指南 随着数字化进程的加速,网络安全已成为数字经济的“护城河”,行业人才缺口持续扩大。但网络安全领域知识体系庞杂、技术更新迭代快,很多入门小白容易陷入“学了就忘、…

工具选型策略:开源 vs. 商业

为什么工具选型决定测试成败 在快速迭代的软件开发周期中,测试工具的选择直接影响产品质量、团队效率和成本控制。作为软件测试从业者,您可能常面临这样的困境:开源工具免费但支持有限,商业工具强大但价格昂贵。据统计&#xff0…

云原生应用开发实战指南:从容器化到落地,构建弹性可扩展系统

云原生(Cloud-Native)已成为分布式系统的主流架构方向,其核心是通过容器化、微服务、DevOps、服务网格等技术,让应用更适配云环境,实现弹性伸缩、高可用、易维护与快速迭代。但很多团队在云原生落地时陷入误区&#xf…

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

概述:我们知道,DOS 的中断例程的入口地址存在 0000:0000 开始的中断向量表中,当程序要要建立一个中断例程时,需要修改中断向量表把入口地址指向自己的程序,为了使原来的中断例程能正常使用,在出…

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

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

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

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