DOSUSB 2.0 免费版的限制原理
两年前,我在写USB的文章时,多次提到了DOSUSB这个东东,这两年也没有关注这方面的变化,最近,有机会重新进入DOSUSB的官方网站(www.dosusb.net),欣喜地发现,这个网站不仅依然存在,而且还有所发展,相继推出了DOSUSB 2.0和DOSUSB3.0,但是不再免费(以前,DOSUSB的二进制代码是免费的,但源代码收费),USB 3.0还不怎么常用(至少在运行DOS的机器上),所以,本文仅对DOSUSB 2.0的免费版做了一个简单的分析,介绍其限制方法,并提出了一个非常简单的破解方法。







两个令人厌恶的提示信息,实际上在告诉我们,DOSUSB已经罢工了。
行号 内存地址 二进制码 反汇编指令 注释 ------------------------------------------------------------------------------------------------ : E93D05 JMP ......(这里是一块数据区) : BBA386 MOV BX,86A3 ; 新分配的段落块(16字节)数量 : C1EB04 SHR BX, ; ES=内存块段地址 : INC BX : B44A MOV AH,4A : CD21 INT ; 修改分配的内存块 :064B B8626B MOV AX,6B62 :064E ADD AX, ; 重新设置堆栈,栈底在6b62h : 8BE0 MOV SP,AX ; 堆栈长度为800h : E8DE72 CALL ; 判断运行环境,设置内存策略 ............(这里省略若干行代码) :069B E82673 CALL 79C4 ; 显示DOSUSB的版本信息 :069E BEBD5E MOV SI,5EBD ; 指向字符串:Time restricted Demo Version :06A1 E83223 CALL 29D6 ; 显示字符串 :06A4 PUSHA :06A5 B42C MOV AH,2C ; DOS功能:取时间 :06A7 CD21 INT (DOS) :06A9 890E0360 MOV [],CX ; CH=小时,CL=分钟 :06AD POPA :06AE PUSHA :06AF 8B0E0360 MOV CX,[] :06B3 33C0 XOR AX,AX :06B5 8AC5 MOV AL,CH ; 小时(--) :06B7 B33C MOV BL,3C ; 3ch=,把小时数换算成分钟数 :06B9 F6E3 MUL BL ; AX中为当前时间的小时部分转换的分钟数 :06BB B500 MOV CH, :06BD 03C1 ADD AX,CX ; 加上当前时间的分钟数,为相对于凌晨的分钟数 :06BF A30F79 MOV [790F],AX ; word [790fh]存储启动程序时的分钟数 :06C2 1E PUSH DS :06C3 33C0 XOR AX,AX :06C5 8ED8 MOV DS,AX :06C7 A0FE04 MOV AL,[04FE] ; :04feh在BIOS数据区,用这个位置记录程序的启动次数 :06CA 3C0A CMP AL,0A ; 当启动次数达到10次时,将不能再次启动,需要重新启动计算机 :06CC JB 06E2 ; <10次启动,可以运行 :06CE NOP :06CF NOP :06D0 1F POP DS :06D1 BEE55E MOV SI,5EE5 ; Terminal Demo Version! :06D4 E8FF22 CALL 29D6 ; 显示一个以\0结尾的字符串 :06D7 BEE15F MOV SI,5FE1 ; 回车,换行 :06DA E8F922 CALL 29D6 ; 显示一个以\0结尾的字符串 :06DD POPA :06DE B44C MOV AH,4C ; DOS功能,退出应用程序 :06E0 CD21 INT (DOS) :06E2 FEC0 INC AL ; 将启动次数+1后存回0:04feh的位置 :06E4 A2FE04 MOV [04FE],AL :06E7 1F POP DS :06E8 POPA :06E9 E9947C JMP ; 继续进行初始化

