CliPeViewer是老劉編寫的一個WinForm小程序,能夠用來查看托管PE文件中的 各種結構。目前有很多能夠查看PE信息的程序,支持.NET的也有。不過, CliPeViewer與他們的最大區別在於,這個小程序更在意原汁原味地暴露一個PE文 件中的內容,尤其是對於文件中的每個結構、每個字段,除了顯示了它的值之外 ,還顯示出了它在PE文件中的偏移量和原始數據。
坦率地說,CliPeViewer還沒有寫完。尚欠缺的功能包括:顯示IL指令、托管 方法的定義(方法頭、異常處理塊等),以及對元數據簽名的解析。之所以放出 這個不成熟的版本,是因為老劉等不起了。2005年,老劉就開始學習托管PE文件 格式和IL語言,並有想法寫這樣一個程序,甚至編寫了這個程序的最原始版本。
2006年,因為種種原因這件事就放下了。到了2007年,工作之余閒暇時間不少 ,於是又把這一攤子撿了起來。2008年,老劉驚喜地發現,自.NET 2.0以來,不 管CLR怎麼進展,編程語言如何進化,但底層的元數據結構似乎一直沒發生變化, ECMA-335標准也一直停留在2006年6月的版本。於是老劉發現這件事有搞頭,下定 決心要搞一搞。
前不久,看了一些C# 4.0的資料,更加堅定了這種看法。C# 4.0裡所有的新功 能,都是.NET 2.0時代就已經提供了的,只是一直沒有在上層語言中體現出來。
從2005年到2009年,不短了,結果一個像樣的版本也沒寫出來。先後開了不下 10個項目,名字也改了5、6次了,最後都是不了了之。目前這個CliPeViewer是我 最滿意的一個版本,也是打算繼續跟進下去的版本。老劉覺得不能等了,等到自 己滿意了,.NET興許都成歷史文物了。
這個程序的代碼(NB的多次否定句來了)有夠爛,但足夠簡單,卻又很多。所 以這裡就不放出源代碼了,如果實在感興趣可使用.NET Reflector偷窺。
後面老劉可能會繼續修改這個版本,也沒准推翻重來。但老劉保證要做的事包 括:1)寫一個通用點的XML文件,描述PE文件結構,這樣大家(包括老劉自己) 就可以通過編寫代碼生成器來生成文件結構的定義了。2)讓 AndersLiu.CliPe.dll盡可能地為第三方所用。3)寫一些文章介紹PE文件格式。
下面截圖奉上。
(完)
下載CliPeViewer: http://files.cnblogs.com/AndersLiu/CliPeViewer.zip