前言
就前文看起來,似乎我講的東西根本沒用。ROM是只讀的,根本就沒法寫自己的程序,說那么多有什么用嗎?非也。通過一個叫ROP的神奇東西,我們可以劫持程序執行方向,同樣可以達到“編程”的目的。
建議先了解C語言再來看這一節。
ROP
簡介
ROP的全稱為Return-oriented programming(返回導向編程),這是一種高級的內存攻擊技術,可以用來繞過程序代碼不可寫入的限制,實現編程的目的。
具體來講,因為程序將函數調用后返回的地址存儲在棧中(詳見前文),因此,如果我們能夠操縱棧中的值,就可以間接控制程序的執行順序。這種操作叫做ROP,它在黑客圈子中被廣泛運用,可以讓程序執行黑客想要的功能,達到攻擊的目的。
具體運用
程序在正常運作的時候,當然不會自己把棧搞亂,造成程序運行出錯。但是有些程序bug,會造成所謂棧溢出的現象,使用戶的輸入覆蓋掉棧的某些部分。這樣,只要我們合理構造輸入的字符串,就能控制程序的走向,以達到目的。