VB程序的克星SmartCheck及重启验证型破解实例

上传人:油条 文档编号:115950661 上传时间:2019-11-15 格式:DOC 页数:9 大小:831KB
返回 下载 相关 举报
VB程序的克星SmartCheck及重启验证型破解实例_第1页
第1页 / 共9页
VB程序的克星SmartCheck及重启验证型破解实例_第2页
第2页 / 共9页
VB程序的克星SmartCheck及重启验证型破解实例_第3页
第3页 / 共9页
VB程序的克星SmartCheck及重启验证型破解实例_第4页
第4页 / 共9页
VB程序的克星SmartCheck及重启验证型破解实例_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《VB程序的克星SmartCheck及重启验证型破解实例》由会员分享,可在线阅读,更多相关《VB程序的克星SmartCheck及重启验证型破解实例(9页珍藏版)》请在金锄头文库上搜索。

1、VB程序的克星SmartCheck及重启验证型破解实例文章录入:7747.Net 责任编辑:7747.Net 更新时间:2010-10-21 9:51:02 644【字体:小 大】文/图 落叶树想必大家都知道,VB属于解释执行型的语言,它生成的程序是一边翻译一边执行的。以前老的版本由于语言解释器的存在,我们平时习惯使用的OllyDbg等调试工具在跟踪VB程序的时候经常不停地跳来跳去,让你晕头转向,这是因为我们跟进了解释器的地盘,里面的东西是相当难搞明白的。不过现在的VB6程序已经不再是单纯的解释执行,大部分的内容取而代之变成了编译后的代码。虽然如此,还是不能像VC、Delphi程序反编译后的那

2、么直观:压入一堆你看不明白的参数,call一些不知道什么意思的过程,动辄错误、中止。用OD来跟还是不够方便啊!怎么办呢,对于Native Code程序(P-code是封装代码或者说中间件伪代码,相对的Native Code就是原始的未使用P-code的代码,本文不涉及P-code),我们可以使用SmartCheck来轻易对付它。 这次我们破解的对象是一个网站信息收集工具,用PEiD查看得到的内容是:Microsoft Visual Basic 5.0 / 6.0,这说明软件用VB5以上版本编写,未加壳!呵呵,省去脱壳的麻烦了。下面我们进入实战部分。 工具配置 在开始分析前我们需要先把Smart

3、Check(下文简称SC)配置好,这个步骤很重要,否则有些关键事件可能会没保留下来。运行SC,载入要破解的软件,然后点快捷按钮栏的“程序-设置”,接下来按照图1和图2所示设置即可,其余的可以使用默认配置。 javascript:dcs.images.doResizes(this,0,null); border=0 图1 javascript:dcs.images.doResizes(this,0,null); border=0 图2 初步分析 设置完后按F5运行软件,首先显示的是一个输入注册码的窗口,这里我们就随便输入“1212121212”吧,点“注册”后程序一声不吭就退出了,看来还是一个重

4、启验证型软件嘛。这时我们看SC的界面,分析已经随着程序退出而中止了,不然我们还得自己按“停止”来结束分析。乍眼看上去一大堆东西,不过只要写过VB程序的人应该不会觉得陌生,就算不懂VB的也不打紧,我们慢慢看自然会明白其中的意思。现在显示的是从软件启动到输入完注册码退出后的特定事件,我们在图3左栏的窗口里逐一点击查看(如果看不到这个界面,把“程序结果”窗口最大化即可,因为分栏是缩在边上的)。 图3 嗯,发现刚才注册窗口显示的序列号了(这个相当于机器码,不同电脑上可能会不一样),估计这之前是计算序列号的过程,不过这个我们不用关心,继续往下面看。展开Command1_Click过程,呵呵,发现我们输入

5、的注册码了,毫无疑问,这个按钮事件就是对应注册码算法的,重点锁定在这里。一路看下来,蛮多VB函数调用的,后面再次出现了序列号,过程结尾处有一串数字“2658271038273406817399346741”,如图4所示。 图4 难道这就是注册码吗?试试看,重新F5运行,输入这串数字,注册,退出。再重新运行(别忘了是重启验证型,就算是正确的注册码也需要第二次运行才能知道是否成功注册),呃,看来不对,还是那个可恶的注册窗口。这串数字到底是什么意思呢? 详细分析 刚才我们一直看的是特定事件分析结果,这样虽然找明码比较快,但现在这种没有明码比较的情况就需要慢慢跟踪流程了。接着上面还是输入那串数字,注册

6、退出后选择快捷栏上的“查看-显示所有事件”,这下出来的东西就多多啦,对应图4字符串的地方下面是一个比较语句,如图5所示。 图5 两个字符串比较,看来关键就在这里,刚才我们经过试验得知String2这串28位的数字不对。而一般情况下比较语句都是比较两者是否相等,这里假设如果String1=String2则注册成功,那么第一步就先搞清楚String2是怎么来的吧。可能有些朋友想说:为什么图5里的String1“15185818151511”就不能是注册码呢?别忘了,我们输入两次不同的假注册码都是显示同一String2字符串,可见它是相对固定的,而String1则是每次都变化,可见跟输入的注册码有关

