首页
社区
课程
招聘
保护进程不被kill
2013-5-3 13:52 3959

保护进程不被kill

2013-5-3 13:52
3959
想拦截任务管理器里结束进程的操作,网上的代码是:
  //遍历这部分IAT表
  while(pThunk->u1.Function)
  {
    lpAddr = (DWORD*)&(pThunk->u1.Function);
    //比较函数地址是否相同
    if(*lpAddr == (DWORD)OldFunAddr)
    { 
      DWORD dwOldProtect;
      //修改内存包含属性
      VirtualProtect(lpAddr, sizeof(DWORD), PAGE_READWRITE, &dwOldProtect);
      //API函数的入口点地址改成我们构造的函数的地址
      WriteProcessMemory(GetCurrentProcess(),lpAddr, &NewFunAddr, sizeof(DWORD), NULL);
    }
    pThunk++;
  }

我不明白if(*lpAddr == (DWORD)OldFunAddr)这句话:
原理是要把系统的OpenProcess替换成我自己的函数。
那么如果我的exe文件没有用到OpenProcess这个API,那么这里就不能在exe的导入表里自然就找不到这个API。我想是不是要向taskman.exe里注入呢,用dependency看了下也没有用到。

请教各位能给个思路。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工 作,每周日13:00-18:00直播授课

收藏
点赞0
打赏
分享
最新回复 (7)
雪    币: 297
活跃值: (225)
能力值: ( LV4,RANK:55 )
在线值:
发帖
回帖
粉丝
evilor 2013-5-3 14:21
2
0
替换的就是taskmgr的导入表呀
雪    币: 1042
活跃值: (455)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Rookietp 2013-5-3 14:25
3
0
如果当前IAT的地址与OpenProcess地址相等则进行修改。
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kxzb 2013-5-3 14:27
4
0
晕,把taskman当成taskmgr了,太笨了,还是要谢谢 evilor
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kxzb 2013-5-3 14:30
5
0
不知道除了向taskmgr进程注入的方式来保护进程,还有其他的方法么?如果我们不用自带的任务管理器那么这个方法就没用了。
雪    币: 585
活跃值: (568)
能力值: ( LV13,RANK:290 )
在线值:
发帖
回帖
粉丝
guxinyi 5 2013-5-3 16:59
6
0
驱动。。。。。。
雪    币: 110
活跃值: (34)
能力值: (RANK:50 )
在线值:
发帖
回帖
粉丝
phpskycn 1 2013-5-3 20:10
7
0
如果效果要好,就得在内核动手脚了
初级:
SSDT hook/Inline hook NtOpenProcess之类的
中级:
object hook
替换掉process object的create函数
高级:……
要挡住ARK工具的话比较麻烦
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kxzb 2013-5-5 14:52
8
0
嗯,要学的还很多,继续努力
游客
登录 | 注册 方可回帖
返回