據傳說,有一套插樁庫叫做“DynamoRIO”,它很出名,而我一直想用它,但是沒機會,
今天突然來了機會了,我希望針對普通程序做一套接口監視系統,需要用到這套插樁庫,
所以,我花了若干個小時來學習如何編譯它,直到剛才,我做完了完整的流程。
這里記錄一下吧,免得未來我又忘了。
首先,需要准備一些東西,
1:一個VS IDE,我這里准備的是VS2017,
2:安裝好ActivePerl,可以去這里下載,隨便下載個 perl64,裝上就好了,一定要安裝 https://www.activestate.com/products/perl/downloads/
3:安裝一個 doxygen ,沒它不行,下載一個,安裝上,https://www.doxygen.nl/download.html#oldrel
4:最最重要的,cmake,下載一個,安裝上,要cmakegui,地址就不發了
好了,開工了
1:去github拿一份 dynamorio-master ,解壓了,(這是廢話)
2:打開cmakegui,配置好各種信息,其實就是配置好兩個路徑
3:點 configure,2017 default 就行了
4:點Finish,cmakegui開始工作了,肯定會出問題的,所以我們只要等待它報錯就好了
一點都不奇怪,
第一個錯誤
4.1:
它告訴了我們哪里有錯誤,就去找對應的文件,make/cpp2asm_support.cmake
說這個玩意不存在,給它一個就好了,上面要的是ml,那就給它吧
這里需要自己動手來填,后面遇到問題也是這樣
4.2
缺少 mc,給它。
4.3
要 perl ,給它
4.4
要 lib 給它
5:它要的所有東西都給它之后,配置完成
6:Generate,很順利,成功了
7:直接OpenProject
直接生成解決方案吧,119個項目,雖然工程不少,但是也就10來分鍾就編完了,比llvm快多了,快了不止一個檔次。
8:這時候如果還是無法編譯,提示$ 什么的,就在所有工程中加入“DYNAMORIO_STANDALONE”宏,即可。
(不加其實也沒問題,只是使用了不同的接口)
全部成功,無失敗
9:好了,可以嘗試使用了。
編完是一回事,能不能用是另外一回事。自己去體驗吧。
補充一下,這玩意,32位sln和64位的生成是獨立的,所以要編譯64位的,需要重新配置,重新生成。