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的四大 ...
随机推荐
- android 登录界面
http://blog.csdn.net/jiabinjlu/article/details/6920967 http://blog.csdn.net/myserverthepeople/articl ...
- BZOJ 1264 基因匹配Match(LCS转化LIS)
题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=1264 题意:给出两个数列,每个数列的长度为5n,其中1-n每个数字各出现5次.求两个数列 ...
- LeetCode_Set Matrix Zeroes
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. 很挫的一个想 ...
- format %x invalid or incompatible with argument问题解决方法
现在还有好多朋友在用Protel 99se来画图,可是在现在的双核或四核电脑上运行Protel出现错误并且弹出对话框:“format '%x' invalid or incompatible with ...
- linux下strace命令详解
简介 strace常用来跟踪进程执行时的系统调用和所接收的信号. 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核 ...
- Axure设计分析作业-实例解析
本文转载自人人都谁产品经理,作者完全使用Axure做了这一个产品需求文档.文档地址:http://1passwordmanager.sinaapp.com/ 大家可以先睹为快.这个PRD完全使用axu ...
- Find the Celebrity 解答
Question Suppose you are at a party with n people (labeled from 0 to n - 1) and among them, there ma ...
- JQuery DOM 有关代码练习
//累加你选择的个数 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <hea ...
- 平时的笔记04:处理stagger模块
#! /usr/bin/env python3 # # __init__.py # From the stagger project: http://code.google.com/p/stagger ...
- [HDU 1535]Invitation Cards[SPFA反向思维]
题意: (欧洲人自己写的题面就是不一样啊...各种吐槽...果断还是看晕了) 有向图, 有个源叫CCS, 求从CCS到其他所有点的最短路之和, 以及从其他所有点到CCS的最短路之和. 思路: 返回的时 ...