• 取线程所属模块


    .版本 2

    .DLL命令 ZwQueryInformationThread, 整数型, "ntdll.dll"
        .参数 ThreadHandle, 整数型
        .参数 ThreadInformationClass, 整数型
        .参数 ThreadInformation, 字节集, 传址
        .参数 ThreadInformationLength, 整数型
        .参数 ReturnLength, 整数型, 传址

    .DLL命令 RtlNtStatusToDosError, 整数型, "ntdll.dll"
        .参数 NTSTATUS, 整数型

    .DLL命令 OpenThread, 整数型
        .参数 a, 整数型
        .参数 b, 逻辑型
        .参数 c, 整数型

    .DLL命令 ZwClose, 整数型, "ntdll.dll"
        .参数 a

    .DLL命令 OpenProcess, 整数型
        .参数 a, 整数型
        .参数 b, 逻辑型
        .参数 c, 整数型

    .DLL命令 GetModuleFileNameExA, 整数型, "psapi.dll"
        .参数 process, 整数型
        .参数 Reseverd, 整数型
        .参数 Name, 字节集, 传址
        .参数 Length, 整数型

    .DLL命令 GetMappedFileNameA, 整数型, "psapi.dll"
        .参数 process, 整数型
        .参数 startaddr, 整数型
        .参数 modname, 字节集, 传址
        .参数 length, 整数型

    .版本 2

    .数据类型 _CLIENT_ID
        .成员 UniqueProcess, 整数型
        .成员 UniqueThread, 整数型

    .数据类型 _THREAD_BASIC_INFORMATION
        .成员 ExitStatus, 整数型
        .成员 TebBaseAddress, 整数型
        .成员 Client_ID, _CLIENT_ID
        .成员 AffinityMask, 整数型
        .成员 Priority, 整数型
        .成员 BasePriority, 整数型

    .版本 2

    .子程序 ShowThread, 逻辑型
    .参数 tid6, 整数型, , 线程ID
    .参数 StartAddress, 整数型, 参考 可空
    .参数 ProcessId, 整数型, 参考 可空, 线程所在进程ID
    .参数 Image, 文本型, 可空, 线程所在进程名
    .参数 ModFile, 文本型, 可空, 线程所在模块
    .局部变量 startaddr, 字节集
    .局部变量 status, 整数型
    .局部变量 thread, 整数型
    .局部变量 process, 整数型
    .局部变量 ret
    .局部变量 ss

    thread = OpenThread (64, 假, tid6)
    .如果真 (thread = 0)
        返回 (假)
    .如果真结束
    startaddr = 取空白字节集 (4)
    status = ZwQueryInformationThread (thread, 9, startaddr, 4, ret)
    .如果真 (status < 0)
        ZwClose (thread)
        返回 (假)
    .如果真结束
    ss = 取字节集数据 (startaddr, 3, )


    StartAddress = ss
    startaddr = 取空白字节集 (28)
    status = ZwQueryInformationThread (thread, 0, startaddr, 28, ret)
    .如果真 (status < 0)
        ZwClose (thread)
        返回 (假)
    .如果真结束
    ProcessId = 取字节集数据 (startaddr, 3, 9)
    process = OpenProcess (2035711, 假, 取字节集数据 (startaddr, 3, 9))

    .如果真 (process = 0)
        ZwClose (thread)
        返回 (假)
    .如果真结束
    startaddr = 取空白字节集 (256)
    GetModuleFileNameExA (process, 0, startaddr, 256)
    Image = 取字节集数据 (startaddr, 10, )
    GetMappedFileNameA (process, ss, startaddr, 256)
    ModFile = 取字节集数据 (startaddr, 10, )
    ZwClose (thread)
    ZwClose (process)
    返回 (真)

  • 相关阅读:
    telnet和ssh
    sersync实现实时同步
    rsync服务端一键安装rsync脚本(源码)
    rsync客户端一键安装rsync脚本(源码)
    rsync客户端一键安装rsync脚本(非源码)
    centos 建立Clamav自动扫描脚本
    DELL T110II Server如何通过RAID 级别迁移的方式在OMSA下实现磁盘阵列扩容?
    Dell PowerEdgeServerT110II USB Boot更新
    Centos7最小安装下Install Clamav(2017-06-09最后更新)
    Centos7 samba 匿名共享 简单config
  • 原文地址:https://www.cnblogs.com/qq32175822/p/3375388.html
Copyright © 2020-2023  润新知