汇编显示exe文件的头信息|怎样读取exe文件的源代码

❶ 怎么用汇编显示EXE文件头信息

网上这样的程序多了。显示文件头信息的相关源代码也好找。那你要了解exe文件格式啊。我了解的就是PE格式。了解了格式。写程序就简单了。比如PE文件格式一开始就是DOS头。打开一个exe 文件的开始就是字母 MZ ..后面有什么PE头 什么节区 什么什么的。要为文件格式了解才可以。

❷ 用汇编语言显示EXE文件的头信息

没有人会反汇编,因为一般程序打包成exe都有壳在外面保护,里面的数据是加密的,乱码一堆。除非你找一些密码专家可能会反汇编。

❸ 汇编:在bebug中以-a的方式写入汇编指令,各寄存器的默认初值是怎么来的以 .exe汇编程序运行,又怎么样

数据寄存器系统默认给初始为零,并分配给你一段内存空间,由这段内存空间的地址初始化你的地址寄器。ip地址默认的为100h开始。.exe文件的运行比较复杂,简单的来说,在.exe文件的头部包含有各数据段的信息,如数据段.data程序段.code,堆栈段.stack等,当系统载入.exe程序时,会根据这些信息,在内存中开辟几段内存空间,以读入这些相应的内容,并根椐内存址段地址来初始化各种寄存器及其它的一些地址指针。.exe文件的头部包含的程序开始地址。

❹ 想用mfc做个exe文件,一运行就出现个显示信息对话框

网上这样的程序多了。显示文件头信息的相关源代码也好找。那你要了解exe文件格式啊。我了解的就是pe格式。了解了格式。写程序就简单了。比如pe文件格式一开始就是dos头。打开一个exe文件的开始就是字母mz..后面有什么pe头什么节区什么什么的。要为文件格式了解才可以。

❺ 汇编如何生成exe可执行文件

masm是微软出的汇编编译器,支持8088/8086架构的汇编语言,在DOS下运行,需要下载。masm包括:(1)编辑程序edit.exe(2)汇编程序masm.exe(3)连接程序link.exe(3)调试程序debug.exe基本使用方法如下,仅供参考:用之前最好把上面的几个文件保存到盘符下的文件夹里,文件夹名字尽量简单明了,一切为了操作简单。(1)最好不要用edit.exe,而用记事本编辑汇编程序,这样操作比较方便。保存时,文件类型选为所有文件,再在文件名后面加上.asm,保存即可。(2)打开命令提示行(运行–>输入cmd–>确定),敲命令进入masm所在文件夹,输入masm*.asm(*表示文件名)回车。这时会提示Objectfilename[*.OBJ]:表示要生成的目标文件名称,必须填,然后回车。提示Sourcelisting[NUL.LST]:表示是否要生成列表文件,填写这生成.lst文件,不填则放弃生成.lst文件。.lst文件用记事本打开能看到源代码的语法错误,查错想当方便,****强烈建议生成****。回车后提示Cross-reference[NUL.CRF]:表示生成交叉引用文件.crf,如果有多个.obj文件参与连接就要生成,回车后显示错误数量等信息,编译完成。(3)输入link*(.obj文件名)一路回车,返回时已经生成了*.exe。

❻ 怎样读取exe文件的源代码

1、在网络上搜索下载反编译工具ILSpy,解压后如图,双击.exe文件打开解压工具

❼ 显示EXE文件的头信息

od反汇编查看

❽ 关于汇编程序设计

第8题:①先在屏幕显示一行字符,长度和显示位置自己定②让行首的一个字符移动到行尾进行显示(这是从屏幕左边到右边),设置好延时,重复上面的动作,在移动程序内部设置好停止移动的条件。或者你可以整体将字符串向前移动一格,同样设置好延时,重复操作

❾ 汇编伪指令assume cs:code,ds:data,ss:stack的含义

问题①:你的程序中,可以用十个八个段,比如段名 D1,D2,D3,D4,D5,D6,……8086/8088 CPU的设计,是任一时刻,只能通过4个段寄存器最多同时访问4个段。那么问题来了:某个段(比如D5段)与哪个段寄存器关联、用哪个段寄存器访问呢?assume伪指令就是用来解决这个问题的。你 assume ES:D5 以后,就将程序中的D5段与ES段寄存器绑定了,汇编程序能知道,访问D5段中的变量,要用ES作为段寄存器。问题②:DOS操作系统的程序装入功能,是这样设计的:装入exe文件时,根据exe文件头中的信息,将CS:IP指向装入后内存中程序的入口(第一条执行指令),也就是说,要在装入程序时设置CS, IP两个寄存器。对于其它3个段寄存器,DOS装入功能的处理,是将它们指向DOS操作系统为管理程序内存而创建的程序段前缀PSP的段地址。那么问题来了:程序运行后,要访问程序中的某个段里的数据,怎么办呢?答案当然就是需要你自己在程序中加入将段地址传送到段寄存器的指令啦。最后提一下,assume是给汇编程序在汇编翻译源程序时用的,段寄存器(CS除外)要自己设置初值是DOS操作系统的功能要求你程序这么做的。

❿ 关于汇编的几个问题!

第一个问题,关于SP设置成16:用SEGMENT定义一个段的时候,若不加对齐参数(PARA, PAGE, WORD等等),默认参数是PARA,即小节对齐,段首地址值是16的整数倍。你的程序在堆栈段里用DW定义了两个字,不足16个字节。程序装入内存时,每个段按16字节地址的整数倍对齐,空间若不是16的整数倍就凑到16的整数倍。所以你的程序实际可以使用的堆栈段的内存空间正好就是16个字节。如果你将SP初始值改成大于16的值,会造成入栈数据被写入与现在这个段部分重叠的其它段中,可能会错误地改写程序可能用到的内存数据,造成程序运行出错。而改成小于16的值,则减少了可安全使用的堆栈空间。第二个问题,关于程序的分段和装入:内存分段使用、每个段的大小最大64KB,是INTEL 8086 CPU为了解决16位处理器使用超过64KB的内存而设计的基本工作方式,它同时还极大地方便了程序装入时的内存重定位。用户程序的设计,必须遵循硬件设计的限定性要求。所以,设计程序时,也必须分段,且段的大小不能超过64KB。在DOS的EXE可执行文件格式中,文件中除了代码和数据以外,还有一个EXE文件头。这个文件头中包含程序是由多少个段组成、每个段的名字、类型和大小等信息。程序装入时,在可用内存最低地址建PSP,然后装入各个段,各段装入的段地址值赋给段名。(段的排序规则我记不清是按定义顺序或段名)。然后,将DS,ES,SS指向PSP,将CS指向程序入口所在的代码段的段地址,IP指向入口的偏移地址。将段名对应的段地址送入相应的段寄存器,由用户程序完成。


赞 (0)