7、,所以此时的String1不会是注册码,而我们输入的假码是怎么转化成String2(String1=String2注册成功)才是关键! 我们往上面一直拉到Command1_Click,再次逐一看下来,如图6所示。由于这次是详细分析,所以大家如果不熟悉VB函数的话最好通过搜索引擎来找一下相关函数的作用看看。这次SC显示的事件很多,为了不占用版面,我只挑关键的地方截图,其它的就讲讲大概意思,大家自己跟一下就很清楚了。Command1_Click过程一开始分配空间构成一个字符数组,这里我们把它称为T,内容是:C,A,J,K,E,3,U,V,4,Q,X,7,S,H,Y,P,5,M,F,W,接下来把我们

8、输入的假注册码前三位去掉,再逐位取剩下的字符和T数组里的字符比较,相等则生成对应数组下标数字的字符。假设我们输入的注册码是xxxCAJKE,那么这里就会生成字符串“01234”。我们前面输入的假码“2658271038273406817399346741”经过一番运算后变成了“11511581558118”,我们先把这设为S1。奇怪,怎么跟图5的String1不一样呢?再往下面看,哦,原来是把S1按奇偶位分别取成两段,然后把偶数位段反取,最后两段连接起来才组成了String1。OK,我们搞清楚其中一半关键了,接下来只要弄清楚String2“265827103827340681739934674

9、1”是怎么来的再逆推回去不就可以得到注册码了吗?看完String1的生成过程后(比较长,大家要有耐心)序列号终于出现了,如图7所示。 图6 VB程序的克星SmartCheck及重启验证型破解实例文章录入:7747.Net 责任编辑:7747.Net 更新时间:2010-10-21 9:51:02 644【字体:小 大】文/图 落叶树想必大家都知道,VB属于解释执行型的语言,它生成的程序是一边翻译一边执行的。以前老的版本由于语言解释器的存在,我们平时习惯使用的OllyDbg等调试工具在跟踪VB程序的时候经常不停地跳来跳去,让你晕头转向,这是因为我们跟进了解释器的地盘,里面的东西是相当难搞明白的。

10、不过现在的VB6程序已经不再是单纯的解释执行,大部分的内容取而代之变成了编译后的代码。虽然如此,还是不能像VC、Delphi程序反编译后的那么直观:压入一堆你看不明白的参数,call一些不知道什么意思的过程,动辄错误、中止。用OD来跟还是不够方便啊!怎么办呢,对于Native Code程序(P-code是封装代码或者说中间件伪代码,相对的Native Code就是原始的未使用P-code的代码,本文不涉及P-code),我们可以使用SmartCheck来轻易对付它。 这次我们破解的对象是一个网站信息收集工具,用PEiD查看得到的内容是:Microsoft Visual Basic 5.0 /

11、6.0,这说明软件用VB5以上版本编写,未加壳!呵呵,省去脱壳的麻烦了。下面我们进入实战部分。 工具配置 在开始分析前我们需要先把SmartCheck(下文简称SC)配置好,这个步骤很重要,否则有些关键事件可能会没保留下来。运行SC,载入要破解的软件,然后点快捷按钮栏的“程序-设置”,接下来按照图1和图2所示设置即可,其余的可以使用默认配置。 javascript:dcs.images.doResizes(this,0,null); border=0 图1 javascript:dcs.images.doResizes(this,0,null); border=0 图2 初步分析 设置完后按F

12、5运行软件,首先显示的是一个输入注册码的窗口,这里我们就随便输入“1212121212”吧,点“注册”后程序一声不吭就退出了,看来还是一个重启验证型软件嘛。这时我们看SC的界面,分析已经随着程序退出而中止了,不然我们还得自己按“停止”来结束分析。乍眼看上去一大堆东西,不过只要写过VB程序的人应该不会觉得陌生,就算不懂VB的也不打紧,我们慢慢看自然会明白其中的意思。现在显示的是从软件启动到输入完注册码退出后的特定事件,我们在图3左栏的窗口里逐一点击查看(如果看不到这个界面,把“程序结果”窗口最大化即可,因为分栏是缩在边上的)。 图3 嗯,发现刚才注册窗口显示的序列号了(这个相当于机器码,不同电脑

13、上可能会不一样),估计这之前是计算序列号的过程,不过这个我们不用关心,继续往下面看。展开Command1_Click过程,呵呵,发现我们输入的注册码了,毫无疑问,这个按钮事件就是对应注册码算法的,重点锁定在这里。一路看下来,蛮多VB函数调用的,后面再次出现了序列号,过程结尾处有一串数字“2658271038273406817399346741”,如图4所示。 图4 难道这就是注册码吗?试试看,重新F5运行,输入这串数字,注册,退出。再重新运行(别忘了是重启验证型,就算是正确的注册码也需要第二次运行才能知道是否成功注册),呃,看来不对,还是那个可恶的注册窗口。这串数字到底是什么意思呢? 详细分析 刚才我们一直看的是特定事件分析结果,这样虽然找明码比较快,但现在这种没有明码比较的情况就需要慢慢跟踪流程了。接着上面还是输入那串数字,注册退出后选择快捷栏上的“查看-显示所有事件”,这下出来的东西就多多啦,对应图4字符串的地方下面是一个比较语句,如图5所示。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 其它中学文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号