社区
汇编语言
帖子详情
各位好,请问是否可以程序获取自身的文件名?
bingking68
2008-05-11 09:14:30
正如标题,程序是否能获取自身的文件名?
期望能通过中断或代码来解决,API除外。
(本人查过中断大全,暂未找相关的中断号)
...全文
136
8
打赏
收藏
各位好,请问是否可以程序获取自身的文件名?
正如标题,程序是否能获取自身的文件名? 期望能通过中断或代码来解决,API除外。 (本人查过中断大全,暂未找相关的中断号)
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
8 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
bingking68
2008-05-19
打赏
举报
回复
很多谢各位的解答,不知道这次地震是否有影响到各位呢?
首先,多谢zhouziheng_chang的详细解答,不过,是否能用程序需尝试实现一下。
而hswxf在2楼所讲的方法,本人不太明白。
但在此先作抱歉,所讲的文件偏重于MZ文件(如果可以再讨论PE文件那更好啦!)
baoyuhua
2008-05-13
打赏
举报
回复
在程序开头esp向上偏移取得命令行参数即可
用户 昵称
2008-05-12
打赏
举报
回复
5F,系统创建的psp段中的文件名和自身的文件名在什么条件下可能不一致?
hswxf
2008-05-12
打赏
举报
回复
3楼说的俺们就糊涂了,与楼主是不是一致呀!
要注意的是:psp是系统为运行的程序创建的,不是程序文件自身所携带的。
与楼主:
正如标题,程序是否能获取自身的文件名?
**************
?文件
用户 昵称
2008-05-12
打赏
举报
回复
3楼的另俺明白了好多。
zhouziheng_chang
2008-05-12
打赏
举报
回复
系统加载程序后,在程序所属psp内有相关信息,可以通过研究psp定位文件名信息,进而获取文件名。
程序加载后,ds中存放着程序所在内存区的段地址,这个内存区的偏移地址为 0 ,则程序所在的内存区的地址为:ds:0;
这个内存区的前256 个字节中存放的是PSP,dos用来和程序进行通信。
从 256字节处向后的空间存放的是程序。
----摘自 王爽《汇编语言》讲稿第四章 4.9 程序执行过程的跟踪
要注意的是:psp是系统为运行的程序创建的,不是程序文件自身所携带的。
例如:
C:\DOCUME~1\ADMINI~1\masm>debug f.exe
-r
AX=0000 BX=0000 CX=002F DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=13E6 ES=13E6 SS=13F6 CS=13F7 IP=0000 NV UP EI PL NZ NA PO NC
13F7:0000 B8F613 MOV AX,13F6
-
-dds:0
13E6:0000 CD 20 FF 9F 00 9A F0 FE-1D F0 4F 03 F4 0D 8A 03 . ........O.....
13E6:0010 F4 0D 17 03 F4 0D E3 0D-01 01 01 00 02 FF FF FF ................
13E6:0020 FF FF FF FF FF FF FF FF-FF FF FF FF A1 13 4C 01 ..............L.
13E6:0030 B4 12 14 00 18 00 E6 13-FF FF FF FF 00 00 00 00 ................
13E6:0040 05 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
13E6:0050 CD 21 CB 00 00 00 00 00-00 00 00 00 00 20 20 20 .!...........
13E6:0060 20 20 20 20 20 20 20 20-00 00 00 00 00 20 20 20 .....
13E6:0070 20 20 20 20 20 20 20 20-00 00 00 00 00 00 00 00 ........
-d
13E6:0080 00 0D 66 2E 65 78 65 0D-20 42 4C 41 53 54 45 52 ..f.exe. BLASTER
13E6:0090 3D 41 30 0D 64 64 72 65-73 73 2E 20 20 46 6F 72 =A0.ddress. For
13E6:00A0 20 65 78 61 6D 70 6C 65-3A 0D 20 6F 6E 20 4E 54 example:. on NT
13E6:00B0 56 44 4D 2C 20 73 70 65-63 69 66 79 20 61 6E 20 VDM, specify an
13E6:00C0 69 6E 76 61 6C 69 64 0D-20 6F 6E 6C 79 2E 0D 00 invalid. only...
13E6:00D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
13E6:00E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
13E6:00F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 ................
不难看到 ds:0082 就是文件名信息的起始地址。当然,结束为止即可执行文件扩展名.exe之前了(这里所说的文件名不包括文件扩展名,如果包括,只是判断文件名信息结束逻辑的实现问题了)。
深入讨论欢迎进入
汇编网
cnzdgs
2008-05-11
打赏
举报
回复
用C写个程序,
void main(int argc, char* argv[])
argv[0]就是自身。
用反汇编调试可以知道获取的方法。
hswxf
2008-05-11
打赏
举报
回复
通过查询自地址开始处前100H字节处开始的ASSIIC码或EXE文件的位置就行
python2.7读取文件夹下所有
文件名
称及内容的方法
废话不多说,记录一下自己的所得。 首先,安装什么的不在本人的温习范围,另,本人使用的是windows下的python2.7版本,且本人相对来说只是小白,各位看官勿喷哈。 python,本身来说是一门高级编程语言,有句话怎么说...
JAVA上百实例源码以及开源项目
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端
程序
,别外还有一个客户端的
程序
,两者互相配合可以开发出超多的网络
程序
,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
教你快速查找电脑中的文件
不记得
文件名
,只记得文件的部分内容的情况下,无法查找文件,实在是令人头疼。在这里教大家使用两个工具,1秒即可在电脑中找到你要的文件,支持按文件内容查找。学会后,让你的办公效率提升百倍。
java源码包---java 源码 大量 实例
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端
程序
,别外还有一个客户端的
程序
,两者互相配合可以开发出超多的网络
程序
,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
java源码包2
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端
程序
,别外还有一个客户端的
程序
,两者互相配合可以开发出超多的网络
程序
,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...
汇编语言
21,453
社区成员
41,602
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章