欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[原创]枚举进程定时器

[原创]枚举进程定时器

这个进程定时器 Xuetr Pt 都有这个功能,这个功能也很实用,这个大家都知道,
群里前些日子有人说起这进程定时器怎么枚举,发出来给大家玩玩
以XP分析为主,不怎么会说话,我就以图片为主。
首先要分析 user32.dll 的 SetTimer 函数,至于这个函数作用大家都知道,
用 IDA 打开 use32.dll 找到 SetTimer 

调用的是NtUserSetTimer,继续跟

继续跟call    __SetTimer@16   ; _SetTimer(x,x,x,x)
进入__SetTimer@16

继续跟call    _InternalSetTimer@20 ; InternalSetTimer(x,x,x,x,x)
进入InternalSetTimer

call    _FindTimer@16   ; FindTimer(x,x,x,x)
关键函数FindTimer,进入FindTimer看看

mov     eax, _gptmrFirst
通过2K代码,知道_gptmrFirst 就是进程定时器的一个表里面存放着所有进程定时器信息
2K代码我就不贴了,相信大家都有
// 进程定时器结构
typedef struct _HEAD {
  HANDLE h;
  DWORD cLockObj;
} HEAD, *PHEAD;
typedef struct tagTIMER {
  HEAD head;
  // 下个结构
  struct tagTIMER *ptmrNext;
  struct tagTIMER *ptmrPrev;
  PULONG pti;  
  // 窗口句柄
  PULONG spwnd;
  // 定时器ID
  UINT_PTR nID;
  // 倒计时
  INT cmsCountdown;
  // 间隔时间
  INT cmsRate; 
  UINT flags;
  // 函数入口
  ULONG pfn; 
  PULONG ptiOptCreator;
} TIMER, *PTIMER;
这就是定时器的结构
找到了关键的表,那么枚举就容易了,我只贴枚举的代码,全贴太长了,没必要。

这里以XP分析为主,2K3的略有不同,但是大体相同主要是定位问题,WIN7 没研究出来,
WIN7的那个表与结构完全与XP 2K3不同,希望研究出来的朋友能分享下。
效果图:

上传的附件 1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
7.jpg
8.jpg

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功