|
回复 199楼 ahzll 的帖子
1、使用了EXCEL必备工具箱的"邮件分发功能"导致excel2003不能用,每次多重excel2003.
2、pvp是:
MODULE NAME: Protected VBA project Picklock(PVP)
'* AUTHOR & DATE: tt.t
'* 23 April 2007
'* E-Mail: ttui(AT)163.com, sohu邮箱垃圾邮件太多已经不用了
'*
'* Usage: 运行FrmHookMain窗口,点补丁,然后双击工程窗口中有密码保护的模块
'* 应该能够直接打开了:)
'*
'*
'* DESCRIPTION: 在写中文字符串转换为拼音函数(HzToPy)过程中,第一次发现VBA功能的强大.
'* 于是这次尝试将其他语言中比较好写的API HOOK移植成VBA代码,
'* 正好顺便把VBA密码保护去掉,喜欢加密码的朋友不要生气啊:)
'* 总的来说VBA的写法和其他语言区别不大,但VBA毕竟不太方便,代码必须放在标准模块中.
'* 再有就是对指针的支持实在有限,于是最后选择了一种写起来最简单的API hook方法,
'* 就是所谓的陷阱法.如果你不太清楚什么是API HOOK,请求助于google.
'*
'* Theory: 这里就不说API hook的方法了,都是传统方法没什么可说的,这里只
'* 简单说下VBA模块密码破解.其实这些我也不是很了解,毕竟知道加密过程
'* 用处不大,这个问题上我比较关心结果:)
'* 判断有密码以及提示输入密码都是VBE6.dll干得好事.如果有密码,
'* VBE6.dll会调用DialogBoxParamA显示VB6INTL.dll资源中的第4070号
'* 对话框(就是那个输入密码的窗口),若DialogBoxParamA返回值非0,
'* 则VBE会认为密码正确,然后乖乖展开加密模块的资源.很显然其中存在很大
'* 漏洞,就像给日记本加上了锁,但里面全是活页,我们不需要打开锁,只要从侧面
'* 取出活页就可以了.这个从侧面取活页的过程就是hook住DialogBoxParamA函数,
'* 若程序调用DialogBoxParamA装入4070号对话框,我们就直接返回1,让
'* VBE以为密码正确.
'*
'* PS: PVP是在一个叫Advanced VBA Password Recovery (AVPR)的软件启发下
'* 作出来的,AVPR提供了一个VBA Backdoor功能就是跳过密码直接查看工程资源.
'* 它的原理和PVP一样,但用了通用性比较差的方法,适用系统比较有限,而PVP的方法
'* 理论上适用于所有采用第4070号对话框录入密码的Office系统.
'* 经测试PVP适用于Office 2002, 2003, 2007,其他版本尚未测试,但估计依然有效.
'* 在2000和XP系统上测试通过,但条件限制没有在Vista系统上测试,听说Vista有些机制
'* 可能影响API hook,暂时没机会测试就先这样吧~
'*
'* *64位操作系统下面的API hook代码肯定运行出错,就不要测试了
'*
3、在数据中筛选>=满分*0.8的个数/总人数(优秀率)。。。你的工具很好用,现在我用的是7.30版。。 |
|