我想以某種方式從二進制文件中獲取「執行的彙編指令的數量」。 考慮下面的代碼段:如何測量執行的彙編程序指令的數量?
if(password[0] == 'p') {
if(password[1] == 'a') {
......
printf("Correct Password\n");
}
}
然後,如果我將開始與例如該程序「ABC」它不會採取第一個分支,因此它會執行更少的指令。如果我放入「pbc」,它會佔用第一個分支,因此它會執行更多(大約4-5)的指令。 (這是CTF(Capture The Flag)文件的一些研究)。所以我的想法不是顛倒二進制,試圖理解算法,我使用更快的方法計算不同設置的執行彙編指令的數量(如不同的字符或密碼長度等),以查看是否可以採用另一個分支使用另一個輸入,從而創建更多彙編指令)。我的基本想法是編寫一個簡單的調試器,在當前指令之後放置一個int3,遞增一個計數器,反彙編下一條指令,並在該指令後面放置一個int3(我的想法的簡化版本)。
是否有任何程序/庫/ ...已經做了那些東西? (因爲當程序處理信號時我看到一些問題,...)
(我已經嘗試過使用高精度定時器來測量時間,但這是一個完全失敗,因爲它們之間的區別只是4-5條指令)
顯然,這種裂縫都有一個名字,計時攻擊http://en.wikipedia.org/wiki/Timing_attack然而,它只有在問題算法快速失敗時纔有效,或者根據其輸入執行不同的時間量來執行,但這並不一定如此。 – Patashu 2013-05-01 03:31:00
基本上你在談論做指令跟蹤。 – 2013-05-01 03:36:27
不,我不想做「定時攻擊」我不想用「時間」進行比較,我想用「執行指令的數量」。由於偏見,使用時間是不可能的。我搜索我可以用來做的那些程序 – 2013-05-01 03:48:10