找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
.COM/.NET/.ORG 国际域名注册全功能虚拟主机/免备案虚拟主机
查看: 1463|回复: 6

解密教学 5

[复制链接]

41

主题

110

回帖

3981

积分

论坛元老

积分
3981
发表于 2003-10-19 18:32:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
第五节 分析技术



  在进行软件的破解、解密以及计算机病毒分析工作中,一个首要的问题是对软件及病毒进行分析。这些软件都是机器代码程序,对于它们分析必须使用静态或动态调试工具,分析跟踪其汇编代码。



一、从软件使用说明和操作中分析软件



  欲破解一软件,首先应该先用用这软件,了解一下功能是否有限制,最好阅读一下软件的说明或手册,特别是自己所关心的关键部分的使用说明,这样也许能够找点线索。



二、静态反汇编



 所谓静态分析即从反汇编出来的程序清单上分析,从提示信息入手进行分析。目前,大多数软件在设计时,都采用了人机对话方式。所谓人机对话,即在软件运行过程中,需要由用户选择的地方,软件即显示相应的提示信息,并等待用户按键选择。而在执行完某一段程序之后,便显示一串提示信息,以反映该段程序运行后的状态,是正常运行,还是出现错误,或者提示用户进行下一步工作的帮助信息。为此,如果我们对静态反汇编出来的程序清单进行阅读,可了解软件的编程思路,以便顺利破解。 常用的静态分析工具是W32DASM、IDA和HIEW等。





三、动态跟踪分析



 虽然从静态上可以了解程序的思路,但是并不可能真正了解地了解软件的细节,如静态分析找不出线索,就要动态分析程序,另外,碰到压缩程序,静态分析也无能为力了,只能动态分析了。所谓动态分析是利用SOFTICE或TRW2000一步一步地单步执行软件。为什么要对软件进行动态分析呢?这主要是因为:



1、许多软件在整体上完成的功能,一般要分解成若干模块来完成,而且后一模块在执行时,往往需要使用其前一模块处理的结果,这一结果我们把它叫中间结果。如果我们只对软件本身进行静态地分析,一般是很难分析出这些中间结果的。而只有通过跟踪执行前一模块,才能看到这些结果。另外,在程序的运行过程中,往往会在某一地方出现许多分支和转移,不同的分支和转移往往需要不同的条件,而这些条件一般是由运行该分支之前的程序来产生的。如果想知道程序运行到该分支的地方时,去底走向哪一分支,不进行动态地跟踪和分析是不得而知的。



2、有许多软件在运行时,其最初执行的一段程序往往需要对该软件的后面各个模块进行一些初始始化工作,而没有依赖系统的重定位。



3、有许多加密程序为了阻止非法跟踪和阅读,对执行代码的大部分内容进行了加密变换,而只有很短的一段程序是明文。加密程序运行时,采用了逐块解密,逐块执行和方法,首先运行最初的一段明文程序,该程序在运行过程中,不仅要完成阻止跟踪的任务,而且还要负责对下一块密码进行解密。显然仅对该软件的密码部分进行反汇编,不对该软件动态跟踪分析,是根本不可能进行解密的。



由于上述原因,在对软件静态分析不行的条件下,就要进行动态分析了。哪么如何有效地进行动态跟踪分析呢?一般来说有如下几点:



1、对软件进行粗跟踪

所谓粗跟踪,即在跟踪时要大块大块地跟踪,也就是说每次遇到调用CALL指令、重复操作指令REP.循环操作LOOP指令以及中断调用INT指令等,一般不要跟踪进去,而是根据执行结果分析该段程序的功能。



2、对关键部分进行细跟踪



 对软件进行了一定程度的粗跟踪之后,便可以获取软件中我们所关心的模块或程序段,这样就可以针对性地对该模块进行具体而详细地跟踪分析。一般情况下,对关键代码的跟踪可能要反复进行若干次才能读懂该程序,每次要把比较关键的中间结果或指令地址记录下来,这样会对下一次分析有很大的帮助。软件分析是一种比较复杂和艰苦的工作,上面的几点分析方法,只是提供了一种基本的分析方法。要积累软件分析的经验需要在实践中不断地探索和总结。
