软件破解思路_第1页
软件破解思路_第2页
软件破解思路_第3页
软件破解思路_第4页
软件破解思路_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、神秘的解密1BY 三人行2很多人可能觉得解密很神秘,那么解密神秘吗?1.我们来看看大家最关心的解密。到底什么是解密呢?简单点且不太准确的说,就是解开密码(等会我将为大家实例演示一个破解密码的例子,兴奋)有时我们也称为破解(crack),做破解的人我们称为cracker3Q:学破解对我来说有什么好处?(这个年代,没有好处的事情,你恐怕不会做吧,呵呵) A:这个问题应该你自己来回答,呵呵,你为什么要学?“我想免费使用软件”倒.那多少也算是个目的,但我希望你不要只抱这种目的(目前国内共享软件业还有待发展)。1.德; 要有社会道德意识,必须遵守一些规范!友情提示:不懂汇编的人永远只能是菜鸟!4你见过破

2、解的东西吗?当然,你用的Office Professional Edition 2003是花多少钱买的?4块,10块,哇,好贵啊,可是你知道正版的多少钱吗?这里是微软提供的价格直接从Microsoft订购 Office Professional Edition 2003,新用户价格Office Professional Edition 2003RMB 3,8225我没有装这么贵的东西,呵呵,那好,你用过qq吧(中国人都知道)那个能显示别人ip地址的qq就是经过破解的。你看电影用的豪杰超级解霸交钱注册了吗?我们看电影享受了,可是。 豪杰公司的员工呢?所以如果大家学会了破解,也请大家不要传播破解软

3、件。保护中国的软件产业6我想很多人已经迫切的想看看到底是怎么操作的,不急,很快就开始了,我们先来预热一下,看一点准备知识我们知道一个软件要我们交钱注册通常都会给我们一点限制,如:只能使用30次,15天,功能限制。大家的windows xp不激活只能用30天吧7那么软件怎么判断我们是否注册了呢?不要忘了,软件最终是按照人的思维做的,我们回到自身来,“如果是你,你怎么判断别人是否注册了呢”,“我要别人输入用户名和注册码啊”,聪明的想法,很多软件也是这样做的,如豪杰超级解霸。具体一点呢?8我们把用户名按照某种方法运算得到一个真正的注册码和用户输入的进行比较不就知道了吗?Yeah,也就是真正的注册码

