> 深入懂得VB程序注册破解机制(一)来来来 送分了!来者有分
深入懂得VB程序注册破解机制(一)来来来 送分了!来者有分
laofuzi_83 & &
发布时间: & &
浏览:2 & &
回复:0 & &
悬赏:0.0希赛币
深入了解VB程序注册破解机制(一)来来来 送分了!来者有分深入了解VB程序注册破解机制(一)
&&&&说句实在话,我在给文章起上这个名字的时候心里颤颤巍巍的,既怕被人用砖头活活拍死,又怕起了个牛x的名字最后没有给大家介绍什么真正牛x的东西。不过,我为人脸皮极厚,所以就硬着头皮拉起了大旗。如果文章拙劣,还请众位看官多多包涵。如果实在忍受不了要拍砖,请千万不要砸脸。
&&&&前段时间在希赛论坛上的vb区看见了一篇有关反破解的文章,文章介绍了一些代码。这些代码是通过一些api的调用比如isdebuggerpresent,获取父进程等手段,来防止程序被调试器调试和破解的。如果是在几年前,我说不定会惊为天人,然后赶紧把代码copy到vb里试验一下。但是,由于本人对反汇编和程序破解在这几年间有了一定的认识和了解,所以我清楚的知道这些反调试手段对于真正的cracker来说,实在是不值得一提。简单的来说,如果vb是通过调用api来完成反调试的话,那么只要hook住那个api,然后修改这个api的返回值就可以轻易的使得vb上当受骗。而目前常用的这些调试工具都有这样的功能,如olldbg工具有一个hideod的工具就可以hook住isdebuggerpresent,ntgloblflags,hepflags,process32next,……等等十数个api。而对于获得父进程,更加简单了,因为检测父进程是不是explorer的话,只要把调试器或者装载器的文件名改成explorer.exe就可以了。
&&&&其实在早期的软件破解过程中,很多人都害怕调试vb的程序。因为vb的机制和vc或者dehpi不同,他的功能都是在msvbvm60.dll里完成的,通常的软件跟踪办法很容易会在msvbvm60.dll里面打转,而找不出关键点,更不要说人人都害怕的p-code了。虽然如此,但本人在实际的软件跟踪破解过程中,并没有vb比其他语言的程序更难破解的感觉,也许是由于原先一直用vb所以对vb了解更多一点的原因吧。而在另一方面,也说明了现在的vb软件自身防护意识的淡薄和手段的匮乏。
&&&&有看官说了,你别光说不练啊,你不会是在吹牛吧!
&&&&别急,咱这就动手,我就实际剖析两个vb编写的软件,让大家了解一些有关vb注册验证和破解的知识。
:&&QQ聊天记录器(qq-msg)V3.0&2009升级版
:&不能给,怕垃圾邮件啊!
:&VB5.0-6.0
:&QQ聊天记录器能完整的记录下你电脑上的所有的QQ聊天信息,不用密码,不用登录QQ窗口,你即能看到本机上所有QQ号的聊天记录(包括聊后立即删除的记录)。本软件主要功能是提供保存自已的聊天记录,或及时了解你孩子、家人的聊天内容,防止孩子交上不良网友。本软件几乎支持目前所有的QQ版本。特别忠告:本软件不得用于监视别人的计算机,请合法应用本软件。
:peid,regmon,olldbg&,smartcheck
:&只是出于研究,没有其他目的。失误之处敬请大家见谅。
&&&&&用peid查看软件,是aspack2.1的壳,普通的压缩壳,直接使用脱壳工具脱掉壳,再查看软件,得知软件是Microsoft&Visual&Basic&5.0&/&6.0,vb写的。
&&&&&打开软件,标题栏显示qqmsg未注册字样,未注册版本有时间限制,而无法查看qq记录。打开注册窗口,输入注册名aspower,随便假注册码按下现在注册。当的一声,弹出个窗口,说是需要重新启动。很正常的过程,重启验证。
&&&&了解注册机制的人就会知道,大部分重启验证一般是通过检测注册表,或者检测某个key文件来判断注册码的。相信这个也不例外,好,让我们祭起regmon的大旗监视注册表。因为regmon默认的设置会把所有系统的注册表格信息都显示出来,那样的话很小一会就会出现大量的注册表信息。所以我们打开regmon后,先设置过滤条件为qq-msg.exe。这样的话就光显示这个软件对注册表的读写了。现在打开软件,我们就发现regmon里出现了以下键值HKEY_CURRENT_USER\Software\VB&and&VBA&Program&Settings\clongxue\clongxue,打开注册表定位到该键值,我们就会发现下面有zcm和zcmm两个dword值,一个是注册名,一个是注册码。
&&&&好现在用olldbg加载软件,如何下断点就成了关键。我们知道,通常在vb下下api断点是无法断下api的调用的,因为vb的api调用是通过msvbvm60.dll里DllFunctionCall函数来完成的,直接在vb程序里下断是无效的。同样,等窗体启动以后再下断也是没有效果的,因为这个时候验证过程已经过去。
&&&&很多人说vb下断点难,就是因为不了解vb。当碰见这个情况的时候,很多人就不知道如何着手了。再有的人就开始一步一步跟,事实上,vb的断点有vb的规律,我们可以自己考虑下,如果自己来些个注册程序,我们会怎么样呢?最可能是就是这样了,先算出一个注册码,然后跟用户输入的注册码比较。vb很可能是这样写的,
if&(string1=string2)&then&
那么string1=string2在汇编环境下是怎么样的呢?
可能是这样的,
0041BA42&&&.&&50&&&&&&&&&&&&push&&&&eax&&&&&&&&&&&&&&&&&压入第一个字符串
0041BA43&&&.&&68&&&&push&&&&
压入第二个字符串
0041BA48&&&.&&FF15&C4104000&call&&&&dword&ptr&[&&MSVBVM60.__vbaStrCm&;&&MSVBVM60.__vbaStrCmp&&比较函数
&&&&&&&&&&&&&&&&&&&&&&&&&&&&MOV&EDi,EAX&&&&&&&&&&&&&&&&&&&&;结果同时在eax中返回
&&&&那么我们就可以在od里用MSVBVM60.__vbaStrCmp下断,这样的话,我们就可以在所有的字符串比较函数位置使程序停下来了。我们命令行里输入bpx&MSVBVM60.__vbaStrCmp,然后按下f9让程序继续运行。再断下n次以后,发现已经进入程序,依然显示未注册,而根本没有看见注册字符入栈,就是说vbaStrCmp前的push&&&&eax&&和&push&&&&都没有出现注册码的身影。那么这个程序是怎么进行注册验证的呢?
&&&&没关系,调试vb软件还有很多强大的软件,现在让我们启动令vb程序心惊胆颤的smartcheck来看下这个vb程序究竟在哪里搞了鬼.smartcheck
是一个非常强大的vb调试工具,在smartcheck下,你会看到非常详细的vb程序信息,甚至会被反汇编到可读的代码级别.
本问题标题:
本问题地址:
温馨提示:本问答中心的任何言论仅代表发言者个人的观点,与希赛网立场无关。请对您的言论负责,遵守中华人民共和国有关法律、法规。如果您的言论违反希赛网问答中心的规则,将会被删除。
暂无合适的专家
&&&&&&&&&&&&&&&
希赛网 版权所有 & &&新儿歌FLASH,是由彭野新儿歌制作,并提供。本网提供免费在线观看和下载新儿歌及相关FLASH。如果你对本专题有什么意见或建议,请发送E-MAIL给我们,感谢你的支持!
新儿歌专题导航