亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? win32wlk.c

?? Windows 95 系統程式設計大奧秘書籍源碼
?? C
?? 第 1 頁 / 共 3 頁
字號:
//==================================
// WIN32WLK - Matt Pietrek 1995
// FILE: WIN32WLK.C
//==================================
#include <windows.h>
#include <stdio.h>
#include <stddef.h>
#include <string.h>
#include <stdarg.h>
#include <malloc.h>
#include <tlhelp32.h>
#pragma hdrstop
#include "mbassert.h"
#include "win32wlk.h"
#include "module32.h"
#include "procdb.h"
#include "threaddb.h"
#include "k32objs.h"

// Prototype the functions for this
void Handle_WM_COMMAND(HWND hWndDlg, WPARAM wParam, LPARAM lParam);
void Handle_WM_INITDIALOG(HWND hWndDlg);
void Handle_WM_DELETEITEM(HWND hWndDlg, WPARAM wParam, LPARAM lParam);
BOOL CALLBACK Win32WlkDlgProc(HWND, UINT, WPARAM, LPARAM);
void RecordListboxLineTypeAndValue(HWND hWnd, DWORD type, DWORD value);
BOOL RetrieveListboxLineTypeAndValue(HWND hWnd, DWORD *type, DWORD *value);
void UpdateProcessList(void);
void UpdateThreadList(void);
void UpdateModuleList(void);
void ShowProcessDetails( DWORD processID );
void ShowHandleTableDetails( PHANDLE_TABLE pHndTbl );
void ShowThreadDetails( DWORD threadID );
void ShowTIBDetails( PTIB ptib );
void ShowModuleDetails( PIMTE pimte );
void ShowPEHeader( PIMAGE_NT_HEADERS pNTHdr );
void ShowMODREFListDetails( PMODREF pModRef );
void lbprintf(HWND hWnd, char * format, ...);
BOOL IsModule(PIMTE pimte);
BOOL IsProcessId( DWORD pid);
BOOL IsThreadId( DWORD tid);
BOOL IsMODREF( PMODREF pModRef );
PPROCESS_DATABASE PIDToPDB( DWORD pid );
PTHREAD_DATABASE TIDToTDB( DWORD tid );
void InitUnobsfucator(void);
void InitModuleTableBase(void);
void InitKernel32HeapHandle(void);
void GetProcessNameFromHTask( HTASK hTask, PSTR szBuffer );
void GetModuleNameFromIMTEIndex( unsigned short index, PSTR pszBuffer );
PSTR GetKernel32ObjectType( PVOID pObject );

// HWNDs of the commonly used dialog controls
HWND HWndMainList;
HWND HWndDetails;
HWND HWndDetailsDescription;

DWORD Unobsfucator = 0;
PIMTE *PModuleTable = 0;
HANDLE HKernel32Heap;
BOOL fDebugVersion;

int PASCAL WinMain( HANDLE hInstance, HANDLE hPrevInstance,
                    LPSTR lpszCmdLine, int nCmdShow )
{
    DialogBox(hInstance, "Win32WlkDlg", 0, (DLGPROC)Win32WlkDlgProc);
    return 0;
}

void UpdateProcessList(void)
{
    HANDLE hSnapshot;
    
    SendMessage(HWndMainList, LB_RESETCONTENT, 0, 0);

    hSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPALL, 0 );
    if ( hSnapshot )
    {
        PROCESSENTRY32 process;
        BOOL fMore;

        process.dwSize = sizeof(process);
        fMore = Process32First( hSnapshot, &process );
        
        while ( fMore )
        {
            PPROCESS_DATABASE ppdb;
            char szBuffer[20];
            
            ppdb = PIDToPDB( process.th32ProcessID );
            GetProcessNameFromHTask( ppdb->W16TDB, szBuffer );
                
            lbprintf(HWndMainList, "%08X %s", process.th32ProcessID, szBuffer);
            RecordListboxLineTypeAndValue( HWndMainList, LB_ITEM_PROCESS, 
                                            process.th32ProcessID );
            
            fMore = Process32Next( hSnapshot, &process );
        }
        
        CloseHandle( hSnapshot );
    }

    // Set selection to first process in list, and show its details
    SendMessage( HWndMainList, LB_SETCURSEL, 0, 0 );
    PostMessage( GetParent(HWndMainList), WM_COMMAND,
                    MAKEWPARAM(IDC_LB_MAIN_LIST, LBN_SELCHANGE),
                    (LPARAM)HWndMainList );
}

