Skip to main content

string_analyze/rules/core/
compiler.rs

1use crate::rules::lazy_rule;
2
3// ==========================================
4// 1. MSVC (Microsoft Visual C++)
5// ==========================================
6lazy_rule!(
7    RE_COMPILER_MSVC_UCRT = r#"(?i)minkernel\\crts\\ucrt\\src\\"#,
8    "发现 MSVC Universal CRT 源代码路径",
9    30
10);
11
12lazy_rule!(
13    RE_COMPILER_MSVC_VCRUNTIME = r#"(?i)[a-z]:\\[^:*?"<>|\r\n]*\\vcruntime\\src\\"#,
14    "发现 MSVC VCRuntime 源代码路径",
15    30
16);
17
18lazy_rule!(
19    RE_COMPILER_MSVC_DLL = r#"(?i)\b(?:msvcr\d+|msvcp\d+|vcruntime\d+|ucrtbase)\.dll\b"#,
20    "发现 MSVC 动态运行时库 (CRT DLL)",
21    15
22);
23
24// ==========================================
25// 2. GCC / Clang
26// ==========================================
27lazy_rule!(
28    RE_COMPILER_GCC = r#"GCC:\s*\([^)]+\)\s*\d+\.\d+\.\d+"#,
29    "发现完整的 GCC 编译器版本字符串",
30    20
31);
32
33lazy_rule!(
34    RE_COMPILER_CLANG = r#"(?i)\bclang\s+version\s+\d+\.\d+\.\d+"#,
35    "发现 Clang 编译器版本字符串",
36    20
37);
38
39// ==========================================
40// 3. Rust
41// ==========================================
42lazy_rule!(
43    RE_LANG_RUST_PATH = r#"/rustc/[0-9a-f]{40}/library/"#,
44    "发现 Rust 标准库编译路径",
45    30
46);
47
48lazy_rule!(
49    RE_LANG_RUST_RUNTIME = r#"\b(?:RUST_BACKTRACE|panicked at|fatal runtime error)\b"#,
50    "发现 Rust 运行时错误/调试字符串",
51    30
52);
53
54// ==========================================
55// 4. Go
56// ==========================================
57lazy_rule!(
58    RE_LANG_GO_BUILDID = r#"\bGo build ID:\s*"[^"]+""#,
59    "发现 Go Build ID",
60    30
61);
62
63lazy_rule!(
64    RE_LANG_GO_RUNTIME = r#"\b(?:runtime\.main|runtime\.gopanic|main\.main)\b"#,
65    "发现 Go 运行时符号/函数名",
66    30
67);
68
69// ==========================================
70// 5. C# / .NET 框架
71// ==========================================
72lazy_rule!(
73    RE_LANG_DOTNET_MSCOREE = r#"(?i)\bmscoree\.dll\b"#,
74    "发现 .NET 核心运行时加载器 (mscoree.dll)",
75    40
76);
77
78lazy_rule!(
79    RE_LANG_DOTNET_CORMAIN = r#"\b_Cor(?:Exe|Dll)Main\b"#,
80    "发现 .NET 可执行文件入口点符号 (_CorExeMain)",
81    40
82);
83
84// ==========================================
85// 6. Delphi / Free Pascal
86// ==========================================
87lazy_rule!(
88    RE_COMPILER_DELPHI = r#"(?i)\b(?:Borland\\Delphi|System\.SysUtils|FastMM)\b"#,
89    "发现 Delphi / Embarcadero 运行时特征",
90    30
91);
92
93lazy_rule!(
94    RE_COMPILER_FPC = r#"(?i)\bFree Pascal Compiler\b"#,
95    "发现 Free Pascal 编译器特征",
96    30
97);
98
99// ==========================================
100// Python 打包工具
101// ==========================================
102lazy_rule!(
103    RE_PACKER_PYINSTALLER = r#"(?i)\b(?:pyi-windows-manifest|Py_Initialize)\b"#,
104    "发现 PyInstaller 打包特征",
105    40
106);
107
108lazy_rule!(
109    RE_PACKER_NUITKA = r#"(?i)\b__nuitka_module\b"#,
110    "发现 Nuitka 打包/编译特征",
111    40
112);
113
114// ==========================================
115// UPX
116// ==========================================
117lazy_rule!(
118    RE_PACKER_UPX_SECTION = r#"UPX[012]!"#,
119    "发现 UPX 壳区段标识符",
120    50
121);
122
123lazy_rule!(
124    RE_PACKER_UPX_TEXT = r#"\$Info: This file is packed with the UPX executable packer\$"#,
125    "发现 UPX 官方版权声明文本",
126    50
127);