1. 单片机 模拟器
文介绍的是软件加密狗破解的一般思路和方法。做为软件开发者,研究好软件加密的确很重要,不过也很有必要多了解一些关于加密狗解密和破解的知识,加密和破解就像矛和盾一样,对于解密知识了解的越多,那么编写的加密代码就越好,要知道加密永远都比解密要容易的多,只有知己知彼,方能百战百胜。
硬件加密锁,俗程“加密狗”,对于加密狗的破解大致可以分为三种方法,一种是通过硬件克隆或者复制,一种是通过SoftICE等Debug工具调试跟踪解密,一种是通过编写拦截程序修改软件和加密狗之间的通讯。
硬件克隆复制主要是针对国产芯片的加密狗,因为国产加密狗公司一般没有核心加密芯片的制造能力,因此有些使用了市场上通用的芯片,破解者分析出芯片电路 以及芯片里写的内容后,就可以立刻复制或克隆一个完全相同的加密狗。不过国外的加密狗就无法使用这种方法,国外加密狗硬件使用的是安全性很好的自己研制开 发的芯片,通常很难进行复制,而且现在国内加密狗也在使用进口的智能卡芯片,因此这种硬件克隆的解密方法用处越来越少。
对于Debug调试破解,由于软件的复杂度越来越高,编译器产生的代码也越来越多,通过反汇编等方法跟踪调式破解的复杂度已经变得越来越高,破解成本也越来越高,目前已经很少有人愿意花费大量精力进行如此复杂的破解,除非被破解的软件具有极高的价值。
目前加密锁(加密狗)的解密破解工作主要集中在应用程序与加密动态库之间的通讯拦截。这种方法成本较低,也易于实现,对待以单片机等芯片为核心的加密锁(加密狗)具有不错的解密效果。
由于加密锁(加密狗)的应用程序接口(API)基本上都是公开的,因此从网上可以很容易下载到加密狗的编程接口API、用户手册、和其它相关资料,还可以了解加密狗技术的最新进展。
例如,某个国内知名的美国加密狗提供商的一款很有名的加密狗,其全部编程资料就可以从网上获取到,经过对这些资料的分析,我们知道这个加密锁(加密狗)有64个内存单元,其中56个可以被用户使用,这些单元中的每一个都可以被用为三种类型之一:算法、数据值和计数器。
数据值比较好理解,数据值是用户存储在可读写的单元中的数据,就和存储在硬盘里一样,用户可以使用Read函数读出存储单元里面的数据,也可以使用Write函数保存自己的信息到存储单元。
计数器是这样一种单元,软件开发商在其软件中使用Decrement函数可以把其值减一,当计数器和某种活动的(active)算法关联时,计数器为零则会封闭(deactive)这个算法。
算法单元较难理解一些,算法(algorithm)是这样一种技术,你用Query(queryData)函数访问它,其中queryData是查询 值,上述函数有一个返回值,被加密的程序知道一组这样的查询值/返回值对,在需要加密的地方,用上述函数检查狗的存在和真伪。对于被指定为算法的单元,软 件上是无法读和修改的,即使你是合法的用户也是如此,我理解这种技术除了增加程序复杂性以外,主要是为了对付使用模拟器技术的破解。
此加密锁(加密狗)的所有API函数调用都会有返回值,返回值为0的时候表示成功。
因此,破解思路就出来了,就是使用我们自己的工具(如VB、VC等)重新编写构造一个和加密狗API一样的DLL动态库文件,里面也包含Read、 Write等全部API中包含的函数,使用的参量及返回值和原来的函数一样,所有函数返回零。然后对Query、Read函数进行处理,返回应用软件需要 的数值即可。
这个新的DLL文件编写成功后,直接替换掉原来的DLL文件,这时候再运行应用软件,软件访问加密狗的操作就全部会被拦截,拦截程序永远会返回正确的数据给软件,从而实现了模拟加密狗的运行。
以上是目前破解软件加密狗(加密锁)的一些常见思路,对于这种破解,软件开发者还是有相应的一些对策的,下一回我将在《软件加密锁编程技巧》一文中具体介绍一下软件开发者将如何编写安全可靠的代码,使得这种类似的破解方法失效。
2. 单片机指令模拟器怎么用
先学8086的16位汇编,然后再学80386的32位汇编,最后有心的话再学WIN32汇编……
其实只要熟识WIN32下的API,只用汇编就能做软件。不过想要成规模,那工程就太巨大了……
直接学32位汇编也可以,学习资料也很好找。
如果你要学习单片机
学单片机最好有实物做“上机”实验,你要学的是哪个型号就买哪个型号的机器。网上应该也找得到单片机的模拟器,不过个人认为没有实物好,组装单片机也是一种DIY乐趣。另外,单片机其实也是一种计算机,只不过它相对家用电脑太过简单。单片机通常使用各自不同的汇编指令,现在于教学的最流行的单片机应该就是8051系列了。
个人建议先学8086的汇编,然后再学单片机的汇编。
3. 终端模拟器指令代码
手机终端?不清楚具体指什么,我的猜测是:
一、手机终端模拟器的简称,安卓机有这一类APP。在手机上安装Linux系统的终端模拟器,多用在用手机链接Linux系统或执行部分Linux命令,有一种在手机上安卓Linux系统时会遇到;
二、移动终端的另类说法,可能就是想说手机这一类移动终端吧。
4. 单片机 模拟电路
一是可以在实验板(多孔板)放好芯片后,用电线进行连接,这种方法适合作实验,电路不太复杂的; 二是在腐铜板上根据设计好的电路自己用漆什么的画电路,然后用三氯化铁进行腐蚀进行制作; 三是用布图软件将电路布线图用激光打印机(碳粉)打印到专用的转印纸上,然后热转印到腐铜板上,然后再用三氯化铁进行腐蚀制作,这种方法可以作出很好的效果,但是做双面板有一定的难度。如是做正式产品,或是双层以上的板,那就要到工厂去加工了。单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
5. 单片机模拟程序
单片机模拟量输入是电压,因为电流不好测量。单片机的模拟量输入是很常见的参数,比如传感器的信号都是电压量,例如速度传感器是将速度转换为电压,温度传感器是将温度转换为电压,湿度传感器是将温度转换为电压,还有很多其它的都是这样的。
6. 单片机模拟遥控器
单片机红外遥控器编码一般由引导码+地址码(16位)+命令码(16位)组成,在普通的遥控器上所有的按键只是命令码不同,地址码是不变的
7. 单片机指令模拟器手机版
BCD码转换指令;比如说:81D+91D=172D而:81H+91H=112H这里为了将81H+91H结果与81D+91D一致,经过DA有:DA(112H)=112H+60H=172H 虽然一个是16进制一个是10进制但172在形式上是相等的。MOV R5,#81HMOV A, #91HADD A, R5DA A首先81H+91H=112H,此时AC=0,Cy=1,A=12H,所以DA A后A=12H+60H=72H,AC=0,Cy=1,结果为172H,当然运算应该理解为81D+91D=172D。
8. 单片机的指令系统
单片机中的var:Pascal: var 在Pascal 作为程序的保留字,用于定义变量。
9. 模拟器 指令集
模拟器就是这样。手机的CPU/GPU和电脑的CPU/GPU虽然性质相同,但是毕竟面向的环境不同,架构不同,所以本身就有不小的差别,而且模拟器本身就是模拟一整个系统的,模拟器中的系统是无法直接访问你的系统中的硬件的,实际上是通过软件虚构了一个硬件,然后模拟器访问这个虚构的硬件,两个系统之间涉及到一个命令的传递、转换的过程,所以大多数命令效率是不高的,另一些则是很低下的。所以实际上,在模拟器上,100%的涉及到CPU的计算,会交由电脑的CPU,而所有涉及到GPU的计算,会先交由CPU进行一些计算,然后把能交给GPU的交给GPU,然后再交还给CPU然后返回给模拟器,所以电脑的CPU承担的不单单是手机的CPU的工作,还有很多GPU的工作,所以模拟器需要CPU的性能高。最后,手机的GPU性能是很弱的,电脑的GPU通常来说都比它强很多,所以很多时候,本来就没有那么多的工作量,占用自然就很低了。