我有一個程序,argv [0]不時被覆蓋。這發生(僅)在我無法訪問的生產機器上,以及我無法使用調試器的地方。爲了找到這種腐敗的起源,我想寫保護這個堆棧頁面,以便任何寫入訪問都會出錯,並且我可以得到罪魁禍首指令的地址。在AIX上寫保護堆棧頁面?
該系統是基於AIX 5.3 64位的。當我嘗試調用堆棧頁面上的mprotect時,出現ENOMEM錯誤。我使用gcc來生成我的程序。
在Linux系統(基於x86)上,我可以使用mprotect設置類似的保護而沒有麻煩。
有什麼辦法可以在AIX上實現這一點。或者這是一個無望的嘗試?
http://publib.boulder.ibm.com/infocenter/pseries/v5r3/index.jsp?topic=/com.ibm.aix.basetechref/doc/basetrf1/mprotect.htm - 考慮到您似乎是僅限於已經mmap'd的頁面(以及其他一些內容),我懷疑你可以更改堆棧保護模式。 (但我對此不夠熟悉,不能回答。) – Mat