首页
社区
课程
招聘
[原创]win10_arm64 驱动注入dll 到 arm32程序
发表于: 2018-9-27 15:55 10505

[原创]win10_arm64 驱动注入dll 到 arm32程序

2018-9-27 15:55
10505
win10_arm64 驱动注入dll 到 arm32程序

思路如下:

PsSetLoadImageNotifyRoutine(LoadImageNotifyRoutine);

VOID LoadImageNotifyRoutine
(
 __in_opt PUNICODE_STRING  FullImageName,
 __in HANDLE  ProcessId,
 __in PIMAGE_INFO  ImageInfo
 )
{
    if ( FullImageName == L"\\SystemRoot\\SysArm32\\ntdll.dll")  // arm32程序
        InjectProcess(ProcessId, ImageInfo->ImageBase);
}

InjectProcess(ProcessId, NtdllImageBase)
{
    GetProcAddress32(hNtdll, "NtTestAlert");  // hook NtTestAlert to shellcode,它在进程入口点前被系统调用
    GetProcAddress32(hNtdll, "LdrLoadDll");   // shellcode 用 LdrLoadDll 加载 dll
    
    shellcode_buf = AllocMem(ProcessId);  // shellcode_buf 要指定在进程空间用户地址2G范围内,方便跳转
                                          // ZwQueryVirtualMemory ZwAllocateVirtualMemory
                                          
    KeStackAttachProcess(pEProcess, &ApcState);
    MakeShellCode(shellcode_buf);
    KeUnstackDetachProcess(&ApcState); 
}

shellcode 构造:

win10_arm64 应用层代码,是 thumb & arm 混杂指令模式,

#pragma once
#include <ntddk.h>

typedef struct _D_UNICODE_STRING32 {
USHORT  Length;
USHORT  MaximumLength;
WCHAR * POINTER_32 Buffer;
} D_UNICODE_STRING32, *P_D_UNICODE_STRING32;

typedef
NTSTATUS (NTAPI * POINTER_32 LdrLoadDll_t)(PWCHAR PathToFile, ULONG *Flags, UNICODE_STRING *ModuleFileName, HANDLE *ModuleHandle);

#pragma pack(push, 1)

typedef struct _InjectShellCodeArm32 * POINTER_32 PInjectShellCodeArm32;
typedef struct _InjectShellCodeArm32
{
    USHORT           PushR0_R3;     // 0F B4
    USHORT           PushLr;        // 00 B5
    USHORT           MovR0Pc;       // 78 46
    USHORT           SubR0_8;       // 08 38
    USHORT           BlInjectFunc1; // 00 F0
    USHORT           BlInjectFunc2; // 18 F9
    USHORT           PopR0;         // 01 BC
    USHORT           MovLrR0;       // 86 46
    USHORT           PopR0_R3;      // 0F BC
    USHORT           align;         // 00 00
    UCHAR            OrigFunc[16];
    PInjectLibArm32  next;
    D_UNICODE_STRING32 dll;         // Dst dll path
    WCHAR            dllBuf[260];
    LdrLoadDll_t     pLdrLoadDll;
    UCHAR            injectFunc[1];

} InjectShellCodeArm32;

#pragma pack(pop)

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

最后于 2018-9-27 16:27 被囧囧编辑 ,原因:
上传的附件:
收藏
免费 1
支持
分享
最新回复 (4)
雪    币: 405
活跃值: (2230)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
真有人买智商测试机的高通骁龙电脑?
2018-9-27 17:16
0
雪    币: 284
活跃值: (3554)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
3
wowocock 真有人买智商测试机的高通骁龙电脑?
真的有人买,hp envy x2
2018-9-27 18:58
0
雪    币: 8835
活跃值: (2404)
能力值: ( LV12,RANK:760 )
在线值:
发帖
回帖
粉丝
4
wowocock 真有人买智商测试机的高通骁龙电脑?
智商感人
2018-9-28 09:08
0
雪    币: 33
活跃值: (824)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
950XL可以,有人破解了bootloader在上面运行win10 arm64
2019-2-3 11:39
0
游客
登录 | 注册 方可回帖
返回
//