行号 内存地址 二进制码 反汇编指令 注释 ------------------------------------------------------------------------------------------------ :06EC EB09 JMP 06F7 :06EE 4F 0A - 2E DOSUSB.... :06F7 2E CS: :06F8 803E3E6B00 CMP BYTE PTR [6B3E], :06FD 740E JZ 070D :06FF NOP : NOP : EA00000000 JMP : : 2E CS: : 80263E6B00 AND BYTE PTR [6B3E], :070C CB RETF :070D 2E CS: :070E 800E3E6B01 OR BYTE PTR [6B3E], : PUSHA : PUSH ES : 1E PUSH DS : PUSH DX : 1E PUSH DS : 0E PUSH CS : 0E PUSH CS :071A 1F POP DS :071B POP ES :071C BF426B MOV DI,6B42 :071F A30D60 MOV [600D],AX : 1F POP DS : 8BF2 MOV SI,DX : FC CLD : B92000 MOV CX, : F3 REPZ :072A A4 MOVSB :072B 0E PUSH CS :072C 1F POP DS :072D PUSHA :072E 1E PUSH DS :072F 0E PUSH CS : 1F POP DS : F8 CLC : B402 MOV AH, ; 取CMOS时间 : CD1A INT 1A (BIOS Clock) : JNB ; 执行BIOS成功 : NOP : NOP :073A 1F POP DS :073B POPA :073C JB 078F :073E NOP :073F NOP : PUSH BX : 8AC5 MOV AL,CH ; 时间的小时部分 : E85523 CALL 2A9B ; 将小时的BCD码转换成十进制数 : 8AF8 MOV BH,AL : 8AC1 MOV AL,CL ; 时间的分钟部分 :074A E84E23 CALL 2A9B ; 将分钟的BCD码转换成十进制数 :074D 8AD8 MOV BL,AL :074F 8BCB MOV CX,BX : 5B POP BX : 33C0 XOR AX,AX : 8AC5 MOV AL,CH ; 时间的小时数 : B33C MOV BL,3C ; , : F6E3 MUL BL ; 将小时换算成分钟数 :075A B500 MOV CH, :075C 03C1 ADD AX,CX ; AX=时间的分钟数 :075E 2E CS: :075F 2B060F79 SUB AX,[790F] ; [790Fh]存着程序启动时时间的分钟数 : 3D1400 CMP AX, ; 20分钟 : 1F POP DS : POPA : JB 078F ; 启动不到20分钟 :076A NOP :076B NOP :076C PUSHA :076D BEE55E MOV SI,5EE5 ; 指向字符串:Terminate Demo Version : E86322 CALL 29D6 ; 显示字符串 : BE015F MOV SI,5F01 ; 指向字符串:please unload DOSUSB : E85D22 CALL 29D6 ; 显示字符串 : BEE15F MOV SI,5FE1 ; 指向一个仅有回车换行的字符串 :077C E85722 CALL 29D6 ; 显示回车换行 :077F B8E803 MOV AX,03E8 ; : E8F521 CALL 297A ; 该子程序根据AX的值,延迟若干毫秒。延迟1秒 : POPA : C606476B42 MOV BYTE PTR [6B47], :078B NOP :078C E9E905 JMP 0D78 ............ :0D78 8B1EA061 MOV BX,[61A0] :0D7C 83FB00 CMP BX,+ :0D7F JZ 0D87 :0D81 NOP :0D82 NOP :0D83 B43E MOV AH,3E :0D85 CD21 INT (DOS) :0D87 2E CS: :0D88 80263E6B00 AND BYTE PTR [6B3E], :0D8D BE426B MOV SI,6B42 :0D90 1E PUSH DS :0D91 POP AX :0D92 5A POP DX :0D93 1F POP DS :0D94 1E PUSH DS :0D95 POP ES :0D96 PUSH AX :0D97 1F POP DS :0D98 8BFA MOV DI,DX :0D9A FC CLD :0D9B B92000 MOV CX, :0D9E F3 REPZ :0D9F A4 MOVSB :0DA0 PUSH ES :0DA1 1F POP DS :0DA2 POP ES :0DA3 POPA :0DA4 CF IRET
这段程序,我们的注释要少一些,因为大多和本文话题不相干。

