classfree
驱动小牛
驱动小牛
  • 注册日期2004-05-23
  • 最后登录2019-01-06
  • 粉丝1
  • 关注1
  • 积分873分
  • 威望276点
  • 贡献值0点
  • 好评度85点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1213回复:3

获取当前进程所在的Volume,蓝屏!

楼主#
更多 发布于:2007-02-17 12:16
  ULONG dwAddress;
WCHAR procress[256];

memset(procress, 0, sizeof(WCHAR)*256);
if(KeGetCurrentIrql() != PASSIVE_LEVEL)
{
    return FALSE;
}
    
dwAddress = (long)PsGetCurrentProcess();
if(dwAddress == 0 || dwAddress == 0xFFFFFFFF)
{
    return FALSE;
}

dwAddress += 0x01B0;                        
if((dwAddress = *(long*)dwAddress) == 0)
{
    return FALSE;
}
dwAddress += 0x0010;                    
if((dwAddress = *(long*)dwAddress) == 0)
{
    return FALSE;
}
dwAddress += 0x3C;                        
if((dwAddress = *(long*)dwAddress) == 0)
{
    return FALSE;
}

RtlCopyMemory(path, (WCHAR *)dwAddress, 16*sizeof(WCHAR));

if( _wcsnicmp(procress, L"\\", 1) == 0 ) //就是这句出错, 在某些时候要蓝屏! 为什么?
{
    return FALSE;
}

//上面那句就是要出错啊!!
低调点!
ProPlayboy
驱动大牛
驱动大牛
  • 注册日期2005-07-07
  • 最后登录2022-02-15
  • 粉丝0
  • 关注0
  • 积分1016分
  • 威望811点
  • 贡献值0点
  • 好评度719点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2007-02-18 17:50
呼呼呼...你从哪里抄来的?呵,你判断过当前的操作系统吗?每个系统的偏移值不一样的.
人不靓仔心灵美,版头不正红花仔!
ProPlayboy
驱动大牛
驱动大牛
  • 注册日期2005-07-07
  • 最后登录2022-02-15
  • 粉丝0
  • 关注0
  • 积分1016分
  • 威望811点
  • 贡献值0点
  • 好评度719点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2007-02-18 17:53
也并不一定就是那一句错!Win2k3(没补丁)和Win2k3 sp1的都不一样,偏移值,你这样写,一定会BSOD,这是肯定的!
人不靓仔心灵美,版头不正红花仔!
classfree
驱动小牛
驱动小牛
  • 注册日期2004-05-23
  • 最后登录2019-01-06
  • 粉丝1
  • 关注1
  • 积分873分
  • 威望276点
  • 贡献值0点
  • 好评度85点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2007-02-21 10:31
OS版本判断过了,偏移我也是正确的!!

是最后在处理dwAddress的时候出了问题!
问题已搞定, 谢谢两位!
低调点!
游客

返回顶部