void UpdateThreadList(void)
{
    HANDLE hSnapshot;
    
    SendMessage(HWndMainList, LB_RESETCONTENT, 0, 0);

    hSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPALL, 0 );
    if ( hSnapshot )
    {
        THREADENTRY32 thread;
        BOOL fMore;
        
        thread.dwSize = sizeof(thread);
        fMore = Thread32First( hSnapshot, &thread );
        
        while ( fMore )
        {
            PPROCESS_DATABASE ppdb;
            char szBuffer[20];
            
            ppdb = PIDToPDB( thread.th32OwnerProcessID );
            GetProcessNameFromHTask( ppdb->W16TDB, szBuffer );
                
            lbprintf( HWndMainList, "%08X %s", thread.th32ThreadID, szBuffer );
            RecordListboxLineTypeAndValue( HWndMainList, LB_ITEM_PROCESS, 
                                            thread.th32ThreadID );
            
            fMore = Thread32Next( hSnapshot, &thread );
        }
        
        CloseHandle( hSnapshot );
    }

    // Set selection to first thread in list, and show its details
    SendMessage( HWndMainList, LB_SETCURSEL, 0, 0 );
    PostMessage( GetParent(HWndMainList), WM_COMMAND,
                    MAKEWPARAM(IDC_LB_MAIN_LIST, LBN_SELCHANGE),
                    (LPARAM)HWndMainList );
}

void UpdateModuleList(void)
{
    unsigned i, cIMTEs;
    
    InitModuleTableBase();      // In case PModuleTableArray got reallocated
    
    SendMessage(HWndMainList, LB_RESETCONTENT, 0, 0);

    cIMTEs = HeapSize( HKernel32Heap, 0, (PVOID)PModuleTable ) / sizeof(PIMTE);
    
    for( i=0; i < cIMTEs; i++ )
    {
        if ( PModuleTable[i] )
        {
            lbprintf( HWndMainList, "%s", PModuleTable[i]->pszModName );
            RecordListboxLineTypeAndValue( HWndMainList, LB_ITEM_HMODULE, 
                                            (DWORD)PModuleTable[i] );
        }
    }
    
    // Set selection to first module in list, and show its details
    SendMessage( HWndMainList, LB_SETCURSEL, 0, 0 );
    PostMessage( GetParent(HWndMainList), WM_COMMAND,
                    MAKEWPARAM(IDC_LB_MAIN_LIST, LBN_SELCHANGE),
                    (LPARAM)HWndMainList );
}

DWORD_FLAGS ProcessFlagNames[] = 
{
{ 0x00000001, "fDebugSingle" },
{ 0x00000002, "fCreateProcessEvent" },
{ 0x00000004, "fExitProcessEvent" },
{ 0x00000008, "fWin16Process" },
{ 0x00000010, "fDosProcess" },
{ 0x00000020, "fConsoleProcess" },
{ 0x00000040, "fFileApisAreOem" },
{ 0x00000080, "fNukeProcess" },
{ 0x00000100, "fServiceProcess" },
{ 0x00000800, "fLoginScriptHack" },
{ 0x00200000, "fSendDLLNotifications" },
{ 0x00400000, "fDebugEventPending" },
{ 0x00800000, "fNearlyTerminating" },
{ 0x08000000, "fFaulted" },
{ 0x10000000, "fTerminating" },
{ 0x20000000, "fTerminated" },
{ 0x40000000, "fInitError" },
{ 0x80000000, "fSignaled" },
};