DOSUSB 2.0 免费版的限制原理的更多相关文章
- Vue3.0工程创建 && setup、ref、reactive函数 && Vue3.0响应式实现原理
1 # 一.创建Vue3.0工程 2 # 1.使用vue-cli创建 3 # 官方文档: https://cli.vuejs.org/zh/guide/creating-a-project.html# ...
- hadoop入门(2)——HDFS2.0应用场景、原理、基本架构及使用方法
一.HDFS概述 优点:高容错性.适合批处理.适合大数据处理.流式文件访问:一次写入,多次读取. 缺点:不适合低延迟数据访问.不适合小文件存取(受限于NameNode) ...
- OAuth2.0认证和授权原理
什么是OAuth授权? 一.什么是OAuth协议 OAuth(开放授权)是一个开放标准. 允许第三方网站在用户授权的前提下访问在用户在服务商那里存储的各种信息. 而这种授权无需将用户提供用户名和密 ...
- hOAuth2.0认证和授权原理
原文地址: http://www.6zou.net/tech/what_is_oauth.html http://www.phpddt.com/%E4%BA%8C%E6%AC%A1%E5%BC%80% ...
- [转载] OAuth2.0认证和授权原理
转载自http://www.tuicool.com/articles/qqeuE3 什么是OAuth授权? 一.什么是OAuth协议 OAuth(开放授权)是一个开放标准,允许第三方网站在用户授权的前 ...
- Android 7.0 启动篇 — init原理(二)(转 Android 9.0 分析)
======================================================== ================================== ...
- Android 7.0 启动篇 — init原理(一)(转 Android 9.0 分析)
======================================================== ================================== ...
- .NET Core 3.0 可卸载程序集原理简析
因为最近在群里被问到如何理解 .NET Core 3.0 可卸载程序集,所以就写了这篇简单的分析. 因为时间实在很少,这篇文章只简单的罗列了相关的代码,请配合官方说明文档理解. 另外,书籍<.N ...
- Android 7.0 中 ContentProvider 实现原理
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:汪毅雄 导语: 本文描述了ContentProvider发布者和调用者这两在Framework层是如何实现的. 作为Android的四大 ...
随机推荐
- BZOJ 2661 连连看
http://www.lydsy.com/JudgeOnline/problem.php?id=2661 思路:预处理出每个数字,然后若有x^2=y^2+z^2且z与y互质, s->x 1 ,0 ...
- linux下ifconfig, DNS以及route配置
转载:http://blog.csdn.net/wangjingfei/article/details/5283632/ 熟悉使用ifconfig 会非常方便. ifconfig eth0 新ip 然 ...
- Thinkpad E430+CentOS 6.4+ linux-3.10.12内核网卡驱动(无线+有线)配置
配置并编译安装内核模块和内核后,解压附件 firmware.tar.bz2,拷贝其中的rtlwifi文件夹到/lib/firmware下,然后 执行装载内核模块命令: sudo modprobe rt ...
- 处理emacs-org模式TODO的一个脚本
处理前: 处理后: Table of Contents 1 前言 2 中文的处理 2.1 vim相关 2.2 perl 相关 3 时间相关 4 程序解析 1 前言 最近风帆问我一个问题,也就是处理or ...
- SuperSpider——打造功能强大的爬虫利器
SuperSpider——打造功能强大的爬虫利器 1.爬虫的介绍 图1-1 爬虫(spider) 网络爬虫(web spider)是一个自动的通过网络抓取互联网 上的网页的程序,在当今互联网 中 ...
- unix c 07
进程的结束函数 (exit._Exit) exit 并不是立即退出,退出前执行 用atexit/on_exit函数 注册的函数. exit(int status)中的status可以用 w ...
- UML建模工具-火龙果软件
官网地址:http://code.uml.com.cn/index.asp Bridge桥梁模式 (待逆向) 桥梁模式,通过增加一个类,将抽象部分与它的实现部分分离,使它们都可以独立 ...
- Majority Element II 解答
Question Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times. Th ...
- July 【补题】
A(zoj 3596) bfs,记忆搜都可以, 按余数来记录状态. B(zoj 3599) 博弈,跳过 C(zoj 3592) 简单dp,题意不好懂 D(zoj 3602) 子树哈希, 对根的左右儿子 ...
- html天气预报小插件
<head></head> <body> <iframe width="225" scrolling="no" hei ...