软件破解新手进化篇

所属分类: 网络安全 / 加密解密 阅读数: 232
收藏 0 赞 0 分享
1.软件怎么判断我们是否注册了?
不要忘了,软件最终是按照人的思维做的,我们回到自身来,“如果是你,你怎么判断别人是否注册了呢”,“我要别人输入用户名和注册码啊”,聪明的想法,很多软件也是这样做的,如豪杰超级解霸。(但是不是所以的软件,方法太多了,友情提示:这个世界没有完全通用的东西,除了你聪明的大脑)
具体一点呢??????????
我们把用户名按照某种方法运算得到一个真正的注册码和用户输入的进行比较不就知道了吗?Yeah,也就是
真正的注册码 = f(用户名)
和Y = f(x) 是一样的
然后就是很经典的比较了,为什么说经典呢?
因为大概有60%的软件是这么做的,到底是什么比较呢,看看
请注意这里会有错误处理的噢,在这之前呢,就是经典比较啊,如果这里的错误处理提示我们诸如:注册错误之类的东西,我们就很容易定位到经典比较了。
那么上面的流程在汇编语言里面是怎么实现的呢? 比较有2种方式,直接和间接,直接就是用:
cmp x, y
je (jne) label
这里的x和y只是一个符号,实际上可能是寄存器和存储器
间接的呢?调用一个子程序比较,如下面的代码
if (strcmp(&x, & y)) //如果strcmp返回值是1
printf(“right”);
else……………..//当然是错误拉
这里的strcmp也只是一个符号,现实可能有变化
用汇编语言描述呢?
push &y;
push &x;
call strcmp;
test ax,ax ;判断返回值(也就是出口参数,也可以在子程序里判断)
je……
2.为什么可以调试可执行程序呢
可能很多菜鸟有我这样的疑问,呵呵
调试可执行程序的理论基础:
我们都知道在汇编语言里面可以用debug来调试程序。但是为什么可以?
其实和简单,因为机器只识别的是0和1(准确的说你高电平和底电平,你可以简单的理解为灯泡亮和黑),我们称之为机器码,而我们的汇编语言与机器码是一一对应的,所以我们可以根据机器码得到对应的汇编代码,也可以反过来通过汇编代码得到对应的机器码,
如:在debug下我们可以看到
用debug测试一下:
-a
1370:0100 mov ax,bx
1370:0102
-u100
1370:0100 89D8 MOV AX,BX
这里的89D8就是MOV AX,BX的机器码
3.破解教程都告诉我们,找到错误提示上面的第一个有条件跳转,改掉就可以爆破,为什么呢?
因为程序是顺序执行的,只要我们找到提示出错的地方,那么在此之前必定已经比较完了,所以再往前面找找就看到了关键的比较,关键的地方就是上面的比较,如果我们改变的判断条件呢?如果改成不相等就注册成功,那么。。(嘿嘿,某同志传来不怀好意的笑声),那么不管我们输入什么都是“正版”的了,没有交钱的“正版”,这就是我们改变跳转的原因,也就是改变改变的判断条件
4.下面我们开始实战演习
虽然这只是一个简单的用S-Demo做的动画,但是看完了下面的文章你还是会收获很多,不相信,我晕,把简单的事情做到极限就成功了,呵呵
(1).爆破
这个很简单就不多讲了,运行程序,随便输入密码,确定,提示:“password wrong”,
用ollydbg载入这个动画,查找程序用到的字符串,找到password wrong,下个断点,还记得前面的理论吗?
再向前找找就可以找到比较的关键地方了(条件跳转),好的,找到的地址是:0040203F
0040202A |. FFB6 A4000000 PUSH DWORD PTR DS:[ESI A4] ; /s2
下个断点,看看到底压入了堆栈什么
00402030 |. 8D45 CC LEA EAX,DWORD PTR SS:[EBP-34] ; |
00402033 |. 50 PUSH EAX ; |s1
00402034 |. FF15 E0234100 CALL DWORD PTR DS:[] ; \_stricmp //这里看到了什么,stricmp,难道这就是传说中的关键比较吗?
但是比较之后没有跳转啊,是吗?仔细看看,比较之后的结果放在那里,eax !
下面不是有一个je吗?
0040203A |. 83C4 20 ADD ESP,20 ;平衡堆栈
0040203D |. 85C0 TEST EAX,EAX ;测试返回值
0040203F |. 74 15 JE SHORT test.00402056
修改为jne,保存,运行,ok,搞定,请你再次回顾前面的流程图
(2).寻寻觅觅找密码
还记得前面的流程图吗?如果我们在程序比较的时候中断程序会有什么发现呢?呵呵,这个时候会看到真正的密码,重新用ollydbg载入这个动画,下断点00402034
为什么要在这里下断点?好问题,因为这里看到了call DWORD PTR DS:[],看看流程图,明白了吗,呵呵
这里我们在堆栈区域可以看到我们输入试炼码和真正的密码,为什么在堆栈区域,因为在windows下通过堆栈传递参数。请看上面的简单分析,破解补丁的编写
(3).文件补丁的编写(c语言简单实现)
前面我们把je改成了jne,随便输入密码都可以了,实质是把机器码由74h改成75h,因为机器码和汇编指令是一一对应的,那么我们只要写个小东西,修改就可以了。我已经写好了,很短,很好懂。Crack.c,我们分析一下
#include
#include
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,为什么呢?下面给出回答
fseek(fp_out, 0x203f, SEEK_SET);
fputc(0x75, fp_out); //写入数据0x75,也就是把机器码74改为75,
//汇编则是 je 改为了jne
fclose(fp_out);
这里 0x203f = 0x0040203F – 0x00400000
(4).让程序自动弹出正确的密码
更多精彩内容其他人还在看

