破解VBA密码

最近工作需要转换华为TD的MML原始数据,自己原来有的一个版本相对较老了,在mscbsc下载了一个,奈何这个工具是一个exe格式的,我用7z解压后发现其实里面只是一个excel和一个license文件,license还只能够放在C盘,并且还过期了。

在没有办法的情况下,只有自己hack了,发现可以通过更改日期继续使用,但毕竟这样使用不怎么方便。由于该程序是由VBA编写而成的,必须打开excel才能够使用,遂向通过打开VBA工程,查看license的方法,但是VBA工程存在密码,这样的情况下,只能先破解VBA密码解决了。

尝试了网上的集中办法之后,发现最好用的一种办法,记录如下:

1.使用16进制编辑器 XVI32 打开需要破解的excel文件

2.找到“CMG”,和"[Host"字符

3.从“CMG”字符开始到“[Host”前的字符全部替换为“”(16进制空格),其中替换的字符包括“CMG”,但不包括“[Host"

4.保存后,重新打开excel文件,按ALT + F11 就可以直接查看VBA的源代码了

注意如果双击excel打开的是界面而不是excel表格,可能是在VBA里禁用了workbook的显示功能,需要先打开一个excel,按ALT+F11打开VBA编辑器,然后再打开之前破解的excel文件,应该就可以看到VBA工程的代码了。

上面的过程也可以使用如下的VBA宏来搞定,代码如下:

Private Sub VBAPassword()
'你要解保护的Excel文件路径
Filename = Application.GetOpenFilename("Excel文件(*.xls & *.xla & *.xlt),*.xls;*.xla;*.xlt", , "VBA破解")

If Dir(Filename) = "" Then
    MsgBox "没找到相关文件,清重新设置。"
Exit Sub
Else
   FileCopy Filename, Filename & ".bak" '备份文件。
End If

Dim GetData As String * 5
Open Filename For Binary As #1
Dim CMGs As Long
Dim DPBo As Long
For i = 1 To LOF(1)
    Get #1, i, GetData
    If GetData = "CMG=""" Then CMGs = i
    If GetData = "[Host" Then DPBo = i - 2: Exit For
Next
 
If CMGs = 0 Then
   MsgBox "请先对VBA编码设置一个保护密码...", 32, "提示"
   Exit Sub
End If
 
If Protect = False Then
   Dim St As String * 2
   Dim s20 As String * 1
    
   '取得一个0D0A十六进制字串
   Get #1, CMGs - 2, St
 
   '取得一个20十六制字串
   Get #1, DPBo + 16, s20
 
   '替换加密部份机码
   For i = CMGs To DPBo Step 2
       Put #1, i, St
   Next
    
   '加入不配对符号
   If (DPBo - CMGs) Mod 2 <> 0 Then
      Put #1, DPBo + 1, s20
   End If
   MsgBox "文件解密成功......", 32, "提示"
  End If
Close #1
End Sub
vba 

摘抄

你所有的困惑都是因为读得太少,想得太多。–杨绛

虽说刀剑确实比言语有力量,但如果只用言语就足以羞辱打击对方,那何必再动用刀剑呢。

焦虑是由于缺乏控制力,组织管理、准备和行动不足所造成的。

只有那些知道自己智慧一文不值的人,才是最有智慧的人。这对某种倾向是一种解毒剂。

不知道何为恶,焉知何为善?所以他们要求的,不过是人云亦云罢了。

虽愚必明,虽柔必强。–《中庸》

如果我不曾见过太阳,我本可以忍受黑暗,然而阳光已使我的荒凉,成为更新的荒凉。–艾米莉·狄金森

心无挂碍,无挂碍故,无有恐怖,远离颠倒梦想,究竟涅盘。–冯唐《不二》

大半的人在20岁或30岁上就死了:一过这个年龄,他们只变了自己的影子;以后的生命不过是用来模仿自己,把以前真正有人味儿的时代所说的,所做的,所想的,所喜欢的,一天天地重复,而且重复的方式越来越机械,越来越脱腔走板。–罗曼 罗兰

天上罩满了灰白的薄云,同腐烂的尸体似的沉沉的盖在那里。云层破处也能看得出一点两点星来,但星的近处,黝黝看得出来的天色,好像有无限的哀愁蕴藏着的样子。

生活就是你不乐意它发生但却发生了的事……和真实不真实没有关系.

一个非常能干而且在乎回报的人,通常在同类人组成的小团队中会有更出色的表现,自己也会感到更满意。

如果你有一个令你感到安全的工作,你是不会致富的,因为没有危险,就几乎等于没有可放大性。–《黑客与画家》

活在世上、就是为了忍受摧残,一直到死。想明了这一点,一切都能泰然处之。

生活就是个缓慢受锤的过程,人一天天老下去,奢望也一天天消失,最后变得像挨了锤的牛一样。

道德禁忌的最大制造者是那些权力斗争中略占上风的一方。你会发现,这一方有实力推行禁忌,同时又软弱到需要禁忌保护自己的利益。

但真正令人惊恐的是,流行一时的不仅有衣服,还有道德观念。明明是专横武断、毫无依据的错误观点,但是大多数人却深信不疑,受到影响而不自知。这是非常危险的。流行的衣服,其实是很难看的衣服;流行的道德观念,其实不是善而是恶。但是,如果别人都穿流行的衣服,而你不穿,你就会遭到嘲讽;如果别人都遵守流行的道德观念,而你不遵守,结果则要严重得多,你会被解雇、流放、监禁,甚至被杀。

创造优美事物的方式往往不是从头做起,而是在现有成果的基础上做一些小小的调整,或者将已有的观点用比较新的方式组合起来。

不知道喜欢你什么,实在不知道,如果确定知道喜欢你什么,是不够喜欢你。因为不确定具体喜欢你什么,所以喜欢你所有一切及其他。

别着急什么都去学,把你最喜欢的最擅长的搞精通,就能悟“道”。

Vim的简单用法

快捷键

Movement

  • h - Move left
  • j - Move down
  • k - Move up
  • l - Move right
  • 0 - Move to beginging of line, 也可以使用 Home.
  • ^ - 在有tab或space的代码行里, 0是移到最行首, 而^是移到代码行首
  • $ - Move to end of line
  • gg - Move to first line of file
  • G - Move to last line of file
  • ngg- 移动到指定的第n行, 也可以用nG
  • g_ - 到本行最后一个不是blank字符的位置
  • w - Move forward to next word
  • e - 到下一个单词的结尾
  • b - Move backward to next word
  • % - 在匹配的括号、块的首尾移动
  • C-o- 返回到上次移动前的位置, 也可以用两个单引号'
  • C-i- 前进到后一次移动的位置
  • f - 后接字符,移动到当前行的下一个指定字符,然后按;继续搜索下一个
  • fa - 到下一个为a的字符处,也可以fs到下一个为s的字符处
  • F - 同上,移动到上一个
  • | - 竖线,前接数字,移动到当前行的指定列,如30|,移动到当前行的第30列
  • * - Search forward for word under cursor
  • # - Search backward for word under curor
  • % - 匹配括号移动,包括 (, {, [. (陈皓注:你需要把光标先移到括号上)
  • /word - Search forward for word. Support RE
  • ?word - Search backward for word. Support RE
  • n - Repeat the last / or ? command
  • N - Repeat the last / or ? command in opposite direction

在搜索后, 被搜索的单词都会高亮, 一般想取消那些高亮的单词, 可以再次搜索随便输入一些字母, 搜索不到自然就取消了. 另外也可以使用 nohl 取消这些被高亮的词.

[]
vim 

在win7上使用Bundle管理VIM插件

把Vundle管理的插件放在VIM安装目录,需要在把_bundles.vim_ 开头的

`call vundle#rc()`

修改为:

`call vundle#rc('$VIM/vimfiles/bundle/)`

需要在vimrc 文件的开头,定义bundles.vim

`source $VIM/path/to/bundles.vim`

建立github blog注意项

建立blog时的注意项

  • 对于 http://username.github.io 这样的网址,一个账户只能够建立一个,以及新建的Repository的名字必须为username.github.io,并且在主分支上建立。不设置_config.yml文件的baseurl属性。

  • 对于 https://github.com/username/project 类似的网址,需要使用Repository的gh-pages分支,以及明确的设置baseurl属性,路径为Repository的名称。也可以用cname之类的设置网 页地址。

  • 所有文件建议使用utf8编码,及注意使用无BOM格式编码