相关服务

  • 《黑客×档案》2007年第8期摘录:动态跟踪破解TC for Win 4·5

如发现有乱码,请点击下面链接浏览原文
正文摘录:

’J动态跟踪破解TCforWill4·5这次为大家奉献一篇关于动态跟踪破解的心得体会文章。先来说一下动态跟踪破解的必要性,由于软件的开发人员对于程序保护意识的不断加强,人们针对反编译想出了各种各样的“防反”技术,比如花指令、数据加密、代码加壳、多线程监控等等。应用了这些保护手段的程序,使用静态方式已经无法分析程序的逻辑结构了。代码化的结构会使静态反编译陷入困境,例如“calleax”这句代码如果出现在反编译代码的第一千几百行,如果想分析出这时eax中的值,想必是十分困难的!这时就需要使用到动态跟踪了,其实这种方法很像程序调试。闲话少说,先介绍一下今天的破解目标。TCf0rwin”4.5版,这是一个可以在windo’ws下进行C语言程序开发的工具。下载安装后运行程序,却提示。程序已过期”,看来免不了一番“兵戎相见。了!我还是习惯性地使用PEiD对其检测了一下,查看是否加过壳(图1)。程序是使用vc++6.0开发的,没有加壳。该让我们今天的主角O11旷DBG出场了,载入主程序tcforwin.exe。大家可以通过。UltraStringReference?unicode/AscII”或“查找所有参考文本字串”查看显示出的内容,没有任何我们刚才看到的过期提示的内容。现在没有了线索。就蔼要开始动态跟踪看看tcfoi‘win什么时候进行过期检查提示了。其实OD最强大的功能就是它的动态跟踪和分析功能,在这次的破解中最主要的就是这几个按键:F2、F7、F8、F9。F2一设置断点;F7一单步步八.在遇到call语句时,0D会跟到call的子程序中去;F8一单步步过,在遇到call语句时,0D会把caIl当成一句话执行;F9一程序运行.在遇到断点时,0D会把程序停下来。解释一下断点的概念,打个比方,你打车时跟司猎风机说到目的地之前,在A地点临时停一下,这个A地点对于你的行程来说就是一个断点,也就相当于在OD中让程序在运行中停下来的地方。在什么地方设置断点,是动态跟踪分析中的一个关键问题。接下来请大家跟我一起拆解这个程序,使用OD载入tcforwin.exe后,开始使用F8单步运行。程序的开发是由粗到细的,因此在跟踪时我们也应遵循这样的规律,使用F8键我们很容易发现到底是哪一步使提示窗口出现的,这样就像练习打靶,尽量打中“靶心”。在使用F8后没多久就会在一句call语句处显示出过期提示窗口(图2)。这就是我们找到的第一个关键caIl语句,通过它我们开始走向破解的“靶心”。在这里我们下第一个断点,在这行上按F2键。大家会看到地址列表栏该行处变成了红色。因为这个窗口已经被调出来了。第一次跟踪也就完毕了。我们需要重新载人程序(可以使用快捷键Ctrl+F2重新载人)。这次我们直接按F9,OD会把程序运行到下一个断点处停下来,这时我们不能再用F8了.需要使用F7进入该函数里,而后再使用F8进行定位,当出现提示窗口时,再重复上面的过程下断点一F9一F7一F8(在这里需要提醒大家.现在我们是在定位爆破点,至于如何爆破那是后话)。此过程之后我们会陆续发现各个关键Call,如图3,图4,图5,图6,图7。一直到这里,破解过程都是一致的,没有什么可说的。但是接下来在进入“call1004F860”这部分函数(过程)之后,可能会遇到些麻烦。主要的问题是出在一大段循环上。当大家一下下按“F7”就会发现图3

阅读此文(图):   点击此处在线翻阅