-
-
[求助]如何使用VirtualProtect對HEAP區進行保護
-
发表于:
2013-6-10 17:39
3838
-
[求助]如何使用VirtualProtect對HEAP區進行保護
個人之前程式因為記憶體超用導致程式異常,後來花費許多時間才找出程式出錯位置,因此想將程式修改如下做法:
1. 每個Class如有配置記憶體需求則使用HeapCreate, HeapDestroy, HeapAlloc, HeapFree等
API取代CRT之預設HEAP區,每個Class使用私有HEAP區。
2. Class被呼叫時將私有HEAP區設成可寫,離開Class時將私有HEAP區設成可讀不可寫,防止私有
HEAP區被破壞,而且在越區寫入時產生Exception,顯現程式出錯的地方。
目前開發該功能時遭遇到下列問題,請板上先進能提供範例程式或在那些網站有現成範例,謝謝:
1. 建立私有HEAP區後執行HeapAlloc傳回之位址並非完全在HEAP區內,如果配置之空間太大,系
統會在HEAP區外配置記憶體。
2. 程式設定HEAP區讀寫屬性時,如何找出HEAP區各個配置區塊之連結關係,並透過
VirtualProtect一一將區塊改變屬性。
3. 在網路上有找到_HEAP, _HEAP_SEGMENT, _HEAP_ENTRY等struct定義,但無法弄懂
HEAP區之架構。
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!