五年前,張至誠隔窗眺望時,心裏是一覽衆山小的成就感,現在他感覺到的卻是懸崖邊的陣陣寒風。
已經到開發尾聲的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鍵消掉,重新用力地敲下三個字。
馬上到!
“小王,準備好……二十萬,不!三十萬!等我給你發賬戶信息。”
他交代了秘書,匆匆下樓,“人工智能研究所”這個名字就一直在腦子裏轉悠。
“這是路遇神仙啊……”
張至誠覺得自己真的是個幸運兒,在最關鍵的時候,居然會有搞前沿研究的學術神仙出面幫忙。
鼎龍大廈在中官村中心,燕大在西北,就兩三公裏地。
“我是夏鳴,蟬思動就是我。”
半個小時後,聽這個看起來大學還沒畢業的小夥子這麽說,張至誠下意識地再看看挂在小樓大門邊的牌子,上面的确寫着“燕山大學人工智能研究所”幾個字。
他有種強烈的不現實感,小心地再問:“真的是你?”