nerror="javascript:errorimg.call(this);" class="" width="" height="" style="" id="" >
有朋友提出想搞破解,但是不知道怎么入手,软件破解是一个软件行业的一个高深的部分——软件逆向的重要部分。nerror="javascript:errorimg.call(this);" class="" width="" height="" style="" id="" >
那么学习软件破解需要些什么基础呢?
一,需要汇编语言以及C语言功底,由于搞破解和工程逆向常常需要分析程序的执行过程,但是分析对象基本上是没有源代码的,只有通过反汇编工具将程序反汇编,分析这些静态的汇编代码的关键部分。必要是需要将汇编片段还原为C语言,以便分析算法。
二,会熟练的使用常用的调试工具,常见的动态调试工具有大名鼎鼎的DriverStudio(SoftICE)、OllyDbg、WinDbg。静态反汇编工具如IDA pro、W32DSAM等。一些常见的监控软件工具,因为很多软件会在系统或者注册表中写入特定信息,到时我们并不知道这些细节,但是专用的监控程序能把他全部找出来!
nerror="javascript:errorimg.call(this);" class="" width="" height="" style="" id="" >
三,需要了解执行文件结构,必须清楚可执行文件的结构以及加载过程,动态库增加,插件增加等。在win32平台下就是PE文件结构。因为在为软件做补丁、脱壳、设置断点等都会运用到PE文件相关的知识。四,了解所在平台的操作系统一些细节,比如消息机制、内存拷贝、关键的系统函数,这些对破解有重要作用,高手通过这些可能很快就能找到关键位置,而菜鸟可能在汇编的苦海中把自己都转晕了也找不到破解点。
五,需要学会如何脱掉常见的加壳,现在软件提供商或者作者对软件保护意识越来越强,稍微好的软件大多被专业的加密软件加了一层防破解的壳,这些壳在正常运行时会首先运行壳的部分,壳再动态把真正的程序代码解码到内存中运行起来,脱壳的基本方法就是当壳把软件解密到内存后,将内存中的代码抓出,再加一些必要的修复,使之成为普通一样的未加密程序,否则直接破解是无法正常进行的。目前常见的加壳工具都有对于的脱壳工具。
nerror="javascript:errorimg.call(this);" class="" width="" height="" style="" id="" >
六,需要一些常见的密码学知识,高级的破解者可能根据汇编代码片段大体能判断出是否采用了常见的加密算法,比如MD5、RSA等,并根据关键的汇编加密部分还原其C语言加密过程,从而写出注册机。七,坚韧不拔毅力,破解这个东西除了有坚实的功底之外,需要有毅力才行,软件破解并不是想象的那么简单,即使一个破解经验是实力很强的人也会遇到很多困难,只有坚持不懈才可能看到成功的希望,并且不是所有的软件都能破解成功的,有的可能话了很多时间,最后还是无能为力。
破解基本可以分成完全破解和不完全破解。完全破解就是真正破解出加密的算法过程并找到破解方法,常见的注册机一般都是这种;不完全破解是指无法找到加密算法,但是找到了密码或者通过修改二进制代码达到暴力破解的目的,典型的是注册机需要选择主执行文件,安装后用特定提供的执行文件替换原始安装中相同名字的文件就属于这种。
如果了解以上的基本知识,再加上一些基本破解练习,基本就入手了,可以尝试破解一些软件,你准备好了吗?
如果在学习中遇到困惑可以直接加编程导师微信号coderonline,获取自学指南.
如果对编程感兴趣,想了解更多的编程知识,解决编程问题,以及入门指导,帮你解决编程中遇到的困惑,我们这里有java高手,C++/C高手,windows/Linux高手,android/ios高手,请大家关注微信公众号:程序员互动联盟或者coder_online