Ay's Blog@CNSSUESTC

让xp加载指定的内核版本--别以为xp加载的内核总是来自于ntoskrnl.exe!!!

之前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了,效果图:

指定其它系统方法类似,在此仅抛砖引玉 



posted on 2013-04-06 13:16 __ay 阅读(1739) 评论(0)  编辑 收藏 引用 所属分类: Debugging


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理