软件破解~~~

作者在 2010-01-25 12:43:16 发布以下内容

 Crack技术是指软化"破解"技术,从事Crack 技术的人叫 Cracker。
   Cracker的目的是为了软件共享,软件优化和学习还有的有的就是商业破解(有偿破解,违法的)
   软件共享:就是让大家免费用收费软件,也就是制作些破解补丁,算号器....
   软件优化:就是逆向工程,二次开发软件,就是再没有源程序的情况下修改程序,从而达到重新开发程序的目的,比如:QQ,官方版的QQ是由广告的,而且没有查IP 功能,而一些高手 像木子工作室里面的 虫虫等人 再没有源代码的情况下直接在官方版的QQ文件中进行进行了逆向优化,制作了除广告显IP的木子版QQ。
   学习:在Crack时跟踪算法时是需要学习的,软件脱壳时是需要技术的嘿嘿,同时大家可以以自己的辛勤劳动软来破解软件的,免去自己的票票哦~         "中国 Crack 史" 我已打包,大家可以去看看!

强调,当cracker目的不是破解软件,而是通过跟踪软件,了解程序思路,这样提高自己,使自己能写出更好的程序。并且破解不在多,而在于你要掌握它,尽量了解注册码计算原理,最好能写出注册机,不能写也没关系,要弄懂它的算法。
  

   好了,大家知道现在的软件主要有两块:1. 共享软件,也就是免费供大家使用的无需注册的软件. 2.商业软件,需要注册收费的,未注册的软件功能受限等其他限制。我们主要学习的就是后者方面的.

    商业软件注册保护主要有:
    a. 输入用户名+序列号的。他是通过 用户名通过一系列的算法产生 一个真序列,再比较你输入的序列,等就完成产品注册,不等就未注册.这种保护一点不好就是:同一组用户名+序列号可以在其他机器上注册。不过有的软件加了机器号,这样防止了同一组用户名+序列号 可以在其他机器上注册.
    b. 直接是序列号认证的。这种保护他是直接通过计算你输入的序列判断是否合法,比如 金山快译2005,它同样是可以,以一组序列在所有机器上运行的,同样作者可以加个机器号防止.
    c. 还有
KEY FILES 认证。顾名思义它就是软件启动后读取某个文件,判断是否注册,这个被读取的文件就是  KEY FILES ,当然你必须保证它里面包含真确注册信息的,比如 Winrar 他启动后就是读取 Rar 安装文件夹里面的 rarreg.reg 文件判断是否注册的.
    d. 最卑鄙,作者在网上发一个 Demo 不完全版,当你给作者 Money 作者再给你个 完全版.
    e. 通过壳程序保护。这里暂时不多介绍.

    破解成为可能
   
程序是怎样运行的:所有程序都是先从 硬盘或软盘,U盘中读取到内存的,CPU通过内存中的信息运行的,而临时的数据也暂时放在内存的,注册码等等数据也不例外,我们只要将内存中的数据读出来就 完成破解了.当然改变程序运行流程也可以达到破解的目的,比如 用 Winhex 修改程序.

       
成为  Cracker 的条件:
性别只能是男或女,年龄 > 7 岁,智商正常,可以独立完成电脑开机关机,无理解障碍,无视觉障碍... ...
 破解成为可能
   
程序是怎样运行的:所有程序都是先从 硬盘或软盘,U盘中读取到内存的,CPU通过内存中的信息运行的,而临时的数据也暂时放在 内存的,注册码等等数据也不例外,我们只要将内存中的数据读出来就完成破解了.当然改变程序运行流程也可以达到破解的目的,比如 用 Winhex 修改程序.
程序是怎样运行的:所有程序都是先从 硬盘或软盘,U盘中读取到内存的,CPU通过内存中的信息运行的,而临时的数据也暂时放在 内存的,注册码等等数据也不例外,我们只要将内存中的数据读出来就完成破解了 这样 网友中 WinHex 内存着注册码也就有了可能。

