如何有效地进行动态跟踪分析
这些软件都是机器代码程序,对于它们分析必须使用静态或动态调试工具,分析跟踪其汇编代码。
一、从软件使用说明和操作中分析软件 欲破解一软件,首先应该先用用这软件,了解一下功能是否有限制,最好阅读一下软件的说明或手册,特别是自己所关心的关键部分的使用说明,这样也许能够找点线索。
二、静态反汇编 所谓静态分析即从反汇编出来的程序清单上分析,从提示信息入手进行分析。
目前,大多数软件在设计时,都采用了人机对话方式。
所谓人机对话,即在软件运行过程中,需要由用户选择的地方,软件即显示相应的提示信息,并等待用户按键选择。
而在执行完某一段程序之后,便显示一串提示信息,以反映该段程序运行后的状态,是正常运行,还是出现错误,或者提示用户进行下一步工作的帮助信息。
为此,如果我们对静态反汇编出来的程序清单进行阅读,可了解软件的编程思路,以便顺利破解。
常用的静态分析工具是W32DASM、IDA和HIEW等。
三、动态跟踪分析 虽然从静态上可以了解程序的思路,但是并不可能真正了解地了解软件的细节,如静态分析找不出线索,就要动态分析程序,另外,碰到压缩程序,静态分析则无能为力了,只能动态分析。
动态分析是利用SOFTICE或TRW2000一步一步地单步执行软件。
为什么要对软件进行动态分析呢?这主要是因为:1、许多软件在整体上完成的功能,一般要分解成若干模块来完成,而且后一模块在执行时,往往需要使用其前一模块处理的结果,这一结果我们把它叫中间结果。
如果我们只对软件本身进行静态地分析,一般是很难分析出这些中间结果的。
而只有通过跟踪执行前一模块,才能看到这些结果。
另外,在程序的运行过程中,往往会在某一地方出现许多分支和转移,不同的分支和转移往往需要不同的条件,而这些条件一般是由运行该分支之前的程序来产生的。
如果想知道程序运行到该分支的地方时,去底走向哪一分支,不进行动态地跟踪和分析是不得而知的。
2、有许多软件在运行时,其最初执行的一段程序往往需要对该软件的后面各个模块进行一些初始始化工作,而没有依赖系统的重定位。
3、有许多加密程序为了阻止非法跟踪和阅读,对执行代码的大部分内容进行了加密变换,而只有很短的一段程序是明文。
加密程序运行时,采用了逐块解密,逐块执行的方法。
首先运行最初的一段明文程序,该程序在运行过程中,不仅要完成阻止跟踪的任务,而且还要负责对下一块密码进行解密。
显然仅对该软件的密码部分进行反汇编,不对该软件动态跟踪分析,是根本不可能进行解密的。
由于上述原因,在对软件静态分析不行的条件下,就要进行动态分析了。
那么呢?一般来说有如下几点:1、对软件进行粗跟踪 所谓粗跟踪,即在跟踪时要大块大块地跟踪,也就是说每次遇到调用CALL指令、重复操作指令REP.循环操作LOOP指令以及中断调用INT指令等,一般不要跟踪进去,而是根据执行结果分析该段程序的功能。
2、对关键部分进行细跟踪 对软件进行了一定程度的粗跟踪之后,便可以获取软件中我们所关心的模块或程序段,这样就可以针对性地对该模块进行具体而详细地跟踪分析。
一般情况下,对关键代码的跟踪可能要反复进行若干次才能读懂该程序,每次要把比较关键的中间结果或指令地址记录下来,这样会对下一次分析有很大的帮助。
软件分析是一种比较复杂和艰苦的工作,上面的几点分析方法,只是提供了一种基本的分析方法。
要积累软件分析的经验需要在实践中不断地探索和总结。
有没有一种动态图片追踪软件比如说,有几个相同的动态图片,固定追...
1. 启用Oacle SqlNet服务器端tace,这需要我们修改sqlnet.oa配置文件 1 [maclean@h2 ~]$ echo "TRACE_LEVEL_SERVER = 16 2 TRACE_FILE_SERVER = SERVER 3 TRACE_DIRECTORY_SERVER= homemacleanntc" $ORACLE_HOMEnetwokadminsqlnet.oa 4 [maclean@h2 ~]$ cat $ORACLE_HOMEnetwokadminsqlnet.oa 5 TRACE_LEVEL_SERVER = 16 6 TRACE_FILE_SERVER = SERVER 7 TRACE_DIRECTORY_SERVER= homemacleanntc 2. 触发tace 01 SQL conn as sysda 02 Connected. 03 04 SQL select spid fom V$pocess, V$session whee audsid=useenv('SESSIONID') and padd=add; 05 SPID 06 ------------ 07 4264 08 09 SQL alte system egiste; 10 System alteed. 11 12 *在之前指定的TRACE_DIRECTORY_SERVER目录下将出现形如seve_$spid.tc的tace文件* 13 14 [maclean@h2 ntc]$ cat seve_4290.tc|gep nspecv|gep -A 2 -B 2 eg 15 [20-AUG-2010 10:42:53:896] nspecv: 00 00 00 00 00 15 61 6C |......al| 16 [20-AUG-2010 10:42:53:896] nspecv: 74 65 72 20 73 79 73 74 |te.syst| 17 [20-AUG-2010 10:42:53:896] nspecv: 65 6D 20 72 65 67 69 73 |em.egis| 18 [20-AUG-2010 10:42:53:896] nspecv: 74 65 72 01 00 00 00 01 |te.....| 19 [20-AUG-2010 10:42:53:896] nspecv: 00 00 00 00 00 00 00 00 |........| 20 21 *分析该tace文件后可以匹配到以上动态注册语句* 22 23 *记得将seve端sqlnet tace设置disale掉* 24 25 [maclean@h2 ntc]$ echo "" $ORACLE_HOMEnetwokadminsqlnet.oa PMON TRACE模式 1.找出PMON的进程号 1 SQL select spid ,pogam fom v$pocess whee pogam like '%PMON%'; 2 3 SPID PROGRAM 4 ------------ ------------------------------------------------ 5 4050 oacle@h2 (PMON) 2.执行10257事件tace 01 SQL oadeug setospid 4050; 02 Oacle pid: 2, Unix pocess pid: 4050, image: oacle@h2 (PMON) 03 04 SQL oadeug event 10257 tace name context foeve,level 16; 05 Statement pocessed. 06 07 SQL alte system egiste; 08 System alteed. 09 10 SQL oadeug event 10257 tace name context off; 11 Statement pocessed. 12 13 SQL oadeug tacefile_name; 14 s0110gdadminYOUYUSdumpyouyus_pmon_4050.tc 15 16 cat s0110gdadminYOUYUSdumpyouyus_pmon_4050.tc
温凉盏