回复

使用道具 举报

281

主题

3228

回帖

55万

积分

管理员

积分
551869
发表于 2003-10-19 23:40:40 | 显示全部楼层
[emb5]
网路游侠 www.youxia.org
回复 支持 反对

使用道具 举报

30

主题

176

回帖

4459

积分

论坛元老

积分
4459
发表于 2003-10-21 07:34:56 | 显示全部楼层
[emb12]
男孩,不輕易哭泣,只有面對最愛的人時才會變得脆弱。 男孩,不輕易哭泣,只有在太愛你的時候才會,放下自尊。 女孩,如果有個男孩為你哭,請拉住他的手,他真的可以陪你走完一生。 女孩,如果有請不要放棄他,也許一個選擇會毀掉一個人。
回复 支持 反对

使用道具 举报

0

主题

17

回帖

3059

积分

论坛元老

积分
3059
发表于 2003-10-25 17:44:22 | 显示全部楼层
继续啊
回复 支持 反对

使用道具 举报

10

主题

44

回帖

3469

积分

论坛元老

积分
3469
发表于 2003-12-3 16:51:50 | 显示全部楼层
没了???
有一个女孩,她愿意等我到下辈子……她溫柔委婉地说:想让我成为你女朋友,等下辈子吧......
回复 支持 反对

使用道具 举报

77

主题

201

回帖

3791

积分

论坛元老

积分
3791
发表于 2003-12-25 13:04:24 | 显示全部楼层
有味!
回复 支持 反对

使用道具 举报

10

主题

44

回帖

3469

积分

论坛元老

积分
3469
发表于 2003-12-27 21:56:13 | 显示全部楼层
很多人都想学学做cracker,好象破了一个程序很风光的,人人都很佩服。 可是做一个cracker其实很累,需花费大量的时间,而且经常会碰壁,三五天毫无进展是极为平常的事情。

  做cracker的五个必要条件是: 1. 知识 2. 经验 3. 感觉 4. 耐心 5. 运气 。

  如果你刚开始学crack,也许你遇到不少麻烦,并且有点想退却,其实你不要着急,只要你认真学习,成功就在眼前。没有人是生来就什么都会的,如果你有问题,就大胆的去问你周围的人,多来我主页论坛请教。计算机水平不高怎么办?没关系,我也不是学计算机的,我自己的专业与电脑不沾边。只要努力学习就能成功。

  所谓知识只要你肯学就可以了,刚入门时如你没汇编知识是不行的,你要掌握一下这门编程语言,能看懂就能上手,但是你想很顺手的话,除了把汇编掌握好,还有编程的基本功夫,保护模式等技术。

  经验是跟你破解软件时间,掌握程度有关,接触多了,拿到一软件应该知道用哪种法比较省事,比较有把握。

  感觉这点不可言传,就象我们做语文题目时,一句话有语法错误一看就知道,这时我们有可能从语法上也说不上什么道道,就知它是错的,这就是语感。我们crack多了,也会有这方面的体会,拿一软件跟踪,到关键点时凭感觉就找到。

  耐心就不多说,成功与失败的关键也在这一步。

  运气也很关键,但运气是建立在你的扎实的基础功上的。

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

  好了写了这么多到此,目的只是希望初学者们遇到困难时不要灰心,成功就在你们的眼前。
来自看雪学院
http://www.pediy.com
人家有版权的,我就不再往下复制了···
有一个女孩,她愿意等我到下辈子……她溫柔委婉地说:想让我成为你女朋友,等下辈子吧......
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|西京校友网 ( 陕ICP备11003551号-5 )

GMT+8, 2025-5-9 04:27 , Processed in 0.023034 second(s), 8 queries , MemCache On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表