社区
汇编语言
帖子详情
由.exe 转换为 .com文件问题?
ti_ta
2007-01-04 10:08:29
exe2bin.exe 制作 驻留内存的.com文件.
在dos下敲入命令行: exe2bin.exe D:\A(待转换文件)
但结果提示:File cannot be converted
请问:是怎么回事啊?
...全文
3021
18
打赏
收藏
由.exe 转换为 .com文件问题?
exe2bin.exe 制作 驻留内存的.com文件. 在dos下敲入命令行: exe2bin.exe D:\A(待转换文件) 但结果提示:File cannot be converted 请问:是怎么回事啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ti_ta
2007-01-07
打赏
举报
回复
这是来了小广告了啊!
我得继续讨教我的问题,刨根问底的弄清楚,大家别嫌烦啊!呵呵.
mydo: 看过你写的文章了,主要是读取物理地址中的内容. 本人对windows的工作机理和内核不熟悉,不清楚和写打印驱动的关联,所以,还希望能指点一下有关打印驱动的内容.非常感谢了啊!
另,可否发 masm32v9.0 到我邮件: dypzdj@yahoo.com.cn 我实在是下载不下来.谢谢!
大熊猫侯佩
2007-01-06
打赏
举报
回复
用驱动可以修改中断idt的项,有兴趣的话可以看看我写的文章:
http://community.csdn.net/Expert/TopicView3.asp?id=5242379
hero4u
2007-01-05
打赏
举报
回复
........................................
对汇编不熟悉。参观一下
以前win95 就只知道 win.com 和 mouse.com
现在的操作系统写.com程序不大可能吧。好像.com size限制在64k。不清楚啊,门外汉。
做嵌入式系统,单片机。搞硬件编程又是另外一门学问了。呵呵
mLee79
2007-01-05
打赏
举报
回复
下 DDK , 看例程, 写驱动还是满简单的 ....
xylegend
2007-01-05
打赏
举报
回复
mark
ti_ta
2007-01-05
打赏
举报
回复
RE- mLee79:
可否具体些!或指点一些参考资料.本人该方面门外汉一个.多谢!
ti_ta
2007-01-04
打赏
举报
回复
多谢zara对我提出的所有问题的回复,谢谢啦!
转.com文件的问题,已经成功,但奇怪,我的源程序中包含了
mov word ptr old_print[2],es ; 段地址
也成功转换了啊!
在此希望和zara(当然也包括能帮我解惑的朋友),具体讨论一下:
1、我所有的问题都是围绕一个中心的,修改17h中断服务程序,并使之永远有效!
2、我现在的.com文件是一个内存驻留程序,把17h的中断地址修改,希望之后的所有程序,只要调用 int 17h,则进入我的新的入口程序.
3、问题是,只要我编写的程序一结束,再用别的汇编程序调用int 17h,则又跑到原来的中断服务程序去执行了!!
请看看我的代码,是否有错呢?
cseg segment
assume cs:cseg,ds:cseg
org 100h
start:
JMP Initialize
old_print dd ?
new_print proc far ;新的中断服务程序入口
assume cs:cseg,ds:cseg
STI
pushf
assume ds:nothing
push ax
push dx
mov al,'M'
mov ah,0
mov dx,0
call dword ptr old_print
pop dx
pop ax
popf
NOP
IRET
new_print endp
Initialize:
assume cs:cseg,ds:cseg
mov bx,cs
mov ds,bx
mov al,17h ;保存原中断向量
mov ah,35h
int 21h
mov word ptr old_print,bx
mov word ptr old_print[2],es
mov dx,OFFSET new_print ;置新的中断向量
mov al,17h
mov ah,25h
int 21h
mov dx,offset Initialize
int 27h ;将标签Initialize前的程序驻留内存
cseg ends
end start
再次感谢了啊!
zara
2007-01-04
打赏
举报
回复
文件不能被转换, 即你的 .exe 不满足 .com 的条件. 要能被转换为 .com, .exe 必须满足两个条件, 一个是程序是从 0100h 处开始执行的; 另外就是不能有段址的引用, 如 mov ax, DataSeg 这样的
ti_ta
2007-01-04
打赏
举报
回复
谢谢大家的回复!
也就是说,我现在即使在保护模式下写汇编程序,修改 int 17h的方式,是不可能实现的了!对吧!
有关windows驱动,了解这方面内容的朋友,能否稍微具体指点迷津,给我个方向,好去动手做.
再次感谢了!
haotz
2007-01-04
打赏
举报
回复
DOS 下不行,需要写windows的driver
Sime507
2007-01-04
打赏
举报
回复
楼主想做的功能肯定能实现,不过要写Windows驱动而不是Dos驱动。
zara
2007-01-04
打赏
举报
回复
如果是要视图拦截 Windows 的打印数据的话, 通过 int17h 肯定是没有丝毫用处的. Windows 下的 dos 窗口提高的这些功能, 都是临时模拟出来的. 不过, 如何实现你的要求, 我也不了解, 没有做过这方面的内容.
ti_ta
2007-01-04
打赏
举报
回复
RE: mydo- 对,是要修改中断服务程序的入口地址
RE:zara
再次感谢一直以来的关注.
再讨教一下,我在xp的dos下运行了.com程序,紧接着查看0:5c,确实是修改后的地址; 但当我退出当前的command窗口,重新开启一个command窗口时,发现地址又恢复成原地址了.
所以,我想是否是和windows下的保护模式相关呢!
另:"直接传送到打印端口比较有效率",我也考虑过这个问题.确实也是不清楚,打印功能到底是怎样发送数据的? 在不同的操作系统下也会有所不同吧,windows下呢?能否指点一下!
其实,一直以来,我希望解决的问题就是: 在windows下截获打印数据并对其进行修改,再传送去打印!
我也是初次来到该版不久,非常感谢大家的帮助!
zara
2007-01-04
打赏
举报
回复
> 转.com文件的问题,已经成功,但奇怪,我的源程序中包含了
> mov word ptr old_print[2],es ; 段地址
> 也成功转换了啊
不是说 .com 文件中不能使用 es 这样的段寄存器, 而是不能引用自己程序段的段址. 这是因为程序段的段址, 由于程序被加载到内存中时, 由于起始地址的不同, 也会有不同. 所以, dos 会根据加载的基址对其调整, 使其引用正确. 这个就是所谓的 exe 程序的重定位. com 文件就没有重定位项, 所以也不能有对段的引用. 其它方式对段寄存器的使用都是可以的. 比如:
mov ax, 0b800h
mov es, ax
上面的那个代码, 是有个问题:
new_print proc far ;新的中断服务程序入口
assume cs:cseg,ds:cseg
STI
pushf
assume ds:nothing
push ax
push dx
mov al,'M'
mov ah,0
mov dx,0
pushf ;*+ 需用这个指令. 如同 int17h 一样, 标记寄存器需用压栈的
call dword ptr old_print
pop dx
pop ax
popf
NOP
IRET
new_print endp
另外, 这个代码的驻留功能是正常的吧. 我在 xp 的 dos 窗口下直接运行了, 再进 debug 查看 0:5c 处的 int17h 的中断向量, 是指向这段代码的.
不过, 看过你的另外的帖子, 要求以此修改打印的内容. 这个, 恐怕不能这么实现的. 一般来说, 打印功能, 通过 int17h 来发送数据的, 可能比较少吧, 还是直接传送到打印端口比较有效率. 所以, 通过拦截 int17h 可能难以达到原来设想的目的
Sime507
2007-01-04
打赏
举报
回复
初学DOS驱动开发,楼主有什么资料可以给我参考一下吗?最好有完整的DOS驱动开发过程或汇编源代码,谢谢啦。
大熊猫侯佩
2007-01-04
打赏
举报
回复
你是想改v8086中的中断地址么?
ti_ta
2007-01-04
打赏
举报
回复
忘记说一个前提环境了.
我现在的程序都是在windows XP下的win-masm汇编工具下编写,并测试的.在windows的虚拟dos模式下的debug调试,可以看到内存的内容.
我的中断设置之所以无效,是否和在windows下有关呢?处于保护模式了?
详细教程:如何把scratch
文件
转化为.
exe
的可执行
文件
?(含
转换
器安装包百度云盘链接)
详细教程:如何把scratch
文件
转化为.
exe
可执行
文件
?(含
转换
器安装包链接)目录写在前面的话软件安装包链接软件安装步骤
转换
步骤第一步:选择scratch
文件
(.sb2
文件
)第二步:选择一个图标
文件
第三步:点击绿旗开始...
.cpp
文件
转换
为.
exe
文件
过程(C++)
下面来简述一下C++.cpp
文件
转换
为.
exe
文件
的过程。我们知道当我们用C++编译器编辑一个
文件
时,这个
文件
就是一个扩展名为.c或.cpp
文件
,而当我们进行编译运行之后,编译器会为我们自动生成一个扩展名为.
exe
文件
。那么...
MATLAB将.m
文件
转换
为.
exe
文件
本篇文章主要介绍的是:matlab如何将.m
文件
为.
exe
文件
TDM-GCC TDM-GCC是一款适用于windows平台的gcc编译工具 下载 下载地址:https://sourceforge.net/projects/tdm-gcc/ 安装 双击下载好
exe
文件
,出现如下界面: ...
如何将
EXE
文件
转换
为 APK
文件
以在 Android 上运行
您在 Windows PC 上运行的每个程序或应用程序实际上仅由 .
exe
文件
运行。 仅供参考,攻击者还使用此类
文件
将木马和恶意软件分发到 PC,通常是通过网络钓鱼电子邮件和 SMS。因此,如果你得到任何。
exe
文件
来自未知...
将Python源程序(.py)
转换
为可执行
文件
(.
exe
)
由于Python程序的执行依赖于其环境,不能在操作系统下直接运行,因此在某些情况下需要将将Python源程序(.py
文件
)
转换
为可执行
文件
(.
exe
文件
),这篇文章就来告诉大家如何将.py
文件
打包成.
exe
文件
。 方法是安装一...
汇编语言
21,459
社区成员
41,601
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章