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

保护进程不被kill

2013-5-3 13:52
4106
想拦截任务管理器里结束进程的操作,网上的代码是:
  //遍历这部分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看了下也没有用到。

请教各位能给个思路。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

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