我所試圖做的看似簡單比較複雜的代碼靜態分析工作C代碼注入
- 找到所有的分配代碼,並插入一個新的代碼片段基於分配碼用於更新值某些內存
- 找到所有的基本控制塊,分配一個唯一的ID給每個塊,並插入基於ID的新代碼片段更新某些內存
目前我源代碼,所以我不不需要處理二進制:)
但我是新近在這個領域,我想知道如果我需要類似Perl腳本的東西來手動分析..?任何機構可以給我一些關於如何完成這項工作的指示..?
非常感謝!
我所試圖做的看似簡單比較複雜的代碼靜態分析工作C代碼注入
目前我源代碼,所以我不不需要處理二進制:)
但我是新近在這個領域,我想知道如果我需要類似Perl腳本的東西來手動分析..?任何機構可以給我一些關於如何完成這項工作的指示..?
非常感謝!
在這種情況下可能動態注射更容易。檢查pintool(http://software.intel.com/en-us/articles/pin-a-dynamic-binary-instrumentation-tool)。據我記得,它允許跟蹤內存操作(只是分配情況),並可能允許識別基本塊,但我不確定,我沒有用pin來完成這種任務。
嗨安德魯,謝謝你,我想到了pintool,最後我用Clang來實現我的目標!祝你一切順利! – computereasy
「我想要做的事似乎很簡單」 - 呃,不。你需要一個完整的C語言分析器。而且你可以擴展一個編譯器來注入代碼。 – Mat
嗨,馬特,謝謝你,抱歉我的不成熟的說法......但我想我可以只是插入某些代碼片段的源代碼來獲得一個「新」的源代碼,並將其放入常規編譯器......它看起來更可行..? – computereasy
您仍然需要一個完整的C語言分析器/分析器,並在這種情況下找出一種方法來爲您的需求做適當的「文本」更改。在一般情況下,實際上可能比在考慮模塊化/可擴展性的編譯器內部工作更困難(請參閱clang/llvm)。 – Mat