虛擬機器與偵錯程式的討論

看雪資料發表於2015-11-15

fatfatmouse:因為忙,很久沒有在論壇出現了,大家好象都在為了對付一些新的殼、新的加密的陰招忙活,不過我感覺這樣的見招拆招可以走的路越來越窄了,可以討論的的範圍也越來越集中在PE這個小範圍內。加密與解密是一對矛盾,我感覺解密技術已經很久沒有突破了(注意:是突破,不是發展)。有沒有高人破過效率源系列呢?確實不好搞,因為它是自引導的系統,但誰又能排除會有越來越多的軟體採用這種技術?

所以我覺得要提供全面的解決方案,還是要從虛擬機器入手才是。虛擬機器幾乎可以說是萬能的。怎麼就沒有高手想想辦法像改QQ那個對VMware或Virtual PC加個外掛模組,讓它變成一個萬能的偵錯程式呢?如果成功了,應該可以說是解密技術的又一次突破了。

swift:你的這個想法很不錯,相信很多人和我一樣,已經完整的實施過了。不過可以很明確的告訴你,VMWare和VPC都不適合作為用於除錯目的的硬體模擬器,首先它們從自身的功能出發,為了換取執行效率,在最大程度上把目標機的程式碼片斷擷取到本地執行,而這種方式十分不利於“除錯”,其次它們都是商業運作的軟體,不可能公開原始碼來供我們二次開發。

我曾在老論壇的虛擬機器論壇上談到了我對於虛擬機器偵錯程式的基本看法。從我嘗試的結果來看,純粹用軟體的手段來做硬體整體的模擬,達到硬體級除錯的目的,理論上是完全可行的。比如用我們現行的Pentium 4電腦,來模擬一臺15年前的APPLE II機,並且做到模擬硬體級的除錯,可以很輕鬆的攻破當時最困難的加密工具Locksmith(雖然這樣做的實際意義非常的小)。利用我自己編寫的APPLE機模擬器,在不借助任何特定的硬體裝置的情況下,僅使用普通的電腦就能做到“時光逆轉”(從當前斷點任意回溯歷史上經歷的指令),“任意斷點”(執行斷點、記憶體斷點、條件斷點)等高階的除錯功能。當然,APPLE的時代已經過去,我這樣做純粹是為了興趣研究而已,沒有任何實用價值。

對於IA32體系CPU的模擬,用現有的最快的桌上型電腦,如果拋棄一切除錯功能的話,執行效率還是勉強可以接受的。這方面的例子可以參考BOCHS。值得注意的是BOCHS的程式碼體系非常差,還有很大的提高執行效率的空間。但是即使是用我自己的最佳化的模擬器程式碼,嘗試整合我上面所說的一些高階的除錯功能的話,執行起來也是如履薄冰,基本上沒有什麼實用的意義。我歸納了這個方案失敗的原因,是因為把所有的監視、記錄的任務都交給了宿主機CPU來處理,導致效率嚴重降低。我們現在桌上型電腦的CPU是很強大的,但也不是萬能的,一些很簡單的任務,比如條件技術,匯流排地址狀態監視,IDE埠模擬等,如果都交給一個CPU來分時進行處理,再強大的CPU也會被拖垮。而這些瑣碎的基本環節,正是我們進行硬體級除錯的關鍵所在。所以我認為,在現有的技術條件下,除非出現比IA32體系的CPU(如P4)效能高出100倍,而價格相當的電腦,否則用純軟體的方法對硬體層次進行模擬和模擬除錯的方案,是死路一條。但是如果出現瞭如此高效的新一代CPU,我們再去研究老CPU體制下的除錯技術已經毫無前(錢)途了,呵呵,這種做法正如同我用現在的P4去研究15年前的APPLE一樣。

所以,想要找到簡易的萬能方法突破目前各種加密的陰招,我認為採取軟硬體結合是唯一可行的方案。

以前這個論壇上還有虛擬機器技術一個板塊,我認為還是相當不錯的,因為我的硬體偵錯程式的很多基本的構想,都是從軟體虛擬機器得來,只不過是換以硬體來實現相應的功能提高執行效率罷了。研究虛擬機器的原始碼,對於學習整個電腦系統執行的來龍去脈也十分有意義。現在除了”菜鳥園地“(現名初學者園地)和“脫殼論壇”以外,以前老論壇虛擬機器技術等有長遠意義的板塊不復存在了。也許攻破某個殼,某個加密系統,或者搞定某個陰招,比起我上面說的這些從根源上研究加密解密的方法來說,更實用,更容易被大眾接受吧......

相關文章