黑客教你破解Email账号的三种方法

电子邮件并不是安全的,在邮件的发送、传送和接收整个过程中的每个环节都可能存在薄弱环节,恶意用户如果利用其漏洞,就能够轻易的破解出账号,获得邮件内容。   一、利用邮件服务器操作系统的漏洞   邮件服务器软件是运行在特定的操作系统上的,如Linux、Windo
收藏 0 赞 0 分享

WINDOWS XP登陆来破解pubwin EP 5.0的方法

这边的网吧都用pubwin EP 5.000000069****(忘记勒^_^)的网络管理系统,操作系统用WINDOWS XP,另外还装了还原精灵,呵呵。BIOS、系统、还原精灵、pubwin EP都设置了不同的密码。 我搜索并尝试了网上所谓的破解方法,结果如下: (1)
收藏 0 赞 0 分享

密码破解以及抗击手段

密码与用户帐户的有效利用是网络安全性的最大问题之一。在本文中,Rob Shimonski将研究密码破解:如何以及为何进行密码破解。Rob将只说明渗透网络是多么简单,攻击者如何进入网络、他们使用的工具以及抗击它的方法。   对公司或组织的计算机系统进行的攻击有各种形式
收藏 0 赞 0 分享

加密解密教程:NTFS文件加密初探

我们知道NTFS文件格式可以实现对文件夹的加密,增强了文件的安全性,但因NTFS涉及的细节内容比较复杂,所以用NTFS加密后的文件由于我们的操作不当经常会出现一些问题,比如用户名丢失后、文件密码丢失了等等,都会带来不小的麻烦。今天,我们就来共同探讨一下这方面的问题
收藏 0 赞 0 分享

黑客教你十招学会软件破解大揭密

下面谈到了一些在学习解密过程中经常遇到的问题,本人根据自己的经验简单给大家谈一谈。这些问题对于初学者来说常常是很需要搞明白的,根据我自己的学习经历,如果你直接照着很多破解教程去学习的话,多半都会把自己搞得满头的雾水,因为有很多的概念要么自己不是很清楚,
收藏 0 赞 0 分享

Windows 2000/XP/2003登录密码轻松破解

当你在使用电脑时,不小心将管理员登录密码忘记了,怎么办呢?虽然网上和各IT杂志介绍了很多种破解管理员登录密码的方法,但操作起来都比较麻烦,并且针对不同的系统须要用不同的破解方法。例如,用破解Winodws 2000的方法,来破解Windows XP和Windows 2003就不行
收藏 0 赞 0 分享

安全利刃 EFS的加密方法和解密必知

经常看到对文件和文件夹加密的文章,大多是安装各种软件来实现的,如果你的系统是WinXP/Win2003/2000,就没有必要如此兴师动众地加密了,既不需要你安装软件,也不需要繁琐的操作,因为Windows本身就集成了EFS(Encryption File System-EFS)加
收藏 0 赞 0 分享

防止离职员工带走客户、防止内部员工泄密、避免华为员工泄密事件的发生

这篇文章为大家详细介绍了如何才能防止离职员工带走客户、防止内部员工泄密、避免华为员工泄密事件的发生,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

彻底防止计算机泄密、重要涉密人员离职泄密、涉密人员离岗离职前防范举措

近些年企业商业机密泄漏的事件屡有发生,这篇文章主要教大家如何彻底防止计算机泄密、重要涉密人员离职泄密、告诉大家涉密人员离岗离职前的防范举措,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

无需攻击lsass进程即可解密系统管理员密码

Lsass.exe是Windows系统中必不可少的一个进程,属于微软Windows系统中安全机制相关进程。lsass.exe进程主要用于本地安全和登陆策略,同时也管理IP相关安全信息。对lsass.exe进程进行攻击,造成相应的缓冲区溢出,从而解密Windows系统中相关密码的方
收藏 0 赞 0 分享
查看更多