haifong2
驱动牛犊
驱动牛犊
  • 注册日期2006-05-15
  • 最后登录2014-10-16
  • 粉丝0
  • 关注0
  • 积分890分
  • 威望114点
  • 贡献值0点
  • 好评度88点
  • 原创分0分
  • 专家分0分
阅读:1348回复:7

各位大牛,请帮我把这段汇编改成C代码,谢谢!!!

楼主#
更多 发布于:2007-07-10 12:19
.586
.model flat,stdcall
option casemap:none

include \masm32\include\windows.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc

includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32.lib


Prodef typedef proto :dword,:dword,:dword,:dword
lpPro typedef ptr Prodef

UNICODE_STRING STRUCT
    _Length            WORD    ?        
    MaximumLength    WORD    ?
    Buffer            PWSTR    ?
UNICODE_STRING ENDS

SYSTEM_THREAD_INFORMATION struct
    KernelTime            LARGE_INTEGER    <>
    UserTime            LARGE_INTEGER    <>
    CreateTime            LARGE_INTEGER    <>
    WaitTime            ULONG            ?
    StartAddress        PVOID            ?
    ClientId            dd                ?
    Priority            dd                ?
    BasePriority        dd                ?
    ContextSwitchCount    ULONG            ?
    State                LONG            ?
    WaitReason            LONG            ?
SYSTEM_THREAD_INFORMATION ends

SYSTEM_PROCESS_INFORMATION struct
    NextEntryDelta            ULONG            ?
    ThreadCount                ULONG            ?
    Reserved1                ULONG            6 dup(?)
    CreateTime                LARGE_INTEGER    <>
    UserTime                LARGE_INTEGER    <>
    KernelTime                LARGE_INTEGER    <>
    ProcessName                UNICODE_STRING    <>
    BasePriority            dd                ?
    ProcessId                ULONG            ?
    InheritedFromProcessId    ULONG            ?
    HandleCount                ULONG            ?
    Reserved2                ULONG            2 dup(?)
    VmCounters                dd                ?
    IoCounters                dd                ?
    Threads        SYSTEM_THREAD_INFORMATION    <>
SYSTEM_PROCESS_INFORMATION ends

.data
    szZwQuerySystemInformation    db    'ZwQuerySystemInformation',0
    szNtdll                        db    'Ntdll.dll',0
    szHead                        db    'ProcessID',9h,9h,'ProcessName',0dh,0ah,0
    szFmt                        db    '%4d',9h,9h,9h,'%ws',0dh,0ah,0
    
.data?
    ZwQuerySystemInformation    lpPro    ?
    lpBuff        dd        ?
    szPrint        db        256 dup(?)
    rLen        dd        ?

.code
Main proc
    
    invoke GetModuleHandle,offset szNtdll
    invoke GetProcAddress,eax,offset szZwQuerySystemInformation
    mov ZwQuerySystemInformation,eax
    invoke ZwQuerySystemInformation,5,offset lpBuff,0,offset rLen
    .if eax != 0
        invoke GlobalAlloc,GMEM_FIXED or GMEM_ZEROINIT,rLen
        mov lpBuff,eax
        invoke ZwQuerySystemInformation,5,lpBuff,rLen,NULL
        .if eax == 0
            mov esi,lpBuff
            assume esi:ptr SYSTEM_PROCESS_INFORMATION
            invoke StdOut,offset szHead
            .while [esi].NextEntryDelta !=0
                invoke wsprintf,offset szPrint,offset szFmt,[esi].ProcessId,[esi].ProcessName.Buffer
                invoke StdOut,offset szPrint
                add esi,[esi].NextEntryDelta
            .endw
        .endif
        invoke GlobalFree,lpBuff
    .endif
    ret

Main endp
end Main
游客

返回顶部