• 取线程所属模块


    .版本 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)
    返回 (真)

  • 相关阅读:
    String类的intern()方法,随常量池发生的变化
    JDK8的JVM内存结构,元空间替代永久代成为方法区及常量池的变化
    wait()、notify()方法原理,以及使用注意事项--丢失唤醒、虚假唤醒
    消费者、生产者Java代码示例,wait-notify实现
    volatile、Synchronized实现变量可见性的原理,volatile使用注意事项
    CAS及其ABA问题
    JUC包Lock机制的支持--AQS
    JUC包实现的同步机制,原理以及简单用法总结
    Synchronized机制下偏向锁、轻量级锁、重量级锁的适用场景
    临时表循环插入
  • 原文地址:https://www.cnblogs.com/qq32175822/p/3375388.html
Copyright © 2020-2023  润新知