原理:

    数据是在内存中保存的,用 WinHex 内存着注册码也就有了可能,但是内存中保存注册码的数据不是永远的,当别的数据被计算,写入时往往会覆盖这时 用 WinHex 内存着注册码也就无法找注册码了,我们只要用写调试软件,让他在程序刚在内存中写完正确的注册码我们就让程序停止运行,防止程序继续运行产生的数据覆盖内存中的注册码.

汇编代码地址区:他其实就是汇编代码的指令地址。(注意这种颜色的背景代表程序运行在这行代码上,并且中断在这里,如果是蓝色背景表示这个地址上被下了断点,也就是程序运行在这里时会被中断)
         汇编代码区:显示被调试的汇编代码。
         寄存器区:显示寄存器里面的信息。注册码一般写在这块。
         堆栈区:显示 栈记录,显示 一些寄存器过去的记录。注册码很多会在这里出现。
         显示当前状态区:显示当前状态,比如中断信息等等。
         机器码区:显示的就是机器码,就是该行汇编命令的代码,相应的机器码=相应的汇编命令,所以用 WinHex 修改程序时时通过修改机器码,达到对汇编命令的修改。
         内存区:高级跟踪分析时用到。

快捷键
         F2 下断点。使程序运行到断点地址时中断下来,同时在 显示当前状态区,会显示中断信息.如果在汇编代码区选中一行命令,按下它,汇编代码地址区的这行地址上背景显示蓝色,再次按下它,蓝色消失说明断点解除。
         F8 单步运行,也就是当你按下它时,程序往下运行一行.
         F9 运行
            在没有断点是运行可以使程序运行到断点处,中断。
            在程序中断在断点时按它,可以使程序跳过断点继续运行.
           

名词解释:
         断点:程序运行暂时时停止的地方。
         汇编代码:有称机器语言,程序通过汇编语言和CPU 建立关系,正常运行,所有程序都是先被翻译成汇编语言再运行的. VC,VB,Delphi等等高级语言写的程序,依然要被翻译成汇编代码的。

汇编语言介绍:
        跳转命令
        JA/JNBE 不小于或不等于时转移.
        JAE/JNB 大于或等于转移.
        JB/JNAE 小于转移.
        JBE/JNA 小于或等于转移. 
        JG/JNLE 大于转移.
        JGE/JNL 大于或等于转移.
        JL/JNGE 小于转移.
        JLE/JNG 小于或等于转移.
        JE/JZ  等于转移.
        JNE/JNZ 不等于时转移.
        JMP 无条件跳转

        CALL    远程调用,也就是调用子程序,比如调用计算注册码的一段子程序.
        NOP     无效空指令,当程序运行到该命令时,它什么都不做。

 

        Olldbug 的设置:
                       1. 路径设施. 方法:启动 CMD.exe 选项菜单》界面选项》目录》  把路径修改成当前 Olldbug 所在的路径的相关文件夹即可.
                       2. 文件关联. 方法:CMD.exe 选项菜单》菜单关联》添加 olldbg 到系统资源器菜单》OK.
     建议大家使用我修改后的 Olldbug(就是那个 CMD程序),其他的设置我已经设置好,只要把上面提到的两项修改下即可.

       Fi.exe 简单使用:他是一款侦壳的工具,现在不要求大家对壳有理解啦,下一课要用到的。使用方法:把 Fi.exe 复制到你要破解的程序文件夹中,按住你要破解的软件图标拖到 Fi.exe 图标上即可.然后出现如图
                                              
注意图上注明的字,如果软件被壳加过,下面的字会变成 绿色,黄色,或红色的注释,从注释中我们可以获得改软件被什么壳加过。如果软件没有加过壳,那么如图显示,字体颜色灰暗,标识软件是什么语言写的.

