{"id":1168,"date":"2025-07-03T21:06:31","date_gmt":"2025-07-03T13:06:31","guid":{"rendered":"http:\/\/8.141.27.105\/?p=1168"},"modified":"2025-07-03T21:42:03","modified_gmt":"2025-07-03T13:42:03","slug":"pe%e6%96%87%e4%bb%b6","status":"publish","type":"post","link":"http:\/\/n0ps1ed.top\/index.php\/2025\/07\/03\/pe%e6%96%87%e4%bb%b6\/","title":{"rendered":"PE\u6587\u4ef6"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><div class='fancybox-wrapper lazyload-container-unload' data-fancybox='post-images' href='http:\/\/n0ps1ed.top\/wp-content\/uploads\/2025\/07\/image-2.png'><img class=\"lazyload lazyload-style-1\" src=\"data:image\/svg+xml;base64,PCEtLUFyZ29uTG9hZGluZy0tPgo8c3ZnIHdpZHRoPSIxIiBoZWlnaHQ9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgc3Ryb2tlPSIjZmZmZmZmMDAiPjxnPjwvZz4KPC9zdmc+\"  loading=\"lazy\" decoding=\"async\" width=\"154\" height=\"362\" data-original=\"http:\/\/n0ps1ed.top\/wp-content\/uploads\/2025\/07\/image-2.png\" src=\"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAANSURBVBhXYzh8+PB\/AAffA0nNPuCLAAAAAElFTkSuQmCC\" alt=\"\" class=\"wp-image-1192\"  sizes=\"auto, (max-width: 154px) 100vw, 154px\" \/><\/div><\/figure>\n\n\n\n<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>PE\u6587\u4ef6\u7ed3\u6784\u6811\u72b6\u67e5\u770b\u5668<\/title>\n    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\n    <link href=\"https:\/\/cdn.jsdelivr.net\/npm\/font-awesome@4.7.0\/css\/font-awesome.min.css\" rel=\"stylesheet\">\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;500;600;700&#038;display=swap\" rel=\"stylesheet\">\n    \n    <script>\n        tailwind.config = {\n            theme: {\n                extend: {\n                    colors: {\n                        primary: '#165DFF',\n                        secondary: '#36D399',\n                        dark: '#1E293B',\n                        light: '#F8FAFC',\n                        accent: '#FF9F1C',\n                        danger: '#F87272',\n                        neutral: '#64748B',\n                        \/\/ \u5c42\u7ea7\u989c\u8272\n                        level0: '#165DFF',\n                        level1: '#3B82F6',\n                        level2: '#60A5FA',\n                        level3: '#93C5FD',\n                        level4: '#BFDBFE'\n                    },\n                    fontFamily: {\n                        inter: ['Inter', 'sans-serif'],\n                        mono: ['Consolas', 'Monaco', 'monospace']\n                    },\n                    boxShadow: {\n                        'card': '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',\n                        'hover': '0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04)'\n                    }\n                }\n            }\n        }\n    <\/script>\n    \n    <style type=\"text\/tailwindcss\">\n        @layer utilities {\n            .content-auto {\n                content-visibility: auto;\n            }\n            .text-shadow {\n                text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n            }\n            .bg-gradient-blue {\n                background: linear-gradient(135deg, #165DFF 0%, #3B82F6 100%);\n            }\n            .scrollbar-hide::-webkit-scrollbar {\n                display: none;\n            }\n            .scrollbar-hide {\n                -ms-overflow-style: none;\n                scrollbar-width: none;\n            }\n            .tree-node-active {\n                @apply bg-primary\/10 border-l-4;\n            }\n            .tree-node {\n                @apply transition-all duration-200 hover:bg-gray-100;\n            }\n            .level-0 {\n                @apply border-level0 text-level0;\n            }\n            .level-1 {\n                @apply border-level1 text-level1;\n            }\n            .level-2 {\n                @apply border-level2 text-level2;\n            }\n            .level-3 {\n                @apply border-level3 text-level3;\n            }\n            .level-4 {\n                @apply border-level4 text-level4;\n            }\n        }\n    <\/style>\n<\/head>\n<body class=\"font-inter bg-gray-50 text-dark min-h-screen flex flex-col\">\n    \n    <main class=\"flex-grow container mx-auto px-4 py-8\">\n        <div class=\"bg-white rounded-xl shadow-card p-6 md:p-8 transform transition-all duration-300 hover:shadow-hover\">\n            <h2 class=\"text-[clamp(1.5rem,3vw,2.5rem)] font-bold mb-6 text-primary border-b-2 border-primary\/20 pb-3\">\n                <i class=\"fa fa-sitemap mr-2\"><\/i>PE\u6587\u4ef6\u5c42\u7ea7\u7ed3\u6784\n            <\/h2>\n            \n            <p class=\"mb-6 text-lg\">\n                \u63a2\u7d22PE\u6587\u4ef6\u7684\u5404\u4e2a\u5c42\u7ea7\u7ed3\u6784\uff0c\u70b9\u51fb\u5de6\u4fa7\u7684\u8282\u70b9\u53ef\u4ee5\u67e5\u770b\u8be6\u7ec6\u5185\u5bb9\u3002\n                \u4e0d\u540c\u989c\u8272\u8868\u793a\u4e0d\u540c\u7684\u5c42\u7ea7\u6df1\u5ea6\uff0c\u5e2e\u52a9\u4f60\u66f4\u597d\u5730\u7406\u89e3PE\u6587\u4ef6\u7684\u7ec4\u7ec7\u65b9\u5f0f\u3002\n            <\/p>\n            \n            <div class=\"grid md:grid-cols-3 gap-6\">\n                <!-- \u5c42\u7ea7\u7ed3\u6784\u6811 -->\n                <div class=\"md:col-span-1\">\n                    <div class=\"bg-gray-50 rounded-lg p-4 border border-gray-200 h-full\">\n                        <h3 class=\"text-lg font-semibold mb-3 text-primary\">PE\u6587\u4ef6\u5c42\u7ea7<\/h3>\n                        <div id=\"pe-hierarchy-tree\" class=\"space-y-1 overflow-y-auto max-h-[600px] scrollbar-hide\">\n                            <!-- \u5c42\u7ea7\u7ed3\u6784\u5c06\u901a\u8fc7JavaScript\u52a8\u6001\u751f\u6210 -->\n                        <\/div>\n                    <\/div>\n                <\/div>\n                \n                <!-- \u5c42\u7ea7\u5185\u5bb9 -->\n                <div class=\"md:col-span-2\">\n                    <div class=\"bg-gray-50 rounded-lg p-6 border border-gray-200 h-full\">\n                        <h3 id=\"hierarchy-title\" class=\"text-lg font-semibold mb-4 text-primary\">\n                            \u9009\u62e9\u4e00\u4e2a\u5c42\u7ea7\u8282\u70b9\u67e5\u770b\u8be6\u7ec6\u5185\u5bb9\n                        <\/h3>\n                        <div id=\"hierarchy-content\" class=\"space-y-4\">\n                            <div class=\"text-center py-8\">\n                                <i class=\"fa fa-folder-open-o text-5xl text-gray-300 mb-4\"><\/i>\n                                <p class=\"text-gray-500\">\u8bf7\u4ece\u5de6\u4fa7\u9009\u62e9\u4e00\u4e2aPE\u6587\u4ef6\u5c42\u7ea7\u8282\u70b9<\/p>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/main>\n\n\n\n    <script>\n        \/\/ PE\u6587\u4ef6\u5c42\u7ea7\u7ed3\u6784\u6570\u636e\n        const peHierarchy = {\n            id: 'root',\n            name: 'PE\u6587\u4ef6',\n            description: 'PE (Portable Executable) \u6587\u4ef6\u662fWindows\u64cd\u4f5c\u7cfb\u7edf\u4f7f\u7528\u7684\u53ef\u6267\u884c\u6587\u4ef6\u683c\u5f0f\uff0c\u5305\u62ec.exe\u3001.dll\u3001.sys\u7b49\u6587\u4ef6\u7c7b\u578b\u3002',\n            children: [\n                {\n                    id: 'dos-header',\n                    name: 'DOS MZ Header',\n                    description: 'DOS MZ Header\u662fPE\u6587\u4ef6\u7684\u7b2c\u4e00\u4e2a\u90e8\u5206\uff0c\u4ee5\"MZ\"\uff080x4D5A\uff09\u7b7e\u540d\u5f00\u5934\uff0c\u4e3b\u8981\u7528\u4e8e\u517c\u5bb9MS-DOS\u7cfb\u7edf\u3002',\n                    offset: '0x0000',\n                    size: '64 bytes',\n                    fields: [\n                        { name: 'e_magic', offset: '0x00', size: '2 bytes', description: 'MZ\u7b7e\u540d (0x5A4D)' },\n                        { name: 'e_cblp', offset: '0x02', size: '2 bytes', description: '\u6587\u4ef6\u6700\u540e\u4e00\u9875\u7684\u5b57\u8282\u6570' },\n                        { name: 'e_cp', offset: '0x04', size: '2 bytes', description: '\u6587\u4ef6\u9875\u6570' },\n                        { name: 'e_crlc', offset: '0x06', size: '2 bytes', description: '\u91cd\u5b9a\u4f4d\u9879\u6570\u76ee' },\n                        { name: 'e_cparhdr', offset: '0x08', size: '2 bytes', description: '\u5934\u90e8\u5c3a\u5bf8\uff0c\u4ee5\u6bb5\u843d\u4e3a\u5355\u4f4d' },\n                        { name: 'e_minalloc', offset: '0x0A', size: '2 bytes', description: '\u6240\u9700\u7684\u6700\u5c0f\u989d\u5916\u6bb5' },\n                        { name: 'e_maxalloc', offset: '0x0C', size: '2 bytes', description: '\u6240\u9700\u7684\u6700\u5927\u989d\u5916\u6bb5' },\n                        { name: 'e_ss', offset: '0x0E', size: '2 bytes', description: '\u521d\u59cb\u5806\u6808\u6bb5\u5bc4\u5b58\u5668' },\n                        { name: 'e_sp', offset: '0x10', size: '2 bytes', description: '\u521d\u59cb\u5806\u6808\u6307\u9488' },\n                        { name: 'e_csum', offset: '0x12', size: '2 bytes', description: '\u6821\u9a8c\u548c' },\n                        { name: 'e_ip', offset: '0x14', size: '2 bytes', description: '\u521d\u59cb\u6307\u4ee4\u6307\u9488' },\n                        { name: 'e_cs', offset: '0x16', size: '2 bytes', description: '\u521d\u59cb\u4ee3\u7801\u6bb5\u5bc4\u5b58\u5668' },\n                        { name: 'e_lfarlc', offset: '0x18', size: '2 bytes', description: '\u91cd\u5b9a\u4f4d\u8868\u7684\u6587\u4ef6\u5730\u5740' },\n                        { name: 'e_ovno', offset: '0x1A', size: '2 bytes', description: '\u8986\u76d6\u53f7' },\n                        { name: 'e_res', offset: '0x1C', size: '8 bytes', description: '\u4fdd\u7559\u5b57' },\n                        { name: 'e_oemid', offset: '0x24', size: '2 bytes', description: 'OEM\u6807\u8bc6\u7b26' },\n                        { name: 'e_oeminfo', offset: '0x26', size: '2 bytes', description: 'OEM\u4fe1\u606f' },\n                        { name: 'e_res2', offset: '0x28', size: '20 bytes', description: '\u4fdd\u7559\u5b57' },\n                        { name: 'e_lfanew', offset: '0x3C', size: '4 bytes', description: 'NT\u5934\u7684\u6587\u4ef6\u504f\u79fb' }\n                    ]\n                },\n                {\n                    id: 'dos-stub',\n                    name: 'DOS Stub Program',\n                    description: 'DOS\u5b58\u6839\u662f\u4e00\u4e2a\u5c0f\u7a0b\u5e8f\uff0c\u5f53PE\u6587\u4ef6\u5728DOS\u73af\u5883\u4e2d\u8fd0\u884c\u65f6\u4f1a\u88ab\u6267\u884c\uff0c\u901a\u5e38\u663e\u793a\u4e00\u6761\"\u6b64\u7a0b\u5e8f\u4e0d\u80fd\u5728DOS\u6a21\u5f0f\u4e0b\u8fd0\u884c\"\u7684\u6d88\u606f\u3002',\n                    offset: '0x0040',\n                    size: 'Variable',\n                    children: [\n                        {\n                            id: 'dos-stub-code',\n                            name: 'DOS Stub Code',\n                            description: 'DOS\u5b58\u6839\u7684\u53ef\u6267\u884c\u4ee3\u7801\u90e8\u5206\uff0c\u901a\u5e38\u662f\u4e00\u4e2a\u7b80\u5355\u7684COM\u7a0b\u5e8f\u3002',\n                            offset: '0x0040',\n                            size: 'Variable'\n                        },\n                        {\n                            id: 'dos-stub-message',\n                            name: 'DOS Stub Message',\n                            description: '\u5f53\u5728DOS\u4e0b\u8fd0\u884c\u65f6\u663e\u793a\u7684\u6d88\u606f\uff0c\u901a\u5e38\u662f\"\u6b64\u7a0b\u5e8f\u4e0d\u80fd\u5728DOS\u6a21\u5f0f\u4e0b\u8fd0\u884c\"\u3002',\n                            offset: 'Varies',\n                            size: 'Varies'\n                        }\n                    ]\n                },\n                {\n                    id: 'nt-headers',\n                    name: 'NT Headers',\n                    description: 'NT Headers\u662fPE\u6587\u4ef6\u7684\u6838\u5fc3\u90e8\u5206\uff0c\u4ee5\"PE\\0\\0\"\uff080x50450000\uff09\u7b7e\u540d\u5f00\u5934\uff0c\u5305\u542b\u4e86\u6587\u4ef6\u7684\u57fa\u672c\u4fe1\u606f\u548c\u53ef\u9009\u5934\u90e8\u3002',\n                    offset: '0x00E0',\n                    size: 'Variable',\n                    children: [\n                        {\n                            id: 'nt-signature',\n                            name: 'NT Signature',\n                            description: 'NT\u5934\u7684\u7b7e\u540d\uff0c\u56fa\u5b9a\u4e3a\"PE\\0\\0\"\uff080x50450000\uff09\u3002',\n                            offset: '0x00E0',\n                            size: '4 bytes'\n                        },\n                        {\n                            id: 'file-header',\n                            name: 'File Header',\n                            description: 'PE\u6587\u4ef6\u5934\uff0c\u5305\u542b\u4e86\u5173\u4e8e\u6587\u4ef6\u7684\u57fa\u672c\u4fe1\u606f\uff0c\u5982\u76ee\u6807\u5e73\u53f0\u3001\u8282\u6570\u91cf\u7b49\u3002',\n                            offset: '0x00E4',\n                            size: '20 bytes',\n                            fields: [\n                                { name: 'Machine', offset: '0x00', size: '2 bytes', description: '\u76ee\u6807CPU\u67b6\u6784' },\n                                { name: 'NumberOfSections', offset: '0x02', size: '2 bytes', description: '\u8282\u8868\u6570\u91cf' },\n                                { name: 'TimeDateStamp', offset: '0x04', size: '4 bytes', description: '\u6587\u4ef6\u521b\u5efa\u65f6\u95f4\u6233' },\n                                { name: 'PointerToSymbolTable', offset: '0x08', size: '4 bytes', description: '\u7b26\u53f7\u8868\u7684\u6587\u4ef6\u6307\u9488' },\n                                { name: 'NumberOfSymbols', offset: '0x0C', size: '4 bytes', description: '\u7b26\u53f7\u8868\u4e2d\u7684\u7b26\u53f7\u6570\u91cf' },\n                                { name: 'SizeOfOptionalHeader', offset: '0x10', size: '2 bytes', description: '\u53ef\u9009\u5934\u90e8\u5927\u5c0f' },\n                                { name: 'Characteristics', offset: '0x12', size: '2 bytes', description: '\u6587\u4ef6\u7279\u6027\u6807\u5fd7' }\n                            ]\n                        },\n                        {\n                            id: 'optional-header',\n                            name: 'Optional Header',\n                            description: '\u53ef\u9009\u5934\u90e8\u5305\u542b\u4e86\u52a0\u8f7d\u5668\u6240\u9700\u7684\u4fe1\u606f\uff0c\u5982\u5165\u53e3\u70b9\u5730\u5740\u3001\u5185\u5b58\u5e03\u5c40\u7b49\u3002\u867d\u7136\u79f0\u4e3a\"\u53ef\u9009\"\uff0c\u4f46\u5b9e\u9645\u4e0a\u6240\u6709PE\u6587\u4ef6\u90fd\u5305\u542b\u8fd9\u4e2a\u5934\u90e8\u3002',\n                            offset: '0x0108',\n                            size: '224 bytes (PE32+)',\n                            children: [\n                                {\n                                    id: 'optional-header-standard',\n                                    name: 'Standard Fields',\n                                    description: '\u53ef\u9009\u5934\u90e8\u7684\u6807\u51c6\u5b57\u6bb5\uff0c\u5305\u542b\u4e86\u4e00\u4e9b\u57fa\u672c\u4fe1\u606f\u3002',\n                                    offset: '0x0108',\n                                    size: '28 bytes',\n                                    fields: [\n                                        { name: 'Magic', offset: '0x00', size: '2 bytes', description: 'PE32 (0x10B) \u6216 PE32+ (0x20B)' },\n                                        { name: 'MajorLinkerVersion', offset: '0x02', size: '1 byte', description: '\u94fe\u63a5\u5668\u4e3b\u7248\u672c\u53f7' },\n                                        { name: 'MinorLinkerVersion', offset: '0x03', size: '1 byte', description: '\u94fe\u63a5\u5668\u6b21\u7248\u672c\u53f7' },\n                                        { name: 'SizeOfCode', offset: '0x04', size: '4 bytes', description: '\u4ee3\u7801\u8282\u7684\u603b\u5927\u5c0f' },\n                                        { name: 'SizeOfInitializedData', offset: '0x08', size: '4 bytes', description: '\u5df2\u521d\u59cb\u5316\u6570\u636e\u7684\u603b\u5927\u5c0f' },\n                                        { name: 'SizeOfUninitializedData', offset: '0x0C', size: '4 bytes', description: '\u672a\u521d\u59cb\u5316\u6570\u636e\u7684\u603b\u5927\u5c0f' },\n                                        { name: 'AddressOfEntryPoint', offset: '0x10', size: '4 bytes', description: '\u7a0b\u5e8f\u5165\u53e3\u70b9RVA' },\n                                        { name: 'BaseOfCode', offset: '0x14', size: '4 bytes', description: '\u4ee3\u7801\u7684\u57fa\u5740RVA' },\n                                        { name: 'BaseOfData', offset: '0x18', size: '4 bytes', description: '\u6570\u636e\u7684\u57fa\u5740RVA (\u4ec5PE32)' }\n                                    ]\n                                },\n                                {\n                                    id: 'optional-header-windows',\n                                    name: 'Windows-Specific Fields',\n                                    description: 'Windows\u7279\u5b9a\u5b57\u6bb5\uff0c\u5305\u542b\u4e86\u4e0eWindows\u64cd\u4f5c\u7cfb\u7edf\u76f8\u5173\u7684\u4fe1\u606f\u3002',\n                                    offset: '0x0130',\n                                    size: '88 bytes',\n                                    fields: [\n                                        { name: 'ImageBase', offset: '0x00', size: '8 bytes', description: '\u7a0b\u5e8f\u9996\u9009\u52a0\u8f7d\u57fa\u5740' },\n                                        { name: 'SectionAlignment', offset: '0x08', size: '4 bytes', description: '\u5185\u5b58\u4e2d\u8282\u7684\u5bf9\u9f50\u65b9\u5f0f' },\n                                        { name: 'FileAlignment', offset: '0x0C', size: '4 bytes', description: '\u6587\u4ef6\u4e2d\u8282\u7684\u5bf9\u9f50\u65b9\u5f0f' },\n                                        { name: 'MajorOperatingSystemVersion', offset: '0x10', size: '2 bytes', description: '\u6240\u9700\u64cd\u4f5c\u7cfb\u7edf\u4e3b\u7248\u672c\u53f7' },\n                                        { name: 'MinorOperatingSystemVersion', offset: '0x12', size: '2 bytes', description: '\u6240\u9700\u64cd\u4f5c\u7cfb\u7edf\u6b21\u7248\u672c\u53f7' },\n                                        { name: 'MajorImageVersion', offset: '0x14', size: '2 bytes', description: '\u56fe\u50cf\u4e3b\u7248\u672c\u53f7' },\n                                        { name: 'MinorImageVersion', offset: '0x16', size: '2 bytes', description: '\u56fe\u50cf\u6b21\u7248\u672c\u53f7' },\n                                        { name: 'MajorSubsystemVersion', offset: '0x18', size: '2 bytes', description: '\u5b50\u7cfb\u7edf\u4e3b\u7248\u672c\u53f7' },\n                                        { name: 'MinorSubsystemVersion', offset: '0x1A', size: '2 bytes', description: '\u5b50\u7cfb\u7edf\u6b21\u7248\u672c\u53f7' },\n                                        { name: 'Win32VersionValue', offset: '0x1C', size: '4 bytes', description: '\u4fdd\u7559\uff0c\u5fc5\u987b\u4e3a0' },\n                                        { name: 'SizeOfImage', offset: '0x20', size: '4 bytes', description: '\u5185\u5b58\u4e2d\u56fe\u50cf\u7684\u603b\u5927\u5c0f' },\n                                        { name: 'SizeOfHeaders', offset: '0x24', size: '4 bytes', description: '\u6240\u6709\u5934\u90e8\u7684\u603b\u5927\u5c0f' },\n                                        { name: 'CheckSum', offset: '0x28', size: '4 bytes', description: '\u56fe\u50cf\u6821\u9a8c\u548c' },\n                                        { name: 'Subsystem', offset: '0x2C', size: '2 bytes', description: '\u6240\u9700\u5b50\u7cfb\u7edf' },\n                                        { name: 'DllCharacteristics', offset: '0x2E', size: '2 bytes', description: 'DLL\u7279\u6027' },\n                                        { name: 'SizeOfStackReserve', offset: '0x30', size: '8 bytes', description: '\u4fdd\u7559\u7684\u6808\u5927\u5c0f' },\n                                        { name: 'SizeOfStackCommit', offset: '0x38', size: '8 bytes', description: '\u63d0\u4ea4\u7684\u6808\u5927\u5c0f' },\n                                        { name: 'SizeOfHeapReserve', offset: '0x40', size: '8 bytes', description: '\u4fdd\u7559\u7684\u5806\u5927\u5c0f' },\n                                        { name: 'SizeOfHeapCommit', offset: '0x48', size: '8 bytes', description: '\u63d0\u4ea4\u7684\u5806\u5927\u5c0f' },\n                                        { name: 'LoaderFlags', offset: '0x50', size: '4 bytes', description: '\u52a0\u8f7d\u5668\u6807\u5fd7' },\n                                        { name: 'NumberOfRvaAndSizes', offset: '0x54', size: '4 bytes', description: '\u6570\u636e\u76ee\u5f55\u9879\u6570\u91cf' }\n                                    ]\n                                },\n                                {\n                                    id: 'optional-header-data-dirs',\n                                    name: 'Data Directories',\n                                    description: '\u6570\u636e\u76ee\u5f55\u8868\uff0c\u5305\u542b\u4e86\u4e00\u7cfb\u5217\u6307\u5411\u91cd\u8981\u6570\u636e\u7ed3\u6784\u7684\u6307\u9488\u3002',\n                                    offset: '0x0188',\n                                    size: '128 bytes',\n                                    fields: [\n                                        { name: 'Export Table', offset: '0x00', size: '8 bytes', description: '\u5bfc\u51fa\u8868\u7684RVA\u548c\u5927\u5c0f' },\n                                        { name: 'Import Table', offset: '0x08', size: '8 bytes', description: '\u5bfc\u5165\u8868\u7684RVA\u548c\u5927\u5c0f' },\n                                        { name: 'Resource Table', offset: '0x10', size: '8 bytes', description: '\u8d44\u6e90\u8868\u7684RVA\u548c\u5927\u5c0f' },\n                                        { name: 'Exception Table', offset: '0x18', size: '8 bytes', description: '\u5f02\u5e38\u8868\u7684RVA\u548c\u5927\u5c0f' },\n                                        { name: 'Certificate Table', offset: '0x20', size: '8 bytes', description: '\u8bc1\u4e66\u8868\u7684RVA\u548c\u5927\u5c0f' },\n                                        { name: 'Base Relocation Table', offset: '0x28', size: '8 bytes', description: '\u57fa\u5740\u91cd\u5b9a\u4f4d\u8868\u7684RVA\u548c\u5927\u5c0f' },\n                                        { name: 'Debug', offset: '0x30', size: '8 bytes', description: '\u8c03\u8bd5\u4fe1\u606f\u7684RVA\u548c\u5927\u5c0f' },\n                                        { name: 'Architecture', offset: '0x38', size: '8 bytes', description: '\u67b6\u6784\u7279\u5b9a\u6570\u636e\u7684RVA\u548c\u5927\u5c0f' },\n                                        { name: 'Global Pointer', offset: '0x40', size: '8 bytes', description: '\u5168\u5c40\u6307\u9488\u7684RVA' },\n                                        { name: 'TLS Table', offset: '0x48', size: '8 bytes', description: '\u7ebf\u7a0b\u672c\u5730\u5b58\u50a8\u8868\u7684RVA\u548c\u5927\u5c0f' },\n                                        { name: 'Load Config Table', offset: '0x50', size: '8 bytes', description: '\u52a0\u8f7d\u914d\u7f6e\u8868\u7684RVA\u548c\u5927\u5c0f' },\n                                        { name: 'Bound Import', offset: '0x58', size: '8 bytes', description: '\u7ed1\u5b9a\u5bfc\u5165\u8868\u7684RVA\u548c\u5927\u5c0f' },\n                                        { name: 'IAT', offset: '0x60', size: '8 bytes', description: '\u5bfc\u5165\u5730\u5740\u8868\u7684RVA\u548c\u5927\u5c0f' },\n                                        { name: 'Delay Import Descriptor', offset: '0x68', size: '8 bytes', description: '\u5ef6\u8fdf\u5bfc\u5165\u63cf\u8ff0\u7b26\u7684RVA\u548c\u5927\u5c0f' },\n                                        { name: 'CLR Runtime Header', offset: '0x70', size: '8 bytes', description: 'CLR\u8fd0\u884c\u65f6\u5934\u7684RVA\u548c\u5927\u5c0f' },\n                                        { name: 'Reserved', offset: '0x78', size: '8 bytes', description: '\u4fdd\u7559\uff0c\u5fc5\u987b\u4e3a0' }\n                                    ]\n                                }\n                            ]\n                        }\n                    ]\n                },\n                {\n                    id: 'section-table',\n                    name: 'Section Table',\n                    description: '\u8282\u8868\u4f4d\u4e8eNT\u5934\u4e4b\u540e\uff0c\u5b9a\u4e49\u4e86PE\u6587\u4ef6\u4e2d\u7684\u5404\u4e2a\u8282\u3002\u6bcf\u4e2a\u8282\u662f\u4e00\u4e2a\u5177\u6709\u7279\u5b9a\u5c5e\u6027\u7684\u8fde\u7eed\u5185\u5b58\u533a\u57df\u3002',\n                    offset: '0x0200',\n                    size: 'Variable (\u901a\u5e38\u4e3a40\u5b57\u8282 \u00d7 \u8282\u6570\u91cf)',\n                    fields: [\n                        { name: 'Name', offset: '0x00', size: '8 bytes', description: '\u8282\u540d\u79f0\uff0c\u5982.text' },\n                        { name: 'VirtualSize', offset: '0x08', size: '4 bytes', description: '\u8282\u5728\u5185\u5b58\u4e2d\u7684\u5927\u5c0f' },\n                        { name: 'VirtualAddress', offset: '0x0C', size: '4 bytes', description: '\u8282\u5728\u5185\u5b58\u4e2d\u7684RVA' },\n                        { name: 'SizeOfRawData', offset: '0x10', size: '4 bytes', description: '\u8282\u5728\u6587\u4ef6\u4e2d\u7684\u5927\u5c0f' },\n                        { name: 'PointerToRawData', offset: '0x14', size: '4 bytes', description: '\u8282\u5728\u6587\u4ef6\u4e2d\u7684\u504f\u79fb' },\n                        { name: 'PointerToRelocations', offset: '0x18', size: '4 bytes', description: '\u91cd\u5b9a\u4f4d\u8868\u7684\u6587\u4ef6\u504f\u79fb' },\n                        { name: 'PointerToLinenumbers', offset: '0x1C', size: '4 bytes', description: '\u884c\u53f7\u8868\u7684\u6587\u4ef6\u504f\u79fb' },\n                        { name: 'NumberOfRelocations', offset: '0x20', size: '2 bytes', description: '\u91cd\u5b9a\u4f4d\u9879\u6570\u91cf' },\n                        { name: 'NumberOfLinenumbers', offset: '0x22', size: '2 bytes', description: '\u884c\u53f7\u9879\u6570\u91cf' },\n                        { name: 'Characteristics', offset: '0x24', size: '4 bytes', description: '\u8282\u7684\u5c5e\u6027\uff0c\u5982\u53ef\u8bfb\u3001\u53ef\u5199\u3001\u53ef\u6267\u884c' }\n                    ],\n                    children: [\n                        {\n                            id: 'section-text',\n                            name: '.text \u8282',\n                            description: '.text\u8282\u901a\u5e38\u5305\u542b\u7a0b\u5e8f\u7684\u53ef\u6267\u884c\u4ee3\u7801\uff0c\u5177\u6709\u53ef\u8bfb\u548c\u53ef\u6267\u884c\u6743\u9650\uff0c\u4f46\u901a\u5e38\u4e0d\u53ef\u5199\u3002',\n                            offset: 'Varies',\n                            size: 'Varies',\n                            characteristics: [\n                                '\u53ef\u8bfb (0x40000000)',\n                                '\u53ef\u6267\u884c (0x20000000)',\n                                '\u5305\u542b\u4ee3\u7801 (0x00000020)'\n                            ]\n                        },\n                        {\n                            id: 'section-rdata',\n                            name: '.rdata \u8282',\n                            description: '.rdata\u8282\u5305\u542b\u53ea\u8bfb\u6570\u636e\uff0c\u5982\u5b57\u7b26\u4e32\u5e38\u91cf\u3001\u5e38\u91cf\u53d8\u91cf\u7b49\u3002',\n                            offset: 'Varies',\n                            size: 'Varies',\n                            characteristics: [\n                                '\u53ef\u8bfb (0x40000000)',\n                                '\u5305\u542b\u5df2\u521d\u59cb\u5316\u6570\u636e (0x00000040)'\n                            ]\n                        },\n                        {\n                            id: 'section-data',\n                            name: '.data \u8282',\n                            description: '.data\u8282\u5305\u542b\u5df2\u521d\u59cb\u5316\u7684\u5168\u5c40\u53d8\u91cf\u548c\u9759\u6001\u53d8\u91cf\u3002',\n                            offset: 'Varies',\n                            size: 'Varies',\n                            characteristics: [\n                                '\u53ef\u8bfb (0x40000000)',\n                                '\u53ef\u5199 (0x80000000)',\n                                '\u5305\u542b\u5df2\u521d\u59cb\u5316\u6570\u636e (0x00000040)'\n                            ]\n                        },\n                        {\n                            id: 'section-bss',\n                            name: '.bss \u8282',\n                            description: '.bss\u8282\u5305\u542b\u672a\u521d\u59cb\u5316\u7684\u5168\u5c40\u53d8\u91cf\u548c\u9759\u6001\u53d8\u91cf\uff0c\u5728\u5185\u5b58\u4e2d\u88ab\u521d\u59cb\u5316\u4e3a0\u3002',\n                            offset: 'Varies',\n                            size: 'Varies',\n                            characteristics: [\n                                '\u53ef\u8bfb (0x40000000)',\n                                '\u53ef\u5199 (0x80000000)',\n                                '\u5305\u542b\u672a\u521d\u59cb\u5316\u6570\u636e (0x00000080)',\n                                '\u4e0d\u5360\u7528\u6587\u4ef6\u7a7a\u95f4 (0x00001000)'\n                            ]\n                        },\n                        {\n                            id: 'section-rsrc',\n                            name: '.rsrc \u8282',\n                            description: '.rsrc\u8282\u5305\u542b\u7a0b\u5e8f\u7684\u8d44\u6e90\uff0c\u5982\u56fe\u6807\u3001\u83dc\u5355\u3001\u5bf9\u8bdd\u6846\u7b49\u3002',\n                            offset: 'Varies',\n                            size: 'Varies',\n                            characteristics: [\n                                '\u53ef\u8bfb (0x40000000)',\n                                '\u5305\u542b\u521d\u59cb\u5316\u6570\u636e (0x00000040)'\n                            ]\n                        },\n                        {\n                            id: 'section-reloc',\n                            name: '.reloc \u8282',\n                            description: '.reloc\u8282\u5305\u542b\u91cd\u5b9a\u4f4d\u4fe1\u606f\uff0c\u7528\u4e8e\u5728\u7a0b\u5e8f\u52a0\u8f7d\u65f6\u8c03\u6574\u5730\u5740\u3002',\n                            offset: 'Varies',\n                            size: 'Varies',\n                            characteristics: [\n                                '\u53ef\u8bfb (0x40000000)',\n                                '\u5305\u542b\u521d\u59cb\u5316\u6570\u636e (0x00000040)',\n                                '\u5305\u542b\u91cd\u5b9a\u4f4d\u4fe1\u606f (0x01000000)'\n                            ]\n                        }\n                    ]\n                }\n            ]\n        };\n\n        \/\/ \u6e32\u67d3PE\u6587\u4ef6\u5c42\u7ea7\u6811\n        function renderPEHierarchy(node, parentElement, level = 0) {\n            const nodeElement = document.createElement('div');\n            nodeElement.className = `tree-node pl-${level * 4} py-2 px-3 border-l-4 border-transparent flex items-center justify-between cursor-pointer level-${level % 5}`;\n            nodeElement.dataset.id = node.id;\n            \n            const content = document.createElement('div');\n            content.className = 'flex items-center';\n            \n            if (node.children && node.children.length > 0) {\n                const toggleIcon = document.createElement('i');\n                toggleIcon.className = 'fa fa-chevron-right text-xs mr-2 transition-transform duration-200';\n                toggleIcon.dataset.expanded = 'false';\n                content.appendChild(toggleIcon);\n                \n                \/\/ \u6dfb\u52a0\u5c55\u5f00\/\u6298\u53e0\u529f\u80fd\n                nodeElement.addEventListener('click', function(e) {\n                    if (e.target === nodeElement || e.target === content || e.target === toggleIcon) {\n                        const expanded = toggleIcon.dataset.expanded === 'true';\n                        const childContainer = nodeElement.nextElementSibling;\n                        \n                        if (expanded) {\n                            toggleIcon.classList.remove('fa-chevron-down');\n                            toggleIcon.classList.add('fa-chevron-right');\n                            toggleIcon.dataset.expanded = 'false';\n                            childContainer.style.display = 'none';\n                        } else {\n                            toggleIcon.classList.remove('fa-chevron-right');\n                            toggleIcon.classList.add('fa-chevron-down');\n                            toggleIcon.dataset.expanded = 'true';\n                            childContainer.style.display = 'block';\n                        }\n                    }\n                    \n                    \/\/ \u663e\u793a\u8282\u70b9\u8be6\u60c5\n                    showNodeDetails(node);\n                    \n                    \/\/ \u9ad8\u4eae\u5f53\u524d\u9009\u4e2d\u7684\u8282\u70b9\n                    document.querySelectorAll('.tree-node').forEach(n => {\n                        n.classList.remove('tree-node-active');\n                    });\n                    nodeElement.classList.add(`tree-node-active level-${level % 5}`);\n                });\n            } else {\n                const emptyIcon = document.createElement('i');\n                emptyIcon.className = 'fa fa-circle-o text-xs mr-2';\n                content.appendChild(emptyIcon);\n                \n                \/\/ \u70b9\u51fb\u53f6\u5b50\u8282\u70b9\u663e\u793a\u8be6\u60c5\n                nodeElement.addEventListener('click', function() {\n                    \/\/ \u663e\u793a\u8282\u70b9\u8be6\u60c5\n                    showNodeDetails(node);\n                    \n                    \/\/ \u9ad8\u4eae\u5f53\u524d\u9009\u4e2d\u7684\u8282\u70b9\n                    document.querySelectorAll('.tree-node').forEach(n => {\n                        n.classList.remove('tree-node-active');\n                    });\n                    nodeElement.classList.add(`tree-node-active level-${level % 5}`);\n                });\n            }\n            \n            const nameSpan = document.createElement('span');\n            nameSpan.textContent = node.name;\n            content.appendChild(nameSpan);\n            nodeElement.appendChild(content);\n            \n            parentElement.appendChild(nodeElement);\n            \n            if (node.children && node.children.length > 0) {\n                const childContainer = document.createElement('div');\n                childContainer.className = 'pl-4 mt-1';\n                childContainer.style.display = 'none';\n                parentElement.appendChild(childContainer);\n                \n                node.children.forEach(child => {\n                    renderPEHierarchy(child, childContainer, level + 1);\n                });\n            }\n        }\n\n        \/\/ \u663e\u793a\u8282\u70b9\u8be6\u60c5\n        function showNodeDetails(node) {\n            const titleElement = document.getElementById('hierarchy-title');\n            const contentElement = document.getElementById('hierarchy-content');\n            \n            titleElement.textContent = node.name;\n            \n            \/\/ \u6e05\u7a7a\u5185\u5bb9\n            contentElement.innerHTML = '';\n            \n            \/\/ \u6dfb\u52a0\u63cf\u8ff0\n            if (node.description) {\n                const descriptionElement = document.createElement('div');\n                descriptionElement.className = 'bg-white p-4 rounded-lg border border-gray-200';\n                descriptionElement.innerHTML = `<p>${node.description}<\/p>`;\n                contentElement.appendChild(descriptionElement);\n            }\n            \n            \/\/ \u6dfb\u52a0\u504f\u79fb\u548c\u5927\u5c0f\u4fe1\u606f\n            if (node.offset || node.size) {\n                const infoElement = document.createElement('div');\n                infoElement.className = 'bg-white p-4 rounded-lg border border-gray-200 grid grid-cols-2 gap-2 text-sm';\n                \n                if (node.offset) {\n                    const offsetElement = document.createElement('div');\n                    offsetElement.innerHTML = `<span class=\"text-gray-600\">\u504f\u79fb:<\/span> <span class=\"font-mono\">${node.offset}<\/span>`;\n                    infoElement.appendChild(offsetElement);\n                }\n                \n                if (node.size) {\n                    const sizeElement = document.createElement('div');\n                    sizeElement.innerHTML = `<span class=\"text-gray-600\">\u5927\u5c0f:<\/span> <span class=\"font-mono\">${node.size}<\/span>`;\n                    infoElement.appendChild(sizeElement);\n                }\n                \n                contentElement.appendChild(infoElement);\n            }\n            \n            \/\/ \u6dfb\u52a0\u5b57\u6bb5\u4fe1\u606f\n            if (node.fields && node.fields.length > 0) {\n                const fieldsElement = document.createElement('div');\n                fieldsElement.className = 'bg-white p-4 rounded-lg border border-gray-200 overflow-x-auto';\n                \n                const table = document.createElement('table');\n                table.className = 'min-w-full';\n                \n                const thead = document.createElement('thead');\n                thead.innerHTML = `\n                    <tr class=\"bg-gray-100 text-left text-xs font-medium text-gray-500 uppercase tracking-wider\">\n                        <th class=\"px-3 py-2\">\u5b57\u6bb5<\/th>\n                        <th class=\"px-3 py-2\">\u504f\u79fb<\/th>\n                        <th class=\"px-3 py-2\">\u5927\u5c0f<\/th>\n                        <th class=\"px-3 py-2\">\u63cf\u8ff0<\/th>\n                    <\/tr>\n                `;\n                table.appendChild(thead);\n                \n                const tbody = document.createElement('tbody');\n                tbody.className = 'bg-white divide-y divide-gray-200';\n                \n                node.fields.forEach(field => {\n                    const tr = document.createElement('tr');\n                    tr.innerHTML = `\n                        <td class=\"px-3 py-2 font-mono\">${field.name}<\/td>\n                        <td class=\"px-3 py-2 font-mono\">${field.offset}<\/td>\n                        <td class=\"px-3 py-2 font-mono\">${field.size}<\/td>\n                        <td class=\"px-3 py-2\">${field.description}<\/td>\n                    `;\n                    tbody.appendChild(tr);\n                });\n                \n                table.appendChild(tbody);\n                fieldsElement.appendChild(table);\n                contentElement.appendChild(fieldsElement);\n            }\n            \n            \/\/ \u6dfb\u52a0\u7279\u6027\u4fe1\u606f\n            if (node.characteristics && node.characteristics.length > 0) {\n                const characteristicsElement = document.createElement('div');\n                characteristicsElement.className = 'bg-white p-4 rounded-lg border border-gray-200';\n                \n                const title = document.createElement('h4');\n                title.className = 'font-semibold mb-2';\n                title.textContent = '\u8282\u7279\u6027';\n                characteristicsElement.appendChild(title);\n                \n                const list = document.createElement('ul');\n                list.className = 'list-disc pl-5 space-y-1';\n                \n                node.characteristics.forEach(char => {\n                    const li = document.createElement('li');\n                    li.textContent = char;\n                    list.appendChild(li);\n                });\n                \n                characteristicsElement.appendChild(list);\n                contentElement.appendChild(characteristicsElement);\n            }\n            \n            \/\/ \u5e73\u6ed1\u6eda\u52a8\u5230\u5185\u5bb9\u533a\u57df\n            contentElement.scrollIntoView({ behavior: 'smooth' });\n        }\n\n        \/\/ \u521d\u59cb\u5316\n        document.addEventListener('DOMContentLoaded', function() {\n            \/\/ \u6e32\u67d3PE\u6587\u4ef6\u5c42\u7ea7\u6811\n            renderPEHierarchy(peHierarchy, document.getElementById('pe-hierarchy-tree'));\n            \n            \/\/ \u9ed8\u8ba4\u5c55\u5f00\u6839\u8282\u70b9\n            const rootNode = document.querySelector('.tree-node[data-id=\"root\"]');\n            if (rootNode) {\n                const toggleIcon = rootNode.querySelector('.fa');\n                if (toggleIcon) {\n                    toggleIcon.classList.remove('fa-chevron-right');\n                    toggleIcon.classList.add('fa-chevron-down');\n                    toggleIcon.dataset.expanded = 'true';\n                    rootNode.nextElementSibling.style.display = 'block';\n                }\n                \n                \/\/ \u9ed8\u8ba4\u9009\u4e2d\u6839\u8282\u70b9\n                rootNode.click();\n            }\n        });\n    <\/script>\n<\/body>\n<\/html>\n\n\n\n<!DOCTYPE html>\n<html lang=\"zh-CN\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>PE\u6587\u4ef6\u6267\u884c\u8fc7\u7a0b\u53ef\u89c6\u5316<\/title>\n    <script src=\"https:\/\/cdn.tailwindcss.com\"><\/script>\n    <link href=\"https:\/\/cdn.jsdelivr.net\/npm\/font-awesome@4.7.0\/css\/font-awesome.min.css\" rel=\"stylesheet\">\n    <script>\n        tailwind.config = {\n            theme: {\n                extend: {\n                    colors: {\n                        primary: '#165DFF',\n                        secondary: '#36D399',\n                        dark: '#1E293B',\n                        light: '#F8FAFC',\n                        accent: '#FF9F1C',\n                        danger: '#F87272',\n                        neutral: '#64748B',\n                        step1: '#3B82F6',\n                        step2: '#10B981',\n                        step3: '#F59E0B',\n                        step4: '#EF4444'\n                    },\n                    fontFamily: {\n                        inter: ['Inter', 'sans-serif'],\n                        mono: ['Consolas', 'Monaco', 'monospace']\n                    }\n                }\n            }\n        }\n    <\/script>\n    <style type=\"text\/tailwindcss\">\n        @layer utilities {\n            .content-auto {\n                content-visibility: auto;\n            }\n            .text-shadow {\n                text-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);\n            }\n            .bg-gradient-blue {\n                background: linear-gradient(135deg, #165DFF 0%, #3B82F6 100%);\n            }\n            .animate-pulse-slow {\n                animation: pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite;\n            }\n            .tooltip {\n                position: relative;\n            }\n            .tooltip .tooltiptext {\n                visibility: hidden;\n                width: 220px;\n                background-color: #1E293B;\n                color: #fff;\n                text-align: center;\n                border-radius: 6px;\n                padding: 8px;\n                position: absolute;\n                z-index: 10;\n                bottom: 125%;\n                left: 50%;\n                margin-left: -110px;\n                opacity: 0;\n                transition: opacity 0.3s;\n            }\n            .tooltip .tooltiptext::after {\n                content: \"\";\n                position: absolute;\n                top: 100%;\n                left: 50%;\n                margin-left: -5px;\n                border-width: 5px;\n                border-style: solid;\n                border-color: #1E293B transparent transparent transparent;\n            }\n            .tooltip:hover .tooltiptext {\n                visibility: visible;\n                opacity: 1;\n            }\n            .step-highlight {\n                transition: all 0.3s ease;\n            }\n            .step-highlight:hover {\n                transform: translateY(-2px);\n                box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);\n            }\n            .step-connector {\n                height: 40px;\n                width: 2px;\n                margin: 0 auto;\n                transition: all 0.5s ease;\n            }\n            .svg-path {\n                stroke-dasharray: 100;\n                stroke-dashoffset: 100;\n                transition: stroke-dashoffset 1s ease-in-out;\n            }\n            .svg-path.active {\n                stroke-dashoffset: 0;\n            }\n        }\n    <\/style>\n<\/head>\n<body class=\"font-inter bg-gray-50 text-dark min-h-screen flex flex-col\">\n    <!-- \u5bfc\u822a\u680f -->\n    <header class=\"bg-gradient-blue text-white shadow-md sticky top-0 z-50\">\n        <div class=\"container mx-auto px-4 py-3 flex justify-between items-center\">\n            <div class=\"flex items-center space-x-2\">\n                <i class=\"fa fa-microchip text-2xl\"><\/i>\n                <h1 class=\"text-xl font-bold\">PE\u6587\u4ef6\u6267\u884c\u8fc7\u7a0b\u53ef\u89c6\u5316<\/h1>\n            <\/div>\n            <div class=\"flex space-x-2\">\n                <button id=\"start-animation-btn\" class=\"bg-white text-primary hover:bg-gray-100 px-4 py-2 rounded-lg font-medium transition-all duration-200 flex items-center\">\n                    <i class=\"fa fa-play mr-2\"><\/i>\n                    <span>\u6f14\u793a\u6267\u884c\u8fc7\u7a0b<\/span>\n                <\/button>\n                <button id=\"reset-animation-btn\" class=\"bg-white text-primary hover:bg-gray-100 px-4 py-2 rounded-lg font-medium transition-all duration-200 flex items-center hidden\">\n                    <i class=\"fa fa-refresh mr-2\"><\/i>\n                    <span>\u91cd\u7f6e\u6f14\u793a<\/span>\n                <\/button>\n            <\/div>\n        <\/div>\n    <\/header>\n\n    <main class=\"flex-grow container mx-auto px-4 py-8\">\n        <div class=\"bg-white rounded-xl shadow-lg p-6 md:p-8 mb-8\">\n            <h2 class=\"text-[clamp(1.5rem,3vw,2.5rem)] font-bold mb-6 text-primary\">\n                <i class=\"fa fa-sitemap mr-2\"><\/i>PE\u6587\u4ef6\u6267\u884c\u987a\u5e8f\n            <\/h2>\n            \n            <p class=\"mb-6 text-lg\">\n                PE (Portable Executable) \u6587\u4ef6\u662fWindows\u64cd\u4f5c\u7cfb\u7edf\u4f7f\u7528\u7684\u53ef\u6267\u884c\u6587\u4ef6\u683c\u5f0f\uff0c\u5305\u62ec.exe\u3001.dll\u3001.sys\u7b49\u6587\u4ef6\u7c7b\u578b\u3002\n                \u7406\u89e3PE\u6587\u4ef6\u7684\u6267\u884c\u8fc7\u7a0b\u5bf9\u4e8e\u8f6f\u4ef6\u5f00\u53d1\u3001\u9006\u5411\u5de5\u7a0b\u548c\u7cfb\u7edf\u5206\u6790\u975e\u5e38\u91cd\u8981\u3002\n                \u4ee5\u4e0b\u4e3a\u6267\u884c\u8fc7\u7a0b\u7684\u8be6\u7ec6\u6b65\u9aa4\uff1a\n            <\/p>\n            \n            <div class=\"relative\">\n                <!-- \u6267\u884c\u8fc7\u7a0b\u65f6\u95f4\u7ebf -->\n                <div id=\"execution-timeline\" class=\"space-y-6 relative\">\n                    <!-- \u6b65\u9aa41 -->\n                    <div id=\"step-1\" class=\"step-highlight bg-step1\/5 border-l-4 border-step1 rounded-lg p-4 transform transition-all duration-500\">\n                        <div class=\"flex justify-between items-start\">\n                            <div class=\"flex items-start\">\n                                <div class=\"w-8 h-8 rounded-full bg-step1 text-white flex items-center justify-center text-lg font-bold mr-3 flex-shrink-0\">1<\/div>\n                                <div>\n                                    <h3 class=\"text-xl font-semibold text-step1 mb-2\">\u68c0\u67e5DOS Header<\/h3>\n                                    <p class=\"mb-3\">\u5f53\u4e00\u4e2aPE\u6587\u4ef6\u88ab\u6267\u884c\u65f6\uff0c<span class=\"tooltip bg-step1\/20 px-1 rounded\">PE\u88c5\u8f7d\u5668<span class=\"tooltiptext\">Windows\u64cd\u4f5c\u7cfb\u7edf\u4e2d\u7684\u4e00\u4e2a\u7ec4\u4ef6\uff0c\u8d1f\u8d23\u5c06PE\u6587\u4ef6\u52a0\u8f7d\u5230\u5185\u5b58\u5e76\u51c6\u5907\u6267\u884c<\/span><\/span>\u9996\u5148\u68c0\u67e5DOS Header\u4e2d\u7684PE Header\u504f\u79fb\u91cf\uff08e_lfanew\uff09\uff0c\u4ee5\u5b9a\u4f4dNT Headers\u3002\u5982\u679c\u7b7e\u540d\u6709\u6548\uff0c\u5219\u8df3\u8f6c\u5230PE Header\u4f4d\u7f6e\u3002<\/p>\n                                    \n                                    <div class=\"step-details hidden mt-4 p-4 bg-white rounded-lg border border-gray-200\">\n                                        <h4 class=\"font-semibold mb-2\">\u8be6\u7ec6\u8bf4\u660e<\/h4>\n                                        <p class=\"mb-2\">DOS Header\u662fPE\u6587\u4ef6\u7684\u7b2c\u4e00\u4e2a\u90e8\u5206\uff0c\u4ee5&#8221;MZ&#8221;\u7b7e\u540d\u5f00\u5934\uff0c\u4e3b\u8981\u7528\u4e8e\u517c\u5bb9MS-DOS\u7cfb\u7edf\u3002<\/p>\n                                        <p class=\"mb-2\">\u5728\u504f\u79fb\u91cf0x3C\u5904\uff0cDOS Header\u5305\u542b\u4e00\u4e2a\u6307\u5411NT Headers\u7684\u6307\u9488\uff08e_lfanew\uff09\u3002<\/p>\n                                        <p class=\"mb-2\">PE\u88c5\u8f7d\u5668\u901a\u8fc7\u8fd9\u4e2a\u6307\u9488\u5b9a\u4f4d\u5230\u771f\u6b63\u7684PE\u6587\u4ef6\u5934\uff0c\u82e5\u65e0\u6548\u5219\u7ec8\u6b62\u52a0\u8f7d\u3002<\/p>\n                                        \n                                        <div class=\"mt-4 grid grid-cols-1 md:grid-cols-3 gap-4\">\n                                            <div class=\"bg-gray-50 p-3 rounded-lg\">\n                                                <h5 class=\"font-medium text-sm mb-1\">\u5173\u952e\u5b57\u6bb5<\/h5>\n                                                <ul class=\"text-sm list-disc pl-4 space-y-1\">\n                                                    <li>e_magic: &#8220;MZ&#8221; (0x5A4D)<\/li>\n                                                    <li>e_lfanew: PE\u5934\u7684\u6587\u4ef6\u504f\u79fb<\/li>\n                                                <\/ul>\n                                            <\/div>\n                                            <div class=\"bg-gray-50 p-3 rounded-lg\">\n                                                <h5 class=\"font-medium text-sm mb-1\">\u6587\u4ef6\u504f\u79fb<\/h5>\n                                                <p class=\"font-mono text-sm\">0x0000 &#8211; 0x003F<\/p>\n                                            <\/div>\n                                            <div class=\"bg-gray-50 p-3 rounded-lg\">\n                                                <h5 class=\"font-medium text-sm mb-1\">\u5927\u5c0f<\/h5>\n                                                <p class=\"font-mono text-sm\">64 bytes<\/p>\n                                            <\/div>\n                                        <\/div>\n                                        <div class=\"mt-4 bg-gray-50 p-3 rounded-lg\">\n                                            <h5 class=\"font-medium text-sm mb-1\">\u793a\u4f8b\u4ee3\u7801\u7247\u6bb5<\/h5>\n                                            <pre class=\"font-mono text-sm bg-gray-100 p-2 rounded\">IMAGE_DOS_HEADER dosHeader;\nReadFile(hFile, &dosHeader, sizeof(IMAGE_DOS_HEADER), &bytesRead, NULL);\nif (dosHeader.e_magic != IMAGE_DOS_SIGNATURE) {\n    \/\/ \u65e0\u6548DOS Header\n}<\/pre>\n                                        <\/div>\n                                    <\/div>\n                                    \n                                    <button class=\"toggle-details-btn mt-2 text-step1 text-sm font-medium flex items-center\">\n                                        <span>\u663e\u793a\u8be6\u60c5<\/span>\n                                        <i class=\"fa fa-chevron-down ml-1 transition-transform duration-200\"><\/i>\n                                    <\/button>\n                                <\/div>\n                            <\/div>\n                            <div class=\"text-gray-400 text-sm opacity-0 transition-opacity duration-500\">\n                                <span class=\"step-status\">\u7b49\u5f85\u4e2d<\/span>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                    \n                    <div id=\"connector-1-2\" class=\"step-connector bg-gray-300\"><\/div>\n                    \n                    <!-- \u6b65\u9aa42 -->\n                    <div id=\"step-2\" class=\"step-highlight bg-step2\/5 border-l-4 border-step2 rounded-lg p-4 transform transition-all duration-500\">\n                        <div class=\"flex justify-between items-start\">\n                            <div class=\"flex items-start\">\n                                <div class=\"w-8 h-8 rounded-full bg-step2 text-white flex items-center justify-center text-lg font-bold mr-3 flex-shrink-0\">2<\/div>\n                                <div>\n                                    <h3 class=\"text-xl font-semibold text-step2 mb-2\">\u9a8c\u8bc1PE Header<\/h3>\n                                    <p class=\"mb-3\">PE\u88c5\u8f7d\u5668\u8df3\u8f6c\u5230PE Header\u540e\uff0c\u9a8c\u8bc1\u5176\u6709\u6548\u6027\uff0c\u5305\u62ec\u68c0\u67e5&#8221;PE\\0\\0&#8243;\u7b7e\u540d\u3001\u76ee\u6807\u67b6\u6784\u548c\u8282\u8868\u6570\u91cf\u3002\u5982\u679c\u6709\u6548\uff0c\u5219\u7ee7\u7eed\u5904\u7406Optional Header\u548c\u8282\u8868\u3002<\/p>\n                                    \n                                    <div class=\"step-details hidden mt-4 p-4 bg-white rounded-lg border border-gray-200\">\n                                        <h4 class=\"font-semibold mb-2\">\u8be6\u7ec6\u8bf4\u660e<\/h4>\n                                        <p class=\"mb-2\">PE Header\uff08NT Headers\uff09\u5305\u542bSignature\u3001FileHeader\u548cOptionalHeader\u3002<\/p>\n                                        <p class=\"mb-2\">\u9a8c\u8bc1\u8fc7\u7a0b\u68c0\u67e5\u7b7e\u540d\u3001\u6587\u4ef6\u5934\u5927\u5c0f\u3001\u53ef\u9009\u5934\u90e8\u5927\u5c0f\u53ca\u67b6\u6784\u517c\u5bb9\u6027\u3002<\/p>\n                                        <p class=\"mb-2\">\u82e5\u9a8c\u8bc1\u5931\u8d25\uff0c\u52a0\u8f7d\u8fc7\u7a0b\u7ec8\u6b62\u3002<\/p>\n                                        \n                                        <div class=\"mt-4 grid grid-cols-1 md:grid-cols-3 gap-4\">\n                                            <div class=\"bg-gray-50 p-3 rounded-lg\">\n                                                <h5 class=\"font-medium text-sm mb-1\">\u5173\u952e\u5b57\u6bb5<\/h5>\n                                                <ul class=\"text-sm list-disc pl-4 space-y-1\">\n                                                    <li>Signature: &#8220;PE\\0\\0&#8221; (0x50450000)<\/li>\n                                                    <li>Machine: \u76ee\u6807CPU\u67b6\u6784\uff08\u59820x014C\u4e3ax86\uff09<\/li>\n                                                    <li>NumberOfSections: \u8282\u8868\u6570\u91cf<\/li>\n                                                <\/ul>\n                                            <\/div>\n                                            <div class=\"bg-gray-50 p-3 rounded-lg\">\n                                                <h5 class=\"font-medium text-sm mb-1\">\u6587\u4ef6\u504f\u79fb<\/h5>\n                                                <p class=\"font-mono text-sm\">0x00E0 &#8211; 0x0107<\/p>\n                                            <\/div>\n                                            <div class=\"bg-gray-50 p-3 rounded-lg\">\n                                                <h5 class=\"font-medium text-sm mb-1\">\u5927\u5c0f<\/h5>\n                                                <p class=\"font-mono text-sm\">24 bytes (FileHeader)<\/p>\n                                            <\/div>\n                                        <\/div>\n                                        <div class=\"mt-4 bg-gray-50 p-3 rounded-lg\">\n                                            <h5 class=\"font-medium text-sm mb-1\">\u793a\u4f8b\u4ee3\u7801\u7247\u6bb5<\/h5>\n                                            <pre class=\"font-mono text-sm bg-gray-100 p-2 rounded\">IMAGE_NT_HEADERS ntHeaders;\nSetFilePointer(hFile, dosHeader.e_lfanew, NULL, FILE_BEGIN);\nReadFile(hFile, &ntHeaders, sizeof(IMAGE_NT_HEADERS), &bytesRead, NULL);\nif (ntHeaders.Signature != IMAGE_NT_SIGNATURE) {\n    \/\/ \u65e0\u6548PE Header\n}<\/pre>\n                                        <\/div>\n                                    <\/div>\n                                    \n                                    <button class=\"toggle-details-btn mt-2 text-step2 text-sm font-medium flex items-center\">\n                                        <span>\u663e\u793a\u8be6\u60c5<\/span>\n                                        <i class=\"fa fa-chevron-down ml-1 transition-transform duration-200\"><\/i>\n                                    <\/button>\n                                <\/div>\n                            <\/div>\n                            <div class=\"text-gray-400 text-sm opacity-0 transition-opacity duration-500\">\n                                <span class=\"step-status\">\u7b49\u5f85\u4e2d<\/span>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                    \n                    <div id=\"connector-2-3\" class=\"step-connector bg-gray-300\"><\/div>\n                    \n                    <!-- \u6b65\u9aa43 -->\n                    <div id=\"step-3\" class=\"step-highlight bg-step3\/5 border-l-4 border-step3 rounded-lg p-4 transform transition-all duration-500\">\n                        <div class=\"flex justify-between items-start\">\n                            <div class=\"flex items-start\">\n                                <div class=\"w-8 h-8 rounded-full bg-step3 text-white flex items-center justify-center text-lg font-bold mr-3 flex-shrink-0\">3<\/div>\n                                <div>\n                                    <h3 class=\"text-xl font-semibold text-step3 mb-2\">\u6620\u5c04\u8282\u8868\u5230\u5185\u5b58<\/h3>\n                                    <p class=\"mb-3\">PE\u88c5\u8f7d\u5668\u8bfb\u53d6\u8282\u8868\u4e2d\u7684\u8282\u4fe1\u606f\uff08\u5982.text\u3001.data\uff09\uff0c\u901a\u8fc7\u6587\u4ef6\u6620\u5c04\u5c06\u8282\u5185\u5bb9\u52a0\u8f7d\u5230\u5185\u5b58\uff0c\u5e76\u8bbe\u7f6e\u76f8\u5e94\u7684\u8bfb\/\u5199\/\u6267\u884c\u5c5e\u6027\u3002<\/p>\n                                    \n                                    <div class=\"step-details hidden mt-4 p-4 bg-white rounded-lg border border-gray-200\">\n                                        <h4 class=\"font-semibold mb-2\">\u8be6\u7ec6\u8bf4\u660e<\/h4>\n                                        <p class=\"mb-2\">\u8282\u8868\u7d27\u8ddfPE Header\uff0c\u6bcf\u4e2a\u8282\u8868\u9879\u5b9a\u4e49\u4e86\u4e00\u4e2a\u8282\u7684\u540d\u79f0\u3001\u5927\u5c0f\u3001\u5185\u5b58\u4f4d\u7f6e\u548c\u5c5e\u6027\u3002<\/p>\n                                        <p class=\"mb-2\">\u6587\u4ef6\u6620\u5c04\u4f7f\u7528VirtualAlloc\u5206\u914d\u5185\u5b58\uff0c\u5e76\u6839\u636e\u8282\u5c5e\u6027\u8bbe\u7f6e\u4fdd\u62a4\u6807\u5fd7\u3002<\/p>\n                                        <p class=\"mb-2\">\u52a0\u8f7d\u5668\u786e\u4fdd\u8282\u5bf9\u9f50\u5e76\u5904\u7406\u91cd\u5b9a\u4f4d\uff08\u82e5\u57fa\u5740\u51b2\u7a81\uff09\u3002<\/p>\n                                        \n                                        <div class=\"mt-4 grid grid-cols-1 md:grid-cols-3 gap-4\">\n                                            <div class=\"bg-gray-50 p-3 rounded-lg\">\n                                                <h5 class=\"font-medium text-sm mb-1\">\u5e38\u89c1\u8282<\/h5>\n                                                <ul class=\"text-sm list-disc pl-4 space-y-1\">\n                                                    <li>.text: \u53ef\u6267\u884c\u4ee3\u7801<\/li>\n                                                    <li>.data: \u5df2\u521d\u59cb\u5316\u6570\u636e<\/li>\n                                                    <li>.bss: \u672a\u521d\u59cb\u5316\u6570\u636e<\/li>\n                                                    <li>.rdata: \u53ea\u8bfb\u6570\u636e<\/li>\n                                                <\/ul>\n                                            <\/div>\n                                            <div class=\"bg-gray-50 p-3 rounded-lg\">\n                                                <h5 class=\"font-medium text-sm mb-1\">\u6587\u4ef6\u504f\u79fb<\/h5>\n                                                <p class=\"font-mono text-sm\">\u7d27\u8ddfPE Header<\/p>\n                                            <\/div>\n                                            <div class=\"bg-gray-50 p-3 rounded-lg\">\n                                                <h5 class=\"font-medium text-sm mb-1\">\u6bcf\u4e2a\u8282\u8868\u9879\u5927\u5c0f<\/h5>\n                                                <p class=\"font-mono text-sm\">40 bytes<\/p>\n                                            <\/div>\n                                        <\/div>\n                                        <div class=\"mt-4 bg-gray-50 p-3 rounded-lg\">\n                                            <h5 class=\"font-medium text-sm mb-1\">\u793a\u4f8b\u4ee3\u7801\u7247\u6bb5<\/h5>\n                                            <pre class=\"font-mono text-sm bg-gray-100 p-2 rounded\">IMAGE_SECTION_HEADER sections[NumberOfSections];\nReadFile(hFile, sections, sizeof(IMAGE_SECTION_HEADER) * NumberOfSections, &bytesRead, NULL);\nfor (int i = 0; i < NumberOfSections; i++) {\n    VirtualAlloc(imageBase + sections[i].VirtualAddress, sections[i].SizeOfRawData, MEM_COMMIT, PAGE_EXECUTE_READWRITE);\n}<\/pre>\n                                        <\/div>\n                                    <\/div>\n                                    \n                                    <button class=\"toggle-details-btn mt-2 text-step3 text-sm font-medium flex items-center\">\n                                        <span>\u663e\u793a\u8be6\u60c5<\/span>\n                                        <i class=\"fa fa-chevron-down ml-1 transition-transform duration-200\"><\/i>\n                                    <\/button>\n                                <\/div>\n                            <\/div>\n                            <div class=\"text-gray-400 text-sm opacity-0 transition-opacity duration-500\">\n                                <span class=\"step-status\">\u7b49\u5f85\u4e2d<\/span>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                    \n                    <div id=\"connector-3-4\" class=\"step-connector bg-gray-300\"><\/div>\n                    \n                    <!-- \u6b65\u9aa44 -->\n                    <div id=\"step-4\" class=\"step-highlight bg-step4\/5 border-l-4 border-step4 rounded-lg p-4 transform transition-all duration-500\">\n                        <div class=\"flex justify-between items-start\">\n                            <div class=\"flex items-start\">\n                                <div class=\"w-8 h-8 rounded-full bg-step4 text-white flex items-center justify-center text-lg font-bold mr-3 flex-shrink-0\">4<\/div>\n                                <div>\n                                    <h3 class=\"text-xl font-semibold text-step4 mb-2\">\u5904\u7406\u5bfc\u5165\u8868\u548c\u5165\u53e3\u70b9<\/h3>\n                                    <p class=\"mb-3\">PE\u88c5\u8f7d\u5668\u89e3\u6790\u5bfc\u5165\u8868\uff0c\u52a0\u8f7d\u4f9d\u8d56\u7684DLL\uff0c\u7ed1\u5b9a\u51fd\u6570\u5730\u5740\uff0c\u7136\u540e\u8df3\u8f6c\u5230\u7a0b\u5e8f\u5165\u53e3\u70b9\uff08AddressOfEntryPoint\uff09\u5f00\u59cb\u6267\u884c\u3002<\/p>\n                                    \n                                    <div class=\"step-details hidden mt-4 p-4 bg-white rounded-lg border border-gray-200\">\n                                        <h4 class=\"font-semibold mb-2\">\u8be6\u7ec6\u8bf4\u660e<\/h4>\n                                        <p class=\"mb-2\">\u5bfc\u5165\u8868\uff08Import Directory\uff09\u5217\u51fa\u6240\u6709\u4f9d\u8d56\u7684DLL\u548c\u51fd\u6570\u3002<\/p>\n                                        <p class=\"mb-2\">PE\u88c5\u8f7d\u5668\u4f7f\u7528LoadLibrary\u52a0\u8f7dDLL\uff0cGetProcAddress\u89e3\u6790\u51fd\u6570\u5730\u5740\u3002<\/p>\n                                        <p class=\"mb-2\">\u5165\u53e3\u70b9\u901a\u5e38\u4f4d\u4e8e.text\u8282\uff0c\u6307\u5411\u7a0b\u5e8f\u7684main\u6216DllMain\u51fd\u6570\u3002<\/p>\n                                        \n                                        <div class=\"mt-4 grid grid-cols-1 md:grid-cols-3 gap-4\">\n                                            <div class=\"bg-gray-50 p-3 rounded-lg\">\n                                                <h5 class=\"font-medium text-sm mb-1\">\u5173\u952e\u7ed3\u6784<\/h5>\n                                                <ul class=\"text-sm list-disc pl-4 space-y-1\">\n                                                    <li>Import Address Table (IAT)<\/li>\n                                                    <li>Import Name Table (INT)<\/li>\n                                                    <li>Bound Import Table<\/li>\n                                                <\/ul>\n                                            <\/div>\n                                            <div class=\"bg-gray-50 p-3 rounded-lg\">\n                                                <h5 class=\"font-medium text-sm mb-1\">\u5165\u53e3\u70b9\u4f4d\u7f6e<\/h5>\n                                                <p class=\"font-mono text-sm\">Optional Header\u7684AddressOfEntryPoint<\/p>\n                                            <\/div>\n                                            <div class=\"bg-gray-50 p-3 rounded-lg\">\n                                                <h5 class=\"font-medium text-sm mb-1\">\u6267\u884c\u6d41\u7a0b<\/h5>\n                                                <p class=\"text-sm\">\u89e3\u6790\u5bfc\u5165\u8868 \u2192 \u52a0\u8f7dDLL \u2192 \u7ed1\u5b9a\u51fd\u6570 \u2192 \u8df3\u8f6c\u5165\u53e3\u70b9<\/p>\n                                            <\/div>\n                                        <\/div>\n                                        <div class=\"mt-4 bg-gray-50 p-3 rounded-lg\">\n                                            <h5 class=\"font-medium text-sm mb-1\">\u793a\u4f8b\u4ee3\u7801\u7247\u6bb5<\/h5>\n                                            <pre class=\"font-mono text-sm bg-gray-100 p-2 rounded\">IMAGE_IMPORT_DESCRIPTOR importDesc;\nwhile (importDesc.Name) {\n    HMODULE hModule = LoadLibrary((LPCSTR)(imageBase + importDesc.Name));\n    \/\/ \u89e3\u6790IAT\u5e76\u7ed1\u5b9a\u51fd\u6570\u5730\u5740\n}\nJumpTo(imageBase + ntHeaders.OptionalHeader.AddressOfEntryPoint);<\/pre>\n                                        <\/div>\n                                    <\/div>\n                                    \n                                    <button class=\"toggle-details-btn mt-2 text-step4 text-sm font-medium flex items-center\">\n                                        <span>\u663e\u793a\u8be6\u60c5<\/span>\n                                        <i class=\"fa fa-chevron-down ml-1 transition-transform duration-200\"><\/i>\n                                    <\/button>\n                                <\/div>\n                            <\/div>\n                            <div class=\"text-gray-400 text-sm opacity-0 transition-opacity duration-500\">\n                                <span class=\"step-status\">\u7b49\u5f85\u4e2d<\/span>\n                            <\/div>\n                        <\/div>\n                    <\/div>\n                <\/div>\n                \n                <!-- \u6267\u884c\u6d41\u7a0b\u56fe -->\n                <div class=\"mt-12 bg-white rounded-xl shadow-md p-6 border border-gray-200\">\n                    <h3 class=\"text-lg font-semibold mb-4 text-primary\">\u6267\u884c\u6d41\u7a0b\u793a\u610f\u56fe<\/h3>\n                    <div id=\"execution-diagram\" class=\"relative h-[600px] md:h-[700px]\">\n                        <svg class=\"w-full h-full\" viewBox=\"0 0 600 700\" preserveAspectRatio=\"xMidYMid meet\">\n                            <defs>\n                                <marker id=\"arrowhead\" markerWidth=\"10\" markerHeight=\"7\" refX=\"8\" refY=\"3.5\" orient=\"auto\">\n                                    <polygon points=\"0 0, 10 3.5, 0 7\" fill=\"#64748B\"\/>\n                                <\/marker>\n                            <\/defs>\n                            <g>\n                                <!-- \u6b65\u9aa41: \u68c0\u67e5DOS Header -->\n                                <rect x=\"150\" y=\"30\" width=\"300\" height=\"80\" rx=\"10\" fill=\"rgba(59, 130, 246, 0.1)\" stroke=\"#3B82F6\" stroke-width=\"2\" class=\"step-node opacity-0\" data-step=\"1\"\/>\n                                <text x=\"300\" y=\"50\" text-anchor=\"middle\" class=\"text-step1 font-medium text-sm opacity-0\" data-step=\"1\">\u68c0\u67e5DOS Header<\/text>\n                                <text x=\"300\" y=\"70\" text-anchor=\"middle\" class=\"text-step1 font-mono text-xs opacity-0\" data-step=\"1\">\u9a8c\u8bc1\"MZ\"\u7b7e\u540d\uff0c\u8bfb\u53d6e_lfanew<\/text>\n                                <text x=\"300\" y=\"90\" text-anchor=\"middle\" class=\"text-step1 font-mono text-xs opacity-0\" data-step=\"1\">\u504f\u79fb: 0x0000, \u5927\u5c0f: 64 bytes<\/text>\n                                <path d=\"M300 110 V 150\" stroke=\"#D1D5DB\" stroke-width=\"2\" marker-end=\"url(#arrowhead)\" class=\"svg-path connector\" id=\"svg-connector-1-2\"\/>\n                                <text x=\"320\" y=\"130\" class=\"text-neutral font-mono text-xs opacity-0 connector-text\" data-connector=\"1-2\">\u8df3\u8f6c\u5230PE Header<\/text>\n                                \n                                <!-- \u6b65\u9aa42: \u9a8c\u8bc1PE Header -->\n                                <rect x=\"150\" y=\"170\" width=\"300\" height=\"80\" rx=\"10\" fill=\"rgba(16, 185, 129, 0.1)\" stroke=\"#10B981\" stroke-width=\"2\" class=\"step-node opacity-0\" data-step=\"2\"\/>\n                                <text x=\"300\" y=\"190\" text-anchor=\"middle\" class=\"text-step2 font-medium text-sm opacity-0\" data-step=\"2\">\u9a8c\u8bc1PE Header<\/text>\n                                <text x=\"300\" y=\"210\" text-anchor=\"middle\" class=\"text-step2 font-mono text-xs opacity-0\" data-step=\"2\">\u68c0\u67e5\"PE\\0\\0\"\u7b7e\u540d\uff0c\u9a8c\u8bc1\u67b6\u6784<\/text>\n                                <text x=\"300\" y=\"230\" text-anchor=\"middle\" class=\"text-step2 font-mono text-xs opacity-0\" data-step=\"2\">\u504f\u79fb: 0x00E0, \u5927\u5c0f: 24 bytes<\/text>\n                                <path d=\"M300 250 V 290\" stroke=\"#D1D5DB\" stroke-width=\"2\" marker-end=\"url(#arrowhead)\" class=\"svg-path connector\" id=\"svg-connector-2-3\"\/>\n                                <text x=\"320\" y=\"270\" class=\"text-neutral font-mono text-xs opacity-0 connector-text\" data-connector=\"2-3\">\u8bfb\u53d6\u8282\u8868<\/text>\n                                \n                                <!-- \u6b65\u9aa43: \u6620\u5c04\u8282\u8868\u5230\u5185\u5b58 -->\n                                <rect x=\"150\" y=\"310\" width=\"300\" height=\"100\" rx=\"10\" fill=\"rgba(245, 158, 11, 0.1)\" stroke=\"#F59E0B\" stroke-width=\"2\" class=\"step-node opacity-0\" data-step=\"3\"\/>\n                                <text x=\"300\" y=\"330\" text-anchor=\"middle\" class=\"text-step3 font-medium text-sm opacity-0\" data-step=\"3\">\u6620\u5c04\u8282\u8868\u5230\u5185\u5b58<\/text>\n                                <text x=\"300\" y=\"350\" text-anchor=\"middle\" class=\"text-step3 font-mono text-xs opacity-0\" data-step=\"3\">\u52a0\u8f7d.text, .data, .rdata\u7b49\u8282<\/text>\n                                <text x=\"300\" y=\"370\" text-anchor=\"middle\" class=\"text-step3 font-mono text-xs opacity-0\" data-step=\"3\">\u8bbe\u7f6e\u8bfb\/\u5199\/\u6267\u884c\u5c5e\u6027<\/text>\n                                <text x=\"300\" y=\"390\" text-anchor=\"middle\" class=\"text-step3 font-mono text-xs opacity-0\" data-step=\"3\">\u6bcf\u4e2a\u8282\u8868\u9879: 40 bytes<\/text>\n                                <path d=\"M300 410 V 450\" stroke=\"#D1D5DB\" stroke-width=\"2\" marker-end=\"url(#arrowhead)\" class=\"svg-path connector\" id=\"svg-connector-3-4\"\/>\n                                <text x=\"320\" y=\"430\" class=\"text-neutral font-mono text-xs opacity-0 connector-text\" data-connector=\"3-4\">\u5904\u7406\u5bfc\u5165\u8868<\/text>\n                                \n                                <!-- \u6b65\u9aa44: \u5904\u7406\u5bfc\u5165\u8868\u548c\u5165\u53e3\u70b9 -->\n                                <rect x=\"150\" y=\"470\" width=\"300\" height=\"100\" rx=\"10\" fill=\"rgba(239, 68, 68, 0.1)\" stroke=\"#EF4444\" stroke-width=\"2\" class=\"step-node opacity-0\" data-step=\"4\"\/>\n                                <text x=\"300\" y=\"490\" text-anchor=\"middle\" class=\"text-step4 font-medium text-sm opacity-0\" data-step=\"4\">\u5904\u7406\u5bfc\u5165\u8868\u548c\u5165\u53e3\u70b9<\/text>\n                                <text x=\"300\" y=\"510\" text-anchor=\"middle\" class=\"text-step4 font-mono text-xs opacity-0\" data-step=\"4\">\u52a0\u8f7dDLL\uff0c\u7ed1\u5b9aIAT<\/text>\n                                <text x=\"300\" y=\"530\" text-anchor=\"middle\" class=\"text-step4 font-mono text-xs opacity-0\" data-step=\"4\">\u8df3\u8f6c\u5230AddressOfEntryPoint<\/text>\n                                <text x=\"300\" y=\"550\" text-anchor=\"middle\" class=\"text-step4 font-mono text-xs opacity-0\" data-step=\"4\">\u901a\u5e38\u4f4d\u4e8e.text\u8282<\/text>\n                                \n                                <!-- \u5185\u5b58\u5e03\u5c40\u793a\u610f\u56fe -->\n                                <g transform=\"translate(450, 30)\">\n                                    <rect x=\"0\" y=\"0\" width=\"120\" height=\"40\" fill=\"#E5E7EB\" stroke=\"#6B7280\" stroke-width=\"1\" class=\"memory-node opacity-0\" data-memory=\"dos\"\/>\n                                    <text x=\"60\" y=\"20\" text-anchor=\"middle\" class=\"text-neutral font-mono text-xs opacity-0\" data-memory=\"dos\">DOS Header<\/text>\n                                    <rect x=\"0\" y=\"40\" width=\"120\" height=\"40\" fill=\"#E5E7EB\" stroke=\"#6B7280\" stroke-width=\"1\" class=\"memory-node opacity-0\" data-memory=\"pe\"\/>\n                                    <text x=\"60\" y=\"60\" text-anchor=\"middle\" class=\"text-neutral font-mono text-xs opacity-0\" data-memory=\"pe\">PE Header<\/text>\n                                    <rect x=\"0\" y=\"80\" width=\"120\" height=\"60\" fill=\"#E5E7EB\" stroke=\"#6B7280\" stroke-width=\"1\" class=\"memory-node opacity-0\" data-memory=\"sections\"\/>\n                                    <text x=\"60\" y=\"100\" text-anchor=\"middle\" class=\"text-neutral font-mono text-xs opacity-0\" data-memory=\"sections\">\u8282\u8868<\/text>\n                                    <text x=\"60\" y=\"120\" text-anchor=\"middle\" class=\"text-neutral font-mono text-xs opacity-0\" data-memory=\"sections\">(.text, .data)<\/text>\n                                    <rect x=\"0\" y=\"140\" width=\"120\" height=\"40\" fill=\"#E5E7EB\" stroke=\"#6B7280\" stroke-width=\"1\" class=\"memory-node opacity-0\" data-memory=\"import\"\/>\n                                    <text x=\"60\" y=\"160\" text-anchor=\"middle\" class=\"text-neutral font-mono text-xs opacity-0\" data-memory=\"import\">\u5bfc\u5165\u8868<\/text>\n                                <\/g>\n                            <\/g>\n                        <\/svg>\n                    <\/div>\n                <\/div>\n            <\/div>\n        <\/div>\n    <\/main>\n\n    <footer class=\"bg-dark text-white py-6\">\n        <div class=\"container mx-auto px-4 text-center\">\n            <p>\u00a9 2025 PE\u6587\u4ef6\u6267\u884c\u8fc7\u7a0b\u53ef\u89c6\u5316 | \u7248\u6743\u6240\u6709<\/p>\n        <\/div>\n    <\/footer>\n\n    <script>\n        \/\/ \u521d\u59cb\u5316\u9875\u9762\n        document.addEventListener('DOMContentLoaded', function() {\n            \/\/ \u6dfb\u52a0\u8be6\u60c5\u5207\u6362\u529f\u80fd\n            document.querySelectorAll('.toggle-details-btn').forEach(btn => {\n                btn.addEventListener('click', function() {\n                    const details = this.previousElementSibling;\n                    const text = this.querySelector('span');\n                    const icon = this.querySelector('i');\n                    \n                    if (details.classList.contains('hidden')) {\n                        details.classList.remove('hidden');\n                        text.textContent = '\u9690\u85cf\u8be6\u60c5';\n                        icon.classList.add('rotate-180');\n                    } else {\n                        details.classList.add('hidden');\n                        text.textContent = '\u663e\u793a\u8be6\u60c5';\n                        icon.classList.remove('rotate-180');\n                    }\n                });\n            });\n            \n            \/\/ \u521d\u59cb\u5316\u6267\u884c\u6d41\u7a0b\u56fe\n            initExecutionDiagram();\n            \n            \/\/ \u52a8\u753b\u6309\u94ae\u4e8b\u4ef6\n            const startBtn = document.getElementById('start-animation-btn');\n            const resetBtn = document.getElementById('reset-animation-btn');\n            \n            startBtn.addEventListener('click', function() {\n                animateExecutionProcess();\n                this.classList.add('hidden');\n                resetBtn.classList.remove('hidden');\n            });\n            \n            resetBtn.addEventListener('click', function() {\n                resetSteps();\n                animateExecutionProcess();\n            });\n        });\n        \n        \/\/ \u521d\u59cb\u5316\u6267\u884c\u6d41\u7a0b\u56fe\n        function initExecutionDiagram() {\n            \/\/ \u91cd\u7f6e\u6240\u6709\u8282\u70b9\u3001\u8fde\u63a5\u7ebf\u548c\u5185\u5b58\u5e03\u5c40\u7684\u72b6\u6001\n            document.querySelectorAll('.step-node, .step-node text, .memory-node, .memory-node text').forEach(node => {\n                node.classList.add('opacity-0');\n            });\n            document.querySelectorAll('.svg-path.connector').forEach(path => {\n                path.classList.remove('active');\n            });\n            document.querySelectorAll('.connector-text').forEach(text => {\n                text.classList.add('opacity-0');\n            });\n        }\n        \n        \/\/ \u6267\u884c\u8fc7\u7a0b\u52a8\u753b\n        function animateExecutionProcess() {\n            \/\/ \u91cd\u7f6e\u6240\u6709\u6b65\u9aa4\u72b6\u6001\n            resetSteps();\n            \n            \/\/ \u7981\u7528\u52a8\u753b\u6309\u94ae\n            const startBtn = document.getElementById('start-animation-btn');\n            startBtn.disabled = true;\n            startBtn.innerHTML = '<i class=\"fa fa-spinner fa-spin mr-2\"><\/i><span>\u52a8\u753b\u8fdb\u884c\u4e2d...<\/span>';\n            \n            \/\/ \u663e\u793a\u6d41\u7a0b\u56fe\u8282\u70b9\u548c\u5185\u5b58\u5e03\u5c40\n            setTimeout(() => {\n                document.querySelectorAll('.step-node, .step-node text').forEach((node, index) => {\n                    setTimeout(() => {\n                        node.classList.remove('opacity-0');\n                    }, index * 400);\n                });\n                \n                document.querySelectorAll('.memory-node, .memory-node text').forEach((node, index) => {\n                    setTimeout(() => {\n                        node.classList.remove('opacity-0');\n                    }, index * 400 + 200);\n                });\n                \n                document.querySelectorAll('.svg-path.connector, .connector-text').forEach((connector, index) => {\n                    setTimeout(() => {\n                        connector.classList.add('active');\n                        connector.classList.remove('opacity-0');\n                    }, 200 + index * 400);\n                });\n            }, 500);\n            \n            \/\/ \u6267\u884c\u6b65\u9aa4\u52a8\u753b\n            executeStep(1);\n        }\n        \n        \/\/ \u91cd\u7f6e\u6240\u6709\u6b65\u9aa4\u72b6\u6001\n        function resetSteps() {\n            \/\/ \u91cd\u7f6e\u6b65\u9aa4\u72b6\u6001\n            for (let i = 1; i <= 4; i++) {\n                const step = document.getElementById(`step-${i}`);\n                const status = step.querySelector('.step-status');\n                const connector = document.getElementById(`connector-${i}-${i+1}`);\n                \n                step.classList.remove('scale-105', 'shadow-lg', 'animate-pulse-slow');\n                step.classList.add('scale-100');\n                \n                if (status) {\n                    status.textContent = '\u7b49\u5f85\u4e2d';\n                    status.className = 'step-status text-gray-400';\n                    status.parentElement.classList.add('opacity-0');\n                }\n                \n                if (connector) {\n                    connector.className = 'step-connector bg-gray-300';\n                }\n                \n                \/\/ \u91cd\u7f6eSVG\u8282\u70b9\u3001\u8fde\u63a5\u7ebf\u548c\u5185\u5b58\u5e03\u5c40\n                document.querySelectorAll(`[data-step=\"${i}\"]`).forEach(node => {\n                    node.classList.add('opacity-0');\n                    node.classList.remove('animate-pulse-slow');\n                });\n                const svgConnector = document.getElementById(`svg-connector-${i}-${i+1}`);\n                if (svgConnector) {\n                    svgConnector.classList.remove('active');\n                    svgConnector.setAttribute('stroke', '#D1D5DB');\n                }\n                document.querySelectorAll(`[data-connector=\"${i}-${i+1}\"]`).forEach(text => {\n                    text.classList.add('opacity-0');\n                });\n            }\n            \n            \/\/ \u91cd\u7f6e\u5185\u5b58\u5e03\u5c40\n            document.querySelectorAll('[data-memory]').forEach(node => {\n                node.classList.add('opacity-0');\n                node.classList.remove('animate-pulse-slow');\n            });\n            \n            \/\/ \u79fb\u9664\u5b8c\u6210\u6d88\u606f\n            const diagram = document.getElementById('execution-diagram');\n            const completionMsg = diagram.querySelector('.completion-message');\n            if (completionMsg) {\n                completionMsg.remove();\n            }\n            \n            \/\/ \u91cd\u7f6e\u6309\u94ae\u72b6\u6001\n            const startBtn = document.getElementById('start-animation-btn');\n            startBtn.disabled = false;\n            startBtn.innerHTML = '<i class=\"fa fa-play mr-2\"><\/i><span>\u6f14\u793a\u6267\u884c\u8fc7\u7a0b<\/span>';\n        }\n        \n        \/\/ \u6267\u884c\u5355\u4e2a\u6b65\u9aa4\u52a8\u753b\n        function executeStep(stepNumber) {\n            const step = document.getElementById(`step-${stepNumber}`);\n            const status = step.querySelector('.step-status');\n            const nextConnector = document.getElementById(`connector-${stepNumber}-${stepNumber+1}`);\n            const svgNodes = document.querySelectorAll(`[data-step=\"${stepNumber}\"]`);\n            const svgConnector = document.getElementById(`svg-connector-${stepNumber}-${stepNumber+1}`);\n            const connectorText = document.querySelector(`[data-connector=\"${stepNumber}-${stepNumber+1}\"]`);\n            const memoryNode = document.querySelector(`[data-memory=\"${['dos', 'pe', 'sections', 'import'][stepNumber-1]}\"]`);\n            const memoryText = document.querySelector(`[data-memory=\"${['dos', 'pe', 'sections', 'import'][stepNumber-1]}\"].text`);\n            \n            if (!step) return;\n            \n            \/\/ \u9ad8\u4eae\u5f53\u524d\u6b65\u9aa4\n            step.classList.add('scale-105', 'shadow-lg', 'animate-pulse-slow');\n            \n            \/\/ \u9ad8\u4eaeSVG\u8282\u70b9\u548c\u5185\u5b58\u5e03\u5c40\n            svgNodes.forEach(node => {\n                node.classList.remove('opacity-0');\n                node.classList.add('animate-pulse-slow');\n            });\n            if (memoryNode) {\n                memoryNode.classList.remove('opacity-0');\n                memoryNode.classList.add('animate-pulse-slow');\n                memoryNode.setAttribute('fill', getComputedStyle(document.documentElement).getPropertyValue(`--step${stepNumber}0.1`).trim());\n            }\n            if (memoryText) {\n                memoryText.classList.remove('opacity-0');\n                memoryText.classList.add('animate-pulse-slow');\n            }\n            \n            \/\/ \u66f4\u65b0\u72b6\u6001\u4e3a\"\u8fdb\u884c\u4e2d\"\n            if (status) {\n                status.textContent = '\u8fdb\u884c\u4e2d';\n                status.className = 'step-status text-accent animate-pulse-slow';\n                status.parentElement.classList.remove('opacity-0');\n            }\n            \n            \/\/ \u6839\u636e\u6b65\u9aa4\u53f7\u6267\u884c\u4e0d\u540c\u7684\u52a8\u753b\u6548\u679c\n            const durations = [3500, 3500, 4500, 4500]; \/\/ \u6bcf\u4e2a\u6b65\u9aa4\u7684\u6301\u7eed\u65f6\u95f4\n            setTimeout(() => {\n                \/\/ \u5b8c\u6210\u5f53\u524d\u6b65\u9aa4\n                if (status) {\n                    status.textContent = '\u5df2\u5b8c\u6210';\n                    status.className = 'step-status text-secondary';\n                }\n                \n                step.classList.remove('animate-pulse-slow');\n                svgNodes.forEach(node => {\n                    node.classList.remove('animate-pulse-slow');\n                });\n                if (memoryNode) {\n                    memoryNode.classList.remove('animate-pulse-slow');\n                    memoryNode.setAttribute('fill', '#E5E7EB');\n                }\n                if (memoryText) {\n                    memoryText.classList.remove('animate-pulse-slow');\n                }\n                \n                \/\/ \u8fde\u63a5\u7ebf\u4e0b\u4e00\u4e2a\u6b65\u9aa4\n                if (nextConnector) {\n                    nextConnector.className = `step-connector bg-step${stepNumber}`;\n                }\n                if (svgConnector) {\n                    svgConnector.classList.add('active');\n                    svgConnector.setAttribute('stroke', getComputedStyle(document.documentElement).getPropertyValue(`--step${stepNumber}`).trim());\n                }\n                if (connectorText) {\n                    connectorText.classList.remove('opacity-0');\n                }\n                \n                \/\/ \u6267\u884c\u4e0b\u4e00\u4e2a\u6b65\u9aa4\n                if (stepNumber < 4) {\n                    executeStep(stepNumber + 1);\n                } else {\n                    \/\/ \u542f\u7528\u52a8\u753b\u6309\u94ae\n                    const startBtn = document.getElementById('start-animation-btn');\n                    startBtn.disabled = false;\n                    startBtn.innerHTML = '<i class=\"fa fa-play mr-2\"><\/i><span>\u6f14\u793a\u6267\u884c\u8fc7\u7a0b<\/span>';\n                    \n                    \/\/ \u9ad8\u4eae\u6574\u4e2a\u6d41\u7a0b\n                    for (let i = 1; i <= 4; i++) {\n                        const s = document.getElementById(`step-${i}`);\n                        s.classList.add('shadow-lg');\n                    }\n                    \n                    \/\/ \u663e\u793a\u5b8c\u6210\u6d88\u606f\n                    showCompletionMessage();\n                }\n            }, durations[stepNumber - 1]);\n        }\n        \n        \/\/ \u663e\u793a\u5b8c\u6210\u6d88\u606f\n        function showCompletionMessage() {\n            const diagram = document.getElementById('execution-diagram');\n            const completionMsg = document.createElement('div');\n            completionMsg.className = 'completion-message absolute inset-0 flex items-center justify-center bg-white\/80 rounded-lg transition-opacity duration-500';\n            completionMsg.innerHTML = `\n                <div class=\"text-center animate-pulse\">\n                    <div class=\"text-secondary text-5xl mb-3\">\n                        <i class=\"fa fa-check-circle\"><\/i>\n                    <\/div>\n                    <h4 class=\"text-xl font-semibold text-primary mb-1\">\u6267\u884c\u6d41\u7a0b\u5b8c\u6210<\/h4>\n                    <p class=\"text-gray-600\">PE\u6587\u4ef6\u5df2\u6210\u529f\u52a0\u8f7d\u5e76\u51c6\u5907\u6267\u884c\uff01<\/p>\n                    <p class=\"text-sm text-gray-500 mt-2\">\u70b9\u51fb\u201c\u91cd\u7f6e\u6f14\u793a\u201d\u91cd\u65b0\u89c2\u770b<\/p>\n                <\/div>\n            `;\n            \n            diagram.appendChild(completionMsg);\n            \n            \/\/ 5\u79d2\u540e\u81ea\u52a8\u79fb\u9664\u5b8c\u6210\u6d88\u606f\n            setTimeout(() => {\n                if (completionMsg.parentNode === diagram) {\n                    completionMsg.classList.add('opacity-0');\n                    setTimeout(() => {\n                        if (completionMsg.parentNode === diagram) {\n                            diagram.removeChild(completionMsg);\n                        }\n                    }, 500);\n                }\n            }, 5000);\n        }\n    <\/script>\n<\/body>\n<\/html>\n","protected":false},"excerpt":{"rendered":"<p>PE\u6587\u4ef6\u7ed3\u6784\u6811\u72b6\u67e5\u770b\u5668 PE\u6587\u4ef6\u5c42\u7ea7\u7ed3\u6784 \u63a2\u7d22PE\u6587\u4ef6\u7684\u5404\u4e2a\u5c42\u7ea7\u7ed3\u6784\uff0c\u70b9\u51fb\u5de6\u4fa7\u7684\u8282\u70b9\u53ef\u4ee5\u67e5\u770b\u8be6\u7ec6\u5185\u5bb9\u3002 \u4e0d\u540c\u989c [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1168","post","type-post","status-publish","format-standard","hentry","category-game"],"_links":{"self":[{"href":"http:\/\/n0ps1ed.top\/index.php\/wp-json\/wp\/v2\/posts\/1168","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/n0ps1ed.top\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/n0ps1ed.top\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/n0ps1ed.top\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/n0ps1ed.top\/index.php\/wp-json\/wp\/v2\/comments?post=1168"}],"version-history":[{"count":22,"href":"http:\/\/n0ps1ed.top\/index.php\/wp-json\/wp\/v2\/posts\/1168\/revisions"}],"predecessor-version":[{"id":1193,"href":"http:\/\/n0ps1ed.top\/index.php\/wp-json\/wp\/v2\/posts\/1168\/revisions\/1193"}],"wp:attachment":[{"href":"http:\/\/n0ps1ed.top\/index.php\/wp-json\/wp\/v2\/media?parent=1168"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/n0ps1ed.top\/index.php\/wp-json\/wp\/v2\/categories?post=1168"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/n0ps1ed.top\/index.php\/wp-json\/wp\/v2\/tags?post=1168"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}