黑客教你学会软件破解 中

安全 数据安全
本文谈到了一些在学习解密过程中经常遇到的问题,如果你直接照着很多破解教程去学习的话,多半都会把自己搞得满头的雾水,因为有很多的概念要么自己不是很清楚,要么根本就不知道是怎么一回事,所以希望通过下面的讨论给大家一定的帮助。

软件破解—关于程序中注册码的存在方式:

破解过程中我们都会去找程序中将输入的注册码和正确的注册码相比较的地方,然后通过对程序的跟踪、分析找到正确的注册码。但是正确的注册码通常在程序中以两种形态存在:显式的和隐式的,对于显式存在的注册码,我们可以直接在程序所处的内存中看到它,例如你可以直接在SOFTICE的数据窗口中看到类似"2Array7500523"这样存在的注册码(这里是随意写的),对于注册码显式存在的软件破解起来比较容易;但是有些软件的程序中并不会直接将我们输入的注册码和正确的注册码进行比较,比如有可能将注册码换算成整数、或是将注册码拆开,然后将每一位注册码分开在不同的地方逐一进行比较,或者是将我们输入的注册码进行某种变换,再用某个特殊的程序进行验证等等。

总之,应用程序会采取各种不同的复杂运算方式来回避直接的注册码比较,对于这类程序,我们通常要下功夫去仔细跟踪、分析每个程序功能,找到加密算法,然后才能破解它,当然这需要一定的8086汇编编程功底和很大的耐心与精力。

软件破解—关于软件的破解方式:

本人将破解方式分为两大类,即完全破解和暴力破解。所谓完全破解主要是针对那些需要输入注册码或密码等软件来说的,如果我们能通过对程序的跟踪找到正确的注册码,通过软件本身的注册功能正常注册了软件,这样的破解称之为完全破解;但如果有些软件本身没有提供注册功能,只是提供试用(DEMO),或是注册不能通过软件本身进行(例如需要获取另外一个专用的注册程序,通过INTERNET的注册等等),或者是软件本身的加密技术比较复杂,软件破解者的能力、精力、时间有限,不能直接得到正确的注册码,此时我们需要去修改软件本身的程序码,即人为改变软件的运行方向,这样的破解称之为暴力破解。

关于破解教程中程序代码地址问题:破解教程中都会放上一部分程序代码以帮助讲解程序的分析方法,例如下面的一段程序代码:

  1. 0167:00408033 PUSH 00  
  2.  
  3. 0167:00408035 PUSH EBX  
  4.  
  5. 0167:00408036 CALL [USER32!EndDialog]  
  6.  
  7. 0167:0040803C JMP 0040812C  
  8.  
  9. ...... 

 

在这里程序中的代码地址如0167:00408033,其代码段的值(即0167)有可能根据不同的电脑会有区别,不一定一模一样,但偏移值应该是固定的(即00408033不变),所以如果看到破解文章里的程序代码的地址值和自己的电脑里不一样,不要以为搞错地方了,只要你的程序代码正确就不会有问题。

软件破解—关于如何设置断点的问题:

正确恰当的设置好断点对于快速有效的解密非常重要,好的断点设置可以使我们迅速找到关键的程序段,而不恰当的断点则会对解密造成不必要的精力消耗,甚至根本就不能拦截到程序的运行。但是具体什么时候用什么断点比较合适很难说,这需要自己用经验去累积,总的说来bpx hmemcpy这个万能断点对大多数注册码方式的软件都有用,初学者不妨多试试这个断点。

对于那些需要暴力破解的非注册码方式的软件,通常我们应该拦截对话框(如bpx DialogBox)和消息框(如bpx MessageBox(A))等。不论对于哪一类软件,当我们设置的断点均没有效果时,可是试一下bpx lockmytask,这个断点的作用是拦截任何一个按键的动作,具体常用的一些断点设置请参考"破解常用断点设置"一文。

另外,在注册码的破解中通常需要输入用户名和注册码,一般说来用户名和密码都可以随意输入,但是根据我自己的经验,很多软件对于注册码都会逐位的进行处理,假如输入"78787878"这串数字,那么在跟踪程序的时候我们就无法知道我们当时所看到的"78"倒底是哪一个"78",所以我比较喜欢用"12345678"这样的注册码输入方式,这样的话就就能知道程序是在对注册码的哪一位进行运算,同样的对于那些需要输入较长序列号的软件,输入类似"12345-678Array0-ABCDEF"这样的序列号较好。

不过有一点大家需要特别的注意:上面讲的注册码输入方式"12345678"是针对拦截WIN32 API函数来说的,假如有些时候直接拦截WIN32 API函数难以找到程序的突破口,而要借助于"S"指令在内存中寻找我们输入的用户名或注册码时,就最好不要采用"12345678"作为注册码,因为内存中很可能有许多的"12345678"字符串,这样我们没有办法知道倒底我们要破解的程序使用的是哪一个"12345678",所以我们应该选择一个不易和内存数据相同的注册码,比如:74747474,对应的搜索指令为: S 30:0 L FFFFFFFF ’74747474’ 。当然,以上只是我个人的习惯而已,具体用什么样的输入形式可以根据本人的爱好、习惯来定,不必拘泥于某一固定的模式。

更多相关内容请看:

黑客教你学会软件破解 上

黑客教你学会软件破解 下

【编辑推荐】

  1. 详细解析数据加密
  2. 生成和交换预共享密钥
  3. PKI基础内容介绍(1)
  4. 破解你的密码需要多长时间?
  5. 信息安全的核心之密码技术 上
  6. 揭露维基解密窃取机密信息新手段
  7. 防御网络威胁UTM技术解密(图示)

 

责任编辑:佚名 来源: 网络转载
相关推荐

2011-05-11 10:01:22

2012-11-12 10:48:36

2009-12-03 18:48:02

Suse Telnet

2020-02-06 10:20:19

硬件黑客技术

2011-12-09 10:17:07

2009-12-01 15:02:24

SuSE 10安装VM

2011-03-17 15:02:48

2009-04-03 10:29:35

苹果黑客iPhone OS

2009-02-17 21:51:45

2009-12-02 13:39:34

Suse启动cron

2009-12-03 16:24:09

WinXP搭建PHP开

2013-11-26 10:38:07

2011-04-07 10:57:11

2011-11-16 09:17:09

2018-08-07 09:45:17

数据库数据库密码破解密码

2009-12-02 15:25:31

Linux邮件服务器

2009-12-02 18:25:19

Suse Linux

2017-09-05 08:52:37

Git程序员命令

2010-09-17 10:39:56

2014-08-01 09:25:07

点赞
收藏

51CTO技术栈公众号