4、= f(用户名)Y = f(x)然后就是很经典的比较了,为什么说经典呢?因为有60%的软件是这么做的,到底是什么比较呢,看看9真正的注册码=用户输入的注册码吗?去掉所有限制,正版了提示注册错误Say 88聪明的你是否想到了什么?关键就是这里的比较YN决定何去何从比较10 那么上面的流程在汇编语言里面是怎么实现的呢? 比较有2种方式,直接和间接,直接就是用:cmp x, y (比较值或者短字符串)je (jne) label 11间接的呢?调用一个子程序比较,如下面的代码if (strcmp(&x, & y)/如果strcmp返回值是1printf(“right”);else./当然是错误拉用汇

5、编语言描述呢?push &x;push &y;call strcmp;test ax,ax;判断返回值(也就是出口参数)je12关键的地方就是上面的比较,如果我们改变的判断条件呢?如果改成不相等就注册成功,那么。(嘿嘿,某同志传来不怀好意的笑声),那么不管我们输入什么都是“正版”的了,没有交钱的正版13关键找到了,但是,(某听众问道:“我们知道程序在那里比较呢?”),非常聪明的想法,我们再看看比较的地方下一张幻灯片14真正的注册码=用户输入的注册码吗?去掉所有限制,正版了提示注册错误Say 88这里会有错误提示的噢,在这之前呢,就是比较啊YN决定何去何从比较15有了前面的基础,我们就可以仔细分

6、析了,分析的方法有2中:1.静态分析(就象我们用debug的u命令,然后静静的看反汇编的代码),或者打印出来慢慢看2.动态分析,就是边分析边调试,查看一些寄存器的值标志位,等等(所以debug是动静结合啊)16为什么可以调试可执行程序呢调试可执行程序的理论基础:我们都知道在汇编语言里面可以用debug来调试程序。但是为什么可以?其实和简单,因为机器只识别的是0和1,我们称之为机器码,而我们的汇编语言与机器码是一一对应的,所以我们可以根据机器码得到对应的汇编代码如:在debug下我们可以看到17用debug测试一下:-a1370:0100 mov ax,bx1370:0102-u1001370:

7、0100 89D8 MOV AX,BX这里的89D8就是MOV AX,BX的机器码这么看来,只要机器可以执行我们都可以看到对应的汇编代码18我们知道程序是顺序执行的,只要我们找到提示出错的地方,然后再往前面找找不就看到了比较的关键地方了吗!再次欣赏经典比较下一张幻灯片19真正的注册码=用户输入的注册码吗?去掉所有限制,正版了提示注册错误Say 88这里会有错误提示的噢,在这之前呢,就是比较啊YN决定何去何从比较20下面开始实战演习,我们以一个简单的破解密码为例子,准备好了吗?下面我们边操作边解释一些名词21首先,拿起我们手中的武器,这里我选择ollydbg,这是一款德国人开发的动态调试工具,什

8、么是动态调试工具呢?就象我们调试汇编程序用的debug,也是动态调试工具,相对的肯定还有静态的拉,当然,经典的有ida和w32dasm,其实这里的ollydbg同时具有动态和静态特性,我们很快就会体验它的强大功能.开始精彩的演示,突破密码限制:开始操作22回顾刚才的操作:看到了什么,提示我们:“password wrong”,用ollydbg载入这个动画,查找程序用到的字符串,找到password wrong,下个断点,还记得前面的理论吗?再向前找找就可以找到比较的关键地方了,好的,找到的地址是:0040203F23我们看看前面的几条指令:我们把这里的代码放到word下面分析下面我们看看,程序

9、的比较流程:分析截取的部分关键代码24Eax = = 0去掉密码限制提示密码错误Call stricmpYN25我们继续分析代码(真正的宝藏还没有挖出来呢)A PUSH DWORD PTR DS:ESI+A4 ; /s200402030 LEA EAX,DWORD PTR SS:EBP-34 ; |00402033 PUSH EAX ; |s100402034 CALL DWORD PTR DS: ; Call之前有2个push操作,呵呵,压入的是什么呢?不是密码吧,我们在00402034 下一个断点,运行看看,看看eax是什么内容呢?“windows“,这个是什么呢?输入看看26哇,果然是密

10、码啊,不错,不错。那么我们是否应该满足了呢?还没有!如果我要帮助朋友?而别人又没有我们的破解工具,也不会修改呢?当然我们可以跟踪出密码,然后给别人就ok了,可是。如果有几个动画呢?你每一个都要跟踪吗?那太麻烦了?27怎么办,我们要想出一种通用的办法?让计算机自动去完成呢?再次灵光一现,脑海里闪过一个词:编程去完成下面进入高级专题,破解补丁的编写28大家基本都学过c语言,可能学完了觉得没有什么用,我们今天就来用一用,我们不能白学啊前面我们把je改成了jne,随便输入密码都可以了实质是把机器码由74h改成75h,因为机器码和汇编指令是一一对应的,那么我们只要写个小东西,修改就可以了。我已经写好了,

11、很短,很好懂。Crack.c,我们分析一下29#include #include int main(void)FILE *fp_out;/要写入的文件printf(ntttt Copy Right by ngautn);printf(Cracking.n);30/打开文件test.exe if (fp_out = fopen(test.exe, r+)=NULL) printf(error! Can not open test.exe!nn);printf(Press any key to continuen);getchar();exit(0);/定位到要修改的地方,这里是 0 x203f,

12、为什么呢?31开始:获取偏移地址演示开始实际操作32/找到那条je指令,既0040203F这个地址 /在底部可以看到offset是 0 x203ffseek(fp_out, 0 x203f, SEEK_SET);fputc(0 x75, fp_out); /写入数据0 x75,也就是把机器码74改为75, /汇编则是 je 改为了jne fclose(fp_out);33printf(thanks for using, already crackedn);printf(nttttngaut All rights reserved.nn);printf(Press any key to cont

13、inuen);getchar();return 0;34再次回顾补丁程序:1.打开要修补的程序2.定位到关键地方3.写入数据35特别提示:实际操作的过程不是通用的,通用的是你聪明的大脑!36一个真正的Cracker必须熟练掌握以下几点:1.德; 要有社会道德意识,必须遵守一些规范!2.数学; 要尽可能的多学一些数学知识,必须具备扎实的数学基础!3.外语; 最起码要有一定的英语阅读能力,当然掌握得越多越好!4.计算机知识; 必须熟练掌握8088系列x86汇编语言和一门高级程序语言!5.悟性; 必须具有一些触类旁通的本领,死记死背定律以及公式是不行的!此仅为兄弟个人观点!此只是算是Cracker,

14、要想登堂入室,同志尚需努力! Ivanov 我缺乏的东西:2,3,4,5,所以我是普通菜鸟37中国最成功的破解组织 在1999年的11月,两个Crack技术的高手 - Sun Bird和JOJO,有感于当时中国虽然拥有着世界上最顶尖的Cracker技术和人才,却没有自己的 Group,所以很多国内顶尖的 Cracker 加入了国外的 Group(想想看国际上著名的 Group 中拥有多少中国的Cracker?)。所以他们携手创建了中国目前为止最成功,代表国内最高破解技术的Crack组织-CCG(CHiNA CrACKiNG GrOUp)即中国破解联盟 38发展最快的破解组织 2001年3月,中

15、国破解组织BCG(BeNGiNNErs CrACKiNG GrOUp)成立,短短的半年时间,BCG的成员已经发展到了47名,(现在远超过这个数,具体数目不详)由于BCG的初衷就正如它的名字一样“初学者破解组织”,所以有很多初学者由于无法搞定CCG的官方正式CrackMe都纷纷加入了BCG,当然BCG中也有非常多的高手,但是整体水平是无法和CCG相媲美的,而且BCG中的大多高手都是CCG组织的成员,但是由于其面向初学者,所以组织发展速度之快超乎人们的想象! 39JOJO老大总结了一下Crack技术的几个阶段,再次转贴一下,并分析个组织需要的成员阶段。以飨初学者。 _第一个阶段应该算是爆破的阶段(

16、暂不考虑加壳的因素),绝大多数软件都可以通过修改来得到破解,它需要我们大致了解程序加密的过程并准确的找到其判断点,由于一些现成的工具和经验使我们找这些近乎成为机械的运动(尤其是在WINDOWS下的软件)所以爆破一个软件变的相对容易,但不是说一定是容易的。 40第二个阶段:如果有一天你不是一上来就是拿着斧头砍来砍去而是从内存里嗅出了一串儿注册码的话,那就恭喜你进阶了。 第三个阶段应该是追出非明码比较的注册码了,它们通常多为多条件和计算型形式,这个时候你要拿出笔和纸来,在搞清楚部分算法的同时,找到合适的断点让软件的自动计算和你的手动计算结合一起算出注册码来。 41第四个阶段就是作出通用的注册机。这需要你完全搞明白注册算法和加密原理。通常这个过程是非常痛苦的。如果你对自己充满信心想体会一下的话那最好的选择就是AJJ的CRACKME2层层设防了。通常到这个时候你就可以算是一名高手了。 42第五个阶段就是学习掌握一定的密码学知识,并了解常见的公共加密算法,做出利用成熟加密算法或密码学原理加密软件的注册机或提出解决之方法。如果你能达到这个境界,那么恭喜你可以成为一名职业选手了,你将和世

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论