首页
社区
课程
招聘
[原创]逆一下某AXE-BASE都做了什么
发表于: 2022-12-15 22:13 8296

[原创]逆一下某AXE-BASE都做了什么

2022-12-15 22:13
8296

我写了一个玩具给朋友玩, 但是在12月的某一天它更新了, 可是这次因为偷懒并没有去检查是否对修改的内存地址进行检测, 导致被封了365天, 虽然我不玩这个游戏, 但是还是不开心的写起了遍历DriverObject的代码.

 

先说说AXE-BASE频繁在做的其中一件事情: 几乎查询所有在运行进程某线性地址的页面属性.

 

额. 简单说一下这个DeviceIoControlCode做了什么.

  1. 校验某全局变量(QWORD & 0x10) != 0
  2. 全局平衡树查找指定PID的EPROCESS
  3. NTSTATUS QueryVirtualMem(
    EPROCESS EProcess,
    ULONGLONG ullVirtualMemory,
    //MEMORY_INFORMATION_CLASS::MemoryBasicInformation
    ULONG ulZero,
    OUT ULONGLONG ullIrpOutSystemBuffer,
    IN ULONG ulOutBufferLen,
    OUT PULONG pulReturnByte
    );
    (注意此处忽略掉了Irp->InputBuffer的校验, 也就是说达到这里时, 已经过了校验)
  4. Irp->BufferStruct
    base+00 ULONG ulPid
    base+08 ULONGLONG ullVirtualAddress
    base+0c ULONG ulZero

NTSTATUS QueryVirtualMemory(
PEPROCESS Process,
uint64_t VirtualMemory,
ULONG ulZero
unsigned __int8 *OutputBuffer,
unsigned int OutputLen,
OUT PULONG OutReturnLen
){
NTSTATUS lStatus;
APC_STATE apc;
ULONG ulExitCode = PsGetProcessExitStatus(Process);
//STATUS_PENDING
if(ulExitCode == 0x103){
return STATUS_PROCESS_IS_TERMINATING;
}
KeStackAttachProcess(Process,&apc);

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
/*
NTSYSAPI NTSTATUS ZwQueryVirtualMemory(
  [in]            HANDLE                   ProcessHandle,
  [in, optional]  PVOID                    BaseAddress,
  [in]            MEMORY_INFORMATION_CLASS MemoryInformationClass,
  [out]           PVOID                    MemoryInformation,
  [in]            SIZE_T                   MemoryInformationLength,
  [out, optional] PSIZE_T                  ReturnLength
);
*/
 
/*
typedef struct _MEMORY_BASIC_INFORMATION {
  PVOID  BaseAddress;
  PVOID  AllocationBase;
  ULONG  AllocationProtect;
  USHORT PartitionId;
  SIZE_T RegionSize;
  ULONG  State;
  ULONG  Protect;
  ULONG  Type;
} MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION;
*/
 
//-1 当前进程句柄
 
//查询当前进程指定虚拟地址的内存属性 MEMORY_BASIC_INFORMATION
lStatus = ZwQueryVirtualMemory(-1,VirtualMemory,ulZero,OutputBuffer,OutputLen,OutReturnLen);
 
KeUnstackDetachProcess(&apc);
return lStatus;

}

 

版面似乎不好看, 刚开始用不太会...
今天暂时先发这一个吧, 睡觉~


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

收藏
免费 1
支持
分享
最新回复 (1)
雪    币: 12848
活跃值: (9142)
能力值: ( LV9,RANK:280 )
在线值:
发帖
回帖
粉丝
2
某线性地址?你不妨把话说的更明白一点
2022-12-16 11:05
0
游客
登录 | 注册 方可回帖
返回
//