• 标 题:用VC和自制工具VCDEBUG助手进行跟踪破解[转载] (3千字)
  • 时 间:2001-11-10 16:02:41
  • 链 接:http://bbs.pediy.com

用VC和自制工具VCDEBUG助手进行跟踪破解


【声明】

一.本文实用于初学者,需要具备一定的汇编和系统底层的知识。
二.本文只是为了让广大网友共同提高一些基础知识,本人决无卖弄之意,只供需要这方面知识的读者阅读,如果你是高手,或者不需要这方面知识,请跳过。
三.本文的实例均为普通程序,如有雷同,敬请谅解。
四.本文欢迎传抄转载,但是不要用于任何商业用途。


【前言】


以前干破解,盯着S-ICE的黑窗口,打着一些只有它才能轻松驾驶的调试指令,实在是累。后来系统

换成2000了,S-ICE很难装;好不容易装上去了,LOAD后键盘又死了;把键盘整的不死了;又发现系

统性能因此下降了很多,2000也失去了它本身的稳定性。于是发誓象国内某些人一样自己搞个专用

的调试器TRW2001什么的,可是谈何容易,不是不可以做,只是那样容易浪费生命。再说很多东西别

人已经给我们做的差不多了,比如VC。进入正题……


【正文】


VC有很多S-ICE没法比的优点,但也有一些功能上的缺点。调试界面非常舒服,和系统是一家人做的

,很合得来,但它为开发而做的,并非用来破解的,所谓正道,所以功能远非S-ICE强大。但是

S-ICE中CRACKER常用的也就是那么几个,下面介绍一下VC给我们提供的可利用的调试功能:

1. 汇编窗口界面,单步运行,指令断点,RUN TO CURSOR,数据写断点。
2. 读写寄存器,内存,堆栈,更改下一步运行的位置,也就是改EIP(不知道的点以下右键去找菜

单); 其他的自己摸索吧!

这些一般的功能VC很得心应手。但是CRACK时马上就发现一些致命的遗憾:
遗憾一:虽然可以查看被调试程序内存,但没法搜索,所以CRACKER们常用的 S 10:0 Lfffffff

'78787878' 无效;
遗憾二:虽然有存储器改变(即写)断点,但没法设读断点,所以CRACKER们常用的BPM 0x12345678

无效;
遗憾三:虽然可以设简单的API断点,但功能如同一般的指令断点,而且对于无调试信息exe文件时

可能无效,因为有时对应的DLL没有装。

针对这些遗憾我特地做了一个小的伙伴来为VC解决上面的三个问题,
1。添加了搜索功能,内容文本框内可为0x开头表示是十六进制,否则为文本。搜的时候速度没有

S-ICE中快,基本可以满足;
2。运行完VCDEBUG后,VC所设的所有的数据写断点全部变成读写断点。并且有弹出对话框提示让你

辨别。搞定遗憾二;
3。API条件断点比S-ICE中的更好用。比如我如果设API断点GetWindowTextA(要加A或W), 我可以附

加条件:当第2个参数的内容='78787878'时中断,这时在运行完GetWindowTextA函数后(注意我里

在运行完中断,这样所有的参数值都出来了),如果窗口的名字=“78787878”时那就断吧!同时我

会把参数的地址和内容在VC的DEBUG窗口输出。

加了这些功能应该够用了吧。
小试一下牛刀吧,拿比较容易的WINZIP8.0开刀,难的跟起来太累。
1。在VC中打开WINZIP的EXE文件,然后在VC的TOOLS菜单中运行此调试助手(注意,在外面运行没用

);
2。RUN - 注册 - 输入你的大名,我输了wzg,注册码随你输,如果认为78787878不雅观,可以用

74747474;
3。在VCDEBUG助手设条件API断点 GetWindowTextA; 条件为 第二个参数=“74747474”;
4。这时去按注册按钮吧;
5。断了吧,看看VC的DEBUG输出窗口有些什么东西,是[0xXXXXXXXX]'74747474',这个地址很有用哦

,不太相信的话,在VC的内存查看窗口看看这个地址中的内容吧;
6。可以关掉API断点了,然后用上面的得到的地址在VC中设存储器读写断点,接下来,按RUN[F5],

大概断过6,7下后,你就会发现标准的注册码比较汇编语句:(大概是这样的,具体的记不清了)
mov al, byte ptr[0xXXXXXXX]
mov cl, byte ptr[0xYYYYYYY]
cmp al, cl
jnz XXXX
自己看一下,记下注册码吧.


【后记】


也许有的朋友认为破解一个软件很容易,但是作为一个Cracker(或者是Hack)追求绝对技术,追求完全共享才应是我们最终的目标。





                                                                      2001.11.5
                                                                      fnlq[BCG&&CNCG]