找回密码
 加入我们

QQ登录

只需一步,快速开始

搜索
查看: 5401|回复: 4

紧急求助

  [复制链接]
头像被屏蔽

27

主题

136

回帖

2

精华

铂金会员

积分
2257
发表于 2010-9-10 23:21:57 | 显示全部楼层 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2010-9-11 00:40:17 | 显示全部楼层
原理是找call或根据特征码辅助找call。给段demo src:

  1. Public Function FindPspTerminateThreadByPointer() As Long
  2.     On Error Resume Next
  3.     Dim i As Long
  4.     Dim ubRt As Byte, ubLastAddr As Byte, b1 As Byte, b2 As Byte, b3 As Byte, b4 As Byte
  5.     Dim AddressOfPsTerminateSystemThread As Long
  6.     AddressOfPsTerminateSystemThread = GetSystemRoutineAddress("PsTerminateSystemThread")
  7.     For i = 0 To 259
  8.         Call GetByte(AddressOfPsTerminateSystemThread + i, ubRt)
  9.         If ubRt = &HE8 Then
  10.             Call GetByte(AddressOfPsTerminateSystemThread + i - 1, ubLastAddr)
  11.             If ubLastAddr = &H50 Then
  12.                 Call GetByte(AddressOfPsTerminateSystemThread + i + 1, b1)
  13.                 Call GetByte(AddressOfPsTerminateSystemThread + i + 2, b2)
  14.                 Call GetByte(AddressOfPsTerminateSystemThread + i + 3, b3)
  15.                 Call GetByte(AddressOfPsTerminateSystemThread + i + 4, b4)
  16.                 FindPspTerminateThreadByPointer = GetTargetAddress(AddressOfPsTerminateSystemThread + i, b1, b2, b3, b4)
  17.                 Exit Function
  18.             End If
  19.         End If
  20.     Next
  21. End Function

  22. Public Function FindKiInsertQueueApc() As Long '28 e8
  23.     On Error Resume Next
  24.     Dim i As Long
  25.     Dim ubRt As Byte, ubLastAddr As Byte, b1 As Byte, b2 As Byte, b3 As Byte, b4 As Byte
  26.     Dim AddressOfKeInsertQueueApc As Long
  27.     AddressOfKeInsertQueueApc = GetSystemRoutineAddress("KeInsertQueueApc")
  28.     For i = 0 To 259
  29.         Call GetByte(AddressOfKeInsertQueueApc + i, ubRt)
  30.         If ubRt = &HE8 Then
  31.             Call GetByte(AddressOfKeInsertQueueApc + i - 1, ubLastAddr)
  32.             If ubLastAddr = &H28 Then
  33.                 Call GetByte(AddressOfKeInsertQueueApc + i + 1, b1)
  34.                 Call GetByte(AddressOfKeInsertQueueApc + i + 2, b2)
  35.                 Call GetByte(AddressOfKeInsertQueueApc + i + 3, b3)
  36.                 Call GetByte(AddressOfKeInsertQueueApc + i + 4, b4)
  37.                 FindKiInsertQueueApc = GetTargetAddress(AddressOfKeInsertQueueApc + i, b1, b2, b3, b4)
  38.                 Exit Function
  39.             End If
  40.         End If
  41.     Next
  42. End Function
复制代码

3

主题

38

回帖

0

精华

初来乍到

积分
14
发表于 2010-9-11 09:21:34 | 显示全部楼层
貌似就是汇编中的Call后的4字节

857

主题

2632

回帖

2

精华

管理员

此生无悔入华夏,  长居日耳曼尼亚。  

积分
36130
发表于 2010-9-11 12:15:38 | 显示全部楼层
回复 3# 腾袭


    问题是要知道获取哪个call后面的四字节。

3

主题

38

回帖

0

精华

初来乍到

积分
14
发表于 2010-9-11 18:30:22 | 显示全部楼层
回复 4# Tesla.Angela


    嗯
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

快速回复 返回顶部 返回列表