void ShowProcessDetails( DWORD pid )
{
    char szBuffer[512];
    char szBuffer2[384];
    PPROCESS_DATABASE ppdb;
    PENVIRONMENT_DATABASE pedb;
    unsigned i;
    
    if ( !IsProcessId(pid) )
    {
        MessageBox( 0, "Not a valid process", 0, MB_OK );
        return;
    }
    
    ppdb = PIDToPDB(pid);
    pedb = ppdb->pEDB;
    MBassert( IsK32HeapHandle(ppdb->pEDB) || !ppdb->pEDB);

    GetProcessNameFromHTask( (HTASK)ppdb->W16TDB, szBuffer2 );

    InitModuleTableBase();      // In case PModuleTableArray got reallocated
    
    wsprintf(szBuffer, "Process: %08X (%08X) %s", pid, ppdb, szBuffer2 );
    SendMessage( HWndDetailsDescription, WM_SETTEXT, 0, (LPARAM)szBuffer );
    SendMessage(HWndDetails, LB_RESETCONTENT, 0, 0);

    SendMessage( HWndDetails, WM_SETREDRAW, FALSE, 0 ); // Turn off redraws

    lbprintf( HWndDetails, "Type: %08X", ppdb->Type );
    lbprintf( HWndDetails, "cReference: %08X", ppdb->cReference );
    MBassert( !ppdb->un1 );

    lbprintf( HWndDetails, "someEvent: %08X", ppdb->someEvent );
    MBassert( IsK32HeapHandle(ppdb->someEvent) || !ppdb->someEvent );

    lbprintf( HWndDetails, "TerminationStatus: %08X", ppdb->TerminationStatus );
    MBassert( !ppdb->un2 );

    lbprintf( HWndDetails, "DefaultHeap: %08X", ppdb->DefaultHeap );
    MBassert( IsHeapStart(ppdb->DefaultHeap) ) ;
    lbprintf( HWndDetails, "MemoryContext: %08X", ppdb->MemoryContext );

    MBassert( IsRing0HeapHandle(ppdb->MemoryContext) );

    wsprintf(szBuffer, "flags: %08X ", ppdb->flags );
    for ( i=0; i < (sizeof(ProcessFlagNames)/sizeof(DWORD_FLAGS)); i++ )
        if ( ppdb->flags & ProcessFlagNames[i].value )
            wsprintf(szBuffer + lstrlen(szBuffer), "%s ",
                     ProcessFlagNames[i].name);
    lbprintf( HWndDetails, szBuffer );

    lbprintf( HWndDetails, "pPSP: %08X", ppdb->pPSP );
    lbprintf( HWndDetails, "PSPSelector: %04X", ppdb->PSPSelector );
    MBassert( IsSelector( ppdb->PSPSelector ) );

    lbprintf( HWndDetails, "+MTE Index: %04X", ppdb->MTEIndex );
    RecordListboxLineTypeAndValue( HWndDetails, LB_ITEM_HMODULE,
                                    (DWORD)PModuleTable[ppdb->MTEIndex] );
    lbprintf( HWndDetails, "cThreads: %04X", ppdb->cThreads );
    MBassert( ppdb->cThreads );

    lbprintf( HWndDetails, "cNotTermThreads: %04X", ppdb->cNotTermThreads );
    MBassert( !ppdb->un3 );

    lbprintf( HWndDetails, "cRing0Threads: %08X", ppdb->cRing0Threads );
    MBassert( ppdb->cRing0Threads >= ppdb->cThreads );

    lbprintf( HWndDetails, "HeapHandle: %08X", ppdb->HeapHandle );
    MBassert( IsHeapStart(ppdb->HeapHandle) ) ;
    lbprintf( HWndDetails, "W16TDB: %08X", ppdb->W16TDB );

    MBassert( Is16BitGlobalHandle(ppdb->W16TDB) );

    lbprintf( HWndDetails, "MemMapFiles: %08X", ppdb->MemMapFiles );
    MBassert( IsK32HeapHandle(ppdb->MemMapFiles) || !ppdb->MemMapFiles );

    lbprintf( HWndDetails, "pEDB: %08X", ppdb->pEDB );
    lbprintf( HWndDetails, "+pHandleTable: %08X", ppdb->pHandleTable );
    RecordListboxLineTypeAndValue( HWndDetails, LB_ITEM_HANDLE_TABLE,
                                    (DWORD)ppdb->pHandleTable );
    MBassert( IsK32HeapHandle(ppdb->pHandleTable) );

    lbprintf( HWndDetails, "+Parent process: %08X", ppdb->ParentPDB );
    RecordListboxLineTypeAndValue( HWndDetails, LB_ITEM_PROCESS,
                                    (DWORD)PIDToPDB((DWORD)ppdb->ParentPDB));
    MBassert( IsK32HeapHandle( ppdb->ParentPDB ) || !ppdb->ParentPDB );

    lbprintf( HWndDetails, "+MODREFlist: %08X", ppdb->MODREFlist );
    RecordListboxLineTypeAndValue( HWndDetails, LB_ITEM_MODREF_LIST,
                                    (DWORD)ppdb->MODREFlist );
    MBassert( IsK32HeapHandle( ppdb->MODREFlist ) );

    lbprintf( HWndDetails, "ThreadList: %08X", ppdb->ThreadList );
    MBassert( IsK32HeapHandle(ppdb->ThreadList) );

    lbprintf( HWndDetails, "DebuggeeCB: %08X", ppdb->DebuggeeCB );
    lbprintf( HWndDetails, "LocalHeapFreeHead: %08X", ppdb->LocalHeapFreeHead );
    MBassert( IsDivisibleBy4(ppdb->LocalHeapFreeHead)
              || !ppdb->LocalHeapFreeHead );

    lbprintf( HWndDetails, "InitialRing0ID: %08X", ppdb->InitialRing0ID );

    MBassert( !ppdb->un4[0] );
    MBassert( !ppdb->un4[1] );
    MBassert( !ppdb->un4[2] );

    if ( !fDebugVersion )
        ppdb = (PPROCESS_DATABASE)( (PBYTE)ppdb - 4 );
            
    lbprintf( HWndDetails, "pConsole: %08X", ppdb->pConsole );
    MBassert( IsK32HeapHandle(ppdb->pConsole) || !ppdb->pConsole );

    lbprintf( HWndDetails, "tlsInUseBits1: %08X", ppdb->tlsInUseBits1 );
    lbprintf( HWndDetails, "tlsInUseBits2: %08X", ppdb->tlsInUseBits2 );
    lbprintf( HWndDetails, "ProcessDWORD: %08X", ppdb->ProcessDWORD );
    lbprintf( HWndDetails, "+ProcessGroup: %08X", ppdb->ProcessGroup );
    RecordListboxLineTypeAndValue( HWndDetails, LB_ITEM_PROCESS,
                                    (DWORD)PIDToPDB((DWORD)ppdb->ProcessGroup));
    MBassert( IsK32HeapHandle( ppdb->ProcessGroup ) || !ppdb->ProcessGroup );

    lbprintf( HWndDetails, "pExeMODREF: %08X", ppdb->pExeMODREF );  
    MBassert( IsK32HeapHandle( ppdb->pExeMODREF ) );

    lbprintf( HWndDetails, "TopExcFilter: %08X", ppdb->TopExcFilter );
    lbprintf( HWndDetails, "BasePriority: %08X", ppdb->BasePriority );
    MBassert( (ppdb->BasePriority <= 31) );

    lbprintf( HWndDetails, "HeapOwnList: %08X", ppdb->HeapOwnList );
    MBassert( IsHeapStart(ppdb->HeapOwnList) );

    lbprintf( HWndDetails, "HeapHandleBlockList: %08X", ppdb->HeapHandleBlockList );
    MBassert( IsDivisibleBy4(ppdb->HeapHandleBlockList)
              || !ppdb->HeapHandleBlockList );

    lbprintf( HWndDetails, "pSomeHeapPtr: %08X", ppdb->pSomeHeapPtr );
    MBassert( IsK32HeapHandle(ppdb->pSomeHeapPtr) || !ppdb->pSomeHeapPtr );

    lbprintf( HWndDetails, "pConsoleProvider: %08X", ppdb->pConsoleProvider );
    MBassert( IsK32HeapHandle(ppdb->pConsoleProvider) ||
              !ppdb->pConsoleProvider );

    lbprintf( HWndDetails, "EnvironSelector: %04X", ppdb->EnvironSelector );
    MBassert( IsSelector( ppdb->EnvironSelector) || !ppdb->EnvironSelector );

    lbprintf( HWndDetails, "ErrorMode: %04X", ppdb->ErrorMode );
    lbprintf( HWndDetails, "pevtLoadFinished: %08X", ppdb->pevtLoadFinished );
    MBassert( IsK32HeapHandle(ppdb->pevtLoadFinished) );

    lbprintf( HWndDetails, "UTState: %04X", ppdb->UTState );

    SendMessage( HWndDetails, WM_SETREDRAW, TRUE, 0 );  // Turn on redraws
        
    if ( IsBadReadPtr(pedb, sizeof(ENVIRONMENT_DATABASE)) )
        lbprintf( HWndDetails, "Environment Database ptr invalid" );
    else

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品自产自拍| 国产在线精品一区在线观看麻豆| 在线成人av影院| 国产成人在线色| 日韩高清在线电影| 亚洲精选视频在线| 久久婷婷国产综合国色天香| 欧美在线观看视频一区二区三区| 国内久久精品视频| 国产成人综合精品三级| 奇米四色…亚洲| 一区二区三区视频在线看| 久久久电影一区二区三区| 欧美日韩夫妻久久| 色播五月激情综合网| 国产精品一二三四| 老色鬼精品视频在线观看播放| 亚洲人成网站在线| 国产欧美中文在线| 精品1区2区在线观看| 欧美精品久久久久久久多人混战| av一区二区三区黑人| 国产激情视频一区二区三区欧美 | 欧美一级久久久| 91成人在线精品| 成人国产精品免费| 国产成人在线免费| 国产专区综合网| 老鸭窝一区二区久久精品| 日韩激情中文字幕| 日韩精品1区2区3区| 午夜伦理一区二区| 亚洲亚洲人成综合网络| 樱桃视频在线观看一区| 中文字幕一区在线| 亚洲欧洲一区二区在线播放| 国产精品欧美精品| 中文字幕一区二区不卡| 国产精品乱子久久久久| 国产精品丝袜黑色高跟| 国产精品久久久久四虎| 国产精品久久久久久久久图文区 | 中文字幕一区不卡| 中文字幕在线免费不卡| 亚洲欧洲精品一区二区三区| 日韩毛片一二三区| 亚洲欧美另类综合偷拍| 一区二区三区日韩在线观看| 有码一区二区三区| 五月激情综合色| 秋霞国产午夜精品免费视频| 麻豆成人免费电影| 激情av综合网| 豆国产96在线|亚洲| 99这里只有久久精品视频| 色偷偷成人一区二区三区91| 欧美亚洲高清一区二区三区不卡| 伊人一区二区三区| 亚洲一区二区四区蜜桃| 日韩精品一卡二卡三卡四卡无卡| 天天操天天综合网| 精品一区二区三区久久| 国产高清不卡一区| www.亚洲国产| 欧美日韩午夜影院| 精品国产精品网麻豆系列| 国产精品免费视频一区| 亚洲在线免费播放| 奇米影视一区二区三区小说| 国产乱一区二区| 色综合久久中文字幕综合网| 56国语精品自产拍在线观看| 日韩三级高清在线| 国产精品久久久久久久久久免费看 | 欧美激情资源网| 亚洲精品免费在线观看| 奇米777欧美一区二区| 国产91清纯白嫩初高中在线观看| 91一区二区在线| 欧美日韩的一区二区| 久久精品一区二区三区不卡| 亚洲日本韩国一区| 美脚の诱脚舐め脚责91| 成人午夜av影视| 欧美日本不卡视频| 国产欧美精品一区二区色综合朱莉| 一区二区三区在线视频观看| 久久精品国产亚洲一区二区三区| 99久久伊人网影院| 欧美一级在线观看| 亚洲欧洲制服丝袜| 国产综合色精品一区二区三区| 日本电影亚洲天堂一区| www国产精品av| 亚洲国产aⅴ成人精品无吗| 国产精品综合二区| 91麻豆精品久久久久蜜臀| 中文字幕欧美国产| 免费观看一级欧美片| 色偷偷久久一区二区三区| 久久久精品日韩欧美| 日韩中文字幕亚洲一区二区va在线| 丰满亚洲少妇av| 欧美一区二区三区男人的天堂| 国产精品成人在线观看| 极品销魂美女一区二区三区| 欧美日韩你懂得| 亚洲视频综合在线| 国产成人午夜99999| 日韩欧美中文字幕一区| 亚洲成人午夜影院| 91免费精品国自产拍在线不卡| 欧美精品一区二区在线播放| 天堂午夜影视日韩欧美一区二区| 91在线免费视频观看| 欧美韩国一区二区| 黑人巨大精品欧美一区| 欧美精品三级在线观看| 亚洲制服丝袜av| 91麻豆免费观看| 亚洲欧美在线视频观看| 国产精品1区2区3区在线观看| 欧美一区二区三区电影| 污片在线观看一区二区| 欧美亚洲国产一区二区三区| 亚洲精品高清在线| 91美女片黄在线观看| 亚洲视频 欧洲视频| 成人av免费在线观看| 国产精品无人区| 成人免费看视频| 国产日韩亚洲欧美综合| 国产丶欧美丶日本不卡视频| 久久人人爽人人爽| 国产精品亚洲一区二区三区在线| 精品不卡在线视频| 国产精品中文字幕日韩精品| 久久综合五月天婷婷伊人| 久久爱www久久做| 精品盗摄一区二区三区| 国产传媒欧美日韩成人| 国产精品视频观看| 不卡免费追剧大全电视剧网站| 国产精品久久久久久久久果冻传媒| 国产a精品视频| 国产精品国产成人国产三级| 91在线观看一区二区| 亚洲精品国产品国语在线app| 91精品福利视频| 丝袜亚洲另类欧美综合| 欧美一级夜夜爽| 国产一区二区毛片| 国产精品毛片久久久久久久| 99精品一区二区三区| 一区二区三区在线视频免费| 欧美蜜桃一区二区三区| 日本视频一区二区| 久久久久国产精品厨房| 成人18精品视频| 亚洲国产成人av网| 91精品国产乱码久久蜜臀| 极品瑜伽女神91| 自拍偷拍国产精品| 欧美日韩1234| 国产精品中文欧美| 国产精品主播直播| 亚洲黄色小说网站| 欧美成人一级视频| 成人免费看黄yyy456| 午夜精品aaa| 国产亚洲欧美激情| 欧美性色欧美a在线播放| 麻豆视频一区二区| 国产精品久久久久久久久免费桃花| 欧美综合天天夜夜久久| 久久国产生活片100| 中文字幕日韩一区二区| 538prom精品视频线放| 国产a久久麻豆| 天天射综合影视| 国产精品乱人伦中文| 91麻豆精品国产综合久久久久久| 国产成a人无v码亚洲福利| 亚洲大型综合色站| 日本一区二区视频在线观看| 欧美色视频一区| 成人蜜臀av电影| 蜜臀av性久久久久蜜臀aⅴ四虎 | 国产精品乡下勾搭老头1| 亚洲小说春色综合另类电影| 久久久久亚洲蜜桃| 欧美午夜一区二区三区 | 91免费观看视频| 激情综合网av| 午夜精品免费在线观看| 国产欧美精品一区| 日韩亚洲欧美高清| 欧美亚一区二区| 不卡的电影网站| 国产精品白丝av|