download
驱动牛犊
驱动牛犊
  • 注册日期2002-04-06
  • 最后登录2021-06-15
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望115点
  • 贡献值0点
  • 好评度45点
  • 原创分0分
  • 专家分0分
  • 社区居民
阅读:1204回复:0

請問tdi filter 我在 tdi_create 順便取得ProceesName的問題

楼主#
更多 发布于:2007-11-23 17:28
    #define BASE_PROCESS_PEB_OFFSET                               0x01B0
    #define BASE_PEB_PROCESS_PARAMETER_OFFSET               0x0010
    #define BASE_PROCESS_PARAMETER_FULL_IMAGE_NAME        0x003C
        
        #define BASE_PROCESS_PEB_OFFSET_2003                         0x0190

流程大概是這樣
   tdi_create
   GetCurrentProcessId
   PsLookupProcessByProcessId(pid, &dwAddress);
   dwAddress += BASE_PROCESS_PEB_OFFSET;
   dwAddress += BASE_PEB_PROCESS_PARAMETER_OFFSET;
   dwAddress += BASE_PROCESS_PARAMETER_FULL_IMAGE_NAME;
   (PCWSTR)dwAddress  <=====這個就是全路徑和檔案名稱 unicode
  
基本上在xp上取都沒問題 但是拿到2000 pro sp4 跑的時候, 開始都沒問題....只有一種狀況會有問題..

就是開一個網路芳鄰上某台電腦的超連結資料夾,    然後按回到上一層的按鈕...= =...

整個系統就BSOD.....我確認了一下是explore.exe    當要取檔案全路徑的時候...

也就是要+BASE_PROCESS_PEB_OFFSET的時候才會發生.........= =...其他我開IE或Tcp udp 程式都正常

以上這是windows 2000的情況.....

至於windows 2003 rc2...我用windbg查了一下PEB_EPROCESS_OFFSET 0x1a0.....

似乎跟網路上的資料不太一樣...不知道是不是我都用VM測試的關係.....


PROCESS 83392618  SessionId: 0  Cid: 02c4    Peb: 7ffde000  ParentCid: 030c
    DirBase: 16cd9360  ObjectTable: e1222380  HandleCount: 185.
    Image: windbg.exe

PROCESS 833779b8  SessionId: 0  Cid: 078c    Peb: 7ffdf000  ParentCid: 030c
    DirBase: 16cd9460  ObjectTable: e1a86480  HandleCount:  51.
    Image: 12001.exe


然後我用du poi(poi(7ffde000+0x010)+0x03c)   試圖去找出 windbg.exe的全名...測試ok..

但用 db poi(poi(7ffdf000+0x010)+0x03c) 找12001.exe 的全路徑檔名  得到錯誤

Memory access error at ')+0x03c)'

= =似乎超出邊界還是空指標.....= =...真的搞不懂windows 2003 下...我的PEB_PROCESS_OFFSET的值

應該要多少才可以取得我真正想要的進程名稱... 盼各位牛大指點...






  
游客

返回顶部