Crack技术小结
本小菜由于Crack刚刚入门,看了一些破解方面的文章,写了这篇关于Crack技术的小结!!本文不到之处,还望指教!
---题记
通常软件的破解主要分为两类:暴力破解和注册机破解。随着软件技术的发展有出现了加壳保护技术。本文将逐渐对以上内容进行讲解!
具备的知识:一定的汇编知识,会查MSDN等!
破解工具:
动态调试工具:Softice OllyDbg,trw2000等!
静态调试工具:IDA,W32ASM,C32ASM以及一些针对特定语言程序的调试工具
查壳工具:PEiD,fileinfo,language2000等!
脱壳工具:UnAspack,UPX,procDump,PE_Scan等!
Crack入门之暴力破解
我们应正确认识“暴力破解”,“暴力破解”简称“爆破”,可以认为是破解技术的第一阶段。爆破相对比较简单,但是并不是每个软件的爆破都很简单,指的是不能通过注册机方式正确破解程序或者破解者能力不够时,通过直接修改欲破解程序的关键部分可执行代码,屏蔽或使软件的保护方式失效,从而达到破解软件目的的一种破解方式。
其次,什么情况下使用爆破比较好呢?
① 如果你的解密知识有限或者软件的加密算法十分复杂而超出你的分析能力。
② 欲破解软件的注册方式是网络效验试的可以使用爆破技术。
③ 加密狗保护时也可以使用爆破技术。
爆破的一般步骤
一般来说,拿到一个软件首先要做的是用PEiD,fileinfo等工具检测欲破解程序是否加壳,用什么编程语言写成的等等。如果加壳的话一般需要脱壳,然后运行一下程序,试着注册下,观察注册失败时软件有什么反映,能否为破解找出点蛛丝马迹来决定下一个步骤,最后就是根据软件的编程语言来选择向对应的调试工具,一般通用IDA或者W32ASM,对于具体的语言调试工具有DELPHI和BORLAND C的dede,VB对应的SmartCheck,WKTVBDebugger 等。
下面我通过事例--中华灯谜,大概介绍下基本爆破知识,希望对你有所帮助。
首先用PEiD检测发现没有加壳,用DELPHI写的可以用DEDE调试。我们运行程序来到程序的主界面试着注册下,发现当输入错误信息时程序会提示“注册码错误,请重新输入”。记下他,到后面有用。然后用W32ASM反汇编zhdm.exe,打开“参考”下的“字符串参考”,你会发现有很多字符串----一般的软件关于注册时提示的错误信息字符串都会在最下面。。。找到上面的的字符串后双击来到程序中出现该字符串的位置的地方,一般这里就是程序执行时出现该字符串的地方。我们看到
* Possible StringData Ref Code Obj ->"注册码错误,请重新输入!"
:00506E26 B8886F500 mov eax,00506F88
:00506E2B E8A833F3FF call 0043A1D8
这时我们向上看,找到程序是如何找执行到这里的
:00506D96 E825DEEFF call 00404BC0
:00506D9B 0F858500000 jne 00506E26
很明显当这个文件不成立时跳到00506E26这注册失败。如果不跳走就会出现注册成功的信息。我们猜想这个跳转就是关键的跳转,如果该成当上面的条件成立是就跳走呢?那不就是当输入不正确的注册码时,程序判断注册成功而你输入正确的注册码时程序就会判断注册错误。嘿嘿!这只是我们的猜想,还得实践。我们可以直接利用调试工具来修改这个指令。我建议先用OLLYDBG来动态调试一下,看看你的猜想是否正确,然后再改。
对于跳转指令的修改,你最好熟练掌握这些常用的指令。网上有句顺口溜“一条(跳)就死,九筒(90)就胡。一条(跳)就胡,一饼(EB)伺候。妻死(74)便妻无(75),爸死(84)便爸无(85)。”
Crack进阶之注册机
注册破解是通过对程序的跟踪获得正确的注册码、序列号、密码、CD KEY、钥匙文件等,能够通过软件“正版”用户方式注册软件。注册机破解是在是在注册破解的基础上通过研究原程序的加密算法,然后逆向恢复算法过程,并通过写常年工序的方式得到一个注册机。到达这一阶段需要较多的经验和知识。
对这阶段具体来说,具体步骤是先分析软件,然后找到加密算法的位置,即程序在什么地方计算注册码的也就是通常所指的关键CALL然后分析算法。如何找到这个关键CALL对于初学者来说比较难!~我在看了N篇文章后学的了前辈们的一点经验,就是对于一些加密不是很好的软件,关键CALL会在关键跳转上面不远的地方。还有就是有些程序可能加密好点,采用很多伪装,这时你可以利用消息断点或者内存断点来跟踪。
具体的事例我就不多说了(因为我也比较菜:))你可以到http://www.pediy.com/这来看看!
Crack高级之脱壳和逆向工程
什么是壳?顾名思义,你可以很轻易地猜到,这是一种包在外面的东西。没错,壳能够将文件(比如EXE)包住,然后在文件被运行时,首先由壳获得控制权,然后释放并运行包裹着的文件体。很多壳能对自己包住的文件体进行加密。随着学习的深入,你将要掌握脱壳技术。脱壳指的就是将文件外边的壳去除,恢复文件没有加壳前的状态。
随着你破解技术的提高,应该试着掌握逆向工程。拿通常QQ来说,一般QQ是不会显示好友IP的,是很多高手通过逆向工程来实现可这个功能!
后记:
这篇文章没什么技术性可言,只是对想学习Crack技术的朋友的预备知识。。
让我们搞清楚作为一名CRACKER最需要具备的基本条件。其实那并不是扎实的汇编功底和编程基础。你可以完全不懂这些,crack的秘诀就是勤奋+执著!记住并能做到这两点你一样可以变的优秀。cracking是一个枯燥无味而漫长的过程这点大家都很清楚所以关于执著没什么多说的。但关于勤奋我想就不是每一个人都能做好的了。----引用看雪里的(尊重原创,嘿嘿)