之前ida+windbg調內核發現內核的地址和ida中不匹配....搞了半天,終于發現是這個原因:
我ida是ntoskrnl.exe .... 而windows中加載的版本是
ntkrpamp.exe
忘了操作系統會根據處理器型號加載不同版本內核了....
正好看到高端調試上有關于這個的討論:
http://advdbg.org/forums/2142/ShowPost.aspx
但是我的分析是基于ntoskrnl的,沒辦法,只好強制指定系統加載ntosknrl了,得做以下幾個工作
1 把vm的processor調成單核單處理器
2 開windows虛擬機, 為了告訴系統現在是單核單處理器模式,得跑一下這個命令 rundll32.exe setupapi,InstallHinfSection ACPIAPIC_UP_HAL 131 %windir%\inf\hal.inf
參考: 如何修改Windows XP系統的內核類型 http://blog.sina.com.cn/s/blog_5918846401000bik.html
3 當然,這里還沒結束,如果處理器支持PAE 那么系統會加載ntoskrnla 所以還得禁用PAE. 到
BOOT.INI里面, 啟動設置中如果有/noexecute=optin就替換改成/execute,沒有的話就加上/execute
完了后就會加載ntoskrnl了,效果圖:

指定其它系統方法類似,在此僅拋磚引玉