Wednesday, November 28, 2012

實在很佩服蘿蔔

看他debug的模式 就好像在動手術一樣精確仔細
還不是普通的割除蘭尾這種簡單手術
是心臟瓣膜的那種高難度手術
有誰可以打開gdb後,在有問題的那段code附近隨意閱讀著組語
然後猜想著他是怎麼implement的,在0x5c018f44推測出這邊是一個loop,
getc會檢查他的flag設了沒,若是還沒設則會一直loop在哪裡,就像是block住在等user輸入一樣
然後一路追查下去看看flag何時會動到,watch他...
..
後來其實就是r8 沒有fixed ,跳去user前要先存起來才對
我自己中途就已經看到
a3001a1c <getc>:
a3001a1c:       e598c020        ldr     ip, [r8, #32]
a3001a20:       e59cf004        ldr     pc, [ip, #4]
就應該猜想出getc出了問題,又看到他動了r8,這關聯也太明顯了
可是還是沒自己把bug解決
好像毅力越來越不堅定了