软件破解的思路

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

真正的注册码=用户输入的注册码吗?
N
Y
去掉所有限制,正版了
提示注册错误 Say 88
聪明的你是否想到了什么?关键就是这里的比较
那么上面的流程在汇编语言里面是 怎么实现的呢? 比较有2种方式,直接和间接,直接 就是用: cmp x, y (比较值或者短字 符串) je (jne) label
间接的呢?调用一个子程序比较,如下面的代码 if (strcmp(&x, & y)) printf(“right”); else……………..//当然是错误拉 用汇编语言描述呢? push &x; push &y; call strcmp; test ax,ax ;判断返回值(也就是出口参数) je…… //如果strcmp返回值是1
我们知道一个软件要我们交钱注册通常都会 给我们一点限制,如:只能使用30次,15天, 功能限制。。。 大家的windows xp不激活只能用30天吧
那么软件怎么判断我们是否注册了呢? 不要忘了,软件最终是按照人的思维做 的,我们回到自身来,“如果是你,你 怎么判断别人是否注册了呢”,“我要 别人输入用户名和注册码啊”,聪明的 想法,很多软件也是这样做的,如豪杰 超级解霸。
下一张幻灯片
决定何去何 从比较
真正的注册码=用户输入的注册码吗?
N
Y
去掉所有限制,正版了
提示注册错误 Say 88
这里会有错误提示的噢,在这之前呢,就是比较啊
下面开始实战演习,我们以一个简单 的破解密码为例子,准备好了吗? 下面我们边操作边解释一些名词
首先,拿起我们手中的武器,这里我选择 ollydbg,这是一款德国人开发的动态调试工具, 什么是动态调试工具呢?就象我们调试汇编程 序用的debug,也是动态调试工具,相对的肯定 还有静态的拉,当然,经典的有ida和w32dasm, 其实这里的ollydbg同时具有动态和静态特性, 我们很快就会体验它的强大功能.开始精彩的演 示,突破密码限制:
哇,果然是密码啊,不错,不错。 那么我们是否应该满足了呢?还没有! 如果我要帮助朋友?而别人又没有我们的破 解工具,也不会修改呢? 当然我们可以跟踪出密码,然后给别人就ok 了,可是。。。。。 如果有几个动画呢?你每一个都要跟踪吗? 那太麻烦了?
怎么办,我们要想出一种通用的办法?让 怎么办,我们要想出一种通用的办法? 计算机自动去完成呢?再次灵光一现, 计算机自动去完成呢?再次灵光一现,脑 海里闪过一个词: 海里闪过一个词:
我没有装这么贵的东西,呵呵,那好,你 用过qq吧(中国人都知道)那个能显示别人ip 地址的qq就是经过破解的。 你看电影用的豪杰超级解霸交钱注册了吗? 我们看电影享受了,可是。。。 豪杰公司 的员工呢? 所以如果大家学会了破解,也请大家不要 传播破解软件。保护中国的软件产业
我想很多人已经迫切的想看看到底是怎么操 作的,不急,很快就开始了,我们先来预热 一下,看一点准备知识
你见过破解的东西吗? 当然,你用的Office Professional Edition 2003是 花多少钱买的? 4块,10块,哇,好贵啊,可是你知道正版 的多少钱吗? 这里是微软提供的价格 直接从Microsoft订购 Office Professional Edition 2003,新用户价格 Office Professional Edition 2003 RMB 3,822
•JOJO老大总结了一下Crack技术的几个阶段,再 次转贴一下,并分析个组织需要的成员阶段。以 飨初学者。 ________________________________________ ______ 第一个阶段应该算是爆破的阶段(暂不考虑加壳 的因素),绝大多数软件都可以通过修改来得到 破解,它需要我们大致了解程序加密的过程并准 确的找到其判断点,由于一些现成的工具和经验 使我们找这些近乎成为机械的运动(尤其是在 WINDOWS下的软件)所以爆破一个软件变的相对 容易,但不是说一定是容易的。
2.动态分析,就是边分析边调试,查看一些寄存器 的值 标志位,等等(所以debug是动静结合啊)
为什么可以调试可执行程序呢
调试可执行程序的理论基础: 我们都知道在汇编语言里面可以用debug 来调试程序。但是为什么可以? 其实和简单,因为机器只识别的是0和1,我 们称之为机器码,而我们的汇编语言与机器 码是一一对应的,所以我们可以根据机器码 得到对应的汇编代码 如:在debug下我们可以看到
开始:获取偏移地址演示 开始实际操作
//找到那条je指令,既0040203F这个地址 //在底部可以看到offset是 0x203f fseek(fp_out, 0x203f, SEEK_SET); fputc(0x75, fp_out); //写入数据0x75,也 就是把机器码74改为75, //汇编则是 je 改为了jne fclose(fp_out);
分析截取的部分关键代码
下面我们看看,程序的比较流程:
Call stricmp
Eax = = 0 N Y
去掉密码限制 提示密码错误
我们继续分析代码(真正的宝藏还没有挖出来呢) 0040202A PUSH DWORD PTR DS:[ESI+A4] 00402030 LEA EAX,DWORD PTR SS:[EBP-34] 00402033 PUSH EAX 00402034 CALL DWORD PTR DS:[<&MSVCRT._stricmp>] ; Call之前有2个push操作,呵呵,压入的是什么呢? 不是密码吧,我们在00402034 下一个断点,运行看 看, 看看eax是什么内容呢?“windows“,这个是什么呢? 输入看看 ; |s1 ; /s2 ;|
下一张幻灯片
决定何去何 从比较
真正的注册码=用户输入的注册码吗?
N
Y
去掉所有限制,正版了
提示注册错误 Say 88
这里会有错误提示的噢,在这之前呢,就是比较啊
有了前面的基础,我们就可以仔细分析了,分析 的方法有2中:
1.静态分析(就象我们用debug的u命令,然后静静 的看反汇编的代码)条件呢?如果 改成不相等就注册成功,那么。。 (嘿嘿,某同志传来不怀好意的 笑声),那么不管我们输入什么 都是“正版”的了,没有交钱的 正版
关键找到了,但是, 某听众问道 某听众问道: 关键找到了,但是,(某听众问道:“我 们知道程序在那里比较呢? , 们知道程序在那里比较呢?”),非常聪 明的想法, 明的想法,我们再看看比较的地方
神秘的解密
BY 三人行
很多人可能觉得解密很神秘,那么 解密神秘吗? 1.我们来看看大家最关心的解密。 到底什么是解密呢?简单点且不太 准确的说,就是解开密码(等会我 将为大家实例演示一个破解密码的 例子,兴奋………)有时我们也称 为破解(crack),做破解的人我们 称为cracker
Q:学破解对我来说有什么好处?(这个年代, 没有好处的事情,你恐怕不会做吧,呵呵) A:这个问题应该你自己来回答,呵呵,你为 什么要学?“我想免费使用软件”倒...那多 少也算是个目的,但我希望你不要只抱这种 目的(目前国内共享软件业还有待发展)。 1.德; 要有社会道德意识,必须遵守一些规 范! 友情提示:不懂汇编的人永远只能是 菜鸟!
具体一点呢??????????
我们把用户名按照某种方法运算得到 一个真正的注册码和用户输入的进行 比较不就知道了吗?Yeah,也就是 真正的注册码 = f(用户名) Y = f(x) 然后就是很经典的比较了,为什么说经 典呢? 因为有60%的软件是这么做的,到底是 什么比较呢,看看
决定何去何 从比较
#include <stdio.h> #include <string.h>
int main(void) { FILE *fp_out; //要写入的文件
printf("\n\t\t\t\t Copy Right by ngaut\n"); printf("Cracking......\n");
//打开文件test.exe if ((fp_out = fopen("test.exe", "r+"))==NULL) { printf("error!!! Can not open test.exe!!!\n\n"); printf("Press any key to continue\n"); getchar(); exit(0); } //定位到要修改的地方,这里是 0x203f,为什么 呢?
printf("thanks for using, already cracked\n"); printf("\n\t\t\t\tngaut All rights reserved.\n\n"); printf("Press any key to continue\n"); getchar();
return 0; }
•中国最成功的破解组织 中国最成功的破解组织
在1999年的11月,两个Crack技术的高手 -Sun Bird和JOJO,有感于当时中国虽然拥有着世 界上最顶尖的Cracker技术和人才,却没有自己的 Group,所以很多国内顶尖的 Cracker 加入了国外 的 Group(想想看国际上著名的 Group 中拥有多 少中国的Cracker?)。所以他们携手创建了中国 目前为止最成功,代表国内最高破解技术的Crack 组织--CCG(CHiNA CrACKiNG GrOUp)即 •中国破解联盟
开始操作
回顾刚才的操作: 看到了什么,提示我们:“password wrong”, 用ollydbg载入这个动画,查找程序用到 的字符串,找到password wrong,下个断 点,还记得前面的理论吗? 再向前找找就可以找到比较的关键地方 了,好的,找到的地址是:0040203F
我们看看前面的几条指令: 我们把这里的代码放到word下面分析
再次回顾补丁程序: 1.打开要修补的程序 2.定位到关键地方 3.写入数据
特别提示:实际操作的过程 不是通用的,通用的是你聪 明的大脑!!!!
一个真正的Cracker必须熟练掌握以下几点: 1.德; 要有社会道德意识,必须遵守一些规范! 2.数学; 要尽可能的多学一些数学知识,必须具备扎 实的数学基础! 3.外语; 最起码要有一定的英语阅读能力,当然掌握 得越多越好! 4.计算机知识; 必须熟练掌握8088系列x86汇编语言 和一门高级程序语言! 5.悟性; 必须具有一些触类旁通的本领,死记死背定 律以及公式是不行的! 此仅为兄弟个人观点! 此只是算是Cracker,要想登堂入室,同志尚需努 力! Ivanov 我缺乏的东西:2,3,4,5,所以我是普通菜鸟
编程去完成
下面进入高级专题,破解补丁的编写 下面进入高级专题,破解补丁的编写 高级专题
大家基本都学过c语言,可能学完了觉得没有什 么用,我们今天就来用一用,我们不能白学啊
前面我们把je改成了jne,随便输入密码都可以了 实质是把机器码由74h改成75h,因为机器码和汇 编指令是一一对应的,那么我们只要写个小东 西,修改就可以了。我已经写好了,很短,很 好懂。Crack.c,我们分析一下
•发展最快的破解组织 发展最快的破解组织
2001年3月,中国破解组织BCG (BeNGiNNEr‘s CrACKiNG GrOUp)成立,短短的 半年时间,BCG的成员已经发展到了47名,(现 在远超过这个数,具体数目不详)由于BCG的初 衷就正如它的名字一样“初学者破解组织”,所 以有很多初学者由于无法搞定CCG的官方正式 CrackMe都纷纷加入了BCG,当然BCG中也有非常 多的高手,但是整体水平是无法和CCG相媲美的, 而且BCG中的大多高手都是CCG组织的成员,但是 由于其面向初学者,所以组织发展速度之快超乎 人们的想象!
用debug测试一下: -a 1370:0100 mov ax,bx 1370:0102 -u100 1370:0100 89D8 这里的89D8就是MOV MOV AX,BX
AX,BX的机器码
这么看来,只要机器可以执行我们都可以 看到对应的汇编代码
我们知道程序是顺序执行的,只 要我们找到提示出错的地方,然 后再往前面找找不就看到了比较 的关键地方了吗!再次欣赏经典 比较
相关文档
最新文档