鱼C论坛

 找回密码
 立即注册
查看: 99|回复: 9

为什么没有编译器debug也可以运行汇编代码?

[复制链接]
发表于 2022-5-14 15:31:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
debug自带编译器吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-5-14 22:48:08 | 显示全部楼层
源码经过编译器编译生成可执行文件,debug程序加载可执行文件进行调试,这是一般的流程。你说的是源码调试,这个底层怎么实现我还不了解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-5-15 09:27:54 From FishC Mobile | 显示全部楼层
      楼主完全搞错了,在 DOS 时代,编译器不多,很多时候,人们不得不用汇编语言开发应用程序,如何找到编译好的程序中存在的问题,当然是通过实际运行、跟踪和调试程序,debug 就是 DOS 操作系统标配的可执行程序跟踪调试器。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2022-5-15 16:33:49 | 显示全部楼层
jackz007 发表于 2022-5-15 09:27
楼主完全搞错了,在 DOS 时代,编译器不多,很多时候,人们不得不用汇编语言开发应用程序,如何找到 ...

我知道,debug可以调试程序,但是debug上不是也可以直接把汇编指令写入内存吗?这些汇编指令不用经过编译吗?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2022-5-15 21:24:40 | 显示全部楼层
        debug 只有指令级的汇编和反汇编功能,但是,仅限于内存映像,可以修改 .exe 的内存映像,不能直接修改 exe 文件,不能编译源代码文件。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 5 天前 From FishC Mobile | 显示全部楼层
jackz007 发表于 2022-5-15 21:24
debug 只有指令级的汇编和反汇编功能,但是,仅限于内存映像,可以修改 .exe 的内存映像,不能直接 ...

exe可执行文件读取到内存中就相当于创建了一个独立的副本?然后用debug修改的是这个副本而不是原来的exe文件,是这个意思吧?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 5 天前 | 显示全部楼层
本帖最后由 jackz007 于 2022-5-20 11:28 编辑

        exe 文件是由文件头和内存映像两部分构成,其中,文件头定义了程序入口的 CS : IP、堆栈 SS : SP,还有就是数量可变的一系列重定位项。exe 在加载到内存的时候,操作系统会根据文件头中的信息初始化 CS : IP 以及 SS : SP 的数值,并将加载基址的数值加到内存中的每一个重定位项上,这些重定位项都是内存地址,实际上是汇编指令的操作数。exe 文件加载到内存后,实际上只是 exe 文件的内存映像部分,文件头内容并没有直接进入到内存,所以,虽然我们可以用 debug 修改 exe 文件的内存映像,却始终无法直接将这些改变回写入 exe 文件,道理就在这里。
        其实,用 debug 修改 exe 文件也是有办法的,首先,需要将 .exe 的文件扩展名去掉,这样,就可以将 exe 文件整个加载到 debug,这个时候,再修改汇编指令就可以保存了。保存完毕后,将文件名改回 .exe 即可。当然,用这种方法修改 exe 文件需要丰富的经验和扎实的汇编功底,否则,你连代码入口都找不到。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 5 天前 | 显示全部楼层
没看明白 说的什么意思呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 5 天前 | 显示全部楼层
cjy1986823 发表于 2022-5-20 11:15
没看明白 说的什么意思呢

        刷新一下网页试试。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 4 天前 | 显示全部楼层
jackz007 发表于 2022-5-20 11:31
刷新一下网页试试。

好的,谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1

GMT+8, 2022-5-25 15:33

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表