您好,欢迎访问三七文档
浅谈软件加密与解密主讲人:刘鑫主要内容•1浅谈软件加密•2神秘的解密•3黑客的智慧——免杀•4保护我们的软件传统软件保护技术•传统的软件保护技术似乎有一个通病:为大多数时候软件加密本身实现的都是一种编程的技巧……软盘保护•即钥匙盘,在普通软盘上格式化一些非标准扇区,只有自己的程序可以读这些扇区的内容。在这些扇区上写入密钥,验证信息等,软件执行时读取这些信息并验证。•近年来软盘的使用量大大下降,其实用性已经不比从前。并且,现在这种方法已经不能抵挡解密者的攻击。软件狗•安装在并口、串口等接口上的硬件电路,同时有一套适用于各种语言的接口软件和工具软件。当被狗保护的软件运行时,程序向插在计算机上的软件狗发出命令让它执行,根据执行结果验证软件是否合法。•这种方法需要附加的硬件,成本比较高,用户使用起来也不方便。序列号保护•软件要求用户输入用户名,发送给开发者,由开发者根据用户名计算出序列号,返回给用户,在用户端验证。•数学原理:=F(用户名)或用户名称=F逆(序列号)•如果有一对(序列号,用户名)被散发,任何人都可以用这对(序列号,用户名)“注册”软件。什么是壳壳就是保护程序不被修改或反编译的一段程序加壳:其实是利用特殊的算法,对EXE、DLL文件里的资源进行压缩。类似WINZIP的效果,只不过这个压缩之后的文件,可以独立运行,解压过程完全隐蔽,都在内存中完成。解压原理,是加壳工具在文件头里加了一段指令,告诉CPU,怎么才能解压自己。当你加壳时,其实就是给可执行的文件加上个外衣。用户执行的只是这个外壳程序。当你执行这个程序的时候这个壳就会把原来的程序在内存中解开,以后的就交给真正的程序。所以,这些的工作只是在内存中运行的,是不可以了解具体是怎么样在内存中运行的。通常说的对外壳加密,都是指很多网上免费或者非免费的软件,被一些专门的加壳程序加壳,基本上是对程序的压缩或者不压缩。因为有的时候程序会过大,需要压缩。但是大部分的程序是因为防止反跟踪,防止程序被人跟踪调试,防止算法程序不想被别人静态分析。加密代码和数据,保护你的程序数据的完整性。不被修改或者窥视你程序的内幕。壳的介绍•所有压缩壳:upx、AsPacK、UPacK等,初级保护壳:yC、Softsentry、VisualProtect、PESHiELD、ArmadilloStandardProtection、tELock、PESpin等•中级保护壳:ArmadilloCopyMem-II、ASProtectV1.X、NTkrnlProtector、PE-Armor、Dongles、SVKProtect、Obsidium等•高级保护壳:EncryptPE、PrivateexeProtector、ArmadilloNanomites、ASProtectV2.X、EXECryptor、StarForce、SafeDisc、VMProtect、Themida等演示脱壳!神秘的解密•很多人可能觉得解密很神秘,那么解密神秘吗?到底什么是解密呢?简单点且不太准确的说,就是解开密码。去掉限制。有时我们也称为破解(crack),做破解的人我们称为cracker。你见过破解的东西吗?当然,你用的Office2003是花多少钱买的?4块?10块?哇,好贵啊!可是你知道正版的多少钱吗?这里是微软提供的价格直接从Microsoft订购OfficeProfessionalEdition2003,新用户价格OfficeProfessionalEdition2003RMB3,822生活中基本所有用过的杀毒软件都是破解的!以注册码为例我们把用户名按照某种方法运算得到一个真正的注册码和用户输入的进行比较不就知道了吗?也就是真正的注册码=f(用户名)Y=f(x)然后就是很经典的比较了,为什么说经典呢?因为有60%的软件是这么做的。真正的注册码=用户输入的注册码吗?去掉所有限制,正版了提示注册错误Say88聪明的你是否想到了什么?关键就是这里的比较YN决定何去何从比较汇编比较那么上面的流程在汇编语言里面是怎么实现的呢?比较有2种方式,直接和间接,直接就是用:cmpx,y(比较值或者短字符串)•je(jne)label程序比较间接的呢?调用一个子程序比较,如下面的代码if(strcmp(&x,&y))//如果strcmp返回值是1printf(“right”);else……………..//当然是错误拉用汇编语言描述呢?push&x;push&y;callstrcmp;testax,ax;判断返回值(也就是出口参数)je……一个真正的Cracker必须掌握•1.德;要有社会道德意识,必须遵守一些规范!2.数学;要尽可能的多学一些数学知识,必须具备扎实的数学基础!3.外语;最起码要有一定的英语阅读能力,当然掌握得越多越好!4.计算机知识;必须熟练掌握8088系列x86汇编语言和一门高级程序语言!5.悟性;必须具有一些触类旁通的本领,死记死背定律以及公式是不行的!•我缺乏的东西:2,3,4,5,所以我是普通菜鸟免杀关于免杀的来源为了让黑客的木马在各种杀毒软件的威胁下活的更久!免杀和查杀1.文件免杀和查杀:不运行程序用杀毒软件进行对该程序的扫描,所得结果。2.内存的免杀和查杀:判断的方法,运行后,用杀毒软件的内存查杀功能.用OD载入,分析杀毒软件的内存查杀功能.免杀续什么叫特征码•1.含意:能识别一个程序是一个病毒的一段不大于64字节的特征串.•2.为了减少误报率,一般杀毒软件会提取多段特征串,这时,我们往往改一处就可达到免杀效果,当然有些杀毒软件要同时改几处才能免杀。免杀的原理1通过工具定位特征码2用OD修改特征码特征码的修改方法•方法一:直接修改特征码的十六进制法•方法二:修改字符串大小写法abcd-AbcD•方法三:等价替换法je-jneadd10-sub-10•方法四:指令顺序调换法•方法五:通用跳转法把特征码移到零区域(指代码的空隙处),然后一个JMP又跳回来执行.对软件的保护1.加密原程序2.加密壳程序自身代码3.反跟踪4.运行时检查自身文件是否被改5.运行时检查自身代码是否被改动6.验证机器合法性7.代码变形8.反API断点9.反Dump谢谢大家!最后演示一个破解的例子!
本文标题:浅谈软件加密与解密
链接地址:https://www.777doc.com/doc-2317679 .html