分析软件流程:(我们以破解 动画.exe 密码为例.)
             运行 动画.exe ,随便便输个密码,点确定,OK 成功!(做梦,那有这么好的运气啊~当然显示 Password Wrong~).
    它的运行流程应该是这样的: 输入密码后点确定按钮. 软件首先从你输入的密码框中截取密码 >> 软件计算出正确密码 >> 对比你输入的密码 >> 下一步就是跳转了(这块最重要) .

       跳转分两类:
                    一. 成功跳转. 就是说,当你密码输入与正确密码一样时,他跳转到成功的地方.如果你输的密码不正确那么它就不跳到成功的代码段,而一直向下运行(显示错误的代码段)。
                    二. 错误跳转. 正好遇上面相反,当你密码输入与正确密码不同时时,他跳转到失败的地方.如果你输的密码正确那么它就不跳到失败的代码段,而一直向下运行(显示正确的代码段)。

关键 Call :其实就是用来计算 正确序列号或密码的子程序.
  关键跳 :一般时 上面汇编语言跳转命令介绍里面的 JNE .
 

问:如何找 关键 Call 或 关键跳?
答:看上面流程我们知道,不管是显示失败信息还是显示成功信息,他们都在关键跳下,我们只要根据 成功或错误所提示的文字来找成功或错误代码段,找到相关代码段后,再往上找,第一个跳转命令(多数是 JNE)就是关键跳啦~关键跳 上面的第一个 Call 命令一般时 关键 Call ,我们破解的时候只要在 关键 Call 上,下断点,再单步跟踪的话,就可以看到正确的注册码和错误的注册码(我们这里是密码).

运行下 目标程序,随便输下密码,确定,显示 Password Wrong! (即上面说的显示错误信息)
                


                         1. 加载要破解的软件。先把刚才运行的 试验品.exe 关闭 ,运行 CMD,点文件菜单>> 打开>>你要破解的软件.或直接再 试验品.exe 上,右击鼠标>>Ollydbg.      这样要破解的软件就被 CMD(Ollydbg)加载了!
                         2. 查找错误信息. 再 汇编代码区右击鼠标 >> 搜索 >> 字符串参考 >> 再弹出的窗口中找 "Password Wrong!"
我们在这个窗口里面找失败信息或成功信息(不过中文信息他不支持),看 "Password Wrong!" 的地址是 402048 ,我们在上面双击下,最上面的那个窗口就来到了 402048

00402025 |. E8 24FEFFFF CALL 试验品.00401E4E
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:[<&MSVCRT._stricmp>] ; \_stricmp     //关键 Call  我们在上面下断点,鼠标选中这
0040203A |. 83C4 20 ADD ESP,20                                                     一行,右击鼠标,断点切换(其实可以直接选中
0040203D |. 85C0 TEST EAX,EAX                                                      这行 按 F2 就可以完成下断点了)
0040203F |. 74 15 JE SHORT 试验品.00402056                                     //关键跳
00402041 |. 6A 40 PUSH 40
00402043 |. 68 A4504100 PUSH 试验品.004150A4 ; ASCII "Player"
00402048 |. 68 94504100 PUSH 试验品.00415094 ; ASCII "Password Wrong!"       //我们首先来到这里,往上找.
0040204D |. 8BCE MOV ECX,ESI

 

402048 下面就是错误信息代码段,我们在最上面的那个窗口中往 402048 上面找关键跳和关键 Call.关键跳的地址是 40203F 关键 Call 地址是 402034

00402034 上下断点如图:

 变成蓝色后,按 F9 运行,在运行的 动画.exe 中输入密码,我随手输 123456789 确定,回到 CMD 的窗空中,在最下方状态兰中我们看到了当前的状态,中断在 地址 402034.

在,寄存器区,我们看到了 醒目的 "qq24882688"字符,这是什么啊??呵呵~在往下,看堆栈区中的数据如图:

0012F720 0012F778 |s1 = "qq24882688"
0012F724 003A6860 \s2 = "123456789" 
0012F728 0012F778 ASCII "qq24882688"

123456789 是我们随手输的,qq24882688 是正确的密码~破解完成

破解@经历 | 阅读 1958 次
文章评论,共0条
游客请输入验证码
浏览2344273次