找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 3168|回复: 0

借助NASM进行文件分割

[复制链接]

1111

主题

1651

回帖

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
244
威望
743 点
宅币
24235 个
贡献
46222 次
宅之契约
0 份
在线时间
2296 小时
注册时间
2014-1-26
发表于 2014-2-16 03:03:52 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

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

×
NASM作为一款汇编器并不只是用来当做汇编的编译器的。它强大的预处理能被我们运用在别的地方。
它那预处理可是比C、C艹还强大的哦。
那么说正事,如何运用NASM分割文件呢?
首先建立一个“新建 文本文档.TXT”,改名为“CUTFILE.ASM”
用记事本打开,输入以下内容:
  1. %defstr INPUTFILE INFILE
  2. incbin INPUTFILE,FROM,LEN
复制代码
然后就地召唤出CMD。召唤CMD的方法戳这里。召唤出CMD之后,输入以下CMD命令:
  1. nasm -dINFILE="要分割的文件" -dFROM=开始字节 -dLEN=提取长度 CUTFILE.ASM -o 输出文件
复制代码
然后按回车运行,就能分割文件了。现在来详细讲一下用法。
1、“开始字节”是你要从文件的哪里提取数据。
2、“提取长度”是你要从文件中提取多少字节。
3、“输出文件”是你最终提取出来的数据保存的地方。
嗯,这样就能做到分割文件了。那么我再详细讲讲它的原理。
首先我们建立的“CUTFILE.ASM”其实应该算作是源码。在讲源码以前先讲编译命令行吧。
命令行中的“-d”是“预处理定义宏”的作用,用法是“-d宏名=值”。我们在命令中定义了三个宏:
INFILE
FROM
LEN
然后再看看源码的内容。
%defstr是将宏展开后的值当做字符串处理。那么第一句就是把INFILE的值当做字符串定义为INPUTFILE。
incbin是NASM源码用来表示包含一个二进制文件的伪指令。它的格式是:
  1. incbin 文件名[,开始字节[,提取长度]]
复制代码
然后我们给的编译命令里面已经给出了这三个参数的值,因此事实上我们是借助incbin这个伪指令来分割文件。最终NASM“编译”了CUTFILE.ASM,得到了分割的文件。
回复

使用道具 举报

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-4-20 08:17 , Processed in 0.042474 second(s), 31 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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