其實對于VS2003源代碼理解真的不是很難
在大學時我下了關于很多VS2003源代碼。而我用的是VS2005,我在使用VS2003源代碼時,因為少數文件無法轉換,我也為些郁悶了好久,后來終于讓我找到了解決辦法,讓我很高興。
Asp.net基于VS2005的工程與以往版本的工程的***區別就是用分部類(partial)取代了代碼隱藏(Codebehind)。
于是我采取的方法是:
1.用打開網站的方式打開這個工程。這樣VS2005也會進行轉換,而且也會報錯,但與直接打解決方案無法加載不同的是,這一次它展開了網站的所有文件。如果你現在運行工程,也不會成功的。
2.打開filename.aspx文件到源代碼視圖,將@Page指令中的屬性“Codebehind”改為“CodeFile”,
3.將與這對應的Codebehind文件filename.aspx.cs,將繼承于System.Web.UI.Page的類定義class前加上partial關鍵字。
4.運行該工程,它會提示你在filename.aspx中已經包含controlname的定義,跟蹤錯誤到filename.aspx.cs,將那些被指示錯誤的重復定義刪去。
5.然后重復2-4步直至所有的文件都改過來,再運行工程應該就可以運行成功了。不過也許會報幾個警告說某某已經過時,不用去管它。
我用VS2003源代碼將那些老頑固(包括2003以及2002的工程)都成功轉換了,真的是屢試不爽。這只不過是我自己總結出來的方法,也許有人有更好的辦法,如果有更好的方法也請指點。
本文介紹注入代碼到PE(Portable Executable可移植的執行體)文件格式的Import Table(導入表,也有譯為“引入表”)技術,其也被稱為API重定向技術(API redirection technique)。
讓我們想像一下:如果我們可以通過操作導入表thunks將導入函數的入口點(thoroughfare)重定向到我們的指定的例程,用我們的例程過濾導入(消息)就成為可能。
此外,我們可以通過VS2003源代碼這個功能實現安排給我們適當的例程,專業的Portable Executable (PE) Protectors正是這么來做的,另外一些種類的rootkits使用這個方法通過一個特洛伊木馬嵌入其惡意代碼到受害者。在反向工程世界里,我們稱之為:API重定向技術,然而我不準備通過源代碼描述這個領域的所有觀點,本文只是通過一個簡單代碼介紹一下這個技術的概況。我將描述這個源代碼中沒有的其他一些問題;我不能公開這些代碼,原因是其關系到一些商業項目或可能會被懷有惡意者利用,然而我想本文可以被用來作為一個關于該主題的入門。導入表的導入目錄入口(import directory entry)帶我們來到文件image內部的導入表位置。
對于每個被導入的DLL,導入描述符是個容器,它包含了first thunk的地址和original first thunk的地址,DLL名稱的指針。First Thunk引用first thunk的位置,thunks在運行該程序時將會被Windows的PE loader(裝載器)初始化。Original First Thunk指向thunks***個存儲處,該存儲處提供Hint 數據的地址和每個函數的Function Name數據。在此情況下,First Original Thunk沒有出現;First Thunks引用Hint 數據和Function Name 數據被定位的位置。用IMAGE_IMPORT_DESCRIPTOR來表示導入描述符結構如