从鼎龙大厦20层的落地玻璃墙看出去,中官村的繁华一览无遗。
五年前,张至诚隔窗眺望时,心里是一览众山小的成就感,现在他感觉到的却是悬崖边的阵阵寒风。
已经到开发尾声的APP是他这辈子最大的赌博,这个叫“梦真魔镜”的APP可以用手机体验虚拟试衣。虚拟试衣并不是新鲜玩意,市面上也有了手机虚拟试衣的APP,“梦真魔镜”不一样。它不仅可以让人自拍后跟服装、鞋帽和皮包之类的装饰品实时合成,还可以把手机当成3D扫描仪现场扫东西。
没错,把手机变成手持3D扫描仪才是“梦真魔镜”的本质,只是软硬件技术都还不够成熟,只能用来玩,所以才把用途定位在虚拟试衣上。
即便如此,“梦真魔镜”的商业价值也足以震动整个行业,之前几次小规模的技术演示,已经让十几家投资公司追上门来开盘口,都是几千万的规模。
张至诚都拒绝了,他缺钱,为了这个APP,他已经把公司所有的利润,连带他的老本全压了上去。可他对“梦真魔镜”有百分之二百的信心,投资公司丢下几千万就想拿走公司的大把股份,他真答应了,以后会后悔得要死。
现在他真有些后悔了,自己不该拒绝得那么干脆。
在APP进入测试阶段时,张至诚发现自己忽略了一个巨大的威胁:反编译,也就是破解。
“梦真魔镜”的核心价值是代码,而现在的安卓APP,反编译不要太简单,毕竟是开源体系。苹果的难一些,但对高手来说,只要肯下工夫,也没有破解不了的。
张至诚一直在国外留学,五年前带着技术回国创业,业务跟手机没关系,对国内的版权问题没什么深刻认识。现在他才明白,“梦真魔镜”的代码如果得不到有效保护,一旦上市,不到一个月,同样的APP就能遍地开花,而他对这些强盗毫无办法。上法院?拖你个两三年,就算讨回了公道,强盗已经吃饱洗白,统治了市场。
这段时间张至诚所有精力都放在反破解上,不指望别人永远破解不了,只要把难度提升到高手也要花相当长时间就够了。他估算过,只要三个月内不被破解,“梦真魔镜”就能圈完市场。
张至诚是编程高手,他把自己当作未来的潜在破解者,寻求各种反破解手段。然而不管是公司里的技术骨干,还是他相熟的其他高手,交出来的东西,在他手上都熬不了两天。
收拾心神,张至诚一条条删着邮箱里的垃圾邮件,暗叹自己真是病急乱投医,居然跑到同城网站去发招聘信息,结果收了一堆广告。
正删得手酸,一条主题明显不同的邮件进入他的视线。
“重点是so库保护吗?我可以试试。”
点开邮件,正文只有一个QQ号。
应该是个科班出身的码农吧,写邮件就跟写代码似的。
张至诚想了想,上QQ把这个“蝉思动”加了好友。
他已经不抱什么希望,就像他在微软、苹果和IBM的朋友说的那样,要让别人三个月内破解不了,至少得下半年工夫,现在他已经没有半年时间了。能做的只有在市场推广上动作快点,抢在破解前圈到尽可能多的地盘。
不过跟人聊聊,说不定会有新思路。
【说下你的大概方向吧,是加壳、二次打包还是指纹校验?】
张至诚发去信息,一般的安卓APP都是Java写的,虽然有混淆、加壳、数字签名、二次打包等保护方法,但Java本身就很容易逆向,所以反编译没什么难度。
“梦真魔镜”和大多数手游一样,Java只是写界面,底层是C/C++写的,核心代码放到so库里,可以提升运行效率,也方便保护。so库文件就相当于Windows的Dll文件,保护住它就保护住了核心代码。
目前so库保护也就加壳、二次打包这些方法,大家都已经熟悉了,高手破解起来也不是太难。
【都不是,可以给个程序先试试,具体报酬是多少?试过后能先付一半吗?】
“蝉思动”的回复让张至诚想右上角,so库保护就这些路子了,你还能凭空变一个出来?还问多少钱,五毛你要不要?
【一周内我反编译不了,就给你十万!】
他咬着牙回复,再找了个APP的源代码发过去。
“刚学编程的吧,不知道天高地厚……”
张至诚摇头苦笑,他想起当初自己刚留学那会,也是自负得不行,结果在一帮巨巨面前落得灰头土脸。面对这种后辈,他还是有耐心教教对方什么叫现实。
【好,三天后回你。】
这次张至诚利索地右上角了,三天就能搞定?以为是写“Helloworld”啊?
这只是一个小插曲,忙起来就忘了。到第三天打开QQ,“蝉思动”发来一个文件,张至诚才记起有这么回事,可他正忙,没理会。中午约了一个高人,是国内一家互联网巨头的技术总监,安全方面造诣很深,他得准备资料。
到了中午,张至诚正要关电脑,记起这事,把文件收了下来。是之前他给那个“蝉思动”的APP,已经重新打了包。算算还有半个小时,抱着“告诉那家伙现实有多残酷”的心思,他开始反编译这个APP。
先上Dex2jar和JD-GUI这样的反编译工具,这是小白都会用的,如果连这一关都过不了,中午自己就有了新的谈资。
嗯,果然有点门道,一般工具对付不了,不过看起来像是加了外壳,难道是壳中套壳?
张至诚的兴趣上来了,这一步搞不定,就从内存入手。就算是so库加壳,都是在内存中调用,分析内存就能脱壳。
把内存工具把数据抓出来,看着一串串的字符,他愣住了,内存的状态不太对啊,数据为什么会是这个样子的?这完全不认识啊!
这一刻,张至诚仿佛回到了大学时代,第一次上linux课的时候,老师在念:“这是bss段、data段、rodata段、text段”,而他对着计算机满屏的八位数干瞪眼。
半小时后,张至诚在内存数据上依旧找不到符合linux的特征,他不知道该怎么形容自己的内心感受,大概离崩溃不远了吧。
我了个草!难道你是做了个新的虚拟机,把APP丢虚拟机里了!?
打个比方,他原本想要的是一个保险箱,收到的却是一个次元袋……
安卓的核心是linux,可如果有人用一种谁都不认识的语言,写了一个可以在安卓运行的虚拟机,再在虚拟机里运行APP,这让人怎么破解?
虚拟机把数据在硬件上运行的特征都改了,要破解APP,还得先破解虚拟机。虚拟机是一般人能写得出来的?就算是在软硬件底层有相当造诣的高手,也得凑一群,花大把时间才搞得定。而破解一种语言和方法完全陌生的虚拟机,难度比破解PS4还要大。要知道全球所有的顶尖黑客都在破解PS4,花了两年时间才有进展。
“张总,黄总来了,张总?张……”
秘书推门进来的时候,看到张至诚就一直保持着两眼发直,盯着电脑屏幕的姿势。秘书又敲门又叫人的,就是没反应。
跟在后面的人制止了秘书下一步更激烈的唤醒行动,走到张至诚背后,看到底是什么东西。
然后,就没有然后了,黄总很快就跟张总一样两眼发直地盯着屏幕,简直比看绝世美女还要专注。秘书无语,悄悄退了出去。
“像是用虚拟机的核心层,堆栈模式都是新的,甚至内存映射也不认识。”
“是啊,内存页的管理也看不出脉络,比JVM细致得多。哟,黄总!你来了啊!哎呀,看得太入迷了不好意思!”
“一样一样,不是腰痛我还不想动呢。”
“您看……如果这个是层壳,能破解吗?”
“没有破解不了的软件,关键是看时间。这个嘛,差不多是要原始人化验牛奶里有没有蛋白精吧。”
对高级码农来说,屏幕上的内存数据形态,就像是一块新大陆,生机盎然,不管是风景,还是植物和动物,都是从未见过的,新鲜而奇妙。
许久之后,两人才恋恋不舍地将视线拔了出来,黄总问:“这是张总哪位朋友,不,哪位前辈的大作?这水平,只有硅谷那帮巨巨才玩得来吧。”
张至诚转了转眼珠子,含糊地道:“呃……是啊,我不是正头痛加密的事吗?找导师帮忙联系人,拿到了这东西。具体是哪位还不清,说不定是指导弟子辈写来玩的。”
黄总眼里放光,腆着脸说:“发给我,我好好研究下。”
张至诚合上笔记本,连连摆手:“先吃饭!先吃饭!”
饭桌上张至诚再没谈过这个程序,匆匆送走人。黄总走的时候脸臭如翔,他也不在乎了,这东西岂能泄露出去?
回到办公室,他给“蝉思动”发信息。
【我们得当面谈谈,您在哪?我现在就过去。】
【现在?破解了吗?没的话,不是定了一周的期限?】
“蝉思动”的回话让张至诚一张老脸顿时红了,不管是撬什么保险箱,总能估出大概的时间,而这个次元袋,完全是念不对咒语就打不开啊!
【您就别寒碜我了,真的需要见您一面,顺便带钱给您。】
张至诚一边敲字一边感慨,人外有人,自己才真的是被现实教育了。还好对方该是急着用钱,直接谈钱就能见到人。虽然太俗,他也顾不得自己的形象了。
【也好,这会不忙,我在燕大……】
张至诚暗道果然,真是名校里的高人。
【燕大人工智能研究所,校区最里面,没路标,得问保安。】
“计算机系吗?说不定咱们认识呢,刘教授……”张至诚正敲到这,看到“人工智能研究所”,抽了口凉气,嗦嗦嗦地用Space键消掉,重新用力地敲下三个字。
【马上到!】
“小王,准备好……二十万,不!三十万!等我给你发账户信息。”
他交代了秘书,匆匆下楼,“人工智能研究所”这个名字就一直在脑子里转悠。
“这是路遇神仙啊……”
张至诚觉得自己真的是个幸运儿,在最关键的时候,居然会有搞前沿研究的学术神仙出面帮忙。
鼎龙大厦在中官村中心,燕大在西北,就两三公里地。
“我是夏鸣,蝉思动就是我。”
半个小时后,听这个看起来大学还没毕业的小伙子这么说,张至诚下意识地再看看挂在小楼大门边的牌子,上面的确写着“燕山大学人工智能研究所”几个字。
他有种强烈的不现实感,小心地再问:“真的是你?”