![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-10-31 12:20 |
共 47,815 主题排行 / 349,930 发帖 / 今日 0 篇 / 48,290 会员排行 |
| DOS开发编程 & 发展交流 (开发室) » [原创] JPEG Recover 源代码 C&ASM |
| 可打印版本 1,283 / 2 |
| 第1楼 sevekwl | 发表于 2008-04-25 22:24 |
| 新手上路 发帖 6 积分 18 | |
|
[原创] JPEG Recover 源代码 C&ASM 两个月前完成的一个工具,用于恢复误格式化后硬盘的照片。程序主要涉及分区表读取,关于分区表的格式以及逻辑结构可以从程序中得到。代码比较混乱,风格也不好,注释又不多。
英文字符界面。 《JPEG Recover(照片恢复器)自述文件》 经过一段时间的摸索,终于把这个东西完成了,虽然有不少的瑕疵,代码也非常混乱, 但这算是我的第一个独立坚持完成的作品。它是一个不支持中文,并且操作复杂,对使用 者有较高要求的怪胎,下面简单介绍一下这个怪胎。 一:命令参数 JPEGRCV不提供内置帮助信息,所以不支持“/?”、“/h”等参数。仅有一组硬盘选择 参数,从 hd0-hd9,对应 0x80-0x89 共计10个物理硬盘驱动器号。直接在命令行下输入 JPEGRCV 或带入非 hd0-hd9的参数,这个怪胎不会作出任何错误判断,它会将 hd0 作为默 认参数来使用。 二:运行参数 JPEGRCV运行后会列出用户所选择硬盘的分区信息,并提示用户输入一系列参数,其中 包括你所要扫描的起始扇区号、需要扫描的总扇区数。你可以根据它所列出的分区信息来确 定你所要输入的参数(如下表)。 ================================================================================ JPEG Recover 0.1.60.2008 (C)Copyright 2007-2008 by JIANGYONG Hard disk number : 0x80 NO. State Start Max System Size 0: A 3f fa08bd FAT32 8001MB 1: N fa093b 105cced FAT32 8377MB Please input start sector(HEX): 3f Start sector is : 3f Are you sure ? (Y/N) y Please input sector count(HEX): fa08db Sector count is : fa08db Are you sure ? (Y/N) y Now scaning ! Are you sure ? (Y/N) ================================================================================ 数据及含义: NO. 编号 State 状态(是否活动) Start 起始扇区号 Max 扇区数 System 文件系统类型 Size 容量 三:扫描和恢复 当所有数据输入完毕并确认后,程序开始扫描硬盘,并将获得的信息存放到JPEGRCV.LOG 和JPEGERR.LOG中,扫描任务完成后程序会将找到的图片恢复到当前路径的JPEGFIND和JPEGERR 子目录中。因为有可能会遇到一些已经损坏的没有正确结束标记的文件,为节约时间,我将所 有文件的大小限制在10MB以下,若你的照片超过这个大小有可能无法正确恢复,所有这些不能 正确恢复的照片,都被存放到 JPEGERR 中。 另:在扫描磁盘的过程中按 ESC 键,程序会终止,这是我为 了方便调试而设置的,后来就一直没有取消。 JPEG Recover 0.1.24.2008 (C)Copyright 2007-2008 by JIANGYONG Current : 1091f Completed : 100.00% Time used : 00:00:04 Find files: 32 Some Error: 0 FileSector: 10 ============ Saveing files ============ NO.32 : JPEGFIND\00007D37.JPG 118 KB NO.31 : JPEGFIND\00007E2F.JPG 56 KB NO.30 : JPEGFIND\00007EA7.JPG 49 KB NO.29 : JPEGFIND\00007F1F.JPG 1384 四:关于代码、注释和运行环境 代码很混乱,也基本上没有注释。因为我确实不擅长使用C或者C++,并且没有一个很好用的 编辑器,那些代码中并没有什么优秀算法或结构----这是我不擅长使用C的原因。并且,我对 C/C++的一些基本概念也含混不清,包括很多ANSI C 所提供的标准函数也不了解,当我要用到它 们的时候就立即到网上去找,对于那些混乱的代码,就请高手们不要笑话了。 C 编译环境: TC++3.0 ASM编译环境: nasm 0.98 运行环境: 实模式 DOS、至少一个 FAT 分区 并且该分区的剩余空间足够存放需要找回的数据。 硬件环境: 80386及以上CPU,1MB以上内存 压缩包内目录结构 │ MK.BAT 编译命令 │ error.h 错误处理 │ JPEGRCV.C 主程序文件 │ extint13.asm 扩展INT13H读盘功能代码 │ NASM.EXE nasm 编译器,用于编译 extint13.asm │ readme.txt 《JPEG Recover(照片恢复器)自述文件》 │ ├─INC │ SUPERX86.INC X86指令增强宏 │ ├─include │ define.h 数据类型定义 │ hdd.h 硬盘结构相关的定义 │ key.h 键盘定义 │ ├─ERROR 编译器错误输出 └─JPEGRCV 目标文件输出 JPEGRCV.EXE 目标文件(成品) 五:收获 在投入这个作品之前,我一直以为 FAT系列分区表中,每一个表的线性地址项就是当前分区 起始扇区的绝对扇区号,其实并不是这样,实际上它只是当前逻辑分区所在扩展分区的逻辑扇区 号,就因为这一点,在写分区表读取部分的代码时,让我困惑了很长一段时间。 六:完成这个怪胎的原因 这个软件目前并没有多少实际用途,因为比它更优秀的同类软件多如牛毛。我之所以完成它, 其一:是受朋友所托,帮忙找回一些照片,因为当时我并没有找到能够按磁盘扇区扫描并恢 复照片的工具。 其二:是因为我确实想要详细的了解一下分区表的真正结构,以往只是从资料上得到的一些 概念上的印象而已。 现在这两个目的我都达到了,所以,就我个人来说,这是一个成功的作品。 2008年3月18日 作 者: 飞翔 QQ : 6830373 E-Mail: [email protected] 下载:JPEG Recover 源代码 |
|
| 第2楼 Farmer | 发表于 2008-04-26 16:15 |
| 初级用户 发帖 19 积分 48 | |
|
支持原创,和分享代码,谢谢
|
|
| 第3楼 zyl910 | 发表于 2008-04-28 12:32 |
| 中级用户 发帖 126 积分 282 | |
|
谢谢源码,学习ing...
|
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |