卖给谁?卖自己
前言变现途径的单一和不可靠,才是VB(VB仅指VB6,以下与VBA合称VB)的掣肘。本篇将直面VB的痛点,说出每个VB爱好者的内心话,分析可能的解决之道。
从前篇《VB前传,从教学到游戏,再到系统,似乎每步都是精心设计 》里,我们知道VB的初衷就是为非职业程序员设计的,饱受人诟病的缺点,恰恰是她一开始就主动牺牲掉的。这是心胸宽广的Kemeny和Kurtz教授,带给97%的礼物。历经三十余年,一路发展到VB6,仍初心不改。
这是一部属于普通人关于计算机的故事,当她被.NET接棒时,她只是完成了历史使命而已。但这并不妨碍人们继续喜欢VB,VBA的真身继续在吱吱呀呀地,描画着人间烟火。现在是时候回报她了,让她的作品变得更有商业价值,就是接下来,我们要做的。
一、VBA门户洞开,没地儿写武德1、官方产品策略下的安全错觉
Office无论是07版以前的二进制结构,还是之后的OpenXML结构,VBA始终是二进制存储的。这个二进制存储包,其实就是微软的复合文档,它是结构化存储的典范。
在OpenXML应用之前,微软一直未公布复合文档的结构。这就使得Office文档的密匙体系看上去比较健壮。早些年的破解工具,都是字典暴力破解。只要密匙设置的够复杂,破解也几乎不可能。这让很多用户产生了错觉,感觉加个密码就很安全。直到OpenXML当道的今天,仍然有很多相信这个错觉。
2、复合文档戳破皇帝的新装
后来,也许微软是为了逼迫大家升级Office,便悄悄公布了复合文档的结构。好家伙,相当复杂,有好几百页的解释。这期间,还有不少人,利用这个信息差,顺势推出了号称史上最强破解工具、宏病毒杀毒软件等。
把官方的复合文档资料拿来一看,傻眼了。里面白纸黑字的写着,复合文档中的加密体系仅用于防止随意修改,不做加密强度保证。里面编码和解码的算法都写的清清楚楚,这下加密不就成了皇帝的新装了么!
很多人在问,为什么微软不做个强加密的呢?其实,这跟复合文档的特性有关。复合文档,相当于1个微型磁盘,需要在存储和效率之间寻求平衡。如果放入了强加密,每次的加载、保存就会非常慢。脑补下很多人像职业病一样不停的”Ctrl S”会是什么场景,更不要提每隔1分钟就自动保存的变态设置了。
需要了解复合文档相关知识的,请继续关注BtOfficer获取相应内容。
3、VBA源码欢迎您,再见
当很多人给工程、给工作簿、工作表和文档加个密码,就以为敏感信息安全无恙。孰不知,那是蒙着眼睛在裸奔啊。市面上几十百把块的工具一大把,秒秒钟解密啊。所以,醒醒吧。加密这事,还得找信得过的专业工具。对VBA人士而言,自己动手吧。
4、VBA的源码不能封装,是一道迈不过去的坎
VBA的方便任性,不是没有代价。从BASIC那里继承来的解释运行机制,导致VBA代码无法以二进制方式运行,源码必须暴露在IDE环境中,才能使用编码者看不见的环境上下文。这跟Python、.Net、JAVA的解释机制,既有相似之处,又有根本的不同。所以,VBA源码要想安全,就必须具有运行时特征,防止非运行代码的暴露。
如何让VBA源码具备运行时特征,请继续关注BtOfficer获取相应内容。
二、VB的家门被踩点几十年,来者门儿清1、用VB封装VBA代码,仍是掩耳盗铃
早期VB的编译都是PCODE,类似于Python、.Net和JAVA的字节码,依赖VB虚拟机解释为指令,再执行。效率低不说,更产生了很多误会。当年就是因为PCODE的效率问题,才有Dephi的机会。Delphi转身丢弃了BASIC的解释机制,捡起了BASIC故意丢掉的东西,Delphi是更专业了,为了市场,它们得瑟的不行。到今天为止,很多人都一直以为VB是解释型而非编译型。
VB5.0以后就有了本地编译器,支持标准PE的编译。利用VB的编译器,的确可将VBA代码封装起来。但VB霸屏了那么长时间,生产了那么多软件,眼红的哥哥姐姐们,不知暗地里把MSVBVMXX.dll蹂躏了多少遍,结构早被摸得清清楚楚。VB专用反编译工具能瞬间还原PCODE的VB源码。
2、VB高仿源码,随时恭候您的大驾
VB的全鼠标驱动,方便简单,让GUI开发欲罢不能。但这背后是VB用户无法看见的一系列API的调用,VB需要在Text段中存储窗口、模块、类、控件等图形界面的参数。这些参数的存储结构,暴露了VB工程的信息。
如果VB工程编译时,导出编译中间文件,就可以看出VB的编译器格式化了每一个函数,使代码静态定位变得轻而易举。根据工程信息,就可以准确定位每个函数的代码块。再根据MSVBVMXX.dll里VB自带函数特征,很容易就反推出VB的高仿源码。
所以,无论是 PCODE还是NativeCode,VB编译所起的保护,在这些工具面前,也同样成了皇帝的新装。
需要了解VB编译文件结构知识的,请继续关注BtOfficer获取相应内容。
三、VB安全的缺位,是其商业价值存疑的根本有人说VB的性能不如这个那个,所以才不被市场选择。如果说在VB5.0以前,确实存在性能的问题。但在这之后,在硬件性能大幅提升的情况下,对操作体验的影响,几乎可忽略不计。
有人说VB不是面向对象的,无法胜任大型项目。如果硬要拿VB去弄高并发、高性能等,它本不擅长的领域,是可以这么说。无论大小也罢,可维护性也罢,要在企业级快速应用领域,VB是COM的语言就足以解释一切。
不是VB不能写出具有商业价值的软件,而是这种商业价值没有足够的变现时间。这也是为什么,商业开发人员不用VB的原因。当然,现今PC的移动互联网迁移趋势,也在不断驱离桌面开发人员。但这不VB要考虑的,VB要考虑的是,只要桌面还有生产力,自己的价值该如何体现?
1、VBA用户里,不断有人发出疑问,学精了VBA,以后能干啥?
很显然,VBA是利器,大家用的得心应手,很是喜欢。但市面上,就是没有招聘VBA的,也没有那条招聘里,会附带一条需精通VBA的。很多人,开始怀疑,开始离开,甚至开始对VBA恶言相向,感觉VBA亏欠他很多,却很少有人去探个究竟。
VBA缺乏独立的产品形态,天然就很难让人信服。与宿主文件一起交付,几乎就是一锤子买卖。 很难像普通软件产品一样,进行销售变现。VBA最终沦落为职业人的软实力,这种软实力的变现又具有巨大的不确定性。所以,VBA学精了,你也必须先找个可变现的宿主,这是VBA的困惑。
2、VB的产品,市面上很少公开售卖
VB很少有人问学精的问题,因为觉得VB好用的,正是你我这97%。我们还在VB妈妈的襁褓里,任性自由。我们也清楚,VB的产品很难公开售卖。所以,封装成产品,在供职单位小小的天地里,成为专有技术的一部分。
VB在X86的Windows环境下开发桌面应用是方便,难度系数也所有语言中最低的,效果却在中上。但VB产品,却在市场上少一份自信,这是VB的难言之隐。
四、VB产品质量层次不齐,每况愈下,诚如《早判了,VB已死,但我说话了么?》所说,VB的世界里,到处都是质量低劣的,机械的代码。尽管在生产的田边地角里,还能发挥出作用,但升级的那3%,却越来越少。要么打了个照面就一走了之,要么道听途说半路就折返了。
VB少了探索的激情,产品也越来越,懒得追求精致。这也算是VB难以商业化,名声在外了吧。所以,各位喜欢VB的非IT们,若爱,请深爱。走出VB妈妈的舒适圈,独立,体现出价值,才是真爱。要想VB产品受人尊重,没得质量是不行的,打铁还需自身硬啊。
五、武德到位尚需时日,VB还得自己来爱在尊重知识产权深入人心之前,盗版问题仍会大量存在。这不仅在整个软件行业里是痼疾,在VB的产品领域里,更是惨不忍睹。只要有人不讲武德,VB的商业化之路就得全靠自己。要想VB有足够的防御力,就需要了解学习反调试和汇编相关知识。
但这超出了很多VB人的能力范围。于是,很多人开始使用免费的壳,或者低价购买一些知名度很高,比较成熟的壳。这些壳的确可以起到一定的保护作用,但与MSVBVMXX.dll的境况类似,它们被研究的很透了。有针对性的各种脱壳机,在市面上到处兜售。面对脱壳,一朝又回解放前。所以,建议加壳使用者,最好使用商业定制壳。
若需了解VB常规反调试相关知识,请继续关注BtOfficer获取相应内容。
六、VB产品的商业化之路,任重而道远VB打心眼里挺好,只是不知不觉,突然就有人要你挪开了。这感觉,就好像差了达叔一张票,来不及补,隐隐作痛。或许VB骨子里,就是一把钥匙,就像Kemeny和Kurtz那样,原本就分文不取。
,