zoukankan      html  css  js  c++  java
  • 软件破解全程大揭密菜鸟篇(图)

    在很多人的眼中,软件破解是一直很神秘。其实,你也可以做到软件破解的,下面笔者用通俗的语言介绍软件破解。不过,笔者只是希望你步入破解的殿堂,了解奇妙无比的破解天地。利用下面的知识做坏事,出了事笔者可不负责哟。

    软件的“壳”和编程语言的识别
        众所周知,软件作者用编程语言编写好软件后,是将它编译成扩展名为EXE的可执行文件。编译为EXE的目的有两点:(1)有一些版权信息需要保护起来,不能让别人随意改动,如作者的姓名、软件名称等;(2)需要给程序“减肥”,从而方便存储、使用和网上传输。
    为了编译,会用到一些软件。它们能将可执行文件压缩和对信息加密(图1),实现上述两个功能,这些软件称为加壳软件。为软件加上的东东就称为“壳”。加壳软件不同于一般的WinZIP、WinRAR等打包类压缩软件。加壳软件是压缩可执行文件的,压缩后的文件可以直接运行。

           最常见的加壳软件有3个:ASPACK 、UPX、PEcompact。毕竟它们是主流,据统计,用它们加壳的软件约占市面所有软件的90%!其他不常用的加壳软件有ASPROTECT、PETITE 、NEOLITE、TELOCK等,因为使用较少,本文不作介绍。
    软件最常见的编程语言是Delphi,Visual Basic(简称VB),Visual C++(简称VC)。了解些编程的知识,会让破解更加轻车熟路。
    好了,让我们来进行破解的第一步——侦测出软件的“壳”和软件所用的编程语言。具备这种“慧眼”的软件主要有以下4个:fileinfo、language2000、Peid、pe-scan。下面详细介绍一下它们的使用方法,希望大家能够熟练掌握,并利用它们拨开壳的层层迷雾,揭开壳的神秘面纱。
    1.侦测“壳”的软件fileinfo(http://fpxxp.com/fi25.zip),简称fi,侦壳能力极强。它有两种使用方法,采用其中一种即可。届时,壳的信息为绿色字,显示在左上角。
    第一种使用方法:把待侦测“壳”的软件(如xx.exe)和fi.exe位于同一目录下,执行Windows开始菜单的“运行”,键入“fi aa”即可。
    第二种:让待侦测壳的软件(如xx.exe)和fi.exe位于同一目录下,将xx的图标拖到fi的图标上。




    最常见的加壳软件有3个:ASPACK 、UPX、PEcompact。毕竟它们是主流,据统计,用它们加壳的软件约占市面所有软件的90%!其他不常用的加壳软件有ASPROTECT、PETITE 、NEOLITE、TELOCK等,因为使用较少,本文不作介绍。
    软件最常见的编程语言是Delphi,Visual Basic(简称VB),Visual C++(简称VC)。了解些编程的知识,会让破解更加轻车熟路。
    好了,让我们来进行破解的第一步——侦测出软件的“壳”和软件所用的编程语言。具备这种“慧眼”的软件主要有以下4个:fileinfo、language2000、Peid、pe-scan。下面详细介绍一下它们的使用方法,希望大家能够熟练掌握,并利用它们拨开壳的层层迷雾,揭开壳的神秘面纱。
    1.侦测“壳”的软件fileinfo(http://fpxxp.com/fi25.zip),简称fi,侦壳能力极强。它有两种使用方法,采用其中一种即可。届时,壳的信息为绿色字,显示在左上角。
    第一种使用方法:把待侦测“壳”的软件(如xx.exe)和fi.exe位于同一目录下,执行Windows开始菜单的“运行”,键入“fi aa”即可。
    第二种:让待侦测壳的软件(如xx.exe)和fi.exe位于同一目录下,将xx的图标拖到fi的图标上。



    结果,如图2所示,软件crackme7.exe是用UPX v0.94软件加的“壳”,其中0.94为UPX的版本号。2.同时侦测“壳”和编写语言的软件language2000(两个功能合为一体,太酷了)。笔者特别推荐使用language2000中文版,它完全是傻瓜式软件,上手很容易,运行后选取待侦测“壳”的软件即可,图3为运行界面。


    由图3所示,软件cr-xxzs.exe是用Visual Basic6.0编写的,并由UPX软件加的“壳”。
    3.侦壳新秀PEid中文版,具有华丽的图形界面。外壳整合(添加到鼠标右键)功能令使用更加方便,支持拖放操作。配置时,务请将“扩展到鼠标右键”打上对号。
    其使用方法是,鼠标点住XX.exe,按鼠标右键,选"使用PEid扫描"即可;“壳”的信息就显示在底部。

    如图4所示,软件W32Dasm.exe是用ASPack 2.11加“壳”,2.11为ASPack的版本号
    4.侦壳新霸主pe-scan增添了自动去“壳”功能,开拓了侦“壳”软件新的发展方向,从而奠定了其新霸主地位。如图5,运行后把左下角的shell打上对号就整合到了右键菜单。

    如图5所示,软件SmallLocker.exe是用telock 0.60加“壳”,0.60为telock软件的版本号。
    用工具软件为软件脱“壳”

    根据前面的内容侦测了一个软件的“壳”后,接下来我们就需要把它的“壳”脱去了,以便还原软件的本来面目。注意:若侦测出它根本没加“壳”,可省掉这步。不过,现在没加“壳”的软件已经很少了。
    根据“壳”的流行程度,常用的脱“壳”软件主要有3个:AspackDie、UPX、unpecompact,分别针对前面提到的3个加壳软件。下面介绍它们的使用方法:
    1. AspackDie能脱ASPack的“壳”,是傻瓜式软件, 使用方法类似language2000,运行后选取待脱壳的软件即可轻松完成。
    2.UPX脱UPX“壳”,UPX自身具备加壳、脱壳功能。其方法为:让待脱“壳”的软件(如xx.exe)和upx.exe位于同一目录下,执行Windows开始菜单的“运行”,键入“upx -d xx.exe”即可。
    3.unpecompact 脱的是Pecompact的“壳”。
    傻瓜式软件,使用方法类似AspackDie,运行后选取待脱壳的软件即可。

    破解基础知识和16进制编辑器

    1.机器码,又称机械码。当你用16进制编辑器打开、编辑EXE等可执行文件时,你会看到许许多多的由0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F组成的数码,这些数码就是机器码。修改程序时必须通过修改机器码来修改EXE等可执行文件。
    2. 16进制编辑器。16进制编辑器是编辑、修改EXE等可执行文件的软件。常用的有UltraEdit、WinHex等。由于这两款软件非常有名,网上有很多介绍它们使用的文章,限于篇幅,不再赘述。
    3. 破解时常用的汇编指令如下,汇编较弱者可先强行背住,以后就可慢慢理解了。
    cmp a,b //比较a与b
    mov a,b //把b的值送给a,使a=b
    ret //返回主程序
    nop //无作用,英文"no operation"的简写,意思是"do nothing"(机器码90) (解释:ultraedit打开编辑exe文件时看到90,等同于汇编语句nop)
    call //调用子程序,子程序以ret结尾
    je 或jz //若相等则跳(机器码74 或0F84)
    jne或jnz //若不相等则跳(机器码75或0F85)
    jmp //无条件跳(机器码EB)
    jb //若小于则跳
    ja //若大于则跳
    jg //若大于则跳
    jge //若大于等于则跳
    jl //若小于则跳
    jle //若小于等于则跳
    pop xx //xx出栈
    push xx //xx压栈
    更为详细的指令请查阅汇编书籍。
    4.破解常见修改,参看表1。

    种不同情况的不同修改方法
    为了破解软件的注册和功能限制,归根结底其方法就是在两种不同情况下对程序所进行的修改,具体总结如下。
    1)修改为jmp(其示意图见图6)
    je(jne,jz,jnz) =>jmp相应的机器码为EB (意思是出错信息向上找到的第一个跳转),jmp的作用是绝对跳,无条件跳,从而跳过下面的出错信息。例如:
    xxxxxxxxxxxx 出错信息,如注册码不对,sorry,未注册版不成功,“Function Not Avaible in Demo”,“Command Not Avaible” 或 “Can’t save in Shareware/Demo”等,我们希望把它跳过,不让它出现。
    ……
    xxxxxxxxxxxx 正确路线所在,直接跳转到这里。

    (图6)

    (2)修改为nop(其示意图见图7)
    je(jne,jz,jnz) =>nop相应的机器码90 (正确信息向上找到的第一个跳转),nop的作用是抹掉这个跳转,使这个跳转无效,失去作用,从而使程序顺利来到紧跟其后的正确信息处。例如:
    xxxxxxxxxxxx 正确信息,如注册成功,谢谢您的支持等,我们希望它不被跳过,让它出现,所以程序一定要顺利来到这里,不能跳转。
    ……
    xxxxxxxxxxxx 出错信息,我们希望不要跳到这里,不让它出现!




    (图7)
    针对上面两点,笔者总结了个爆破无敌口诀 背会此口诀,你将天下无敌,以后慢慢琢磨,仔细体会,收益多多,千万不要错过哦!
    一条(跳)就死,九筒(90)就胡 (对应上面的(2)――修改为nop)
    一条(跳)就胡,一饼(EB)伺候 (对应上面的(1)――修改为jmp)
    妻死(74)便妻无(75)
    爸死(84)便爸无(85)

  • 相关阅读:
    Node.js 笔记03
    Node.js 笔记02
    Node.js 笔记01
    源代码管理工具-git
    ES6笔记01
    07_查找、软链接、打包压缩、软件安装
    06_系统信息相关命令
    oracle序列中cache和nocache
    PL/SQL规范、块、过程、函数、包、触发器
    对Xcode菜单选项的详细探索(干货)
  • 原文地址:https://www.cnblogs.com/zjoch/p/1730899.html
Copyright © 2011-2022 走看看