Compare commits

...

2,643 commits

Author SHA1 Message Date
Benjamin Funke
342dda3064 add update_info_timestamp scripts 2026-06-23 17:54:39 +02:00
horsicq
74e9ca450d chore: update date to 2026-06-23 in db info files 2026-06-23 01:46:57 +02:00
DosX
eed67fc08d dbs_min update 2026-06-22 18:55:48 +03:00
Benjamin Funke
958258a5cd update DiE version in RUN.md 2026-06-22 17:34:53 +02:00
DosX
d23269a06e Add VCasm-Protector and Excalibur detections
Add new heuristics to PE DB: insert VCasm-Protector (version 1.1-1.2, hash 0xcfed7c1e) and Excalibur (version 1.0X, hash 0x7f364e1f) into the packer/cryptor signature list, and add a section-name rule for VCasm-Protector ('vcasm'). Also adjust array punctuation for the appended entries.
2026-06-22 18:33:43 +03:00
DosX
6b53f22ae4 Improve Skater .NET detector
Add upstream GitHub reference and replace the slow signature-in-section check with PE.isNetObjectPresent checks for 'RustemSoft.Skater' and 'RustemSoft.Skater.Skater_NET_Obfuscator' to speed up detection. Keeps the existing EP .NET compare logic and version detection for 2.X.
2026-06-22 18:33:15 +03:00
DosX
5c5e3ad911 Rename and refactor Unicode signature generator
Rename generateUnicodeSignatureMask to convertStringToUnicodeSignature and change its output to a continuous UTF-16LE hex string (no spaces) with consistent zero-padding. Update all callers accordingly across the PE heuristics file, adjust doc examples to the new format, and remove an obsolete substring adjustment for the NjRAT separator pattern. These changes standardize how UTF-16LE signatures are produced and consumed by PE.isSignature*/PE.findSignature calls.
2026-06-22 16:47:15 +03:00
DosX
1af9c5240f dbs_min update 2026-06-22 16:29:29 +03:00
DosX
a8180360d2 Refactor variable names in heuristics
Rename many internal variables in scanForMaliciousCode_NET_and_Native to clearer, self-descriptive identifiers (e.g. k0_off/k1_off/k3_off -> offsetKey0/offsetKey1/offsetKey3, lfa*_off -> offsetLfa*, keyLen/j/L -> keyLength/offset, and byte variables like b0/b1 -> cipherM/cipherZ, etc.). Changes span the pre-calculation block, verifyPeSignature, and scanBuffer to improve readability and maintainability. No functional logic changes intended — behavior should remain the same.
2026-06-22 16:29:00 +03:00
DosX
61509245aa Optimize signature pattern checks
Adjust signature pattern handling in scanForMaliciousCode_NET_and_Native.

- Remove the added "??" prefix when building njRatDataSeparatorPattern so the pattern uses the substring directly.
- Remove the trailing " **" wildcard from the Unicode " RAT" signature passed to PE.isSignatureInSectionPresent to narrow matching.
2026-06-22 16:28:35 +03:00
DosX
6774f5bfb8 Generate precise UTF-16LE hex signature mask
Rewrite generateUnicodeSignatureMask to produce UTF-16LE hex byte sequences for each character. The new implementation uses charCodeAt to extract code units, computes low/high bytes in little-endian order, pads bytes to two hex digits (ES3/ES5 compatible), and joins byte pairs with spaces. This replaces the previous quoted 'char'00' style output and correctly handles non-ASCII characters.
2026-06-22 16:27:49 +03:00
DosX
c4c388de73 Refactor PE scan buffer decoding and checks
Replace custom hex decoding and helper with direct PE.readBytes, removing hexLUT and getDecodedBuffer to reduce overhead. Simplify scanBuffer signature and internals (rename comment, local caching, remove unused offsetBase), tighten verifyPeSignature comments and remove redundant explanatory comments. Use PE.readBytes for resources, overlay and sections, and keep existing algorithm detection logic intact; this is a cleanup/optimization to improve readability and performance without changing core behavior.
2026-06-22 16:15:17 +03:00
DosX
7f96c2e668 Simplify e_lfanew fast-fail and cache lfa3
Remove redundant b3 decode and consolidate the e_lfanew fast-fail check to test upper 16-bits against max bounds. Treat the MSB of e_lfanew as implicitly 0 and move its per-iteration validation into the main scan loop by caching lfa3_off as _lfa3 and reading the MSB (d3F) once per iteration. This reduces repeated reads and unnecessary variables, clarifies assumptions about e_lfanew, and slightly improves performance by localizing offsets and eliminating a prior separate fast-fail branch.
2026-06-22 16:09:36 +03:00
DosX
16791938db Optimize PE signature decryption and scanning
Inline and optimize PE header verification and scanning hot paths for performance. Added precomputed lfa*_off lookup tables for e_lfanew byte offsets and removed the getDecryptedByte helper by inlining decryption math inside verifyPeSignature to avoid function-call and modulo overhead. Reduced repeated arithmetic by caching base indices, precomputing remainder r, and validating high-order bytes early; also added maxLfa to avoid recomputing buffer bounds. Minor micro-optimizations: cache hexLUT locally in getDecodedBuffer, cache k*_off arrays in scanBuffer, and break out of loops once an encrypted PE is detected. Behavior and verification checks are preserved while improving throughput in tight scanning loops.
2026-06-22 16:07:28 +03:00
DosX
f2fa6b342b Optimize PE heuristic scanning and decryption
Performance and memory optimizations for the PE heuristic scanner:

- Tighten DOS-PDB scan loop to stop once pdbPathBeginOffset is found (avoids an extra break).
- Replace offset tables (k0_off/k1_off/k3_off) with typed Uint8Array to reduce allocations and improve access speed.
- Extract a single getDecryptedByte function (removed inner closure) to avoid per-call closure allocation and centralize decrypt logic.
- Add a fast-fail check for the most-significant byte of e_lfanew and simplify lfaNewOffset calculation to speed header validation.
- Replace multiple inline decryption calls with getDecryptedByte in verifyPeSignature for clarity and efficiency.
- Restructure the detection inner loop to early-continue on mismatches and apply lazy evaluation for arithmetic checks (ADD-SUB / SUB-REV) to reduce unnecessary work.

Behavior should be unchanged functionally while reducing CPU and memory overhead during scanning.
2026-06-22 16:02:50 +03:00
DosX
1837b16d0b dbs_min update 2026-06-22 14:55:45 +03:00
DosX
987d68a71d Optimize PE section scanning and caching
Cache section properties (offset, size, name) and replace direct PE.section accesses to improve readability and performance. Adjust skip logic to use cached sectionSize/sectionName. Expand scanning windows: scan .text of .NET assemblies up to 0x64000, increase data-like sections to 0x12000 and other sections to 0x6000 (previously smaller), to improve detection of encoded/encrypted payloads.
2026-06-22 14:55:36 +03:00
DosX
ab126dd877 dbs_min update 2026-06-22 14:02:37 +03:00
DosX
6b180e6bb8 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-06-22 14:02:01 +03:00
DosX
3303f77420 Standardize wildcard and broaden resource checks
Replace inconsistent byte wildcard in a signature ("81 ED ?? ?? 01 20" -> "81 ED .. .. 01 20") to match the file's wildcard convention, and expand resource-name detection by adding a regex for obvious malicious names (TROJAN, VIRUS, MALWARE, DROPPER). An inline comment was added explaining the resource-name check; minor spacing was also adjusted.
2026-06-22 14:01:59 +03:00
Benjamin Funke
0b2f054553 add references to PE signatures 2026-06-21 17:54:53 +02:00
DosX
134b93e3d2 dbs_min update 2026-06-21 13:10:07 +03:00
DosX
435cf589d0 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-06-21 13:09:24 +03:00
DosX
9853fdc223 Rename MSDOS rule files; adjust RM_FORTRAN mode
Rename several MSDOS detection rule files to include category prefixes and improve organization. Files renamed:
- db/MSDOS/RM_FORTRAN.4.sg -> db/MSDOS/compiler_RM_FORTRAN.4.sg (mode changed 100755 -> 100644; only whitespace/formatting normalized, no detection logic change)
- db/MSDOS/REC_small_AV.1.sg -> db/MSDOS/immunizer_REC_small_AV.1.sg
- db/MSDOS/RLE_com-packer.2.sg -> db/MSDOS/packer_RLE_com-packer.2.sg
- db/MSDOS/REC_small.1.sg -> db/MSDOS/protector_REC_small.1.sg
- db/MSDOS/anti-tracing_add-on.1.sg -> db/MSDOS/protector_anti-tracing_add-on.1.sg

No functional changes to detection rules aside from the noted formatting and permission adjustment.
2026-06-21 13:09:22 +03:00
Benjamin Funke
4e608a54f6 add references for Aztec C/AmigaBasic signature 2026-06-21 11:54:54 +02:00
DosX
82e408f2df Rename DB files to sfx_ and compiler_ prefixes
Rename several database pages to standardized prefixes for clearer organization: db/LX/{PKZIP-SFX.1.sg,RAR-SFX.1.sg} -> db/LX/sfx_PKZIP-SFX.1.sg and db/LX/sfx_RAR-SFX.1.sg; db/MSDOS/{Microsoft_Fortran.4.sg,Microsoft_Quick_Basic.4.sg} -> db/MSDOS/compiler_Microsoft_Fortran.4.sg and db/MSDOS/compiler_Microsoft_Quick_Basic.4.sg. Files are unchanged (100% similarity); only filenames were updated to reflect type (sfx for self-extractors, compiler for compilers).
2026-06-21 12:46:12 +03:00
DosX
bb3351fdbb Rename Borland C to C++ and update sLang
Rename db/LX/compiler_Borland_C.4.sg to db/LX/compiler_Borland_C++.4.sg and update the detect() function to set sLang from "C/C++" to "C++". This adjusts the file/name to explicitly represent the C++ compiler and aligns the language identifier accordingly; no other functional changes.
2026-06-21 12:44:48 +03:00
DosX
b0f6c22d8d Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-06-21 12:43:23 +03:00
DosX
86151c660f Strengthen de4dot .NET detection logic
Refine the PE.NET detection in tool_de4dot.6.sg: accept either method_0 or smethod_0 and require either both GClass0 & GClass1 or both Class0 & Class1. Previously the check relied on smethod_0 and allowed a single GClass0 (or Class0+Class1), which could produce false positives; this change makes detection stricter and more accurate.
2026-06-21 12:43:13 +03:00
Benjamin Funke
3c0c6b8a53 add references to LX signatures 2026-06-21 11:31:02 +02:00
Benjamin Funke
fa082ddaf1 add references to MACH signatures 2026-06-21 11:29:03 +02:00
DosX
dac2016dfb Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-06-21 12:26:31 +03:00
DosX
3113bca5ed Expand malware signature list with more variants
Add additional signature variants to the signsToCheck array in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg (scanForMaliciousCode_NET_and_Native). New entries cover different capitalizations and synonyms for file/cookie/wallet stealers (e.g. Grabfiles/stealfiles, GrabCookies, WalletsStealer/WalletsGrabber) to improve detection coverage for varied naming conventions.
2026-06-21 12:26:22 +03:00
Benjamin Funke
96836f65dc redefine Virbox signature as protector 2026-06-21 11:25:36 +02:00
DosX
e087251e33 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-06-21 12:22:27 +03:00
DosX
f249f403a6 Categorize and rename MSDOS rule files
Rename many db/MSDOS detection rules to include category prefixes (e.g. compiler_, extender_, immunizer_, linker_, protector_, other_) for clearer organization. Add sLang assignment for Microsoft_C rule to set "C" or "C/C++" based on sName. Normalize formatting/whitespace in several scripts and remove executable bit from a few rule files. No detection logic changes besides the explicit sLang assignment.
2026-06-21 12:22:16 +03:00
Benjamin Funke
fb7147c698 rename library_java to library_Java
Also added reference to the Java website
2026-06-21 11:19:12 +02:00
DosX
4f6397516c dbs_min update 2026-06-21 12:14:04 +03:00
DosX
a5b91db3ad Refactor MSDOS rule filenames; set LSI C language
Renamed multiple db/MSDOS detection rule files to include category prefixes (compiler_, library_, protector_, self-displayer_, sfx_) for clearer organization. Cleared executable bits on LSI_C and Khrome_Crypt files (100755 → 100644). Added sLang = "C" to the LSI C detection rule to explicitly mark the language. No other functional changes.
2026-06-21 12:13:36 +03:00
DosX
20c1d39026 Set sLang in detectors; rename DB files
Populate sLang in several MS-DOS detector scripts so the detected language is recorded (Logitech_Modula-2.4: sLang = "Modula-2"; ASIC-Basic, ApBasic, BetterBASIC, Turbo_Basic: sLang = "Basic"). Also rename L_O_V_E__FORTH.4.sg to compiler_L_O_V_E__FORTH.4.sg and Phar_Lap.0a.sg to extender_Phar_Lap.0a.sg to standardize database file naming. No other logic changes.
2026-06-21 12:06:59 +03:00
DosX
9a03a2c257 Reclassify and rename MSDOS rule files
Rename multiple files in db/MSDOS to add category prefixes (e.g. converter_, extender_, packer_, protector_, self-displayer_) for clearer organization. Remove executable bit on several .sg files (mode 100755 -> 100644) and apply minor whitespace/line-ending normalization in a few detection rules (no functional changes).
2026-06-21 12:01:50 +03:00
DosX
798b437caa Add Rabby Wallet signature to heuristics
Append Rabby Wallet signature string to the PE heuristic list in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg to improve detection of Rabby Wallet-related binaries.
2026-06-21 11:57:24 +03:00
DosX
d0fb016461 Remove sOptions assignment in MACH gcc detect
Stop forcing sOptions = "C/C++" in db/MACH/compiler_gcc.4.sg when libgcc_s.1.dylib is present. The detection now only sets bDetected, avoiding an unintended override of compiler option state elsewhere.
2026-06-21 11:40:53 +03:00
DosX
5890991148 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-06-21 11:38:47 +03:00
DosX
74a0883a84 Stop .NET header loop early; add OneKey Wallet sig
Limit iteration in scanForObfuscations_NET by adding an early-exit condition to the for loop (for ... && !isStrangeEpPosition) and remove the redundant break. Also append the OneKey signature string to the malicious signature array in scanForMaliciousCode_NET_and_Native so it is recognized by heuristics.
2026-06-21 11:38:44 +03:00
Benjamin Funke
6b276f63cb improve gcc MACH signature
Change bDetected types to = true to sync our coding standards, remove an duplicated MACH variant which is already in use by the signature
2026-06-21 09:57:53 +02:00
Benjamin Funke
82469c4924 add reference for Delphi signature 2026-06-21 09:56:18 +02:00
Benjamin Funke
f38b4b9623 add references for NE signatures 2026-06-21 09:50:46 +02:00
Benjamin Funke
cc0e869a2b add references for PE signatures 2026-06-21 09:46:17 +02:00
Benjamin Funke
511c99562f add references to signatures 2026-06-20 22:32:01 +02:00
Benjamin Funke
f46b3ca1ac remove newlines in MS-XNA/KTX signature 2026-06-20 21:36:33 +02:00
DosX
cf5a235a54 dbs_min update 2026-06-20 19:44:12 +03:00
DosX
10b6350cb5 Extend PE compare signature; minor formatting
Extend the PE.compare pattern used to skip bitmap resources by adding extra trailing zero bytes to the signature, reducing false positives when determining resource types. Also perform minor whitespace/formatting cleanups in heuristic functions (isNameObfuscated and scanForLanguagesAndCompilers) to improve readability.
2026-06-20 19:43:24 +03:00
DosX
d77aa6f6dd Skip empty/small sections during entropy scan
Add a guard in scanForPackersAndCryptors_NET_and_Native to skip sections with FileOffset == 0 or FileSize < 0x1000 before calculating entropy. This avoids reading invalid/empty section data and reduces false/high-entropy detections for very small sections, improving robustness of packer/cryptor detection.
2026-06-20 19:33:40 +03:00
DosX
10fa1b1822 Only skip tiny sections when sectionOffset > 0
Restrict the small-section skip in scanForMaliciousCode_NET_and_Native to cases where sectionOffset > 0. This prevents erroneously bypassing section processing when sectionOffset is zero or unset, preserving entry/resource section checks and improving heuristic scanning accuracy in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg.
2026-06-20 16:09:22 +03:00
DosX
16aff736fc dbs_min update 2026-06-20 15:59:58 +03:00
DosX
722077df81 Allow wildcards in sub ebp immediate pattern
Replace the fixed immediate bytes in the heuristic pattern (was `81 ED 32 6F 01 20`) with wildcards (`81 ED ?? ?? 01 20`) in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg. This relaxes the signature for the `sub ebp, imm` instruction so the rule can match more binary variants while keeping the surrounding instruction sequence intact for detection.
2026-06-20 15:59:50 +03:00
DosX
eb07d5723d Refactor risk score calc and verdict details
Introduce a percentageOfRiskScore variable to avoid recomputing the risk expression and clamp it to 100. Use this variable in the verdict details string and append the mayBeInfected note when the computed percentage is below 70%, improving readability and providing conditional infection context.
2026-06-20 08:06:00 +03:00
DosX
ddcb553e3f dbs_min update 2026-06-20 07:42:54 +03:00
DosX
7c7194f655 Refactor scanning: extract scanArea and improve heuristics
Extracted a reusable scanArea(areaOffset, areaSize) helper to centralize base64/anchor scanning and replaced global/unicode scanning with targeted scans. Add targeted scanning of PE sections, unmanaged resources and the overlay (gated by packer/protector results), with optimizations to skip unlikely sections (small sections, common .text/.rsrc/.idata/.reloc cases) and to only target large resources (>4KB) while skipping bitmaps. Also renamed/cleaned up offset variables and simplified encrypted-payload scanning logic by consolidating maxScanSize/dataBuffer creation and removing redundant conditionals. These changes improve performance and detection coverage.
2026-06-20 07:42:34 +03:00
DosX
f22203954f Extend section name regex to match .edata/.xdata
Update the section name pattern from /^\.(?:r)?data$/i to /^\.[rex]?data$/i so .edata and .xdata (in addition to .rdata and .data) are recognized and get the larger scan size when scanning for malicious code.
2026-06-20 06:02:20 +03:00
DosX
3a4f9a10e6 Detect ASCII/UTF-16LE Base64 payloads
Replace simple signature variants with robust Base64 payload detection for both ASCII and UTF-16LE encodings. The patch checks for "TV" + raw postfix bytes in the DOS stub (ASCII) and searches for a UTF-16LE "TV" anchor plus Unicode signature masks, sets a base64Version flag, and emits an "Encoded executable payload" verdict including the encoding (Base64, ASCII/UTF-16LE). Removes the prior validateGlobalUnicodeString/validateSignature path and consolidates detection logic.
2026-06-20 05:59:25 +03:00
DosX
90db1886d7 dbs_min update 2026-06-19 17:53:21 +03:00
DosX
88548b7a0b Clarify detection scope in comment
Update comment to explicitly state the heuristic detects encrypted PE files in resources, sections, and overlay via KPA (Known Plaintext Attack). This is a documentation-only change to clarify detection scope; no functional code changes.
2026-06-19 17:52:58 +03:00
DosX
0ab54f846c Label payloads as executable and skip PE sections
Update verdict labels to specify "executable" for Base64 and encrypted payloads for clarity. Add an optimization comment and additional checks to skip scanning common PE sections (.rsrc, .idata, .reloc) when they're unlikely to contain encrypted payloads, and reorder a conditional for the entry-point/.text check to be more robust.
2026-06-19 17:49:09 +03:00
DosX
0a74ea574a Optimize PE scan loop and hex decoding
Performance and readability refactor of the PE heuristic scanner.

- Introduce Uint8Arr alias (fallback to Array) and a hexLUT typed lookup table for fast hex-to-byte decoding.
- Replace dynamic per-byte hex parsing with LUT and allocate decoded buffers as Uint8Arr to reduce overhead.
- Refactor scanBuffer: hoist variables, minimize re-computation, and apply lazy evaluation for alternative decryption checks (ADD/SUB and SUB/REV) to short-circuit work when XOR/XNOR matches.
- Minor cleanup of PE header offset assignment/comment.

Changes are intended to improve speed and reduce allocations while preserving existing verification logic.
2026-06-19 11:45:39 +03:00
DosX
b92aeb6e9a Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-06-19 11:22:34 +03:00
DosX
5f45111d01 Refactor getDecrypted and add conhost.exe
Change the inner getDecrypted implementation to a named function with combined variable declarations and clearer multiline ternary formatting for readability; no functional change to the decryption logic. Also add "conhost.exe" to systemFileNamesDict so the console host is treated as a system-signed filename.
2026-06-19 11:22:31 +03:00
Benjamin Funke
f4aa94179a add ObjGrid signature 2026-06-19 01:18:10 +02:00
Benjamin Funke
d7ce667b68 add FluidSynth signature 2026-06-19 00:45:21 +02:00
Benjamin Funke
8d8fa5f773 add DWMAPI signature 2026-06-19 00:16:31 +02:00
Kaens
d74d71aa29 audio.1.sg now has unique format IDs for parsing + extra
(see Kaens/audio1sg for details)
2026-06-18 20:06:01 +02:00
DosX
400ed3f5d9 dbs_min update 2026-06-18 19:34:33 +03:00
DosX
8dc9261189 Support SUB-REV mode and PE verification fix
Add detection/support for a new SUB-REV (arithmetic-reverse) decryption mode: introduce mode 2 in verifyPeSignature and extend the universal decryptor return to handle SUB-REV. Compute reverse expected bytes (e0_rev/e1_rev) and add a matching detection branch. Also fix PE header offset handling (avoid double addition of peStartOffset) and normalize algorithm labels (e.g. "XOR-XNOR", "ADD-SUB") and the verdict version string to include "Algo: ". These changes improve heuristic coverage for encrypted PE payloads using reversed subtraction schemes.
2026-06-18 19:34:17 +03:00
DosX
828cb6e9cf Remove redundant whitespace stripping on signature
Eliminate the unnecessary .replace(/\s/g,'') call when obtaining the hex signature in scanForMaliciousCode_NET_and_Native (db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg). PE.getSignature already provides the expected format, so this avoids redundant processing and preserves the original returned string.
2026-06-18 19:07:58 +03:00
DosX
85f36dee0a Increase default section scan size to 0x3000
Adjust the maxScanSize calculation in scanForMaliciousCode_NET_and_Native so non-.rdata PE sections are scanned up to 0x3000 bytes (was 0x2500). .rdata sections remain capped at 0x6000. This expands the scan window to improve detection coverage for larger sections.
2026-06-18 18:29:01 +03:00
DosX
4c582a4ef1 Refactor: add getDecodedBuffer and reuse
Introduce getDecodedBuffer(offset, size) to decode PE.getSignature hex strings into byte arrays and replace three duplicated decoding loops (resources, overlay, sections) with calls to this helper. This reduces code duplication, improves readability and maintainability, and preserves existing scanBuffer behavior. Also removes a stray blank line.
2026-06-18 18:11:14 +03:00
DosX
47d213b809 dbs_min update 2026-06-18 18:00:44 +03:00
DosX
4c480aa3b6 Fix PE header, hex parsing, and overlay scan
Use lfaNewOffset directly for the PE header offset (avoids adding peStartOffset incorrectly). Normalize hex signatures by removing whitespace and uppercasing lowercase hex chars before byte conversion (applied to resource, overlay and section scans). Increase overlay scan limit from 0x1000 to 0x14000 to allow scanning larger overlays. These changes improve signature parsing reliability and broaden scanning coverage.
2026-06-18 17:58:35 +03:00
DosX
9893fbad90 Fix lfaNewOffset unsigned calc and verify size
Coerce the computed e_lfanew to an unsigned 32-bit value using >>> 0 to avoid negative/incorrect offsets. Also tighten the remaining-buffer length passed to verifyPeSignature from (bufferSize - j - 4) to (bufferSize - j - 0x20) in both signature-check branches to avoid overly permissive/unsafe verification and reduce risk of out-of-bounds reads.
2026-06-18 16:02:09 +03:00
DosX
a69fcc2e0e Update __GenericHeuristicAnalysis_By_DosX.7.sg 2026-06-18 15:55:22 +03:00
DosX
1f67d14028 Reduce scan sizes and add section scanning
Lower max scan size for resource and overlay scans from 0x2000 to 0x1000 to reduce scanning work, and add a new section-scanning pass to detect encrypted payloads. The new loop skips obvious benign sections (entry-point .text and .rsrc) and only scans large sections (>0x2500), using a larger window for data-like sections (.data/.rdata). Hex signatures are converted to a byte buffer and fed to scanBuffer; if a match is found isEncPePresent is set to true.
2026-06-18 15:24:57 +03:00
DosX
d21026b565 Refactor KPA scan; add overlay scanning
Extract repeated KPA scanning logic into a scanBuffer helper to avoid duplication and simplify resource scanning. Extend detection to include PE overlays (in addition to resources), reading up to 0x2000 bytes of overlay data (only if overlaySize > 0x1000 and the PE is unsigned) and converting the hex signature into a data buffer before scanning. Updated comment to reflect overlay support and preserved existing multi-algorithm/key-length verification via verifyPeSignature.
2026-06-18 09:55:36 +03:00
DosX
123c8e1eb3 Tighten PE heuristic thresholds
Reduce the allowed NumberOfSections upper bound from 96 to 48 to tighten PE header validation and reduce false positives. Increase the targeted resource payload threshold from 0x300 (768 bytes) to 0x1000 (4096 bytes) so the heuristic focuses on larger payloads; the comment was updated accordingly. Changes made in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg.
2026-06-18 09:23:28 +03:00
DosX
00603c95ef Detect multiple encrypted PE algorithms in resources
Add KPA-based detection for encrypted PE files embedded in resources, supporting multiple algorithms (XOR/XNOR and ADD/SUB) and key lengths up to 20 bytes. Replace isXorPePresent with a generic isEncPePresent and track detectedAlgo. Introduce mode-aware decryptor and stronger PE header verification (checks for PE signature, Optional Header magic, NumberOfSections and Characteristics). Adjust resource size/scan thresholds and skip bitmap-like resources. Report encrypted payloads with detected algorithm type.
2026-06-18 09:09:37 +03:00
DosX
f58d4d00fe Extend XOR PE KPA to 20-byte keys and tighten checks
Expand the Known-Plaintext Attack (KPA) support from 16 to 20-byte keys by resizing offset arrays and updating loops; document that 20 bytes is the mathematical maximum for this O(1) KPA using the e_res2 20-byte zero block. Replace throw string with throw new Error for consistent error objects. Increase minimum resource size check from 0x100 to 0x800 (2 KB) to avoid scanning tiny resources, remove noisy debug/key-dump logging, and simplify fast-fail logic and comments for clearer, slightly faster XOR-PE detection.
2026-06-18 08:21:42 +03:00
DosX
a065244668 dbs_min update 2026-06-18 07:29:20 +03:00
DosX
f6de2b5687 Update __GenericHeuristicAnalysis_By_DosX.7.sg 2026-06-18 07:29:12 +03:00
DosX
29cb94f796 Declare loop variables and tighten scopes
Move several loop/index variables (len, i, k, p, j, L) into their for-loop headers with var to limit scope and avoid accidental globals. Remove redundant initializations and a stray variable declaration. Also convert the verifyPeSignature function expression into a function declaration for clarity. No algorithmic changes intended—this is a scoping/cleanup refactor to reduce potential bugs.
2026-06-18 07:22:58 +03:00
DosX
5cd261630b Detect XOR-encrypted PE in resource sections
Add heuristic to detect XOR-encrypted PE files embedded in resources using a known-plaintext attack (assumes 'MZ'). Supports key lengths 1–16 bytes and precomputes offset maps to avoid costly modulo math in the hot loop. Implements a strict verifyPeSignature routine to validate e_lfanew/PE signature, limits scans to the first 4KB of each resource for performance, and reports a "XOR-encrypted payload" verdict when found.
2026-06-18 07:12:46 +03:00
DosX
c654c99320 Expand heuristic strings, add NoIP and fixes
Update PE heuristic database to improve detection coverage and correct signatures: add "NSS_Init" to Firefox-related fingerprints; include alternate WindowsLive/\My Received Files path variant; broaden Paltalk registry keys to include uppercase SOFTWARE and HKCU variants; add NoIP (Vitalwerks DUC) registry keys; include "Ftplist.txt" for FTP Commander detection; and clarify the generic entry comment to reduce false positives. These changes refine string matches and widen coverage for legitimate variations of targeted applications.
2026-06-18 05:48:33 +03:00
DosX
78aab14a73 Enhance credential heuristics and patterns
Update PE heuristic database to broaden credential and artifact detection: add alternate key filenames (\keys3.db, \keys4.db), include additional Outlook profile GUIDs, and add Microsoft Edge user-data path. Expand IMVU name variants for case-insensitive matching and add extra password token variants (including spaced and uppercase forms) to improve credential string matching.
2026-06-18 05:29:59 +03:00
DosX
6fb2cf5815 dbs_min update 2026-06-17 17:53:19 +03:00
DosX
9e0b8daba0 Improve Intel XeSS detection heuristics
Extend the detect() logic to also check for xessGetVersion and xessDestroyContext via PE.isFunctionPresent so the Intel XeSS library is detected even when the lib name isn't found. Preserve the export-symbol regex fallback that sets sOptions to "static" only when matching xess export functions are present. This makes detection more reliable and reduces false positives for static-only classification.
2026-06-17 17:52:50 +03:00
DosX
a4bf165f51 Expand OpenSSL library detection regex
Add libeay32 and ssleay32 to the OpenSSL detection regex in db/PE/library_OpenSSL.4.sg so the PE scanner also recognizes legacy Windows OpenSSL library names (libeay32/ssleay32) in addition to libssl/libcrypto.
2026-06-17 17:39:58 +03:00
DosX
4eb1f22b4e Add Detect It Easy rule for NVIDIA GeForce NOW SDK
Add new detection rule (db/PE/library_Nvidia_GeForce_NOW_SDK.4.sg) to identify the NVIDIA GeForce NOW SDK. The rule checks for presence of GfnRuntimeSdk.dll or exported functions matching /^gfn(?:Free|Get|Register|Start|Stop)/, sets the "static" option for EAT-based detections, and returns the detection result. File includes author/contact metadata.
2026-06-17 17:39:49 +03:00
DosX
1dd4e2eeaf Refine protector heuristic regex
Tighten the "protector" detection regex in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg to avoid false positives. The updated pattern adds anchors and exclusions to skip Unity symbols like `_guard_c`/`_guard_d` and avoid matching Chromiums' exact "prot" token, and includes an inline comment explaining the exceptions.
2026-06-17 14:21:28 +03:00
DosX
2902dc790d Add PE detection rule for Brotli library
Add db/PE/library_Brotli.4.sg to detect the Google Brotli library in PE files. The rule checks for library names matching brotlidec/brotlienc and for exported functions starting with BrotliDecoder or BrotliEncoder; when only exports are present it sets sOptions to "static". File includes author/contact metadata.
2026-06-17 14:12:20 +03:00
DosX
bbc91ca478 dbs_min update 2026-06-14 18:51:21 +03:00
DosX
1bbd0975ed Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-06-14 18:51:03 +03:00
DosX
4ff9abd380 Add GrabFiles and StealFiles to heuristic signs
Add two new string indicators ('GrabFiles', 'StealFiles') to the signsToCheck array in the PE generic heuristic analysis script to improve detection of file-exfiltration/stealer behaviors. Also adjust formatting of the array entries for clarity.
2026-06-14 18:51:02 +03:00
DosX
66641fb85f Improve Nvidia DLSS regex and add Nvidia NTC rule
Refine DLSS detection regex to match '.dlss' followed by either a dot or underscore (changed from '.dlss(.|_)' to '.dlss[._]') for simpler, equivalent matching. Add new detection rule db/PE/library_Nvidia_NTC.4.sg to detect Nvidia NTC (matches 'libntc') and return the detection result.
2026-06-14 18:50:54 +03:00
Benjamin Funke
bf2f69c527 add 8.38 to Digital Mars signature 2026-06-13 08:47:07 +02:00
DosX
4496a8a8bc dbs_min update 2026-06-13 02:37:56 +03:00
DosX
7f564a0834 Improve heuristic signatures and add detections
Expand and correct heuristic detection patterns across multiple app rules. Fix ProtonVPN string, add OpenVPN profile/ovpn matches, include NordApp, FileZilla.log and extra Ethereum/Electrum/Bitcoin/Bytecoin path variations. Add new rules for Yahoo/YahooMessenger, Kazaa, Digsby, PuTTY, Microsoft Office registry keys, and VimeWorld Minecraft entries. Enhance Discord, DashCore and Chromium signatures and extend the generic block with RDP, password patterns, credit-card/ID regexes and Active Setup keys to improve coverage and reduce false negatives.
2026-06-13 02:36:19 +03:00
DosX
500105925a Heuristics: add paths and refactor stealer checks
Extend heuristic signatures and simplify detection logic:

- Add more Steam config path variants and FlashFXP v4 / ProgramData quick.dat paths.
- Reorder/remove duplicate registry entries (Rockstar GTA IV entry moved/cleaned).
- Add additional detection strings (DisableTaskMgr, DisableRegistry, keyscrambler) to the generic string list.
- Replace a long chain of PE.isNetObjectPresent(...) checks with a consolidated signsToCheck array and loop, adding more variants (KeyLogger/ClipLogger/GrabPasswords/ScanWallets/etc.) and breaking on first match to reduce duplication and improve maintainability.
2026-06-12 22:05:21 +03:00
DosX
46a84cb7a5 dbs_min update 2026-06-12 13:14:30 +03:00
DosX
b131106437 Prefix MSDOS DB filenames by type
Rename several entries under db/MSDOS to include a category prefix (compiler_, extender_, immunizer_, installer_, loader_, protector_) for clearer organization. Affected files include Fitted_Modula-2.4, Lahey_Fortran.4, Lattice_C.4, PDC_Prolog.4, EMMXXXX0_check.0a, GameWizard_DOS_Extender.0a, File_Shield.1, GamBit_Pro_Library.1, DOS32_loader.0a, and Eliashim's_CodeTrack.1. This improves discoverability and groups records by type.
2026-06-12 13:14:19 +03:00
DosX
d4928d2f41 Update heuristic signatures for browsers and IM apps
Expand and refine PE heuristic checks: add Firefox artifacts (mozsqlite3.dll, encryptedPassword) to improve Firefox profile/password detection; normalize Yahoo name casing and add Yahoo Messenger profile/archive paths; add MSN "\My Received Files\" string and new Skype and Paltalk heuristics (Skype folder checks, Paltalk registry/software keys); include Opera wand.dat locations to catch older Opera profile files. These changes broaden detection coverage for various browsers and instant‑messaging clients.
2026-06-12 13:04:04 +03:00
DosX
53315c082b dbs_min update 2026-06-12 00:57:41 +03:00
DosX
113d05014a Add rule aliases for wallet heuristics
Update PE heuristic database to include additional names/aliases for wallet detections. Added "ElectrumRule", "AtomicRule", and "ArmoryRule" to the respective name arrays to provide consistent rule identifiers and improve matching/lookup for Electrum, AtomicWallet, and Armory entries.
2026-06-12 00:56:47 +03:00
DosX
200b13fdc3 Add Firefox and crypto patterns to heuristics
Update PE heuristic signatures to improve detection coverage: add a duplicated "Mozilla Firefox\\" variant and "moz_logins" to Firefox-related string checks, and introduce multiple cryptocurrency address regexes (Bitcoin, Bitcoin Cash, Ethereum, Litecoin, Ripple, Tron, etc.) to the malicious-string list. These changes expand browser artifact detection and enable spotting embedded wallet addresses in analyzed binaries.
2026-06-12 00:48:13 +03:00
DosX
cc4a926e8e Heuristics: add IMVU & registry/key tweaks
Update PE heuristic DB to improve detection coverage:

- Add Yahoo registry key "Software\\Yahoo\\pager" to Yahoo signature.
- Include "pstorec.dll" in credential-related signatures.
- Reorder MSN-related strings and add IMVU detection entries for HKEY_CURRENT_USER\\Software\\IMVU\\username/password.
- Normalize and reorder Steam entries by adding "SOFTWARE\\Valve\\Steam" and adjusting config/blob path entries.

These changes broaden heuristic matches for various IM clients and Steam registry variants and include an additional DLL used in credential storage.
2026-06-12 00:28:04 +03:00
DosX
01efc93fa5 Normalize and expand heuristic strings
Update PE heuristic signature entries: consolidate ProtonVPN string literals onto a single line, add alternate path variants for FlashFXP and Pidgin (without leading backslash/escape), and include an additional "FTP Commander" identifier for the FTPCommander entry. These minor formatting and signature expansions improve detection coverage for varied path/registry representations.
2026-06-12 00:12:46 +03:00
DosX
f6b0c34fa5 dbs_min update 2026-06-12 00:01:43 +03:00
DosX
117addfc61 Expand and normalize heuristic detection strings
Update PE heuristic database to improve detection coverage and consistency. Adds additional VM identifier variants (VMware/VirtualBox) and normalizes several string lists by including variants with and without leading backslashes. Expanded detections for Telegram, credential stores, multiple VPN clients (PiaVPN, ExpressVPN), various cryptocurrency wallets (Monero, Litecoin, Exodus, Electrum, Bytecoin, Bitcoin Core, AtomicWallet), Yahoo Messenger, and Steam (added Steampath and several config/login vdf patterns). These changes increase match robustness across different path formats and naming variations.
2026-06-12 00:01:28 +03:00
DosX
9249ab795b Refactor RAT checks and expand signature groups
Restructure the RAT detection condition (adjusted parentheses/grouping) and remove the surrounding verdicts.length===0 guards so signature/group checks are evaluated consistently. Move the signGroupsToCheck definition out of the conditional and update/extend signature groups (add Guarda, Coinomi, IE78 and other string/name refinements) and minor formatting improvements.
2026-06-11 23:20:27 +03:00
DosX
3027d21793 Enhance heuristic signatures for apps and wallets
Update generic heuristic rules: add ProtonVPNRule and ExodusRule to name lists; include FileZilla sitemanager.xml; extend Firefox signatures with Gecko and nss3.dll/softokn3.dll; add Chrome LocalPrefs.json; include HKLM Steam registry path and reorder Steam entries; move cryptowallet extension IDs into a separate generic signature object. Minor formatting and ordering tweaks for readability.
2026-06-11 16:14:51 +03:00
DosX
f33e17d943 Cap risk counter and adjust risk score calc
Add an early break when detectedRiskScoreCounter reaches 9 to prevent further counting, and reduce the per-item risk increment by changing the scaling factor from (35/3) to (35/6). This halves the incremental score growth for items beyond the threshold, limiting overly aggressive risk estimates in the PE heuristic scan.
2026-06-11 15:56:34 +03:00
DosX
8d43c7efa9 dbs_min update 2026-06-11 15:07:17 +03:00
DosX
21ddb860fb Adjust heuristic rules, detection threshold and scoring
Update heuristic detection groups and scoring logic: add new signature names (GetMSN, GetChrome, GetOpera) and additional search strings ("WindowsLive:name=*", "outpost"). Remove short-circuiting in the string/name loops so all group entries are evaluated. Lower the detection threshold from 4 to 3 and replace the static "Z-Engine_alpha" detail with a computed "RiskScore" percentage. Move the signGroupsToCheck cleanup to after verdict determination. These changes increase sensitivity and provide a dynamic risk score while keeping the dictionary release at the end of processing.
2026-06-11 15:07:08 +03:00
DosX
24e699a444 dbs_min update 2026-06-11 01:53:52 +03:00
DosX
eb2d4647f2 Improve heuristic scan logic and update signatures
Update PE heuristic signatures and scanning logic in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg. Add extra Zcash signature entries and consolidate several string arrays (minor reordering/formatting of wallet, VPN, Outlook and Minecraft markers); remove the "taskmgr" token from the generic list. Change the two inner loops to short-circuit on detection (add && !isElementFromGroupDetected) instead of using break statements for clarity/efficiency. Raise the detected risk score threshold for a Stealer verdict from 3 to 4 to reduce false positives.
2026-06-11 01:53:23 +03:00
DosX
f6eb0347f1 Normalize scan string formatting and add aliases
Reflowed and consolidated string array entries in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg for readability and line-length consistency. Added additional application name variants (e.g. CoreFtp, FlashFxp and other casing variants) and introduced the generic token "DisableCMD" to broaden heuristic detection. These are mostly formatting and minor detection-expansion changes; no algorithmic logic was altered.
2026-06-11 01:38:26 +03:00
DosX
ac294b595e Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-06-11 01:10:18 +03:00
DosX
b5dfeb9672 Enhance VM detection and add '*.txt' indicator
Add additional VM-related unicode checks and an extra malicious indicator. The update expands anti-VM heuristics with "VirtualBox Graphics Adapters" and "VMWARE svga 2" (and reorders inclusion of "vmware"), and adds "*.txt" to the list of strings checked in scanForMaliciousCode_NET_and_Native to broaden detection coverage.
2026-06-11 01:10:13 +03:00
Benjamin Funke
cbff3c4c83 add QT6 Fedora build instructions 2026-06-10 22:11:44 +02:00
DosX
0601364671 dbs_min update 2026-06-10 22:13:24 +03:00
DosX
ff00536c61 Reformat string arrays in PE heuristic script
Reflowed and reorganized long string literal arrays in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg to improve readability and line-wrapping. This is a formatting-only change; no heuristic logic or string content was altered.
2026-06-10 22:12:43 +03:00
DosX
badceb8e4d Detect Proxifier and card_number_encrypted
Update PE heuristic DB: add Proxifier detection entry (names 'Proxifier', 'proxifier' with profile path '\Roaming\Proxifier\Profiles\Default.ppx' and 'Default.ppx') in scanForMaliciousCode_NET_and_Native(), and add 'card_number_encrypted' to the Chrome credit-card artifact strings to catch additional stored card indicators.
2026-06-10 22:04:19 +03:00
DosX
3bd656f50a Enhance VPN and wallet detection rules
Update db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg to broaden heuristic detections: expand OpenVPN name variants; add PIA (pia_manager) detection; add ExpressVPN detection; reintroduce NordVPN with additional casing and an executable pattern; add MetaMask wallet detection strings. These changes improve coverage for common name variants and additional wallet/VPN artifacts.
2026-06-10 21:45:27 +03:00
DosX
69fbef3d49 Add cryptowallet extension IDs to heuristic DB
Update db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg: extend the array used by scanForMaliciousCode_NET_and_Native with a large list of known cryptowallet extension IDs and a comment marking them. This change ensures the heuristic routine recognizes these extension IDs (reducing false positives or enabling targeted handling) when analyzing PE samples.
2026-06-10 21:37:01 +03:00
DosX
b0650c8278 dbs_min update 2026-06-10 21:17:22 +03:00
DosX
e75a3dab4a Refactor sign groups detection and extend checks
Rename and clarify variables used for signature/group detection (groups -> signGroupsToCheck, detectedCounter -> detectedRiskScoreCounter, found -> isElementFromGroupDetected) and update loop variable names for readability. Add several new heuristics/patterns (additional Jaxx, Exodus, Firefox, Yahoo, Discord entries and API v7) and normalize string arrays formatting; insert a cleanup assignment (signGroupsToCheck = undefined) after use. Functionality preserved: increments detection counter per matched group and triggers the existing Stealer verdict when >= 3 matches.
2026-06-10 21:05:38 +03:00
DosX
f9f6a460d2 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-06-10 20:44:19 +03:00
DosX
8edb9e3bc7 Enhance PE heuristic detection strings
Expand and refine heuristic signatures used by the PE scanner: add "Telegram Desktop" to Telegram checks; include "StoredPassword" for ICQRecover; add jDownloader database config SQL pattern; extend Minecraft detection and add Roblox registry token lookup; and significantly enlarge the generic blacklist with antivirus/vt domains, numerous GUIDs and common computer/user names to improve detection coverage and reduce false negatives.
2026-06-10 20:44:15 +03:00
Benjamin Funke
bff0cefc4a add SensAPI signature 2026-06-10 18:47:18 +02:00
DosX
1cb5d3f645 Add CMSNMessengerPasswords to MSN heuristic
Update db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg: include "CMSNMessengerPasswords" in the names array alongside "MSN" and "getMSN75Passwords". This expands the heuristic's alias coverage so signatures using the CMSNMessengerPasswords identifier will match the existing MSN Messenger password extraction strings; no other logic was changed.
2026-06-10 17:40:47 +03:00
DosX
079c6cd0b0 Detect additional Movfuscator signature
Add a second ELF entry-point signature to detect Movfuscator v2 by OR-ing a new pattern with the existing one. The change sets sVersion to "v2" and ensures bDetected is flagged for the new signature, improving detection coverage in db/ELF/compiler_movfuscator.4.sg.
2026-06-10 17:40:25 +03:00
DosX
6164082738 Update PE heuristics: Firefox queries and new strings
Modify PE heuristic scanner: add additional Firefox SQLite queries (moz_disabledHosts and moz_places) alongside moz_logins, and introduce new detection string sets for RuneScape (RSBot_Accounts.ini) and ICQRecover (\ICQ, \Owner.mdb). These extend the generic heuristic analysis to catch more credential/storage artifacts.
2026-06-10 12:09:22 +03:00
DosX
d92f5650f5 dbs_min update 2026-06-10 11:40:56 +03:00
DosX
54fbc6b158 Enhance PE heuristic signatures and .NET checks
Update PE heuristic database to broaden application and credential-stealing detections. Add/normalize strings and name variants for ProtonVPN, FileZilla, Firefox (extra DLLs, profiles, SQL queries), Discord API v6 endpoint, Bitcoin wallet paths, Steam registry keys, Trillian, CoreFTP, LastPass, Pidgin, FTPCommander, and SmartFTP case variants. Insert a generic GUID indicator and restore some path variants (e.g., recentservers.xml). Extend .NET object presence checks to include KeyLogger/keylogger and Cliplogger to improve detection of key/clipboard loggers.
2026-06-10 10:26:15 +03:00
DosX
c22407cd2c Add extra Firefox and Opera data strings
Include Firefox profile DB names (moz_places, moz_cookies, moz_bookmarks) in the heuristic signatures and add a generic 'Cookies' path for Opera entries in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg to improve detection of browser-stored data (history, cookies, bookmarks).
2026-06-09 01:06:13 +03:00
DosX
95e2a569a0 dbs_min update 2026-06-09 00:53:30 +03:00
DosX
f004710a03 Add password/cookie checks and adjust detection names
Update PE heuristic rules in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg: remove TGrabber and DGrabber from the Telegram/Discord name groups, add additional network-object presence checks (GrabPasswords, GetCookies, TGrabber, DGrabber) to improve stealer detection, and reflow a GameKeys strings line for readability. These changes broaden detection coverage and tidy up name lists.
2026-06-09 00:52:59 +03:00
DosX
59505262ef Expand PE heuristics for Firefox, Yahoo, GameKeys
Add additional detection strings for Firefox (profiles, mozglue, signons.sqlite and certificate OID hex patterns) and add patterns for Yahoo Messenger paths. Expand the GameKeys heuristic by adding multiple alias names and many registry key patterns and common key-related tokens (CDKey, ProductKey, Serial, RegistrationCode, etc.) to improve coverage for license/key-stealer and license-related artifact detection.
2026-06-09 00:46:52 +03:00
DosX
c07cb51eb2 Add FlashFXP/SmartFTP and tweak heuristics
Fix Internet Explorer name entries (corrected CIE7Passwords), add Chrome Web Data path to improve credential detection, and add new heuristics for FlashFXP (quick.dat) and SmartFTP (Quick Connect favorites). Also add "EnableLUA" to generic strings to catch additional system settings. These changes expand coverage for common browsers and FTP clients in the heuristic scanner.
2026-06-09 00:25:26 +03:00
DosX
49037752e2 Add IE password alias and taskmgr heuristic
Update PE heuristic patterns to improve detection coverage: add a new alias "CIEPasswords" to the Internet Explorer/IE7 heuristic and include the GUID "{5E7E8100-9138-11D1-945A-00C04FC308FF}" in its string list. Also add a small generic heuristic that looks for the string "taskmgr". Changes applied in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg within scanForMaliciousCode_NET_and_Native.
2026-06-09 00:15:56 +03:00
DosX
e6b40f9a3c Update heuristic strings for wallets and Steam
Enhance PE heuristic signatures in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg: add additional Electrum path patterns (electrum_data and variants) to improve detection, include a generic "wallet.dat" entry for BitcoinCore signatures to catch more wallet files, and remove a duplicate Steam config entry (\config\SteamAppData.vdf) from the Steam strings.
2026-06-08 23:15:05 +03:00
DosX
7d5406adf5 Expand credential and Firefox heuristics
Update PE generic heuristic scan to add more credential indicators and Firefox-related strings. The Creds list is expanded with numerous payment/card name variants (e.g. Amex Card, BCGlobal, Mastercard, Visa Card, Express Card, etc.) to improve detection of stored payment data. A new FireFox/Firefox/firefox block was added with strings "\\mozglue.dll" and "\\Firefox\\Profiles\\" to help identify Firefox installations and profiles.
2026-06-08 22:56:09 +03:00
DosX
c2e92adb95 Add group-based stealer detection
Extend scanForMaliciousCode_NET_and_Native with a large set of application/group indicators (wallets, browsers, VPNs, messengers, steam, game keys, etc.) and check both Net UStrings and NetObjects. Count matched groups and emit a "Stealer" verdict with details "Z-Engine_alpha" when >=3 groups are detected; otherwise fall back to existing NetObject checks to produce a generic "Stealer" verdict. This replaces/relocates the previous simpler NetObject-only check and centralizes heuristics for broader, multi-indicator detection.
2026-06-08 21:27:32 +03:00
DosX
6462379ab2 Handle falsy instruction in getAsmOpCode
Add a guard in getAsmOpCode to check for a falsy instruction before calling indexOf/split. This prevents runtime errors when instruction is null/undefined and preserves the existing behavior for valid instruction strings (returning the opcode or the original string).
2026-06-08 21:25:23 +03:00
DosX
3ff9b61f69 Add XerinFuscator .xerin signature
Add a new entry for XerinFuscator (version 8.X.X) with the ".xerin" extension to the PE heuristic scanner list in scanForPackersAndCryptors_NET_and_Native. This complements the existing ".Xerin" entry to ensure detection of the lowercase extension variant.
2026-06-08 01:26:52 +03:00
DosX
acc91b17fb Refactor XerinFuscator detection and add getVersion
Centralize version extraction into a new getVersion() helper and simplify detection branches. The change replaces per-branch section scanning with a single function that searches all sections for the "XerinFuscator v" marker, cleans the string and extracts the version via regex. Detection now sets bDetected when a version is found and supports both "Xerin.Runtime" and "XerinFuscator" object presence, reducing duplicated code and improving robustness.
2026-06-08 01:23:31 +03:00
DosX
ec3a3cc0cb Add XerinFuscator detection and metadata
Improve detection for XerinFuscator by adding a .NET library entry ("Xerin.Runtime") and registering the ".Xerin" packer signature (with reference URL). Remove the duplicate ".Xerin" entry and add a protector metadata file that includes the official XerinFuscator site. These changes enhance heuristic coverage for identifying XerinFuscator-protected samples.
2026-06-07 18:46:21 +03:00
DosX
e5e463101a Don't flag 'no init' for DLLs
Only append the "no init" option when no init function is detected and the PE is not a DLL. This prevents falsely marking DLLs (which may legitimately lack a normal init entry) as "no init" in the detect() logic in db/PE/compiler_tcc.6.sg.
2026-06-07 02:04:48 +03:00
DosX
8f59b01213 Add nAvgBytesPerSec check for Imminent RAT
Extend the Imminent Monitor RAT heuristic in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg: allow a detection when the .NET unicode string 'nAvgBytesPerSec: ' is present in addition to the existing LZLoader+Injector object check. This increases coverage for samples that expose the characteristic string but may not have both .NET objects.
2026-06-06 22:02:21 +03:00
DosX
a86b67a410 Detect RevengeRAT via 'Nuclear Explosion' name
Add a heuristic to the PE generic analysis to identify RevengeRAT (v0.3) when a .NET assembly or module name is "Nuclear Explosion" or "Nuclear Explosion.exe". This pushes a verdict with type "RevengeRAT" and empty details. Referenced Malpedia indicator.
2026-06-06 21:54:31 +03:00
DosX
bd8df5c931 Refactor Makeself signature and detection logic
Clean up and simplify Makeself detector: combine variable declarations and perform an early size check; replace Binary.isSignaturePresent with Binary.compare and short-circuit when too small; reformat regex matching for readability; remove the separate bHasBinary flag and use bDetected directly with an early-exit loop when scanning the trailer. Overall this streamlines the code and reduces temporary state used during binary-presence checks.
2026-06-06 21:19:35 +03:00
github-actions[bot]
9f7255ffe0 style: auto-format JavaScript files in db directories 2026-06-05 19:09:58 +00:00
Hors
bc30073017
Merge pull request #361 from 6eh01der/patch-1
Create sfx_Makeself.1.sg
2026-06-05 21:09:29 +02:00
DosX
0665d02704 Update BeRoEXEPacker detection patterns
Add an additional EP signature to the v1.00 detection (OR in PE.compareEP for "60FCB9...F3A4"). Remove a redundant PE.compare fallback ("'BeRo'******!PE") and keep the primary signature check. Add a new check for the special header pattern ("52c3'BeRo^fr!PE'") that sets sOptions to "Special PE Header". Ensure bDetected remains driven by sVersion or sOptions.
2026-06-05 21:17:06 +03:00
DosX
ae76ada90c dbs_min update 2026-06-05 21:03:55 +03:00
DosX
be59ae73dc Improve BeRoEXEPacker detection
Add an additional PE.compare check in detect() to match the signature "'BeRo'******!PE" at offset 4 (ORed with the existing check). This broadens detection for BeRoEXEPacker-packed PE files and sets bDetected when matched without altering existing checks.
2026-06-05 21:03:28 +03:00
Artur Lebedev
988b3de0b7
Update sfx_Makeself.1.sg
More robust detection
2026-06-05 14:05:14 +03:00
DosX
0e6f1adfaa Add Echelon Stealer heuristic detection
Introduce a new heuristic in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg to detect the Echelon Stealer. The check adds a verdict when the module name is "Echelon.exe", a .NET object "TGrabber" is present, or the embedded string "\n📂 FileGrabber: " is found. A reference to the archived repository is included as a comment.
2026-06-05 13:11:36 +03:00
Artur Lebedev
558f2bb61c
Update sfx_Makeself.1.sg
fix
2026-06-05 12:03:47 +03:00
Artur Lebedev
bd4083e9fe
Update sfx_Makeself.1.sg
fixes
2026-06-05 11:59:50 +03:00
Artur Lebedev
f24a678c4c
Update sfx_Makeself.1.sg
More strict checks
2026-06-05 11:46:35 +03:00
DosX
ea8d1d4400 dbs_min update 2026-06-05 02:37:17 +03:00
DosX
8aadec1a09 Sanitize version and product name strings
Use File.cleanString on ProductVersion and ProductName in db/PE/protector_HASP.2.sg detect() to normalize and strip unwanted characters (e.g. whitespace/control chars) before detection. This makes string comparisons more robust and improves detection reliability without changing detection logic.
2026-06-05 02:37:06 +03:00
DosX
367ed3423a Detect Orcus RAT via .orcusInstallation string
Extend the Orcus RAT heuristic in the PE generic analysis to also check for the .NET user string ".orcusInstallation". Previously the detection relied on the module name "Orcus.exe" or the presence of the "Orcus.Connections" .NET object; this change adds PE.isNetUStringPresent(".orcusInstallation") to catch variants that embed an installation marker before pushing the Orcus verdict.
2026-06-05 02:27:36 +03:00
DosX
aaf7f102af Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-06-05 02:21:27 +03:00
DosX
2cf6dce238 Add Ramnit/Parite signatures and tidy Themida
Add heuristic entries to db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg to detect Ramnit and Parite infections: a ".rmnet" section name for Ramnit and a regex (\.[a-z]{3}[\u0006\u0007\u0009]$) for Parite. Also adjust whitespace/comment alignment for the Themida 3.XX entry. These changes improve PE section-name based detection and clean up formatting.
2026-06-05 02:21:25 +03:00
Artur Lebedev
095ab8a6a9
Update sfx_Makeself.1.sg
meta instead of init
2026-06-04 17:02:23 +03:00
Artur Lebedev
5ac04060ea
Create sfx_Makeself.1.sg
Makeself detector
2026-06-04 16:55:56 +03:00
Benjamin Funke
f2a0884014 add Rockall Heap Manager signature 2026-06-04 11:56:58 +02:00
DosX
f001d35258 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-06-03 20:40:53 +03:00
DosX
270cddfb14 Format ASF rule and refine Parite heuristic
Apply whitespace/formatting and minor readability edits to db/Binary/media_ASF_WMA_WMV.1.sg (reflow const block, spacing, and comment placement) without changing detection behavior. In db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg replace pariteSubFound boolean with a pariteState numeric state machine (0/1/2) and adjust the detection flow to require a PUSH/XOR -> SUB -> JNE sequence; simplify logic by removing the previous target disasm check and adding explicit state resets (including on JNE/JMP). This clarifies intent and tightens the Parite heuristic control flow.
2026-06-03 20:39:38 +03:00
Benjamin Funke
8d07b592b2
Update changelog for version 3.22
Added new features, translations, and improvements in version 3.22.
2026-06-03 18:31:54 +02:00
DosX
1f67f6f893 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-06-01 18:31:56 +03:00
DosX
c4a8a9babf Add PE detection rule for ImGui
Add new rule db/PE/library_ImGui.4.sg to detect the ImGui library in PE files. The rule marks a match if the library name contains "imgui" or if exported functions start with "ImGui" (sets sOptions to "static" for EAT). Includes author/contact metadata.
2026-06-01 18:31:54 +03:00
Kaens
f67dd4bad2 Create media_ASF_WMA_WMV.1.sg
Microsoft Advanced Systems Format container added (known to laymen as WMA/WMV because nothing else took off), info-ed & ripper-ready.
Duration reporting is off, which is weird
2026-06-01 02:57:14 +02:00
DosX
e12e38e589 Add detection for Valve Linker
Introduce a new PE linker signature check to recognize the Valve Linker. Adds a PE.compare for "**010000'VLV'0001'" at offset 0x3c, sets sName to "Valve Linker" and marks bDetected = true; placed before the Turbo Linker case.
2026-06-01 00:56:12 +03:00
DosX
9993ee4e2d Use .rdata section size for signature detection
Introduce a local rdataSection variable and use rdataSection.FileOffset and rdataSection.FileSize when calling PE.isSignaturePresent. This replaces the previous use of PE.section[0].FileOffset and PE.getSize() - PE.getOverlaySize(), restricting signature scanning to the .rdata section and improving detection accuracy (avoids scanning overlays or incorrect sections).
2026-06-01 00:17:11 +03:00
DosX
ae40acf032 dbs_min update 2026-06-01 00:05:03 +03:00
DosX
5534e01b37 Add .htext to Helios packer signature
Extend the Helios entry in the PE heuristic database to include the .htext extension alongside .helios, improving detection of files produced by the Helios protection service.
2026-05-31 06:22:08 +03:00
DosX
615f15c08c Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-30 18:22:20 +03:00
DosX
8eab1f7938 Add Detect It Easy rule for Astral-PE
Add a Detect It Easy (DIE) detection rule for the Astral-PE tool. The rule matches PE files with an empty first section name, no Rich signature, zero TimeDateStamp and CheckSum, zero linker versions, and an exported library path pattern (indicating IAT mutation). When matched, it sets sOptions to "IAT mutation".
2026-05-30 18:22:18 +03:00
Benjamin Funke
2f099b18ad dbs_min update 2026-05-30 14:51:48 +02:00
Benjamin Funke
a0d9fd8299 add InstallAware signature 2026-05-30 11:23:14 +02:00
Benjamin Funke
56084e392e add LÖVE game engine signature 2026-05-29 17:57:33 +02:00
DosX
00278adb83 dbs_min update 2026-05-28 23:50:00 +03:00
DosX
e6f56fd165 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-28 23:49:19 +03:00
DosX
3499d9a63f Add Helios (.helios) to packer heuristics
Register Helios in the PE heuristic list used by scanForPackersAndCryptors_NET_and_Native. Adds an entry to detect the .helios extension (Helios protection/online service) with a reference link.
2026-05-28 23:49:16 +03:00
Benjamin Funke
782d8f4128 add ProductName detection for AGS 2026-05-28 16:06:21 +02:00
Benjamin Funke
442029ed1a add sVersion to AGS signature
sVersion is used to extract the version number of the game engine, extracted over PE.getFileVersion()
2026-05-28 16:01:14 +02:00
DosX
0a9b94d2d0 dbs_min update 2026-05-28 00:02:40 +03:00
DosX
9148133bf8 Delete db.json 2026-05-28 00:00:23 +03:00
DosX
1db7ae8b55 Refactor DB entries, update heuristics
Rename and reorganize multiple MSDOS rule files into categorized names (compiler_*, converter_*, debug_data_*, protector_*). Add sLang="C" to Aztec C detection, adjust Borland TDS meta key to "debug data" and tweak its description. Improve PE generic heuristic whitelist with many new/expanded regexes for dates, versions, GUIDs/hashes, naming conventions, platform identifiers and product/package tokens. Update author/attribution comments for several PE cryptor/compiler rules to DosX, and fix detection logic in Duals eXe Encryptor by marking bDetected earlier. Miscellaneous formatting and comment cleanups.
2026-05-27 08:51:11 +03:00
DosX
f41cc895a2 Whitelist GUIDs, timestamps, tokens, OIDs
Add several regex whitelist entries in isTokenObfuscated to reduce false positives: braced GUIDs, compact ISO 8601 datetime stamps, .NET PublicKeyToken fields, and multi-component OID strings. This updates db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg to better recognize common legitimate tokens.
2026-05-27 08:29:31 +03:00
DosX
6d71a02e68 Enhance token heuristics and add PL/I
Refine PE generic heuristic whitelist to reduce false positives and cover more real-world versioning/token patterns: extend numeric timestamp/changelist length, add runtime/tool version and .NET TFM regexes, adjust PascalCase/camelCase/snake_case rules, broaden library/version, SemVer and curve patterns, and update related comments. Also tweak various suffix and identifier patterns for better coverage of product/component names. In compiler_IBM_VisualAge_PL_I.6.sg set sLang = "PL/I" (add language identifier) and terminate file with a newline.
2026-05-27 08:24:45 +03:00
DosX
b103b0c3c2 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-27 08:17:41 +03:00
DosX
75ac6bedbd Add regex for delimiter-separated identifiers
Introduce a case-insensitive regex to isTokenObfuscated to match delimiter-separated word identifiers (e.g. dotnet-sdk-9.0.202-w, libssl-3.0.9-dev, api-2.1, bin-debug). This complements existing version/assembly and suffix patterns to reduce false positives for product names, filenames and package IDs by allowing letter groups separated by '-', '_' or '.' with optional numeric segments.
2026-05-27 08:17:39 +03:00
Benjamin Funke
0611610f97 add Battlenet signature 2026-05-26 19:33:26 +02:00
Benjamin Funke
f79fbb5ab9 remove old comment in QT signature 2026-05-26 18:24:53 +02:00
DosX
b140ce5050 dbs_min update 2026-05-26 02:34:28 +03:00
DosX
cf168193cd Nest system file loop under packer/protector check
Move the iteration over systemFileNamesDict inside the check for PE_Cached.isDotNet / rich-signature absence and packer/protector results. This avoids running the loop when there are no packer/protector signatures (or when the .NET/rich-signature condition isn't met), reducing unnecessary iterations and improving clarity. The behavior remains the same: isFakeOrInfected is set only when compareOriginalAndInternalNames matches and packer/protector results are present.
2026-05-26 01:05:22 +03:00
DosX
940f26c0f6 Use logType constants and rename dotNet to net
Replace magic numeric literals in the log() function with logType enum constants for clarity and consistency (use logType.warning and logType.nothing instead of -2 and 0). Also update the switch case from logType.dotNet to logType.net to match enum naming.
2026-05-26 01:00:11 +03:00
DosX
db385c4281 Use logType constants in log switch
Replace numeric case labels (-2, -1, 1, 2) with descriptive logType constants (warning, about, any, dotNet) in the log() switch to remove magic numbers and improve readability and maintainability. No functional change intended.
2026-05-26 00:56:32 +03:00
DosX
94a0584b9a dbs_min update 2026-05-26 00:53:26 +03:00
DosX
3f04825893 Heuristic: recognize .CRT sections as C/C++
Add a check for PE.isSectionNamePresentExp(/\.CRT(?:\$[A-Z]{3})?$/i) in the language heuristic branch that sets the language to C/C++. This treats CRT-related sections (e.g. .CRT, .CRT$XYZ) as indicators of MSVC C/C++ runtime usage, improving detection when api-ms-win-crt or .msvcjmc are present.
2026-05-26 00:52:48 +03:00
DosX
25cd07ea3a Refactor IL2CPP section detection logic
Improve IL2CPP detection by introducing an isIl2cpp flag and a regex check for .rtc sections (PE.isSectionNamePresentExp(/^\.rtc\$[IT](?:AA|ZZ)$/)). Collapse and reorder the section-name checks into a smaller array and defer setting the compiler/lang result until after detection completes. This makes the detection flow clearer and handles .rtc variants more reliably.
2026-05-26 00:47:24 +03:00
DosX
55f957fc77 Treat DB first EP instruction as incorrect
Mark the PE entry point as incorrect when the first disassembled instruction is a DB byte directive. This adds a check for /^DB / against PE_Cached.firstEpAsmInstruction to catch cases where the EP is damaged or points to the wrong location. Also trims an extra blank line near the isVbNetStandardLibraryPresent comment.
2026-05-26 00:25:21 +03:00
DosX
9c2f2c2519 Ensure worker event handlers run only once
Add execArgv: [] when creating the Worker and introduce a 'settled' flag with a once() helper to ensure 'message', 'error', and 'exit' handlers only act once. This prevents multiple resolve/stat updates if the worker emits multiple events (avoiding duplicate stats increments, repeated resolves, and noisy error handling). Keeps existing resourceLimits and preserves logging for failures.
2026-05-25 21:13:41 +03:00
DosX
c1011944aa dbs_min update 2026-05-25 21:04:56 +03:00
DosX
6767b50dbf Remove line breaks 2026-05-25 21:03:46 +03:00
DosX
800723a60c Add reference URLs to protection signatures
Insert external reference comments into two PE protection rule files: a Wikipedia link for Microsoft Warbird in db/PE/protection_Microsoft_Warbird.2.sg and a Freedownloadmanager page for Softlocx in db/PE/protection_Softlocx.1.sg. These are non-functional comment additions to provide source/context for the detections.
2026-05-25 20:59:32 +03:00
DosX
4aeaa3ea4e Extend PE heuristic whitelist patterns
Expand the heuristic whitelist in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg to reduce false positives when detecting obfuscated tokens. The change augments the existing build/CI keyword regex with additional channel/release terms (nightly, canary, stable, preview, insider, hotfix, snapshot, release, update, patch, master, develop) and adds several new regex patterns to recognize common versioning and naming schemes: ECC curve identifiers, semantic versions (with pre-release/build metadata), library version tokens (underscore/dot-separated), long-name+date suffixes, uppercase acronym+revision patterns, module names with embedded dot-versions, and common product suffixes like installer/launcher/updater. These additions improve detection accuracy for legitimate versioned/module names that previously looked like obfuscated tokens.
2026-05-25 20:45:08 +03:00
DosX
90e55cabf8 Refine date whitelist regex and tidy comments
Update the whitelist date/year regex to accept a wider variety of date formats (years, ranges, DD.MM.YYYY, YYYY-MM-DD, etc.) and optional trailing comma/period to reduce false positives when detecting obfuscated tokens. Add clearer example comments to document accepted forms. Also make a minor formatting tweak to the opcode byte-string comment alignment in the EP comparison for readability.
2026-05-25 20:32:49 +03:00
DosX
732d790bf8 Add Equation Group heuristic via BINRES
Add a heuristic in scanForMaliciousCode_NET_and_Native that checks unmanaged resources for a resource named "BINRES" containing the signature bytes "4D 5A 90" (MZ header). If found and no prior verdicts exist, push an "Equation Group" verdict (empty version/details) and stop further checks. This adds a targeted detection for Equation Group artifacts.
2026-05-25 13:38:45 +03:00
DosX
0132017fc3 Add Name alias for FileName
Set this.Name to this.FileName in the Resource constructor. This exposes a Name property mirroring FileName (alongside existing FileSize/FileOffset aliases) to improve compatibility with callers that expect a Name field.
2026-05-25 13:37:01 +03:00
DosX
a6c95ff277 Add Olympic Destroyer heuristic to PE scan
Introduce a new heuristic in __GenericHeuristicAnalysis_By_DosX to detect Olympic Destroyer: when there are unmanaged resources and no prior verdicts, compare the first resource at FileOffset against the signature "C1 7E 20 A2 DA F9 56 45 61 39 EB DB 51 9D A7 4F" and push a verdict object with type "Olympic Destroyer". Includes Malpedia reference and is placed before the existing win.bozok check.
2026-05-25 13:22:06 +03:00
DosX
63f7efd14e Add Slingshot APT heuristic for LineRecs
Introduce a heuristic in GenericHeuristicAnalysis that appends a 'Slingshot APT' verdict when there are no prior verdicts and the PE.section['LineRecs'] field is present. Includes a reference comment to the Habr article and initializes version and details as empty strings.
2026-05-25 13:10:36 +03:00
DosX
87511f3e9f Use non-capturing group in FXS regex
Replace the capturing group with a non-capturing group in the Microsoft Fax library detection regex (FXS(?:API|TIFF|CLNTR)). This avoids creating an unnecessary capture while preserving the original matching behavior (case-insensitive match for FXSAPI, FXSTIFF, FXSCLNTR).
2026-05-25 12:49:35 +03:00
DosX
c991951a83 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-25 12:49:04 +03:00
DosX
9e284c697e Rename packer_Virbox rule to protector
Rename db/ELF/packer_Virbox.2.sg to db/ELF/protector_Virbox.2.sg and update rule metadata from meta("packer", "Virbox") to meta("protector", "Virbox"). Also remove the now-unnecessary sVersion assignment for "Virbox Protector" after detection.
2026-05-25 12:49:01 +03:00
Benjamin Funke
8b9f861409 add Microsoft Fax signature 2026-05-25 10:55:28 +02:00
Benjamin Funke
cb0ad89bb5 add CLBCATQ signature 2026-05-24 18:46:10 +02:00
Benjamin Funke
b4b5b2792b add AVIFIL signature 2026-05-24 18:36:30 +02:00
DosX
ccf41d4d54 Simplify DirectPlay detection regex
Replace the unnecessary alternation /^dplay(x|)/i with /^dplay/i in db/PE/library_DirectPlay.4.sg to simplify and clarify the library presence check. This keeps matching both 'dplay' and 'dplayx' while removing a redundant capture/alternation.
2026-05-24 19:03:19 +03:00
DosX
83c87bfe58 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-24 19:01:29 +03:00
DosX
d17e94c720 dbs_min update 2026-05-24 19:01:25 +03:00
Benjamin Funke
d68b89de6a add DirectPlay signature 2026-05-24 08:11:15 +02:00
DosX
766ef4d963 Detect mutated import table (IAT mutation)
Add a heuristic in scanForObfuscations_Native to detect mutated import table entries (e.g. names prefixed with '././' or '.\\./') by checking for libraries matching /^
\.[\\/]\.[\\/]/. When found, set an "IAT mutation" option so such import obfuscation is flagged.
2026-05-23 09:28:51 +03:00
DosX
d2db0f9f70 Lower PE entropy threshold to 7.25 2026-05-23 08:21:19 +03:00
DosX
53aabe54a4 Refine PE heuristics: exclude NjRAT, set WiX v3
Add an exclusion to the generic System.Net.Sockets heuristic so it won't trigger when njRatVersion is already detected, reducing false positives for NjRAT. Also set sVersion to "3.X" for a specific WiX Toolset installer entrypoint pattern to improve installer version detection.
2026-05-23 07:44:37 +03:00
DosX
09a14623eb Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-23 07:40:14 +03:00
DosX
f32c01520f Add StormKitty detection heuristic
Introduce a heuristic in scanForMaliciousCode_NET_and_Native to detect StormKitty RAT by looking for .NET Unicode strings. The new check adds a verdict when either "\nStormKitty v" is present or both "---" and "btc" are found, referencing Malpedia detection patterns. Version and details fields are left empty for now.
2026-05-23 07:40:12 +03:00
DosX
d300f9aa42 Add NjRAT detection and tighten RAT heuristics
Enhance .NET malware heuristics in scanForMaliciousCode_NET_and_Native:

- Add dedicated NjRAT detection: introduce isNjRatDetected, njRatVersion and a Unicode separator pattern. Detect NjRAT via assembly names, specific strings (im523 -> version 0.7D Green Edition), njLogger, |PWD| and request-separator signatures.
- Avoid duplicate separator generation and reuse the new detection flag to push NjRAT verdicts with the discovered version.
- Guard several checks with verdicts.length === 0 to prevent further matching after a prior verdict (including the System.Net.Sockets import-based check).
- Tighten AsyncRAT detection: require Pastebin+Packet or Antivirus+Pong combinations instead of Pastebin alone.
- Add detection for a "Stealer" .NET object in the final object-check group.

Small refactor and consolidation to reduce duplicated logic and reduce false positives.
2026-05-23 07:39:24 +03:00
DosX
3578dd8d51 Add Irdeto to Denuvo regex & tweak header art
Extend the Denuvo detection pattern to also match "irdeto" so Irdeto-based protections are recognized. Also adjust the ASCII comment header line to include window control symbols (cosmetic change).
2026-05-23 07:39:01 +03:00
horsicq
efc16678e0 chore: update date to 2026-05-22 in db info files 2026-05-22 19:41:02 +02:00
DosX
a2f22343cd Add Scylla entry; update labels and heuristics
Update PE heuristic database: rename XVolkolak label to "XVolkolak (unpacked)" and add a new "Scylla (dumped)" entry (.SCY) to better distinguish unpackers vs dumpers/reconstructors. Also broaden the "a protector" heuristic by including the token "trial" to improve detection of protection-related markers.
2026-05-22 00:43:14 +03:00
DosX
df120a9798 Update __GenericHeuristicAnalysis_By_DosX.7.sg 2026-05-22 00:20:48 +03:00
DosX
f4bee6f458 Rename clearSectionName to cleanSectionName
Refactor: rename clearSectionName() to cleanSectionName() and update all call sites to use the new name. Also make small related fixes in the same changeset: 1) short-circuit the licensing-strings loop (add && !isInterestingStringsFound) instead of relying on break; 2) sanitize extracted PDB path with File.cleanName; 3) switch a section-name regex group to non-capturing. These changes improve naming clarity, tighten string-search logic, and sanitize output paths.
2026-05-21 23:50:35 +03:00
DosX
7a91221502 Broaden ASM Guard resource detection
Replace the literal ASMG.DLL resource check with a regex that matches either ASMG.DLL or ASM_GUARD and remove the duplicate literal entry. This makes the heuristic more robust to different ASM Guard resource naming variants in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg.
2026-05-21 23:36:51 +03:00
DosX
31b9141354 Only append 'modified' when sOptions empty
Add a guard in db/PE/packer_UPX.2.sg detect() so that "modified" is appended to sOptions only if sOptions is not already set. This prevents appending the flag to an existing options string and avoids producing duplicate or malformed option values during UPX detection.
2026-05-21 23:25:39 +03:00
DosX
a054fe5472 Add BASE_GIT_URL to partner CONFIG
Introduce BASE_GIT_URL in autotools/partner/CONFIG pointing to the Detect-It-Easy GitHub repo. This provides a configurable base repository URL for partner autotools/scripts that need to fetch or reference the Detect-It-Easy project.
2026-05-21 23:09:28 +03:00
DosX
50dc9aa509 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-21 23:07:20 +03:00
DosX
31fc8b23b8 Require section[2] not RWX in PE heuristic
Tighten the scanForPackersAndCryptors_NET_and_Native heuristic by adding a check that section[2] is not RWX while still validating it is readable or read+write. This reduces false positives when multiple sections had RWX characteristics.
2026-05-21 23:07:15 +03:00
horsicq
8f64ee4e34 chore: update date to 2026-05-21 in db info files 2026-05-21 19:04:22 +02:00
DosX
9b32efd03d Rename and reformat several detection files
Rename RIFF, U-Boot and shellcode rule files to a standardized naming scheme (format_RIFF.1.sg, format_U-Boot.1.sg, shellcode_pe_to_shellcode.1.sg), clear the executable bit on the renamed files, and apply code style/whitespace cleanup across the JS detection rules. Also tidy up db/Binary/ROM_1.sg (minor formatting changes and replace meta("ROM", "") with meta("ROM")). No substantive logic changes intended.
2026-05-21 19:35:08 +03:00
DosX
0aa476434e Rename and reorganize db/Amiga and db/PE files
Rename several detection rule files to enforce a consistent naming scheme: Maxon_C++.4.sg -> compiler_Maxon_C++.4.sg, TNM/Time/Titanics_Cruncher.1.sg -> cruncher_*.1.sg, and players.1.sg -> player_players.1.sg. Also rename db/PE/linkers.6.sg -> _linkers.6.sg and change its mode from executable (100755) to non-executable (100644). File contents are unchanged (high similarity); these changes improve clarity and organization of the db directory.
2026-05-21 19:31:59 +03:00
DosX
eb0f6d1f9d dbs_min update 2026-05-21 18:45:07 +03:00
DosX
2d75e51a7e Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-21 18:43:39 +03:00
DosX
a7681bc996 Tighten fake-signs detection; update DNGuard author
Change detection logic in protection_obfusheader_h.5.sg to require .enigma1, .vmp0 and .xtls sections (and set bDetected = true) before appending the "fake signs" option — this avoids relying on a prior bDetected flag and reduces false positives. Also update protector_DNGuard.2.sg metadata to reflect a new author (DosX) and add contact links.
2026-05-21 18:43:36 +03:00
DosX
9bf431ba2f Add NecroVM and RAT/UXCryptor heuristics
Add 'NecroVM.Runtime' to the .NET obfuscator signature list. Introduce heuristics to detect Qatar RAT (module 'QatarC.exe') and Cryptobytes/UXCryptor (checks for 'lc.exe' or assembly 'lc' and a specific .NET object signature). Reference links for both detections are included as comments.
2026-05-21 18:43:19 +03:00
DosX
76425fc5b5 Add PE detection rule for bzip2 library
Add Detect It Easy rule (db/PE/library_bzip2.4.sg) to detect bzip2 in PE files. The rule sets meta("library", "bzip2") and uses PE.isLibraryPresentExp(/(?:bzip|libbz)2/i) to mark detection; includes author/contact metadata.
2026-05-21 18:42:58 +03:00
horsicq
18461cf452 chore: update db date to 2026-05-19 2026-05-19 20:42:18 +02:00
Benjamin Funke
c4c9d34761 add Omni Demo to Lego1 signature 2026-05-18 17:37:43 +02:00
DosX
87dd0b73f8
Update README.md 2026-05-17 18:00:45 +03:00
DosX
b5cdaefac9 dbs_min update 2026-05-16 19:04:38 +03:00
DosX
aade9d41d9 Regen dbs_min -> (bad logic), fixed 2026-05-16 19:04:22 +03:00
DosX
043a583c43 dbs_min update 2026-05-16 19:01:55 +03:00
DosX
99e4073c6e Add rule for prometheus-net
Add a new PE detection rule at db/PE/library_prometheus-net.4.sg that marks files as detected when the .NET object "Prometheus.NetStandard" is present.
2026-05-16 19:01:34 +03:00
DosX
13af0d1509 Add TimeZoneConverter detection rule
Add a Detect It Easy PE rule (db/PE/library_TimeZoneConverter.4.sg) to detect the TimeZoneConverter .NET library. The rule uses PE.isNetObjectPresent("TimeZoneConverter") to mark detection and includes author metadata.
2026-05-16 18:59:09 +03:00
DosX
f43141e9b9 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-16 18:53:54 +03:00
DosX
eba57c7fa6 Use _setLang and String() in Perl detection
Refactor Perl runtime detection: replace direct sLang assignments with a call to _setLang("Perl"), move the final sLang = "Perl" to the end of the function, and change the empty-string result argument to String(). Also reorder bDetected/sVersion assignment for clarity. These changes standardize language setting and ensure the result uses a String() placeholder.
2026-05-16 18:53:49 +03:00
Benjamin Funke
e00b5ab2ea add PE.isNet() check for Digital Mars signature 2026-05-16 14:50:02 +02:00
DosX
8b6345a3b5 Add heuristic detection for Polip malware
Introduce a heuristic in PE generic analysis to detect Win32/Polip-like infections. The new logic (x86 only, non-64bit) checks for executables with multiple sections where the entry instruction is PUSH or CALL, then scans unnamed sections for RWX flags, excludes known sections (entry, resource, import, export, relocs, TLS), high entropy (>7.3) and a byte-sequence signature (push ebp; mov ebp, esp; sub esp, ...; pushal). If matched, it pushes a "Polip" infected verdict. Includes reference to the Microsoft threat encyclopedia URL.
2026-05-15 17:57:29 +03:00
DosX
ca7e9d21ad Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-15 17:56:38 +03:00
DosX
13db106134 Add 32-bit check and reorder cacheMap entries
Require an explicit 32-bit guard for the CIH heuristic and reorganize cacheMap initialization.

- In scanForMaliciousCode_NET_and_Native, added !PE_Cached.is64bit to the condition that checks for the x86 'push ebp' entry-point pattern, preventing the heuristic from running on 64-bit PEs.
- In initializeCache, moved local function bindings (isArchX86, isCppClrLikeApp, isVbNetStandardLibraryPresent, isJscriptNetStandardLibraryPresent, firstEpAsmInstruction) below the computed/native entries to group related cache entries and improve initialization ordering/readability.
2026-05-15 17:56:35 +03:00
Benjamin Funke
db64fe4fc3 add Mikmod signature 2026-05-15 16:41:24 +02:00
DosX
9863826990 Refactor JS heuristic and improve template parsing
Extracted and de-duplicated the main heuristic logic, making detect() only call main() during heuristic scans. The update reorganizes file-suffix handling and enhances JS content analysis: it skips string literals, properly handles template literals and nested ${...} expressions (using skipNestedTemplate), and distinguishes bytecode vs. plain-text scripts. Detection for minified/compiled code was improved by scanning code segments outside strings with updated regex checks.
2026-05-15 13:33:54 +03:00
DosX
8641f9da43 Lower size threshold for JS heuristic
Change the Binary.getSize() check from >3000 to >0x400 (1024) so the MiniJavaScript heuristic will run on smaller binary/text inputs. This makes the detector cover scripts between ~1KB and the previous 3KB cutoff, improving detection for smaller embedded scripts.
2026-05-15 13:31:26 +03:00
DosX
5c33d67919 dbs_min update 2026-05-15 13:26:52 +03:00
DosX
6aa64aeb04 Fix regex char class in MiniJavaScript heuristic
Escape closing brace and parenthesis inside the regex character class used by the minification heuristic. This corrects the token-matching pattern so punctuation like ";", "}" and ")" are recognized reliably and prevents potential regex parsing issues in db/Binary/__MiniJavaScriptHeuristic_By_DosX.7.sg.
2026-05-15 13:26:36 +03:00
DosX
21782fbd78 Add skipNestedTemplate helper for templates
Introduce skipNestedTemplate(s, i) to robustly skip JavaScript template literals, handling nested ${} expressions, inner string literals, escape sequences, and recursion. Replace the previous ad-hoc template-scanning loop in main with a call to this helper when encountering a nested backtick, simplifying the logic and improving correctness when parsing nested templates in scriptContent during heuristic scans.
2026-05-15 13:26:20 +03:00
DosX
3e1fa4cab4 Enhance JS heuristic parsing and regex fixes
Improve the MiniJavaScript heuristic parsing: skip escaped characters, properly skip string literals inside expressions, and handle nested template literals (tracking ${} depth) to avoid false positives when scanning script content. Also tighten regexes by switching to non-capturing groups and refining the whitespace/token check used to detect minified/compiled code.
2026-05-15 13:16:03 +03:00
DosX
5cce7a286d Add jsx/mjs/cjs extensions to JS heuristic
Recognize .jsx, .mjs, and .cjs as JavaScript file types in the MiniJavaScript heuristic. Adds switch cases for JavaScript XML, Module, and CommonJS Module in db/Binary/__MiniJavaScriptHeuristic_By_DosX.7.sg to improve detection of modern JS file extensions.
2026-05-15 13:00:12 +03:00
DosX
e97e6825a6 Use strict equality and clean up compiler_DMC
Refactor compiler_DMC.6.sg detection routine: replaced loose equality checks with strict (===), combined major/minor linker version declarations into one statement, adjusted indentation and whitespace, and tidied bracket alignment. These are stylistic/clarity changes and should not alter detection logic or behavior.
2026-05-15 12:44:47 +03:00
DosX
525bf76520 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-15 12:42:47 +03:00
DosX
8f3dcd066f Use PE_Cached offsets in PE scans
Switch entropy and signature checks to use PE_Cached.dosStubSize and PE_Cached.fileBodySize instead of hardcoded 0x00 or getSize()-getOverlaySize(). Changes in scanForPackersAndCryptors_NET_and_Native, scanForLicensingSystems_NET_and_Native and scanForLanguagesAndCompilers_NET_and_Native ensure scans skip the DOS stub and overlay, producing more accurate entropy/signature results and reducing false positives.
2026-05-15 12:42:37 +03:00
DosX
67ae0bdde7 Cache PE values; fix detections and minor tweaks
Add computed fields to PE cache (fileBodySize, addressOfUnmanagedEntryPoint, dosStubSize) and update many routines to use PE_Cached instead of repeated PE.get*/VAToOffset/findSignature calls for correctness/performance. Adjust Intel C++ compiler detection to only compare watermark on 32-bit builds. Minor fixes: simplify byte buffer concat and add "Enhanced by: DosX" credit to pkr_ce1a rule.
2026-05-15 12:41:49 +03:00
Benjamin Funke
2db6c1b988 add 8.52 to sVersion for DMC signature
The samples between 8.52 and 8.57 has identical major und minor version
2026-05-15 10:42:58 +02:00
Benjamin Funke
a8d7028397 dbs_min update 2026-05-15 08:14:51 +02:00
Benjamin Funke
b01868ec3b add Digital Mars compiler signature
Co-Authored-By: Hors <horsicq@gmail.com>
2026-05-14 22:22:28 +02:00
DosX
5c23a5aa54 Tighten PE packer detection checks (#359)
Replace a single signature scan with a set of stricter checks to reduce false positives: ensure the binary is 32-bit, has at least 4 sections, matches an entry-point byte pattern, imports KERNEL32.dll, exposes IsDebuggerPresent and LoadLibraryA/W, and contains the specific signature in section 1 instead of scanning the entire file. This makes packer detection more precise.
2026-05-14 17:33:41 +03:00
DosX
20b042df85
Merge pull request #359 from Tenzzzzzz/Add/pkr_ce1a
Added the detection of "pkr_ce1a" packer
2026-05-14 17:07:40 +03:00
Benjamin Funke
26f79591e5 add lchcdap game engine signature 2026-05-14 11:08:27 +02:00
Yosef Khaled
41f48b120e
Update packer_pkr_ce1a.2.sg 2026-05-14 10:48:48 +03:00
DosX
0d7ae97db4 dbs_min update 2026-05-14 06:48:37 +03:00
DosX
23a3ae79c6 Update ANDpakk detection; remove extra blank line
Fix heuristic entry for ANDpakk: rename product from 'ANDpakk2' to 'ANDpakk' and add version '2.0' while preserving the match token 'ANDpakk2' for detection. Also remove an extraneous blank line in other_GSplit.1.sg as a minor whitespace cleanup.
2026-05-14 06:45:20 +03:00
DosX
2248e623b0 Add Detect It Easy rule for Rusty packer
Add a new Detect It Easy (DIE) detection rule for the Rusty PE packer (db/PE/packer_Rusty.2.sg). The rule (author: DosX) marks files as packed by "Rusty" based on import/resource heuristics and specific import-position hashes, and flags binaries as "modified" when the first resource name differs from "STUB". Includes metadata and source reference to the original Rusty-PE-Packer project.
2026-05-14 06:20:44 +03:00
yosef khaled shehata
a7e0010f92 Added the detection of "pkr_ce1a" packer
I added a detection rule file under "/db/PE" to detect a packer called "pkr_ce1a" used by malware authors.
2026-05-14 00:59:53 +03:00
DosX
3b2dfac1de Add source URLs to tool metadata
Add comment reference URLs to two PE tool metadata files for context. Inserted a Wikipedia link for Microsoft Visual Studio in db/PE/tool_Microsoft_VisualStudio_NET.6.sg and a GitHub link for de4dot in db/PE/tool_de4dot.6.sg; these are non-functional comments intended as source/reference annotations.
2026-05-13 23:14:21 +03:00
DosX
4d9608eb09 Update game_engine_ClickteamFusion.3.sg 2026-05-13 23:08:49 +03:00
DosX
c36254255d dbs_min update 2026-05-13 20:39:27 +03:00
DosX
0430b77931 Improve Clickteam Fusion detection pattern
Add an extra EP signature check and a comment to improve detection for Clickteam Fusion. The detect() function now includes an additional PE.compareEP("E8........E9$$$$$$$$6A14") check.
2026-05-13 20:30:51 +03:00
DosX
5445b4b92c Enhance Clickteam Fusion detection logic
Broaden Clickteam Fusion 2.X+ detection by adding a rich-signature + entry-point pattern check (compareEP with "E8........E9........CCCCCCCCCCCCCCCCCCCCCC"). Retains the existing export-function + overlay check (zi32Support + compareOverlay) as an alternative detection path.
2026-05-13 20:16:40 +03:00
DosX
13f47a591b Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-13 20:01:12 +03:00
DosX
ece9b51579 Add Clickteam Fusion detection rule
Add a Detect It Easy rule (db/PE/game_engine_ClickteamFusion.3.sg) to identify Clickteam Fusion executables. The rule checks for the PE export function `zi32Support` and an overlay signature, sets the detected version to `2.X+`, and includes author metadata.
2026-05-13 20:01:09 +03:00
Benjamin Funke
7e1c18cdcb add Unreal game engine signature 2026-05-13 18:21:01 +02:00
DosX
74268286dd dbs_min update 2026-05-13 19:13:00 +03:00
DosX
18903e438f Regen dbs_min -> (wrong Lvy RAT name bug), fixed 2026-05-13 19:12:49 +03:00
DosX
f44981d2ab Update __GenericHeuristicAnalysis_By_DosX.7.sg 2026-05-13 19:11:51 +03:00
DosX
c269309221 dbs_min update 2026-05-13 19:11:32 +03:00
DosX
b227feda23 Add safety checks for resource and disasm offsets
Add defensive checks to avoid using invalid offsets and missing disassembly strings. Guard against -1 resource/VAToOffset results before calling PE.compare/PE.isSignaturePresent, cache the resource offset in a local variable, and break when PE.getDisasmString() returns falsy to avoid caching undefined. These changes prevent false matches and runtime errors when resources or disassembly are not present.
2026-05-13 19:04:08 +03:00
DosX
b65fd76005 Replace substr with substring and simplify checks
Use substring instead of substr for string slicing in heuristic scanners and simplify a redundant ASCII check. Updates in scanForObfuscations_NET and scanForObfuscations_Native: replace sectionName.substr(1, ...) and libraryName.substr(..., 4) with substring calls, and remove a redundant !isAsciiString(libraryName) condition in the import-character test. These changes improve consistency and clarity of the string operations without altering the intended detection logic.
2026-05-13 18:53:19 +03:00
DosX
f3c443dd11 Use strict !== instead of != in heuristics
Replace loose inequality checks with strict !== to avoid type-coercion issues in PE heuristic scanning. Changes apply to db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg across functions like scanForPackersAndCryptors_NET_and_Native, validateSignature, validateNetByteCode, validateGlobalUnicodeString, generateUnicodeSignatureMask, and scanForObfuscations_Native. This is a behavior-preserving refactor intended to make comparisons more robust and explicit.
2026-05-13 18:47:30 +03:00
DosX
f0fba511a8 Add safety check for missing disassembly
Break out of the loop if PE.getDisasmString returns a falsy value. Adds a guard in emulateAndGetEpAsmPattern to avoid appending undefined instructions and to prevent potential crashes or infinite loops when disassembly is unavailable.
2026-05-13 18:38:32 +03:00
DosX
72db591361 Use strict equality and cache section entropy
Replace loose comparisons (==/!=) with strict operators (===/!==) in NetOpCodes, scanForBadFileFormat_NET_and_Native, and isNameObfuscated for correctness and consistency. Also compute sectionEntropy once in scanForPackersAndCryptors_NET_and_Native and reuse it for the threshold check and logging to avoid redundant calculations and improve readability/performance.
2026-05-13 18:32:20 +03:00
DosX
44ed59ed02 Use raw instruction text in EP regex checks
In scanForObfuscations_Native(), replace calls to getAsmOpCode(PE_Cached.firstEpAsmInstruction) with direct regex tests against PE_Cached.firstEpAsmInstruction. This affects both x86 and ARM branches that detect breakpoint/return patterns for TLS entry point checks, reducing redundant parsing and ensuring the regex matches the actual instruction text.
2026-05-13 18:25:46 +03:00
DosX
02b7e6dcfe Limit PDB scan range and accept '/' in paths
In scanForDebugData_NET_and_Native (db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg): stop the backward scan for the PDB path at PE.getDosStubOffset() + PE.getDosStubSize() instead of 0 to avoid scanning into the DOS stub region, and relax the absolute-path check to accept either backslash or forward slash (so both C:\... and C:/... are recognized). These changes reduce false positives and prevent reading outside the intended bounds.
2026-05-13 18:20:15 +03:00
DosX
76edcd71b2 Use strict !== instead of != in scans
Replace loose inequality checks (!=) with strict (!==) across multiple scan functions in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg (e.g. scanForObfuscations_NET, scanForAntiAnalysis_NET, scanForPackersAndCryptors_NET_and_Native, scanForLicensingSystems_NET_and_Native, scanForBadFileFormat_NET_and_Native, scanForDebugData_NET_and_Native, scanForObfuscations_Native, scanForInterestingMarkers_NET_and_Native). This change enforces strict type-safe comparisons to avoid unintended type coercion and improve reliability of detection logic. No other logic changes made.
2026-05-13 18:15:48 +03:00
DosX
7f0a630c56 Bound section scan loop and use strict equality
Tighten the loop that finds the last non -1 section address in scanForPackersAndCryptors_NET_and_Native(): use strict equality (===) and add an upper bound (i <= PE_Cached.numberOfSections) to avoid infinite loops or out-of-range section accesses when no valid section is found.
2026-05-13 18:13:45 +03:00
DosX
a201d52bc8 Scan NET short-names from index 0; fix hex padding
Start the short-name detection loop at index 0 so the first character in the 'chars' set is checked (previously it was skipped). Also correct hex byte formatting when building the buffer by left-padding single-digit hex strings (currentByte.length === 1) with a '0' instead of only handling the literal '0', ensuring bytes like 0x0A produce '0a' instead of 'a'.
2026-05-13 15:03:24 +03:00
DosX
4fe3900b65 dbs_min update 2026-05-13 03:07:23 +03:00
DosX
ec2a4a0bd4 Refine name obfuscation detection
Change handling of leading uppercase tokens in isNameObfuscated() from returning false to continuing, so an uppercase abbreviation at the start doesn't prematurely mark the whole name as not-obfuscated and allows subsequent tokens to be evaluated. Also tighten the copyright-year whitelist regex in isTokenObfuscated() by anchoring the end (added $) to require a full-token match, preventing partial matches that could cause false positives.
2026-05-13 03:01:44 +03:00
DosX
0749844697 Guard against missing <Module> .ctor signature
Calculate ctorSignatureOffset and handle a -1 result from PE.findSignature so subsequent reads/comparisons aren't done at an invalid offset. Only run the short-name detection, the short-name scanning loop, and the buffer read loop when a valid afterCtorOffset exists. Also rename the signature variable for clarity and change protectionsRuntime from const to var (compatibility/consistency). These changes prevent out-of-bounds reads and false detections when the <Module> .ctor signature is not found.
2026-05-13 02:57:42 +03:00
DosX
6e3aead49a Clear PE cache, correct ldloca and findSignature
Fix several PE heuristic issues: unloadCache now clears all enumerable properties from PE_Cached instead of setting it to undefined to avoid leaving stale object references; correct the MSIL ldloca opcode from "FE09????" to "FE0D????"; and adjust the PE.findSignature call to pass sectionSize (instead of sectionOffset + sectionSize) so signature searches use the proper length. These changes address cache-clearing bugs, an incorrect opcode mapping, and an incorrect signature search range.
2026-05-13 02:45:17 +03:00
DosX
f4f90dc552 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-13 02:44:40 +03:00
DosX
73cbb7f846 Update JSDoc for unloadCache behavior
Clarify unloadCache JSDoc to state it removes all enumerable properties from PE_Cached instead of setting it to undefined, keeping the documentation consistent with the implementation in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg.
2026-05-13 02:44:25 +03:00
DosX
d003e8f9cb Simplify capitalization for option labels
Remove unnecessary .toUpperCase() calls when constructing option strings in two places (scanForPackersAndCryptors_NET_and_Native and scanForObfuscations_Native). The code now concatenates the raw first character with the lowercased remainder, avoiding potential runtime issues and ensuring consistent label formatting for detected opcodes near EP.
2026-05-13 01:13:05 +03:00
DosX
5d34bf3cf9 dbs_min update 2026-05-13 01:09:42 +03:00
DosX
4acb6d77f6 Refine ' RAT' signature heuristic with object checks
Tighten the heuristic in scanForMaliciousCode_NET_and_Native: only treat the Unicode " RAT" signature as a trigger when it appears together with at least one of the specified objects (System.Net.Sockets, GetWindowText, avicap32.dll). Keeps the existing fallback checks for other Net objects (AntiTaskManager, BlockAvSites, UpdaterEXE, etc.). This reduces false positives by requiring both the signature and contextual API/library usage.
2026-05-13 01:07:33 +03:00
DosX
2348272a08 Update library_Direct3D.4.sg 2026-05-12 23:43:00 +03:00
DosX
a9f2880eca Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-12 23:42:24 +03:00
DosX
269db4ffbb Safely handle regex match in Direct3D detection
Avoid indexing the regex result directly when no match is found. Assign the full match array to sVersion, check that it contains a capture group, then extract the version token and validate it (1..13). This prevents runtime errors on null matches and ensures correct Direct3D version detection.
2026-05-12 23:42:12 +03:00
Benjamin Funke
71c5e60f00 dbs_min update 2026-05-12 22:26:46 +02:00
Benjamin Funke
5d884dca8e add libvpx ELF signature 2026-05-12 22:25:45 +02:00
DosX
684dc97516 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-12 23:09:10 +03:00
DosX
828363eea9 dbs_min update 2026-05-12 23:08:44 +03:00
Benjamin Funke
b4a75790d2 add Argon2 ELF signature 2026-05-12 22:08:41 +02:00
DosX
c31eb5c7f4 Tighten Direct3D import regex and version checks
Restrict Direct3D import detection to 1-2 digit versions and ensure detected versions are in the 1..13 range. The import regex was changed from /d3dx?(\d+)/i to /d3dx?(\d{1,2})/i, maxVersion is now validated (<= 13), and the fallback now extracts the d3d major version with PE.isLibraryPresentExp(/^d3d(\d{1,2})/i)[1] and validates it before setting bDetected. This prevents false positives and out-of-range version matches.
2026-05-12 23:07:07 +03:00
DosX
0ca9674f6b Refine KD token regex and clarify build comment
Fix a heuristic bug by changing the KD transport regex from /^kd[_n]/i to /^kd(?:_|net_)/i so it correctly matches "kd_..." and "kdnet_..." prefixes (avoids accidental matches like "kdn..."). Also tweak the changelist/build comment examples to emphasize numeric parts (e.g. CL [35398403], Build [123456]). These edits improve token obfuscation detection accuracy and comment clarity in the PE heuristic rules.
2026-05-12 22:52:59 +03:00
DosX
218f5a0fee Whitelist common identifier naming patterns
Add several regex patterns to isTokenObfuscated whitelist in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg. New rules recognize common OOP/API noun suffixes (handler, manager, factory, callback, decoder, etc.), Hungarian-style Windows API prefixes (lpsz/dw/hWnd/... followed by PascalCase), PascalCase/camelCase names with trailing version digits (e.g. Direct3D9, CreateFile2), and multi-segment snake_case identifiers. These additions aim to reduce false positives by treating legitimate identifier naming conventions as non-obfuscated tokens.
2026-05-12 22:49:54 +03:00
DosX
8d681e44fe Tighten Direct3D module regex to require digits
Change the Direct3D module name pattern from /^d3d/i to /^d3d\d{1,2}/i in the PE heuristics. This requires 1–2 digits after 'd3d' (e.g. D3D9, D3D10, D3D11) and reduces false positives from tokens that merely start with 'd3d'.
2026-05-12 22:41:03 +03:00
DosX
d5fc32ec3d dbs_min update 2026-05-12 22:36:58 +03:00
DosX
fef3bf931a Enhance PE heuristic whitelist patterns
Expand and refine the heuristic whitelist used in PE generic analysis. Added more driver/service suffixes (srv, svc, port, bus, hub, hid) to the existing regex to reduce false positives for Windows components. Introduced new patterns to recognize PascalCase and camelCase compound identifiers and a regex for known Windows kernel/network component substrings (ndis, acpi, storport, usbhub, etc.). These changes improve whitelisting of legitimate symbol names and reduce accidental obfuscation flags.
2026-05-12 22:36:11 +03:00
DosX
00b9f14fbd Consolidate token whitelist into array
Replace many individual token.match checks with a single whitelist array of regular expressions and iterate over it, reducing duplication and improving readability/maintainability. Tighten the Windows resource/constant identifier regex to require an underscore and a stricter pattern; all other whitelist patterns were preserved but consolidated into the array. Changes are localized to the PE heuristic whitelist logic.
2026-05-12 22:32:01 +03:00
DosX
50ded292a8 Refine token whitelist regexes
Tighten heuristics in isTokenObfuscated(): strengthen the hardware/model whitelist to require a well-formed prefix+digit block and optional underscore/dash suffixes (anchored to the end) to avoid accidentally whitelisting random strings; add CUDART64_132_51 to examples. Also adjust the SCREAMING_SNAKE_CASE rule to require at least one underscore so all-caps hex-like identifiers (e.g. DEADBEEF) are no longer whitelisted.
2026-05-12 21:24:55 +03:00
DosX
e53afb42f4 Update __GenericHeuristicAnalysis_By_DosX.7.sg 2026-05-12 20:15:16 +03:00
DosX
d66e10266f Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-12 20:11:52 +03:00
DosX
d1b9abfe12 Refine PE heuristic obfuscation rules
Update PE generic heuristic rules to reduce false positives and better recognize benign tokens: add a debug _setResult call when an obfuscated chunk is logged; expand benign token whitelist with cuda, iscsi, scsi, sstp, uart; add DirectX (d3d) and kernel debugger (kd_) exclusions; add hardware chip/model pattern and driver/service suffix exclusions. Also relax the uppercase-only resource token rule by removing the lower-case check, and raise the repeated-consonant detection threshold from 5 to 7 to avoid flagging legitimate names (examples: luainstall.dll, rassstp.sys, msiscsi.sys). Changes applied to db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg.
2026-05-12 20:11:50 +03:00
Benjamin Funke
89ad65810a add XCOMPILE signature 2026-05-12 18:59:42 +02:00
Benjamin Funke
06f62b0798 Use PE.getFileVersion() in XPAT signature 2026-05-12 18:49:46 +02:00
DosX
edecf14bc1 Improve token obfuscation heuristics
Enhance isTokenObfuscated checks to reduce false positives and better recognize common non-obfuscated tokens. Added regexes to allow partial GUIDs/GUID fragments and build/version hashes with optional word suffixes. Extended CI/build keyword list (added sql,tmp), added charset/codepage name detection (cp/iso/utf/ucs/etc.), and added detection for uppercase Windows resource/constant identifiers. Tightened obfuscation rule for long consonant clusters by raising the threshold from 6 to 8 and updating the related comment and regex.
2026-05-12 19:28:34 +03:00
DosX
c3fc6b8e14 Add SecurityHealthService and simplify signing 2026-05-12 19:04:24 +03:00
DosX
59e5bd7c97 Improve fake system/file and company checks
Remove an obsolete CFG-without-DEP check and refactor heuristic checks for fake build info and system files. Rename companyNames to companyNamesDict, and introduce combined system file name lists with a helper to compare OriginalFilename/InternalName. Defer adding verdicts until a consolidated isFakeOrInfected flag is determined, and add additional checks for Rich signature, signing, .NET builds, and packer/protector heuristics to reduce false positives.
2026-05-12 19:00:56 +03:00
DosX
1433beadaf dbs_min update 2026-05-12 18:11:16 +03:00
DosX
a40da7ca3a Fix export name check precedence
Wrap the export-name condition in parentheses to ensure functionName is evaluated before checking if it starts with a digit or is non-ASCII. This prevents isAsciiString from being called when functionName is falsy and fixes the logical precedence that could yield false positives for strange exports.
2026-05-12 02:29:32 +03:00
DosX
b5d27b6599 dbs_min update 2026-05-12 02:21:07 +03:00
DosX
921c5f4ed1 Fix mangled name parsing for E/G/R and $ methods
Adjust mangled symbol parsing in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg: for _E/_G/_R patterns (destructor, vector destructor, RTTI) strip the prefix and return the name suffix instead of the whole token; normalize class method parsing by removing a leading '$' before splitting, and compare against 'bctr'/'bdtr' (without $) to correctly detect constructors/destructors and return class name or '~class'. This corrects incorrect name extraction for those mangled forms.
2026-05-12 02:19:26 +03:00
DosX
1bacd6bc4b Use non-capturing groups in PE regexes
Replace unnecessary capturing groups with non-capturing groups (?: ) in several regular expressions inside scanForObfuscations_Native in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg. This removes spurious capture overhead for patterns matching INT 3, RET <n>, and BX LR while keeping behavior unchanged (used for TLS/EP heuristic checks).
2026-05-12 02:17:24 +03:00
DosX
eda20ef5a8 dbs_min update 2026-05-12 02:03:31 +03:00
DosX
0ba0ea7396 Add Rusty packer and annotate packer entries
Add detection entry for the Rusty PE packer (magic 0xa2260c1d, heuristic value 10). Also add documentation comments/URLs for Packman and Amber and tidy related inline comments; no other functional changes.
2026-05-12 02:01:33 +03:00
DosX
5b95a17a4c Add reference URLs to packer entries
Add inline reference comments for py2exe and BoxedApp entries in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg to document source websites. This is a non-functional change (comments only) to improve maintainability and provide quick lookup links for those packer signatures.
2026-05-12 01:22:53 +03:00
DosX
45f0a4ca16 Add extra tokens to CI/build regex
Include additional common tokens (mgr, vds, word, runtime) in the build/CI server pattern inside isTokenObfuscated(). This prevents those tokens from being treated as obfuscated by the heuristic and reduces false positives when analyzing PE names.
2026-05-11 21:57:26 +03:00
DosX
d0bc44a4c3 Add '.imrsiv' (UWP) to standard sections list
Expand the standardSectionsWithUnusualValuesDict to a multi-line array for readability and add the '.imrsiv' entry (with a comment marking it as UWP). Also annotate 'hydrated' as .NET Native. This extends heuristic recognition for .NET Native and UWP binaries.
2026-05-11 21:50:56 +03:00
DosX
342a1b1ddb dbs_min update 2026-05-11 21:40:39 +03:00
DosX
adf55c8b27 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-11 21:39:25 +03:00
DosX
0651601ce1 Detect fake system files via version info
Add a heuristic that flags PE files whose OriginalFilename or InternalName matches common Windows system executables (e.g. csrss.exe, wininit.exe, lsass.exe, svchost.exe, taskhostw.exe, ntkrnlmp.exe) but that are .NET, lack a Rich signature, or are unsigned. When detected, a verdict of "Fake ...system file" is appended to indicate possible masquerading or infection. This helps catch malware that copies legitimate system names without proper signing or Rich signature metadata.
2026-05-11 21:39:24 +03:00
Benjamin Funke
aa786eb6d3 refactor DEV7 game signature
Co-Authored-By: DosX <collab@kay-software.ru>
2026-05-11 19:48:51 +02:00
DosX
63f963caff Normalize PE file version strings in engine detectors
Use File.cleanString(PE.getFileVersion()) when populating sVersion for several game engine detectors (Atlas, Godot, Wintermute) to ensure cleaned/normalized version strings. Refactor Director detector to remove repeated sVersion assignments and set sVersion once (cleaned) when any detection branch matches. Minor whitespace cleanup included.
2026-05-11 20:29:12 +03:00
DosX
14901fa064 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-11 20:27:14 +03:00
DosX
3a69bb160c Improve Warbird detection and token rules
Enhance heuristic detection for Microsoft Warbird and adjust token obfuscation exclusions.

- db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg: broaden Warbird signature to include PROTDATA and section-name patterns (/^PAGE(?:VRFY|wx[1-6])$/). Also add "krnl" to the list of tokens treated as non-obfuscated.
- db/PE/protection_Microsoft_Warbird.2.sg: add fallback detection that marks Warbird as present when a .sys library exists and a PAGEVRFY/PAGEwx1-6 style section name is present.

These changes make Warbird identification more reliable by matching additional known markers and prevent mislabeling common kernel-related tokens as obfuscated.
2026-05-11 20:27:11 +03:00
Benjamin Funke
8b7dbb6391 use PE.getFileVersion() for game engine signatures
Re-introduce sVersion with PE.getFileVersion() to extract the exact version number of the game engine
2026-05-11 19:20:33 +02:00
Benjamin Funke
336994ff14 add FMOD signature 2026-05-11 18:59:58 +02:00
DosX
eb9d248319 dbs_min update 2026-05-11 19:40:43 +03:00
DosX
1017f556d5 Add inject2pe signature to PE heuristics (#355)
Register inject2pe as a known packer by adding the ".inj" signature to db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg. This enables heuristic detection of inject2pe-packed files (reference: https://github.com/0xballistics/inject2pe).
2026-05-11 18:41:56 +03:00
DosX
0a42c33b00 Rename tool_inject2pe.2.sg -> tool_inject2pe.6.sg (#355) 2026-05-11 18:36:45 +03:00
DosX
74bb0a17bf Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-11 18:34:12 +03:00
DosX
5b57795d2b Refine inject2pe detection rule
Tighten the Detect It Easy rule for inject2pe: require non-64-bit, zero DOS stub size, and use strict comparisons; keep checks for single section, specific Characteristics, header size, no imports, and non-console. Add detection of modified wrappers by marking sOptions="modified" when the section name is not ".inj". Minor formatting and return placement adjusted to improve accuracy and reduce false positives.
2026-05-11 18:34:02 +03:00
github-actions[bot]
84742d83eb style: auto-format JavaScript files in db directories 2026-05-11 15:33:37 +00:00
Benjamin Funke
bf74b6d8e6 fix inject2pe filename 2026-05-11 17:32:13 +02:00
github-actions[bot]
8d2c3eaf6f style: auto-format JavaScript files in db directories 2026-05-11 15:27:03 +00:00
DosX
ef60be45d1
Merge pull request #355 from Tenzzzzzz/inject2pe/detection
Add inject2pe detection rule
2026-05-11 18:26:26 +03:00
Yosef Khaled
9da0680939
Update tool.inject2pe.2.sg 2026-05-11 18:20:42 +03:00
DosX
947974eb12 dbs_min update 2026-05-11 02:15:17 +03:00
DosX
a1f6c641e4 Add checks for CFG without DEP and No-SEH on x64
Add validation in scanForObfuscations_Native() to detect invalid DLL characteristic combinations: flag Control Flow Guard (IMAGE_DLLCHARACTERISTICS_GUARD_CF) when NX/DEP (IMAGE_DLLCHARACTERISTICS_NX_COMPAT) is not set (adds option "CFG without DEP"), and flag No-SEH (IMAGE_DLLCHARACTERISTICS_NO_SEH) when the image is 64-bit (adds option "No-SEH on x64"). These identify broken or nonsensical security flag combinations that are not produced by legitimate toolchains.
2026-05-11 02:10:02 +03:00
DosX
9a0f73b9a1 Flag PE images with CFG but no ASLR
Add a heuristic that detects when IMAGE_DLLCHARACTERISTICS_GUARD_CF is set but IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE is not. When observed, the code appends the "CFG without ASLR" option to the analysis results to highlight a potentially inconsistent or suspicious configuration (CFG is only effective on ASLR-enabled images).
2026-05-11 02:09:45 +03:00
DosX
27be07a78e Detect FORCE_INTEGRITY without ASLR
Add a check in scanForObfuscations_Native to detect when IMAGE_DLLCHARACTERISTICS_FORCE_INTEGRITY is set but IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE (ASLR) is not. When found, set isForceIntegrityWithoutAslr and add the "Force integrity without ASLR" option so such PE images are flagged during heuristic analysis.
2026-05-11 02:09:37 +03:00
DosX
35240ed05e Handle high-entropy VA on 32-bit PE
Refine high-entropy VA handling: change the existing option text to "High entropy VA without ASLR" and add a new check to detect when IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA is set on 32-bit images (which is meaningless). When detected, add the "High entropy VA on x32" option to avoid misleading heuristics/false positives.
2026-05-11 02:09:27 +03:00
DosX
c2730fdb82 Warn if High-Entropy VA set without ASLR
Add a heuristic in scanForObfuscations_Native to detect when the IMAGE_DLLCHARACTERISTICS_HIGH_ENTROPY_VA flag (0x0020) is set but IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE (ASLR, 0x0040) is not. When this inconsistent combination is found, set an option message "High entropy VA needs ASLR" to flag the likely misconfiguration or ineffective setting. This helps identify PE files that declare 64-bit ASLR entropy while ASLR itself is disabled.
2026-05-11 02:07:11 +03:00
DosX
360128a0dd Add DLL characteristics flags and validity check
Define IMAGE_DLLCHARACTERISTICS constants and add a check in scanForObfuscations_Native to read DllCharacteristics from the PE optional header. The new logic detects if reserved bits 0-4 are set (which should never be used) and marks the binary with the "Invalid DLL flags" option when found. This enhances heuristic detection of malformed or potentially obfuscated PE files by validating DLL characteristic flags.
2026-05-11 02:06:56 +03:00
DosX
c0ba049aad Tweak PE heuristic checks and comments
Three small edits to PE heuristic logic and comments:

- Remove the "43210" alternative from the numeric-sequence regex used to detect 5+ digit ascending/descending sequences.
- Clean up a block comment header for ARM/ARM64 NOP-equivalent instructions (remove an extra leading '*' and align text).
- Add "DECRYPTOR" to the resource-name detection regex so resources named DECRYPTOR are flagged alongside PAYLOAD, SHELLCODE, INJECT, and CRYPTED.
2026-05-11 02:06:29 +03:00
DosX
bd31ca55f3 Add PE rule for SSH.NET
Add a new detection rule db/PE/library_SSH_NET.sg that identifies the SSH.NET .NET library by checking for the presence of the Renci.SshNet object. The rule includes a library meta tag and author/contact metadata to help PE analysis detect SSH.NET in binaries.
2026-05-11 00:17:46 +03:00
DosX
c1b5696c2c Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-10 23:58:45 +03:00
DosX
dba850efa2 Improve token obfuscation heuristics
Refactor and extend obfuscation checks for tokens. Consonant-repetition logic now only runs for tokens under 15 chars and uses a regex-based consonant test with an inline counter/early return for >=5 repeats. Expanded keyboard-walk detection to cover horizontal row patterns (5+ chars, forward/backward) and added vertical column patterns (6+ chars) as well as number-row sequences (5+ consecutive digits). These changes tighten thresholds to reduce false positives and broaden detection of common obfuscation patterns.
2026-05-10 23:58:43 +03:00
Yosef Khaled
0850c5400a
Fix detection logic in tool.inject2pe.2.sg 2026-05-10 22:33:15 +03:00
yosef khaled shehata
1d84b6b603 Add inject2pe detection rule
Add a Detect It Easy (DIE) rule to identify the inject2pe tool's wrapper method. The rule (author: Yosef Khaled) tags files with meta tool="inject2pe" and matches PEs with no imports, a single section, SizeOfHeaders == 0x200, first section Characteristics == 0xE0000020 and not a console binary; it sets options to "shellcode2exe wrapper". Includes link to the project: https://github.com/0xballistics/inject2pe.
2026-05-10 22:19:13 +03:00
Benjamin Funke
a8aac75db7 add libxml2 signature 2026-05-10 17:11:24 +02:00
DosX
d63afaeb91 Update packer_Fatpack.2.sg
Co-Authored-By: Yosef Khaled <124172634+tenzzzzzz@users.noreply.github.com>
2026-05-10 17:58:49 +03:00
DosX
36837d7f45 Fatpack: add attribution and remove else branch (#354)
Add contributor attribution ('Enhanced by: Yosef Khaled') and minor formatting. Remove the else branch in detect() that set sVersion = "custom" when the section name was ".fpack  ", altering the version-detection behavior for this packer.

Co-Authored-By: Yosef Khaled <124172634+tenzzzzzz@users.noreply.github.com>
2026-05-10 17:49:28 +03:00
github-actions[bot]
f2e62b35bb style: auto-format JavaScript files in db directories 2026-05-10 14:45:38 +00:00
DosX
37d0b8218e
Merge pull request #354 from Tenzzzzzz/Enhance-FatPack-detection
Enhanced Fatpack detection
2026-05-10 17:45:12 +03:00
DosX
c6e8bad81c dbs_min update 2026-05-10 15:38:10 +03:00
DosX
90cdf51541 Add Detect It Easy rule for Torrent format
Add new detection rule db/Binary/format_Torrent.1.sg for Detect It Easy to identify .torrent files. The rule checks for the bencoded 'd8:announce' key and a URL signature ('://') within the header to detect torrent metadata. File includes author contact and metadata.
2026-05-10 15:37:37 +03:00
DosX
6171ac3dc4 Add DETE to detect Minecraft Bedrock ZIPs
Add a Detect It Easy rule (db/ZIP/format_Minecraft_Bedrock.1.sg) to identify Minecraft Bedrock ZIP packages. The script checks for ZIP file format version 2.0 with Deflate compression and matches file suffixes mcworld, mcpack, and mcaddon to set options to "World", "Resource Pack", or "Add-on" and tag the result as Bedrock Edition. Includes author metadata.
2026-05-10 15:25:05 +03:00
DosX
a8aaa65564 Refine PE heuristics: entrypoint and .NET checks
Allow heuristic scanning to continue when the PE entry point is 0 by removing the early break, ensuring packer/cryptor detection still runs. Also broaden .NET malicious detection: in addition to detecting a 'avfucker' object, treat the presence of both Unicode strings 'SharpInvoker' and 'myres' as an indicator for the 'RAT Injector' verdict when no other verdicts exist.
2026-05-10 14:34:08 +03:00
DosX
5ce214d8d3 Delete library_CSCWCNG.4.sg 2026-05-10 13:35:30 +03:00
DosX
c022fab131 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-10 13:34:21 +03:00
DosX
84386d3b16 Verify PE entry point before EP address checks
Add a guard using PE.isEntryPointCorrect() and fetch the entry point earlier. If the entry point is zero, exit the check early. This removes a redundant PE.getAddressOfEntryPoint() call and prevents invalid/zero EP values from being compared against the last section address when scanning for packers/cryptors in non-DLL PE files.
2026-05-10 13:34:19 +03:00
Benjamin Funke
86ab7f3db4 add MSXFS signature 2026-05-10 11:29:15 +02:00
github-actions[bot]
73debcf7fb style: auto-format JavaScript files in db directories 2026-05-10 09:25:39 +00:00
Benjamin Funke
2d6cc2ca38 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-10 11:24:45 +02:00
Benjamin Funke
028ac20024 add CSCWCNG signature 2026-05-10 11:23:22 +02:00
github-actions[bot]
6f980c2e1c style: auto-format JavaScript files in db directories 2026-05-10 09:20:19 +00:00
Benjamin Funke
5bb453028c add CSCWCNG signature 2026-05-10 11:19:38 +02:00
DosX
b90d1ff802 Use non-capturing groups in regexes
Replace unnecessary capturing groups (...) with non-capturing groups (?:...) in several regex literals in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg (e.g. section/flag and numeric suffix patterns). This prevents creating unused capture groups, clarifies intent, and preserves existing behavior.
2026-05-10 01:03:22 +03:00
DosX
54ce869efe Use non-capturing groups in Denuvo regexes
Replace unnecessary capturing groups with non-capturing groups in two Denuvo-related regexes. Updated patterns to /^GetDenuvo(?:TimeTicketRequest|TicketLocation)$/ (in __GenericHeuristicAnalysis_By_DosX.7.sg) and /^ANTICHEAT_OBFUSCATE_(?:.+_)?CODEMARKER$/ (in protection_Denuvo.5.sg). This avoids creating unused capture groups and prevents unintended capture-index shifts, with no change to matching behavior.
2026-05-10 00:48:16 +03:00
DosX
8fa1c91dd3 Tighten version regex and compress char checks
Allow an optional 'v.' prefix when matching version numbers (accepts 'v.1.2' in addition to 'v1.2' and '1.2') and refactor the character-type branches in isTokenObfuscated() into single-line conditionals to reduce line count while preserving the counting and type-assignment behavior.
2026-05-10 00:37:07 +03:00
yosef khaled shehata
18c5c9644d Enhanced Fatpack
Enhanced FatPack detection
I have corrected the detection logic as follows:

1-Since different versions of "fatpack" do not have a constant number of sections, I eliminated that criterion from the code.
2-Avoided false detections for manually unpacked samples.
3-Improved the detection of packed samples using the --resources option by looping through all resources and searching for the signature "5D00001000" in any of them. If found, it means the resource payload has been identified. This modification is more reliable because resource names and counts can be modified or manipulated, so the detection now relies on deeper analysis.
4-Improved the code readability.
2026-05-10 00:36:33 +03:00
DosX
558e7d5704 Broaden copyright regex to accept years/ranges
Relax the copyright whitelist regex in __GenericHeuristicAnalysis_By_DosX.7.sg: make the (C)/© marker optional, allow an optional space after it, and accept both hyphen and en-dash as year-range separators. This lets plain 4-digit years and year ranges (e.g., 2020-2022 or 2020–2022) pass the whitelist to reduce false positives in obfuscation detection.
2026-05-10 00:33:32 +03:00
DosX
7de9d8f663 Fix missing quote for 'intel' in company list
Add a missing closing quotation mark for "intel" in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg. This corrects a syntax error in the companyNames array that could cause the script to fail parsing.
2026-05-10 00:25:11 +03:00
DosX
b55855ae51
Update __GenericHeuristicAnalysis_By_DosX.7.sg 2026-05-10 00:12:45 +03:00
DosX
309ce3c207 Update vendor names in heuristic list
Remove the 'avg' entry and replace the 'amd' abbreviation with the full name 'advanced micro devices' in the companyNames array used by the PE heuristic scan. This clarifies vendor matching strings for the malicious code detection routine.
2026-05-10 00:01:50 +03:00
Benjamin Funke
157155c91c add new companies to companyNames 2026-05-09 22:24:28 +02:00
DosX
b24a60a43f Add MIT license and update file header formatting
Update the file's ASCII comment headers and add an explicit MIT license block. Cosmetic changes include restyled ABOUT/CONTACT/DONATE headings, extra padding lines for readability, and insertion of a © LICENSE section (Copyright © 2026 DosX) describing allowed/disallowed uses. These are comment-only edits with no functional changes to analysis logic.
2026-05-09 19:45:58 +03:00
DosX
293780e609 Port node_modules_clean for Linux 2026-05-09 19:27:17 +03:00
DosX
1699c6dfde Move node module LICENSEs to node_licenses
Rename and relocate LICENSE files from autotools/dbcompiler/node_modules into autotools/dbcompiler/node_licenses/ (e.g. LICENSE -> LICENSE.<pkg>.txt) to centralize third-party licenses. Also remove assorted package metadata and docs (README, CHANGELOG, tests, CONTRIBUTING, governance, etc.) from vendor node_modules entries to reduce noise in the tree.
2026-05-09 19:20:53 +03:00
DosX
ed043323b7 Add script to extract licenses & run modclean
Add Windows batch script node_modules_clean.cmd that copies LICENSE/LICENCE/COPYING files from node_modules into a node_licenses directory (creating it if missing), renaming saved files to include package names, and invokes npx modclean -n default:safe -r to remove extraneous files. Intended to gather third-party licenses for offline/legal distribution and clean node_modules.
2026-05-09 19:19:44 +03:00
DosX
f88a5201f0 dbs_min update 2026-05-09 18:57:28 +03:00
DosX
37774f636a Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-09 18:56:34 +03:00
DosX
1944772003 Organize Amiga DB files and add prefixes
Rename and relocate several Amiga database entries to improve categorization and naming consistency. All files are identical (similarity index 100%) — only path/name changes.

Renames:
- db/Amiga/Master_Cruncher.1.sg -> db/Amiga/cruncher_Master_Cruncher.1.sg
- db/Amiga/RexxMasher_(jrms).1.sg -> db/Amiga/cruncher_RexxMasher_(jrms).1.sg
- db/Amiga/LhPak_SFX.1.sg -> db/Amiga/sfx_LhPak_SFX.1.sg
- db/Amiga/library_library.1.sg -> db_extra/Amiga/library_library.1.sg
- db/Amiga/other_other.1.sg -> db_extra/Amiga/other_other.1.sg

These changes standardize prefixes (e.g., "cruncher", "sfx") and move less-common entries into db_extra for clearer organization.
2026-05-09 18:56:33 +03:00
DosX
5a111a54f3
Merge pull request #351 from securitystar/arxan
Improve Arxan detection
2026-05-09 17:29:59 +03:00
DosX
afde685003 Add *.die-db to .gitignore
Ignore generated .die-db files to prevent committing build artifacts.
2026-05-09 16:39:59 +03:00
DosX
77276a4fe9 Add archiver and pack .die-db archives
Add archiver dependency to package.json and update package-lock. Require archiver in task.js and implement createDieDb(srcDir, archivePath) to produce zip-based .die-db archives of processed output directories. After cleaning and reporting, the script now creates a .die-db archive per input directory and logs success/failure with archive sizes.
2026-05-09 16:38:11 +03:00
DosX
fbb2b38767 dbs_min update 2026-05-09 16:30:47 +03:00
DosX
ee3b2d03cf Add JSON minification handling in worker
Add isJson helper and handle .json files specially: attempt to minify by JSON.parse+JSON.stringify and write result; on parse error fall back to writing the original file and mark the result as failed. Update result flags to reflect whether the file was minified, skipped, failed, or failed-skip so callers can distinguish outcomes. This ensures JSON assets are compacted and errors are handled gracefully.
2026-05-09 16:29:00 +03:00
DosX
76524a8a6a dbs_min update 2026-05-09 16:24:42 +03:00
DosX
907fb6f411 Sanitize PlayStation BIOS version string
Use File.cleanString when reading the BIOS version string in detect() to remove unwanted/control characters before storing sOptions. Also add a TODO to validate the version string with a regex for stricter checking.
2026-05-09 16:20:19 +03:00
DosX
057795ca27 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-09 16:17:56 +03:00
DosX
bca296d661 Add comments for decryptor & resource heuristics
Add inline comments to the PE heuristic scanner: include an archived reference URL for a SumHex decryptor and document the purpose of the subsequent resource-name checks in .NET/native assemblies (to flag builders or attempts to hide payloads). These are non-functional clarifications to aid future maintainers.
2026-05-09 16:17:54 +03:00
github-actions[bot]
34b5318300 style: auto-format JavaScript files in db directories 2026-05-09 11:14:55 +00:00
Benjamin Funke
aff275c4cc add Playstation 1 BIOS signature 2026-05-09 13:14:19 +02:00
horsicq
6545af225c feat: add initial database schema with 11,834 records 2026-05-09 10:24:20 +02:00
horsicq
32928bbfcd chore: bump DIE version and update db dates to 2026-05-09 2026-05-09 10:24:16 +02:00
securitystar
d900b7d26f
Improve Arxan detection
This change adds support for DLLs without an entry point.
2026-05-09 02:57:51 +02:00
DosX
2fe6f375e3 dbs_min update 2026-05-08 23:14:13 +03:00
DosX
67eca52962 Add EP pattern check for Ramnit heuristic
Extend the PE generic heuristic for Ramnit: in addition to checking for a ".rmnet" section, add a PE.compareEP() check for a specific entry-point byte pattern (pushal, call, pop ebp, mov eax, ebp, sub/mem ops, mov al,0). If no prior verdicts and either condition matches, the analyzer now emits a Ramnit verdict to improve detection of samples that lack the .rmnet section.
2026-05-08 23:05:25 +03:00
DosX
e4fe10b02f Extend disassembly loop from 300 to 364
Increase the iteration limit in scanForMaliciousCode_NET_and_Native from 300 to 364 so the heuristic disassembly (parite scanning) examines a larger range of instructions. This expands the window for detecting additional opcode/obfuscation patterns in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg.
2026-05-08 22:45:30 +03:00
DosX
9053222165 Use non-capturing groups in regexes; rename var
Replace multiple regex capture groups with non-capturing groups (?:...) across the PE heuristic scanner to avoid unintended captures and clarify intent (affects packer/cryptor detection, section/name/resource checks, debug detection, token heuristics, export checks, etc.). Also rename local variable asmInstruction to currentInstruction in scanForObfuscations_Native and update its usages. These are refactors only — no behavioral logic changes intended beyond regex grouping and naming clarity.
2026-05-08 21:53:38 +03:00
DosX
5a9ec6b635 Add Parite heuristic detection in PE scanner
Introduce a heuristic to detect Parite (win.parite) infections in the PE scanner. For x86 binaries (and only when no prior verdicts exist) the code scans up to 300 instructions from the entry point, looking for a SUB followed by a backwards JNE to a target containing PUSH/XOR DWORD PTR [reg + reg] patterns. It counts repeated loop occurrences and emits a "Parite" infected verdict when the pattern repeats >= 0x20. Reference: Malpedia win.parite.
2026-05-08 21:49:02 +03:00
DosX
e2543f6f2e dbs_min update 2026-05-08 20:45:28 +03:00
DosX
ed344ecfac Expand whitelist in isTokenObfuscated regex
Update db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg: expand the non-obfuscation token regex in isTokenObfuscated to include beta, alpha, and client, and adjust the Windows variant grouping (win(32|64|2)). This change broadens the whitelist of common build/CI and client-related tokens to reduce false positives when detecting obfuscated tokens.
2026-05-08 20:45:06 +03:00
DosX
9a4bc5ffa1 Add null check for _gyminfo
Avoid accessing _gyminfo[0] when parseMDGYM may return null/undefined during heuristic/deep scans. Add a guard to return early if _gyminfo is falsy to prevent runtime errors in the GYM audio parser.
2026-05-08 20:43:13 +03:00
DosX
be434dca4d Update audio.1.sg 2026-05-08 20:40:56 +03:00
DosX
2eaedbbb93 Defang max[.]ru URL in comment and add warning
Update comment to use defanged URL (https://max[.]ru/) and append a "Malicious site; Be careful!" note. This is a non-functional change to clarify that the referenced site is malicious.
2026-05-08 15:10:03 +03:00
DosX
c974599d29 Narrow EP signature search range to 0x20
In db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg, reduce the signature search window from 0x30 to 0x20 in scanForMaliciousCode_NET_and_Native when scanning for the Win9x CIH-like instruction patterns near the entry point. Also include minor whitespace/comment alignment cleanups for readability. The change limits the distance searched from the entry point, reducing unnecessary matches and work.
2026-05-08 13:14:47 +03:00
DosX
90193088f5 dbs_min update 2026-05-08 13:09:45 +03:00
DosX
874498f0c4 Normalize rule filenames
Rename several detection rule files to use underscores (e.g. archive.ACE.1.sg -> archive_ACE.1.sg, archive.ZIP.1.sg -> archive_ZIP.1.sg) and rename Amiga_loadable.1.sg to format_Amiga_loadable.1.sg.
2026-05-08 13:09:04 +03:00
DosX
9042212e3e Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-08 13:04:30 +03:00
DosX
675cb2687a Detect fake LegalCopyright
Add a heuristic to flag fake LegalCopyright version strings that impersonate well-known vendors (e.g. Microsoft, Google, Adobe, Kaspersky, Nvidia, etc.). The new check ignores entries that include standard copyright markers and scans the LegalCopyright field for known company names; if found, it pushes a "Fake build info" verdict (using mayBeInfected details). Also modernize a local variable by changing `var fieldsToCheck` to `const fieldsToCheck`.
2026-05-08 13:04:29 +03:00
Kaens
1067538a79 *OPX
- MSX .OPX improved for a couple fringe cases
2026-05-08 11:38:03 +02:00
DosX
db52897e91 Whitelist copyright year patterns
Add a whitelist check in isTokenObfuscated to treat copyright/year tokens like (C)2020, ©1999, or (c) 2018 as non-obfuscated. The new case-insensitive regex (/^(\(C\)|©)[0-9]{4}(-[0-9]{4})?/) prevents these common copyright/date patterns from being flagged as obfuscated tokens.
2026-05-08 12:15:21 +03:00
DosX
c9e7e47076 Prefix db filenames with category labels
Rename multiple database entries to include explicit category prefixes for clarity. Files in db/Amiga were renamed to use compiler_, cruncher_, font_, and sfx_ prefixes; files in db_extra/PE were renamed to use installer_, protector_, and sfx_ prefixes. All changes are pure renames (100% similarity) with no content modifications.
2026-05-07 22:14:17 +03:00
DosX
f976dd93a3 dbs_min update 2026-05-07 21:12:36 +03:00
DosX
792324ec17 Reorganize db/PE Microsoft filenames
Rename and reclassify several files in db/PE to better reflect their roles and adjust file modes. Changes include: Microsoft.6.sg -> _Microsoft.6.sg (mode changed), Microsoft_JScript.6.sg -> compiler_Microsoft_JScript.6.sg, Microsoft_Class_Installer.1.sg -> installer_Microsoft_Class_Installer.1.sg, Microsoft_Compound-based_installer.1.sg -> installer_Microsoft_Compound-based_installer.1.sg, Microsoft_Help.1.sg -> other_Microsoft_Help.1.sg. Also updated db/PE/players.1.sg (mode/content change).
2026-05-07 21:11:54 +03:00
DosX
9d6b0e1acc Rename Amiga DB files and tweak signatures
Rename several Amiga database entries to use clearer prefixes (compiler_*/cruncher_*). Update db/MSDOS/virus.1.sg to call meta("virus") without the empty second argument. Normalize wildcard placeholders in PE/__GenericHeuristicAnalysis_By_DosX.7.sg from "??" to "..", adjust a region comment spacing, and make minor comment/formatting tweaks to improve consistency and readability.
2026-05-07 20:35:50 +03:00
DosX
68d27b52dc Add zero FileSize check to heuristic UPX Structure detection (#349)
Update scanForPackersAndCryptors_NET_and_Native to require PE.section[0].FileSize === 0 when checking three-section PE files with RWX flags. This narrows the heuristic to better detect packer/cryptor layouts (first section with zero FileSize) and reduce false positives. Change is in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg.

Co-Authored-By: Yosef Khaled <124172634+tenzzzzzz@users.noreply.github.com>
2026-05-07 19:54:55 +03:00
DosX
a4703c0851 dbs_min update 2026-05-07 14:08:32 +03:00
DosX
bbb20c1c7d Refactor PE debug data detection
Remove unused nDataSize parameter and simplify detectUnknownDebugData signature; use PE.getDebugDataSize(i) for the size check. Compact and reformat switch cases in detect() (single-line cases and grouped fall-throughs) and normalize empty-string arguments to String() for consistent typing in _setResult calls. Purely stylistic/refactor changes intended to preserve existing behavior.
2026-05-07 14:08:01 +03:00
DosX
699d23b935 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-07 13:57:24 +03:00
DosX
0341428200 Format and sort PE debug data types
Collect detected PE debug-data types into an array, map known type tokens to human-friendly names (e.g., CodeView, VC Feature, Ext-DLL Characteristics, Reserved (10)), preserve all-caps abbreviations (REPRO, POGO, COFF, FPO), and capitalize other types. Then sort normal names and abbreviations separately and join them into sOptions. This also replaces the previous naive toLowerCase/append approach and fixes incorrect sOptions.append usage.
2026-05-07 13:57:23 +03:00
github-actions[bot]
c69e26b0ed style: auto-format JavaScript files in db directories 2026-05-06 16:35:23 +00:00
Benjamin Funke
a7e6e6528e add NGI game engine signature 2026-05-06 18:34:25 +02:00
DosX
272fa770d7 dbs_min update 2026-05-06 19:22:54 +03:00
DosX
1047fe88ce Add Win9x CIH (Chernobyl) heuristic detection
Introduce a heuristic to detect the Win9x CIH (Chernobyl) virus by scanning for a small sequence of instruction signatures near the entry point on x86 binaries. The new code builds an instruction pattern array, searches forward from the EP offset using PE.findSignature (0x30 window), and pushes a "Win9X.CIH" verdict if all patterns are found. Also includes a minor comment spacing tweak in an unrelated mov comment.
2026-05-06 19:15:13 +03:00
DosX
3a20b3b4fb Add Slugin heuristic to PE generic scan
Add an x86 entry-point byte-pattern check to the generic PE heuristic scanner to detect Slugin infections (based on a sample referenced from securityhome). The new rule matches a sequence of instructions (pushal, call, sub ebx/esp, movs) and pushes a "Slugin" verdict when no prior verdict exists. Applied only for 32-bit PE files using PE.compareEP.
2026-05-06 18:19:47 +03:00
DosX
b074c22d23 dbs_min update 2026-05-06 17:53:01 +03:00
DosX
d5a9f45c48 Rename Amiga DB files and set compiler lang
Rename multiple Amiga database entries to use consistent prefixes (cruncher_*/sfx_*) for better categorization and filenames. Also add sLang = "E" to compiler_Amiga_E.4.sg to explicitly set the language; no other functional changes were made.
2026-05-06 17:52:49 +03:00
DosX
87d97dbebb Rename Amiga DB files and add Amiga E detector
Rename several db/Amiga rule files to use a consistent "compiler_" prefix (AMOS_Basic, Absoft_AC_Basic, Absoft_Fortran, Blitz_BASIC, Free_Pascal, Lattice_C, Storm_C). Add a new Detect It Easy rule db/Amiga/compiler_Amiga_E.4.sg (author: hypn0) that checks three entry-point signatures and sets sOptions to "type 1", "type 2" or "type 3" on detection.
2026-05-06 17:51:17 +03:00
DosX
c2c1823759 Add type prefixes to COM filenames
Rename three db/COM sample files to include type prefixes for clearer categorization. No content changes; only filenames updated:
- db/COM/WiZ_Cryptor.2.sg -> db/COM/cryptor_WiZ_Cryptor.2.sg
- db/COM/VSF&K_protection.2.sg -> db/COM/protector_VSF&K_protection.2.sg
- db/COM/WSP_self_update.2.sg -> db/COM/sfx_WSP_self_update.2.sg
This standardizes naming (cryptor/protector/sfx) for easier maintenance and discovery.
2026-05-06 17:49:50 +03:00
DosX
1c3c613c37 Rename db/COM rules and update metadata
Rename multiple detection rule files under db/COM to more specific names (e.g. Unknown_cryptors.2.sg → cryptor_cryptors_pt2.2.sg, Text_Header.1.sg → other_Text_Header.1.sg, etc.). Update metadata strings: change cryptor meta from "Unknown cryptor" to "Cryptor" and set the virus rule meta to "Cascade". Also modify the virus detection logic to append the version suffix to sName (sName += ".1701" / ".1704") instead of assigning it, preserving any existing name prefix.
2026-05-06 17:46:14 +03:00
DosX
6e24b49741 Refine AIX loader detection; clean Rust version
Rename IBM_AIX_kernel_loader.4.sg to boot_IBM_AIX_kernel_loader.4.sg and tighten detection: only set sVersion to "PowerPC" if the AIX loader was actually detected (bDetected) to avoid false positives. In compiler_Rust.4.sg apply minor comment formatting and sanitize the extracted rustc version by using File.cleanString when assigning sVersion.
2026-05-06 17:42:34 +03:00
DosX
15dfcd3a0e Rename/refactor detection rule files
Rename and tidy up multiple Detect It Easy rule files. CFBF rules Microsoft_Office and Microsoft_Installer were renamed to format_Microsoft_Office.1.sg and installer_Microsoft_Installer.1.sg and had minor whitespace/mode fixes. Several ELF rule files were renamed to the compiler_* namespace (including Free_Pascal and HP_C++), Borland_Kylix.4.sg was removed and replaced with a new compiler_Borland_Kylix.4.sg that consolidates section checks with OR conditions. Minor code cleanups: IBM_AIX kernel loader newline fix, and Oracle_Solaris_Studio improvements (initialize string via String(), combine var declarations, return cleaned strings with File.cleanString(), add braces and reorder bDetected assignment).
2026-05-06 17:40:34 +03:00
DosX
d0c2f92854 Update tool_LordPE.2.sg 2026-05-06 16:02:22 +03:00
DosX
838794cf8f Improve LordPE detection logic
Replace hardcoded PE.compare hex signatures with dynamic detection using PE.getDosStubSize() and PE.isSignaturePresent at offset 0x80 searching for the '[LordPE]' marker. Sets sOptions = 'rebuilded' on detection and marks bDetected true. Also update author comment to 'Rewritten by: DosX' and remove the old hex-based checks.
2026-05-06 16:01:39 +03:00
DosX
66caa02293 Use uppercase 'X' in TASM32 version
Normalize the detected TASM32 product version string from "5.x" to "5.X" in db/PE/compiler_TASM32.4.sg. This maps TLINK32 linker version 2.25 to a consistent uppercase format for the version placeholder.
2026-05-06 10:50:34 +03:00
DosX
50c9a9f160 Enhance LordPE detection and add variant
Add contributor header and adjust PE signature matching to use an offset (pass 2) and remove the leading MZ bytes from the pattern. Also add an else-if branch to detect an additional LordPE variant (using the same offset) and mark it as detected. Keeps the original sVersion assignment for the primary match.
2026-05-06 10:48:16 +03:00
DosX
959ce342bd dbs_min update 2026-05-06 03:40:31 +03:00
DosX
55841bcab3 Enhance WannaCry detection and cmd signature
Add stricter detection for embedded WannaCry payloads by verifying an embedded PE ('MZ') and a '.wnry' marker using the resource's FileSize. For other cases (embedded ZIP and modified variants), construct a Unicode-aware cmd signature via generateUnicodeSignatureMask("%s\\ProgramData") with padding and search both .rsrc and .data sections for the 'cmd.exe /c' invocation to improve detection of modified loaders.
2026-05-06 03:40:24 +03:00
DosX
ce8e7e5efe dbs_min update 2026-05-06 00:09:48 +03:00
DosX
f357d69aa2 Add FileSize/FileOffset aliases to Section/Resource
Introduce explicit file-prefixed properties and compatibility aliases in db/PE/_init: Resource.Name/Offset/Size were renamed to FileName/FileOffset/FileSize, and both Resource and Section now expose Size and Offset mapped to the corresponding FileSize/FileOffset. This clarifies file vs virtual fields in PE parsing while preserving existing Size/Offset accessors.
2026-05-06 00:09:17 +03:00
DosX
b536bb1b5c Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-05 23:38:59 +03:00
DosX
6aba0dbdbe Prefix db/COM filenames with categories
Rename multiple files in db/COM to include category prefixes for clearer organization. Examples: Microsoft_C.4.sg -> compiler_Microsoft_C.4.sg, SPHINX_C--.4.sg -> compiler_SPHINX_C--.4.sg, Microsoft_RTL.3.sg -> library_Microsoft_RTL.3.sg, several Crypt_/Inbuild_/Maveriks_/MrHDKiller_* -> protector_*, and LHarc_SFX.1.sg -> sfx_LHarc_SFX.1.sg. These are pure path renames (no content changes).
2026-05-05 23:38:57 +03:00
Benjamin Funke
2de391084e add X11 ELF signature 2026-05-05 18:34:54 +02:00
DosX
be5b309aaf Enhance WannaCry heuristic in PE scan
Broaden resource-name check to accept three-letter uppercase names (e.g., "XIA") and include scanning the .data section (in addition to .rsrc) for the "cmd.exe /c ..." signature. Extracted the signature into a cmdSignature constant and consolidated variable declarations for clarity. These changes improve detection of variants that embed payloads in .data or use different resource naming.
2026-05-04 21:07:25 +03:00
DosX
7b5aff505d Refine WannaCry heuristic detection
Refactors the WannaCry detection path: add a guard on PE_Cached.numberOfUnmanagedResources and check the first resource name, detect embedded executables by checking PE.resource[0] for an 'MZ' header, and fall back to the previous .rsrc signature check. Uses an isWannaCryDetected flag to centralize the decision and only push the verdict when a positive indicator is found, reducing false positives and clarifying control flow.
2026-05-04 13:53:10 +03:00
DosX
e7ac4d815f Add WannaCry heuristic to PE scanner
Introduce a heuristic in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg to detect WannaCry samples on x86. The new check matches a common entry-point prologue (push ebp; mov ebp, esp) and looks for a resource signature containing 'cmd.exe /c' pattern; when matched it pushes a verdict object with type "WannaCry". The check only runs if no other verdicts exist and targets x86 binaries. Reference to Malpedia added in a comment.
2026-05-04 03:19:28 +03:00
DosX
6b04d9db78 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-03 22:58:24 +03:00
DosX
f6ec672926 Enhance packer detection patterns and formatting
Add and refine section-name patterns to improve detection coverage: expand Denuvo section patterns (.xtls, .trace, .arch, .ooa), add a Themida fake-section regex entry and an Alienyze fake-section entry in validations, and tidy up various alignment/whitespace in the detection table. Also change the section warning text to separate offset/size with '/' instead of ' and ' for clearer messaging.
2026-05-03 22:58:21 +03:00
Hors
3acdbcf31b
Fix author 2026-05-03 20:38:32 +02:00
DosX
858571850b Map version code 20250 to "2.80+"
Add a new case in detect() (db/PE/packer_PECompact.2.sg) to map build code 20250 to sVersion "2.80+" so the detector recognizes newer 2.80 Blender builds.
2026-05-03 17:38:15 +03:00
DosX
b3db3c9b0b docs: tidy BUILD.md headings and formatting
Reformat BUILD.md for consistency and readability: standardize section headings (add spaces and unify Qt capitalization), move and reformat tutorial/link entries, add blank lines around blocks for clarity, and ensure newline at EOF. These are non-functional documentation edits to improve maintainability and presentation.
2026-05-03 17:13:45 +03:00
DosX
d36f2bc37b Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-03 17:11:34 +03:00
DosX
c634e3e171 Relax API checks in UPX-like heuristic
Broaden the heuristic condition when detecting UPX-like structures: require GetProcAddress plus either VirtualProtect or LoadLibraryA (previously VirtualProtect was mandatory), still combined with ExitProcess/CopyContext. This expands detection to variants that use LoadLibraryA and tweaks the condition grouping for clarity.
2026-05-03 17:11:22 +03:00
Benjamin Funke
1594020dad add openBSD build instructions 2026-05-03 15:20:47 +02:00
DosX
f748651449 Ignore files beginning with '..' in .gitignore
Add a '..*' pattern to .gitignore to exclude files that start with two dots.
2026-05-03 14:35:07 +03:00
DosX
e97264815b Add Huan detection and update packer heuristics
Add Huan cryptor signatures and file marker: include a fingerprint entry and the ".huan" extension to packer/cryptor detection. Remove a duplicated Perplex extension entry. Add ACProtect and PE-SHiELD fake-section name checks, normalize Themida entry placement and clean up duplicates in the fake-section name mappings. Includes reference URLs for Huan.
2026-05-03 14:32:21 +03:00
DosX
d17d5e2ecf Format and reorder .NET obfuscator signatures
Reformat the obfuscatorsAttributes array in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg for consistent spacing and aligned comments. Also adjust the order of a few signature entries (minor reordering of SkiDzEX/Sixxpack entries). No functional changes to the signature strings — just readability and style improvements.
2026-05-03 14:29:29 +03:00
DosX
68988806d9 Rewrite cryptor_Huan rule 2026-05-03 14:27:59 +03:00
DosX
dc87b939ed Improve Huan cryptor detection logic
Replace the simple section-name check with a stricter detection routine for the Huan cryptor: require exactly one import table, match a specific entry-point signature via PE.compareEP, and verify the first import functions are "VirtualAlloc" and "LoadLibraryA". Sets bDetected when matched and marks sOptions as "modified" if the last section name is not ".huan". This makes detection more accurate and flags renamed/modified samples.
2026-05-03 14:19:43 +03:00
DosX
aaf0e61ee5 Fix spacing and rename PE variable
Apply minor code-style adjustments and a variable rename for clarity. Added spaces after '//' in several comments (PKZIP-SFX, RAR-SFX, installer_instyler) to improve readability. In protector_PE-Shield, rename peAnakinSection to anakin98Section and update references to match the actual section name; this is a non-functional rename to make the code more consistent.
2026-05-03 14:01:54 +03:00
DosX
f6f3fb7093 Add ANAKiN98 signature for PE-SHiELD
Update packer signatures in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg: the PE-SHiELD entry now matches either "PESHiELD" or "ANAKiN98" to broaden detection of that packer variant in the heuristic scanner. Reference link preserved.
2026-05-03 13:54:56 +03:00
DosX
fd096d5ab4 Standardize Instyler name and move SFX rules
Move PKZIP-SFX and RAR-SFX detection rules from db_extra/LX to db/LX and add reference URLs. Normalize the installer name capitalization by changing "instyler" to "Instyler" in db/Binary/data_overlays.6.sg (sName) and in the installer rule meta("installer", "Instyler"). No functional behavior changes aside from metadata and comment updates.
2026-05-03 13:54:45 +03:00
DosX
98f77295ed Clean version strings and simplify detection check
Wrap PE.getString calls with File.cleanString to sanitize extracted version text (offsets +10, +19, +22). Replace the numeric comparison if (bDetected == 1) with a boolean truthiness check if (bDetected). Minor syntax/punctuation adjustments for consistency.
2026-05-03 13:46:24 +03:00
DosX
1fb558e833 Style/formatting cleanup in detection scripts
Normalize whitespace and formatting across multiple db/*.sg detection scripts: reindent code blocks, consolidate var declarations, reflow conditional expressions and comments, add missing trailing newlines, and standardize a version string to "2.71.X". Updated files include db/Binary/audio.AIFF.1.sg, db/PE/packer_RLPack.2.sg, db/PE/players.1.sg, db/PE/protector_PE-Shield.2.sg, db/PE/sfx_LZH_SFX.1.sg, db/PE/sfx_Zip_SFX.2.sg, db_extra/LX/PKZIP-SFX.1.sg, db_extra/LX/RAR-SFX.1.sg, db_extra/PE/ARDI-SFX.1.sg, db_extra/PE/installer_TInstall.1.sg, and db_extra/PE/installer_instyler.1.sg. These are primarily non-functional formatting changes; no logic alterations were intended except the noted version string normalization.
2026-05-03 13:46:04 +03:00
DosX
fec4822b31 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-03 13:40:49 +03:00
DosX
62b09bb07a Rename Denuvo rule and update meta key
Rename db/PE/protector_Denuvo.2.sg to db/PE/protection_Denuvo.5.sg and update the meta key from "protector" to "protection" for the Denuvo rule. No detection logic was modified; this aligns the file and meta naming with the current convention.
2026-05-03 13:40:43 +03:00
Benjamin Funke
42b9c7a62a add Alpine Linux build instructions 2026-05-03 10:04:20 +02:00
Benjamin Funke
282cf0272b add nixOS build instructions 2026-05-03 08:27:57 +02:00
hypn0chka
087f1cd239 new & update 2026-05-02 16:49:26 +05:00
hypn0chka
72a56fecbe ASProtect update 2026-05-02 13:24:28 +05:00
Benjamin Funke
8c78bd0f4b improve AGS detection 2026-05-02 08:30:18 +02:00
Benjamin Funke
60f1487b21 add ShFolder signature 2026-05-02 08:22:41 +02:00
Kaens
d758c85c6c AIF redo 2026-05-02 06:32:05 +02:00
Kaens
15a488f6b8 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-02 06:30:35 +02:00
hypn0chka
ea35f2ef42 Refinement 2026-05-02 01:59:50 +05:00
Benjamin Funke
5fe1d184b7 fix operand in RenderWare signature
It seems that both sections are not always be present together
2026-05-01 20:44:35 +02:00
scientificworld
b62c09be7a feat: add new signature of Safengine 2026-05-01 20:21:03 +02:00
DosX
6f28558c8b dbs_min update 2026-05-01 16:31:13 +03:00
DosX
d5d164af0f Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-01 16:30:44 +03:00
DosX
aa8efde347 Fix indentation in ARDI-SFX PE detector
Adjust indentation of sOptions and bDetected assignments in db_extra/PE/ARDI-SFX.1.sg so they are correctly nested under their respective if branches (for the 2002 and 1999 signatures). This is a whitespace-only change and does not alter logic.
2026-05-01 16:30:42 +03:00
Benjamin Funke
8ea8163c81 remove CkNet/DEV6 signature 2026-05-01 15:28:33 +02:00
DosX
ff38b86cf4 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-01 16:10:08 +03:00
DosX
995f85b04d Normalize opcode names and message formatting
Simplify substring usage for firstEpAsmOpCode and refactor opcode detection: rename strangeReadableOpCodesNearEp to strangeOpCodesNearEp, store opcodes in uppercase, and remove redundant toUpperCase() calls in comparisons. Also improve the displayed option text by capitalizing the detected opcode when adding the "near EP" message. These changes improve consistency and readability.
2026-05-01 16:10:03 +03:00
Kaens
a5353578e8 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-05-01 12:15:52 +02:00
Kaens
26d37cbb62 regression: reference to wrong codepage 2026-05-01 12:15:44 +02:00
Benjamin Funke
e59a01bd24 add DVM signature 2026-05-01 12:02:44 +02:00
Benjamin Funke
9b0bc4386d add LoadVMD signature 2026-05-01 10:01:36 +02:00
github-actions[bot]
e705c3314b style: auto-format JavaScript files in db directories 2026-05-01 07:51:47 +00:00
Benjamin Funke
27d01fd8df add DEV6 game engine signature 2026-05-01 09:51:04 +02:00
Benjamin Funke
33c55383cc add CkNet signature 2026-04-30 21:29:15 +02:00
hypn0chka
29b96e1391 fix 2026-05-01 00:03:52 +05:00
Benjamin Funke
b0465c4fe0 add new Denuvo game to list 2026-04-30 18:46:20 +02:00
Benjamin Funke
70dc43d7b1 add RenderWare signature 2026-04-30 18:40:11 +02:00
Benjamin Funke
6ed37c369d remark Unity signature as game engine 2026-04-30 17:11:15 +02:00
DosX
f08e72edf4 Annotate strange opcodes with byte sequences
Refactor the strangeReadableOpCodesNearEp array into a multiline list and add inline comments showing the instruction byte sequences for Cpuid, Rdtsc, Rdtscp, Rdrand, and Rdseed. Also combined the strangeOpCodeDetected declaration onto the same line. This is purely cosmetic/documentation—no logic changes.
2026-04-30 17:21:18 +03:00
DosX
285653d8d1 Detect RDRAND/RDSEED in PE heuristic
Add "Rdrand" and "Rdseed" to the strangeReadableOpCodesNearEp list so the generic PE heuristic flags hardware RNG instructions near the entry point as potentially suspicious. This improves detection of obfuscation/packing techniques that use RDRAND/RDSEED.
2026-04-30 17:14:00 +03:00
DosX
77b6e3f291 Replace Rdrsc with Rdtscp in opcode list
Update the strangeReadableOpCodesNearEp array in scanForObfuscations_Native to use the correct opcode name 'Rdtscp' instead of 'Rdrsc' (and adjust ordering). This fixes the heuristic used to detect unusual x86 instructions near the PE entry point.
2026-04-30 17:12:51 +03:00
DosX
968f3dc2ae Use emulation to get EP/ASM instructions
Replace direct disassembly helpers with emulation-based variants to improve accuracy when analyzing entry-point and nearby instructions. Renamed getEpAsmPattern -> emulateAndGetEpAsmPattern and getAsmInstructionByIndex -> emulateAndGetAsmInstructionByIndex, updated all callers in NET/Native heuristic scans, and adjusted getFirstEpAsmInstruction to use the emulated instruction getter. This change aims to better detect obfuscation patterns (NOP padding, CALL $+5 stack trick, CPUID checks, etc.) by leveraging emulation results.
2026-04-30 17:11:01 +03:00
DosX
aa40f4576a Clarify entrypoint opcode check comment
Update comment in scanForObfuscations_Native to state the check is for "strange opcodes" at the entry point rather than specifically CPUID. This aligns the comment with the surrounding code (isStrangeOpCodeNearEpPresent) and improves clarity.
2026-04-30 17:05:12 +03:00
DosX
cd2bdaa22e Mention native code emulation in PE heuristic
Update comment in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg to include "native code emulation" among the heuristic analysis techniques and adjust surrounding wording for clarity. This is a documentation/comment-only change clarifying supported analysis methods.
2026-04-30 16:58:27 +03:00
DosX
68b80ff301 Detect multiple opcodes near EP (Cpuid/Rdtsc/Rdrsc)
Generalize CPUID detection to check for multiple suspicious opcodes near the entry point. Replaced the CPUID-specific flag with a generic isStrangeOpCodeNearEpPresent and iterate over an array of readable opcodes (Cpuid, Rdrsc, Rdtsc). For non-DLL x86 binaries the first 15 instructions are scanned (retaining the safety check); when a match is found the opcode is logged and the corresponding "<Op> near EP" option is added.
2026-04-30 16:55:57 +03:00
DosX
ddf1ddee3e Add PELock x32 heuristic pattern
Add a heuristic signature for PELock (x32) to the PE heuristic database. The pattern "6A6068........E8........BF94" was inserted into the entries array in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg to improve detection of 32-bit PELock-packed samples.
2026-04-30 16:55:36 +03:00
DosX
39ed0b25a6 Add space in protector meta string
Insert a space between 'Thinstall' and '(VMware ThinApp)' in db/PE/protector_Thinstall.2.sg meta(...) for improved readability/consistency. This is a non-functional formatting change and does not alter detection logic.
2026-04-30 16:32:28 +03:00
DosX
f972e1be9d dbs_min update 2026-04-30 15:32:36 +03:00
DosX
42719daa2a Enhance MPRESS detection; normalize NT Packer sig
Update MPRESS detection logic: set default sOptions to "modified DOS", always run the non-.NET EP signature checks (removed the !bDetected guard), and add a post-detection check to mark the binary as having modified sections when section names differ from ".MPRESS1"/".MPRESS2". Also normalize the NT Packer 2.0 entry-point signature to a contiguous hex string to fix matching/parsing of the pattern.
2026-04-30 15:29:56 +03:00
DosX
2c0fcf94b4 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-04-30 15:29:08 +03:00
DosX
9a985f505b dbs_min update 2026-04-30 15:28:17 +03:00
horsicq
fd4f68c9b3 chore: update date to 2026-04-30 in info.ini files 2026-04-30 00:42:22 +02:00
DosX
f1dd2462d0 Add packer signatures; update Themida sections
Update PE heuristic database (db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg): add signatures for KByS (x32) and NakedPacker (x32) — "68........E8........C3C3", "60FC0FB605", and "60B8" — to improve packer detection. Also remove ".imports" from the Themida 3.XX section-name list to refine Themida detection.
2026-04-29 18:29:33 +03:00
DosX
417b9d0eaf README: remove Telegram bot link and fix link spacing
Remove the Telegram Bot entry from the contact section and normalize extra spacing in the DiE API Library link label. Minor README formatting/cleanup to tidy up links.
2026-04-29 17:57:30 +03:00
DosX
03569b69cc Allow optional segment in Denuvo export regex
Update protector_Denuvo.2.sg to relax the export-name regex used by PE.isExportFunctionPresentExp. The previous /^ANTICHEAT_OBFUSCATE_.+_CODEMARKER$/ required a middle token (and underscore), which missed names like ANTICHEAT_OBFUSCATE_CODEMARKER. The new /^ANTICHEAT_OBFUSCATE_(.+_)?CODEMARKER$/ matches both variants.
2026-04-29 01:32:14 +03:00
DosX
e91c96986d Relax Activation DLL detection regex
Update db/PE/protector_Denuvo.2.sg: broaden the PE.isLibraryPresentExp regex to match both '/' and '\\' path separators, properly escape the dot before 'dll', and add case-insensitive matching. This makes detection of Core/Activation.dll and Core\Activation64.dll more robust across platforms and case variations.
2026-04-28 20:10:19 +03:00
DosX
becaf47805 dbs_min update 2026-04-27 23:12:24 +03:00
DosX
7c35d8d024 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-04-27 23:11:58 +03:00
horsicq
37ec902b21 chore: update date to 2026-04-27 in info.ini files 2026-04-27 21:08:14 +02:00
github-actions[bot]
8b16fbdded style: auto-format JavaScript files in db directories 2026-04-27 17:03:09 +00:00
Benjamin Funke
f08b841be0 add Games using Denuvo to list 2026-04-27 19:02:23 +02:00
DosX
c7f4aac5c2 Add UX-Locker NET string heuristics
Enhance GenericHeuristicAnalysis_By_DosX by adding multiple PE.isNetUStringPresent checks to broaden UX-Locker detection. New signatures include memory/service messages ("\r\nMemory section at address 0x0424* is locked!", "\r\nService UXCryptor started.", "\r\n\r\n * Windows blocked!"), "lc.exe error", bypass markers ("ByPassWarnMsg", "ByPassMessage"), "ux-cryptor.exe", the ransom message "YOU ARE HACKED!\\1", and a combined pattern requiring both "_o_program" and "border_1". These additions improve detection coverage for UXCryptor/locker behaviors.
2026-04-27 00:28:50 +03:00
DosX
6dde9348d2 Simplify export name heuristic in PE scan
Replace a complex export-name check inside scanForObfuscations_Native with a simpler condition that flags exports starting with a digit or containing non-ASCII characters. Removed the additional checks for mangled names and underscore-replaced obfuscation testing. Note: the parentheses were changed, so the !isAsciiString check is now evaluated independently of the functionName truthiness (behavior may differ subtly).
2026-04-26 22:51:46 +03:00
DosX
747c154e9a dbs_min update 2026-04-26 21:07:33 +03:00
DosX
968b1054a4 Add kernel32 check; tweak NsPack flag
Update PE heuristic rules: add a kernel32 library presence check to the UPX-like detection conditional to ensure VirtualProtect is resolved from kernel32, and change NsPack detection flag from 0 to -1. Also apply non-functional formatting/comment alignment across db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg for readability.
2026-04-26 21:07:00 +03:00
DosX
655ff21045 Refine PE detection for Audiokinetic and Denuvo
Add an inline comment marking the static export option for Audiokinetic detection (sOptions = "static" // EAT). Tighten Denuvo protector detection by consolidating separate export checks into a single conditional that requires >10 imports, a d3d library import, and an export matching GetDenuvo(TimeTicketRequest|TicketLocation). This removes redundant individual export checks and reduces false positives by adding import/library heuristics.
2026-04-26 20:32:16 +03:00
DosX
2293bdca52 Improve Denuvo and SteamStub detection
Broaden Denuvo signature and add heuristics for more reliable detection. The packer signature now recognizes .etext/.xtext section names in addition to .ecode/.xcode. Added a heuristic that marks Denuvo if Core/Activation(64).dll is present or if the binary has >10 sections, >10 unmanaged imports, and either a .etext/.xtext section or exports like GetDenuvoTimeTicketRequest/GetDenuvoTicketLocation. SteamStub detection was moved earlier and now checks for the E8 stub at the entry point and a trailing .bind section. Removed duplicated older checks and added contextual comments/links.
2026-04-26 20:30:16 +03:00
DosX
721157c5aa Enhance Audiokinetic AkTlsAllocateSlot detection
Add contributor tag and refine detect() to prefer PE.isFunctionPresent("AkTlsAllocateSlot") first; if only the export exists, set sOptions = "static" and mark detection. This distinguishes static vs exported symbol cases for more accurate Audiokinetic library detection.
2026-04-26 20:27:31 +03:00
DosX
d2e77562d6 Remove AMD FidelityFX rule; lower Denuvo sections
Delete obsolete db/PE/library_AMD_FidelityFX.4.sg detection rule. Update db/PE/protector_Denuvo.2.sg to relax the section-count check from >12 to >10, broadening matches for Denuvo-protected binaries (logic and other checks unchanged).
2026-04-26 20:21:23 +03:00
DosX
5f6f853bd1 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-04-26 20:19:19 +03:00
Benjamin Funke
76bccddf87 add Audiokinetic signature 2026-04-26 18:22:46 +02:00
Benjamin Funke
0a1d418166 add AMD FidelityFX signature
Found in PRAGMATA demo game executable
2026-04-26 18:13:21 +02:00
DosX
7b6b7bb9e9 Refine Denuvo PE section detection regexes
Tighten and expand section-name checks in db/PE/protector_Denuvo.2.sg: require both the .[e|x](text|code) and corresponding data section when checking PE files with >12 sections, extend accepted data section name patterns (add .sx and allow .code variants and xp/xd forms), and update detection comments to include Deathloop and Immortals Fenyx Rising alongside Atomic Heart. Also includes a minor whitespace adjustment.
2026-04-26 19:09:39 +03:00
Benjamin Funke
44a180753b add Capcom KPKA archive to PAK signature 2026-04-26 18:00:52 +02:00
DosX
b362e3280b dbs_min update 2026-04-26 18:02:30 +03:00
DosX
4529a911dd Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-04-26 17:47:18 +03:00
DosX
b09d87dc86 Refine Denuvo PE detection & version
Adjust Denuvo detection heuristics: increase section-count threshold from >6 to >12, tighten and anchor section-name regular expressions (add '^' anchors, include 'my' and explicit .[ex]text pattern), and consolidate some checks to use isSectionNamePresentExp. Update the Atomic Heart version tag from "17.0" to "12.0-17.0+". These tweaks aim to reduce false positives and improve matching for newer builds.
2026-04-26 17:47:16 +03:00
Benjamin Funke
1d6d50bfc6 add Void game engine signature 2026-04-26 16:14:24 +02:00
DosX
dac2de79cd Add ezip signature to heuristics
Add 'ezip' (1.X) signature to scanForPackersAndCryptors list in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg to improve detection of ezip-packed binaries. Signature hex: 0x174efb84.
2026-04-26 17:10:21 +03:00
DosX
0671c1599d Add NakedPacker signature to heuristics
Insert NakedPacker entry (version 1.0, id 0x64910c88) into the packers list in scanForPackersAndCryptors_NET_and_Native within db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg to add detection for NakedPacker.
2026-04-26 17:10:00 +03:00
DosX
2c509cc1e7 Add NTPacker signature to heuristics
Add an NTPacker entry (version 1.0, signature 0x1a721d2d) to the packers/cryptors array in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg so the heuristic scanner can detect files packed with NTPacker.
2026-04-26 17:09:41 +03:00
DosX
611bef1fbf Add JDPack 1.01 entry, normalize name case
Insert a new signature for JDPack 1.01 (hash 0xd9380ce5) and update the existing entry to use the consistent 'JDPack' casing for the 2.00 signature (0xc002db0e) in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg. This improves packer detection accuracy and naming consistency.
2026-04-26 17:09:29 +03:00
DosX
15977d35cc Add NTPacker signature to PE heuristics
Add new signature 558BEC83C4E05333C0 to scanForPackersAndCryptors_NET_and_Native in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg to detect NTPacker (x32) samples. Improves heuristic detection coverage for this packer.
2026-04-26 17:09:01 +03:00
DosX
dcf2483238 Expand Petite packer signatures
Enhance PE heuristic DB by adding multiple detection signatures for the Petite packer: introduce a 2.1 entry with three signatures, retain the existing 2.2 entry, and add two 2.X signatures. These changes improve detection of Petite variants in the scanForPackersAndCryptors_NET_and_Native routine while preserving the original reference link.
2026-04-26 16:47:28 +03:00
DosX
e3d73da5fe Use regex for vcruntime140 detection
Replace explicit checks for vcruntime140.dll and vcruntime140_1.dll with PE.isLibraryPresentExp using a regex that matches multiple vcruntime140 naming variants (debug builds, _1, hashed suffixes, optional .dll). This broadens library detection to capture more runtime DLL name patterns while preserving the existing behavior of setting sOptions to "dynamic" and bDetected to true in db/PE/library_Microsoft_C_Runtime.4.sg.
2026-04-26 15:57:54 +03:00
DosX
e95a188319 Fix detection of non-text first PE section
Corrects the conditional in scanForObfuscations_Native so the heuristic flags when the first PE section is not ".text", ".textbss" or ".code" and a text section exists elsewhere. The previous check only triggered when the first section was exactly ".code", which missed other non-text section names and caused false negatives in the text-section-not-first detection.
2026-04-26 15:18:04 +03:00
DosX
d0a45ff469 Refine UPX-like detection split structure/IAT
Separate UPX-like structure detection from import/IAT checks by adding isUpxLikeImports. Move VirtualProtect/GetProcAddress/ExitProcess|CopyContext validation into a nested branch so we only mark IAT-like when imports are present. Update logging to show R(W) and build the option label to include "and IAT" only when import checks pass. Also require both structure and imports for the final ~packer UPX-like result to reduce false positives.
2026-04-26 15:17:49 +03:00
DosX
0d8e4d3071 Refactor licensing strings array and add DRM links
Reformatted the licesingStrings array into a multiline list for readability (entries reordered but behavior unchanged). Added inline comments linking to Denuvo and SteamStub resources above their respective detection checks to provide context for the DRM heuristics.
2026-04-26 14:14:35 +03:00
DosX
9c63f67aa2 Restrict Denuvo DLL regex to exact filenames
Replace a loose library check with a stricter, anchored regex so the heuristic only matches exact DLL names (e.g. Core/Activation.dll or Core/Activation64.dll, allowing either slash or backslash and case-insensitive). This reduces false positives when detecting Denuvo activation libraries.
2026-04-26 14:08:33 +03:00
DosX
37fc7cec7b Add SteamStub (.bind) detection
Register SteamStub as a known packer ('.bind') and detect SteamStub DRM in licensing scans. Adds a packer list entry for SteamStub and checks for the SteamStub pattern in scanForLicensingSystems by verifying the entry-point opcode via PE.compareEP("E800000000") and that the last section is named ".bind", then adds the "SteamStub DRM" option when matched.
2026-04-26 13:54:07 +03:00
DosX
5d2d941b3e dbs_min update 2026-04-26 13:18:15 +03:00
DosX
629649560c Require first PE section not be .text
Add a check in the Denuvo protector detection to ensure PE.section[0].Name !== ".text" before applying the existing heuristics (sections > 6 and special section-name patterns or .arch/.xtext/.xtls). This reduces false positives for binaries whose first section is .text and improves readability by splitting the long conditional across lines.
2026-04-26 13:18:00 +03:00
DosX
4054e429d9 Add Denuvo signature to PE heuristic DB
Introduce a Denuvo entry to the PE heuristic database in scanForPackersAndCryptors_NET_and_Native. Adds a pattern (regex for .excode/.xcode and ".ooa") so the scanner can recognize Denuvo-protected binaries and improve detection coverage.
2026-04-26 13:17:27 +03:00
DosX
29356b8c96 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-04-26 13:05:38 +03:00
Benjamin Funke
d20ce696f0 dbs_min update 2026-04-26 07:08:48 +02:00
Benjamin Funke
31015a813e refactor IMG signature 2026-04-25 19:36:51 +02:00
Benjamin Funke
5d4e5b7706 remove WIP status from LinXP signatures 2026-04-25 19:14:31 +02:00
Benjamin Funke
15ff60a0d0 refactor VM2 signature
Detect the version number over regex instead of hardcode an specific one
2026-04-25 17:27:11 +02:00
DosX
d0e3e4d688 Include .udata in Denuvo section regex
Update PE protector detection regex in db/PE/protector_Denuvo.2.sg to also match '.udata' sections by changing \.(e|sr|x(p|d))data$ to \.([eu]|sr|x(p|d))data$. This expands detection coverage for Denuvo-protected native PE files that use .udata sections.
2026-04-25 14:50:48 +03:00
DosX
63362afcf2 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-04-25 13:18:27 +03:00
Benjamin Funke
fe85108674 add more Sputm versions 2026-04-24 21:05:28 +02:00
github-actions[bot]
b747221e48 style: auto-format JavaScript files in db directories 2026-04-24 13:14:42 +00:00
Benjamin Funke
17d762f3d9 add Sputm game engine signature 2026-04-24 15:13:57 +02:00
DosX
c0fb8ecd80 Require .NET object when detecting Phoenix protector
Tighten the Phoenix PE detector by adding a PE.isNetObjectPresent("?0?") check before the existing signature match, reducing false positives for non-.NET binaries. Updates db/PE/protector_Phoenix.2.sg to only mark version 1.7-1.8 when both the .NET object and signature are present.
2026-04-24 00:13:40 +03:00
DosX
3320b2098f Rename protector rule to packer and tighten detection
Rename db/PE/protector_Sixxpack.2.sg to db/PE/packer_Sixxpack.2.sg and change meta tag from "protector" to "packer". Add an additional guard so detection only runs when PE.isNet() and PE.isNetUStringPresent("Data Error") is present, preserving existing signature checks for versions 2.2, 2.4 and 2.X.
2026-04-24 00:08:08 +03:00
DosX
53925ddbb1 Require AssemblyInfoAttribute for detection
Add a check for PE.isNetObjectPresent("AssemblyInfoAttribute") in the Crypto Obfuscator detector before matching the signature. This ensures the detection only runs for managed assemblies that include the AssemblyInfoAttribute, reducing false positives when PE.isNet() is true but the attribute is absent.
2026-04-24 00:03:14 +03:00
DosX
18bc55322a Enhance .netshrink PE detection
Refine detection for the .netshrink packer: add an "Enhanced: DosX" note, require a specific .NET object presence (PE.isNetObjectPresent("\u0002\u2001")) to reduce false positives, and add a resource-based signature ('stub_2.netrsrc.resources') to detect 2.9+ builds. Existing 2.01 Demo signature checks are preserved.
2026-04-23 23:56:24 +03:00
DosX
a9d1568e8c dbs_min update 2026-04-23 16:36:08 +03:00
DosX
c5dd72bec8 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-04-23 16:35:41 +03:00
DosX
4f5b5288d0 Rename MS-DOS db files to include type prefixes
Rename several files in db/MSDOS to add explicit type prefixes for clearer organization and consistency. Renamed files:
- Meridian_Ada.4.sg -> compiler_Meridian_Ada.4.sg
- Meridian_Pascal.4.sg -> compiler_Meridian_Pascal.4.sg
- Visual_Cobol.4.sg -> compiler_Visual_Cobol.4.sg
- Netware_loader.1.sg -> loader_Netware_loader.1.sg
- Black_fist.2.sg -> packer_Black_fist.2.sg
- PROPACK_SFX.1.sg -> sfx_PROPACK_SFX.1.sg
2026-04-23 16:35:33 +03:00
horsicq
082f73b1b9 chore: update database dates and cmake install 2026-04-23 15:07:33 +02:00
hypn0chka
365f4ba00d new installers 2026-04-22 22:32:12 +05:00
Benjamin Funke
871c20d446 add release dates to changelog 2026-04-22 18:56:39 +02:00
DosX
3974ca32fe Fix spelling: optimisation -> optimization
Update changelog entry to use American English spelling: changed 'Add AVX2 and SSE2 optimisation' to 'Add AVX2 and SSE2 optimization'. This is a documentation-only change with no code impact.
2026-04-22 15:00:57 +03:00
DosX
fd427c9532 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-04-22 14:59:06 +03:00
DosX
b02c727c99 Remove legacy WAYBACK_SUPPORT handling
Delete obsolete boolean-version check from db/language::_setLang. The early return for when version === false (WAYBACK support) was legacy compatibility and is no longer needed, simplifying the language detection control flow.
2026-04-22 14:59:04 +03:00
Benjamin Funke
9f8c9fa6c0
Update die_version.txt 2026-04-22 09:33:59 +02:00
Benjamin Funke
c506b83bc1
Update create_beta.yml 2026-04-22 08:34:09 +02:00
Benjamin Funke
7678aff0c1
add workflow_dispatch to run manual 2026-04-22 08:33:15 +02:00
horsicq
27de375a4d docs: update changelog for version 3.21 2026-04-22 00:47:40 +02:00
horsicq
3fd35281cd chore: update db date to 2026-04-21 2026-04-21 23:17:59 +02:00
Benjamin Funke
c6565004bd Update version number to 3.21 2026-04-21 17:17:05 +02:00
horsicq
1c49166821 chore: update database dates to 2026-04-20 2026-04-20 18:56:55 +02:00
Benjamin Funke
74dff012bb update changelog notes 2026-04-20 17:51:24 +02:00
horsicq
9609dd806f chore: update database dates to 2026-04-19 2026-04-19 19:18:22 +02:00
DosX
725f3f759d Reformat YARA rules indentation
Normalize indentation and spacing across multiple YARA rule files. Changes are whitespace/formatting-only (alignment of comments, blocks, and string sections) and do not modify rule logic or conditions. Updated files: yara_rules/DiE_BasicHeuristics_by_DosX.yar, yara_rules/DiE_EnhancedHeuristics_by_DosX.yar, yara_rules/DiE_InterestingThings_by_DosX.yar, yara_rules/crypto_signature.yar, yara_rules/malware_analisys.yar, yara_rules/packer.yar, yara_rules/packer_compiler_signatures.yar, yara_rules/peid.yar.
2026-04-19 13:53:40 +03:00
DosX
ecc0076979 Normalize hex wildcard groups in peid.yar
Consolidate spaced byte-wildcards across many YARA signatures in yara_rules/peid.yar (e.g. "?? ?? ??" -> "??????" and similar) to make wildcard runs consistent and more compact. This is a bulk normalization change to improve readability and ensure uniform pattern expressions across multiple rules at the PE entry-point signatures.
2026-04-19 13:46:04 +03:00
DosX
1187c3d9a9 Format YARA packer_compiler_signatures.yar
Normalize indentation and formatting in yara_rules/packer_compiler_signatures.yar: convert tabs/irregular spacing to consistent spaces, align comments and condition blocks, and standardize meta/strings formatting across many rules. This is a whitespace/style-only change — no detection logic or rule conditions were altered.
2026-04-19 13:44:47 +03:00
DosX
c88e215732 Normalize YARA patterns and meta formatting
Reformat yara_rules/packer.yar: standardize 'meta' author lines and normalize hex string patterns for readability and consistency. Consecutive 00 bytes and wildcard groups (??) were compacted/standardized, spacing in byte sequences was unified, and several pattern placeholders were adjusted to a consistent notation. No functional rule logic was changed—these are formatting/normalization edits to make maintenance of YARA signatures easier.
2026-04-19 13:42:26 +03:00
DosX
e04587d11a Inline condition clauses in YARA rules
Reformatted yara_rules/malware_analisys.yar by merging multi-line "condition:" labels and their expressions onto single lines across many rules for consistent styling and readability. These are purely formatting/whitespace changes and do not alter rule logic.
2026-04-19 13:41:45 +03:00
DosX
37ecc852ff Compact repeated hex bytes in peid.yar
Refactor many YARA rule string literals to collapse repeated byte sequences (e.g. runs of 0x00, 0x90, etc.) into compact continuous hex tokens across multiple rules. This normalizes formatting of the pe.entry_point patterns for readability and consistency without changing rule conditions or semantics.
2026-04-19 13:30:35 +03:00
DosX
fd8f26fa9d Reformat peid.yar rules to compact format
Normalize formatting in yara_rules/peid.yar by collapsing multi-line 'strings' and 'condition' blocks into single-line declarations and adjusting indentation across many rules. This is purely a stylistic/whitespace change to make the file more compact; no rule logic or signatures were modified.
2026-04-19 13:26:41 +03:00
DosX
a1c34eb6d4 dbs_min update 2026-04-19 13:15:22 +03:00
DosX
ab7e043893 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-04-19 00:05:12 +03:00
DosX
a718dbf74a Rename MSDOS DB files to categorized names
Standardize db/MSDOS filenames by adding type prefixes (compiler_, cryptor_, protector_, sfx_, other_PK_). Rename multiple detection rule files accordingly. Also normalize file modes for protector_DAEMON_Protect.2.sg and sfx_Disk_eXPress.1.sg (100755 -> 100644) and apply minor formatting/whitespace normalization; no detection logic changes.
2026-04-19 00:05:06 +03:00
horsicq
fd37b8ca7d chore: update db dates and workflow permissions 2026-04-18 15:38:29 +02:00
Benjamin Funke
c24037d288
Upgrade action-gh-release to version 3 for db-release 2026-04-18 12:02:43 +02:00
Benjamin Funke
5dbfde97f8
update actions/checkout to v6 2026-04-18 12:01:37 +02:00
Benjamin Funke
65a0fb112e
update softprops/action-gh-release to v3 2026-04-18 12:00:35 +02:00
Benjamin Funke
d827ae17fa merge SSH signatures in one file 2026-04-18 09:09:23 +02:00
Benjamin Funke
ca88a8f915 move file extensions to comments in Director signature 2026-04-18 08:51:28 +02:00
DosX
5325150da2 dbs_min update 2026-04-17 23:55:21 +03:00
DosX
32294fcd8d Revert "refactor: simplify PE heuristic analysis logic"
This reverts commit f16b1733d6.
2026-04-17 23:45:20 +03:00
DosX
07eadbc2ed Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-04-17 23:44:13 +03:00
DosX
31d0e66eb2 Add type prefixes to COM DB filenames
Rename 13 files in db/COM to include role/type prefixes (compiler_, cryptor_, packer_, protector_, self-displayer_) to better categorize entries. Examples: PC_FORTH -> compiler_PC_FORTH, Deep_Crypter -> cryptor_Deep_Crypter, simple_ansi_viewer -> self-displayer_simple_ansi_viewer.
2026-04-17 23:44:07 +03:00
horsicq
f16b1733d6 refactor: simplify PE heuristic analysis logic 2026-04-17 21:33:34 +02:00
DosX
29102edba7 dbs_min update 2026-04-17 21:56:53 +03:00
DosX
430afd6713 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-04-17 21:56:04 +03:00
horsicq
c6351f92b0 chore: update db dates to 2026-04-17 2026-04-17 18:16:35 +02:00
DosX
1612db3b4d Allow CopyContext and RW in UPX-like heuristic
Relax detection in scanForPackersAndCryptors_NET_and_Native(): accept the third section as read-write in addition to read, and treat CopyContext as an alternative to ExitProcess when identifying UPX-like layouts. This accommodates variants such as UPX-Patcher while preserving the original RWX/RWX/ R pattern detection logic.
2026-04-17 01:54:53 +03:00
DosX
157d41ff0b Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-04-17 01:51:47 +03:00
DosX
6d8417dbff Index sections using dosxSection.Number
Fix PE section lookup in tool_UPX-Patcher by using dosxSection.Number when computing fishSectionByIndex. Previously the code used dosxSection directly (which can be an object), producing an incorrect index; this change ensures a numeric index is used and prevents detection failures.
2026-04-17 01:51:43 +03:00
horsicq
ed9faf1f4b feat: add GitHub workflow and database info files 2026-04-16 21:01:09 +02:00
DosX
cfd70f86f3 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-04-16 19:13:38 +03:00
DosX
4bd43be317 dbs_min update 2026-04-16 19:13:32 +03:00
DosX
571cd73f94
Update README.md 2026-04-16 15:25:42 +03:00
DosX
d6818b2ef4 Add section flag constants and UPX-like detection
Introduce reusable SECTION_FLAGS_* constants and derived RWX masks to avoid duplicated local constants. Add a heuristic for detecting UPX-like binaries (3-section layout + RWX checks + common imports) and mark such files as a suspicious packer. Refactor packer/protector detection flow to use an isPackerOrProtectionNotDetected guard and to emit a "UPX-like" suspicion when appropriate. Also replace local RWX_MASK/RWX_CODE_MASK usage in scanForObfuscations_Native with the new global masks.
2026-04-16 13:21:46 +03:00
DosX
47f4b7d1cc dbs_min update 2026-04-15 15:56:54 +03:00
DosX
e507bc82e3 Recognize FNOP as NOP in heuristic scan
Treat the floating-point FNOP opcode the same as NOP in scanForObfuscations_Native by adding FNOP to the initial opcode check. This ensures sequences starting with FNOP are identified as NOPs and improves detection of NOP-equivalent obfuscation patterns.
2026-04-15 15:55:48 +03:00
DosX
1eb38ef069 Remove author email from rule header
Remove the author line containing 'horsicq <horsicq@gmail.com>' from the header comment in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg
2026-04-15 15:45:11 +03:00
DosX
3c7a9a47b3 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-04-15 15:30:08 +03:00
DosX
ae3196bcc8 Add Scylla PE detection rule
Add a Detect It Easy rule (db/PE/tool_Scylla.6.sg) to identify Scylla reconstructed PE dumps. The script (authored by DosX) skips .NET binaries, checks the last section for the name ".SCY" and a characteristics mask (0xe0000020), and marks the sample as a reconstructed dump by setting sOptions and bDetected. Includes upstream project link metadata.
2026-04-15 15:30:01 +03:00
DosX
763f42eefa Detect phantom EAT in PE heuristics
Add a heuristic in scanForObfuscations_Native to detect a phantom Export Address Table (EAT). If the PE header indicates an export section but numberOfUnmanagedExports is zero, the code now flags the sample by adding the "Phantom EAT" option. This helps identify an obfuscation trick that misleads PE parsers and analyzers.
2026-04-15 15:29:15 +03:00
Benjamin Funke
476d4d9a98 update Ubuntu version in BUILD.md 2026-04-13 18:21:26 +02:00
Benjamin Funke
6f4c7ec764 add more missing versions to changelog 2026-04-11 19:33:56 +02:00
DosX
8d9a65397c dbs_min update 2026-04-10 16:44:47 +03:00
DosX
169eec8e54 Add PE security/trust anomaly YARA rules
Introduce two YARA rules to detect PE signature/trust anomalies under a new section: Anomaly__AuthenticodeCorrupt (flags a present security directory with size smaller than a minimal PKCS#7 structure, ~8 bytes) and Anomaly__SecurityDirPointsBeyondFile (flags when the security directory offset + size exceeds the file size, indicating appended or corrupt data). Both rules target PE files and inspect pe.data_directories[4].
2026-04-10 16:41:50 +03:00
DosX
6935003c4f Add structural PE anomaly YARA rules
Append several structural/whole-file heuristic YARA rules to detect anomalous PE characteristics often associated with packers or custom toolchains. Rules added: TinyPE (filesize < 1KB), DOSStubMissing (e_lfanew < 0x50 indicating no DOS stub), DOSStubCustom (missing standard DOS stub strings), SelfModifyingHeaders (PE header located in a writable section), WholeFileHighEntropy (overall entropy > 7.0 for files >4KB), and VersionInfoMissing (native non-DLL PE with no version resource). Includes comments and detection thresholds explaining the rationale for each heuristic.
2026-04-10 16:41:40 +03:00
DosX
4017d1be29 Add PE resource anomaly YARA rules
Introduce two YARA rules to detect anomalous resources in PE files:

- Anomaly__ResourceHighEntropy: flags .rsrc sections >4KB with entropy >7.4 (used to catch likely encrypted/compressed payloads while acknowledging legitimate high-entropy resources like PNG/JPEG).
- Anomaly__ResourceDominatedBinary: flags PE files where a .rsrc section comprises >90% of the file size (possible embedded payload), excluding DLLs to reduce false positives.

Also adds a Resource anomalies comment header for organization.
2026-04-10 16:41:14 +03:00
DosX
5db4d1bc67 Add PE data-directory anomaly YARA rules
Introduce three YARA rules to detect PE data-directory anomalies: TLS callbacks (potential anti-debug/evasion), stripped debug directory despite a Rich header, and presence of CLR metadata in a PE with many native imports (mixed .NET/native). Rules check relevant data_directories indices (TLS=9, DEBUG=6, CLR=14), Rich signature, size, and import count to flag suspicious or uncommon binaries.
2026-04-10 16:41:02 +03:00
DosX
7626af9590 Add PE timestamp anomaly YARA rules
Introduce three new YARA rules detecting suspicious PE TimeDateStamp values: FutureTimestamp (pe.timestamp > Jan 1, 2026), AncientTimestamp (pe.timestamp < Jan 1, 1990 and not zero), and ZeroTimestamp (pe.timestamp == 0). These heuristics help flag likely forged, pre-PE-era, or intentionally stripped timestamps for further analysis.
2026-04-10 16:40:36 +03:00
DosX
ef54ac77bf Add PE overlay anomaly YARA rules
Add two YARA rules to detect suspicious overlays in PE files: Anomaly__LargeOverlay (flags overlays larger than 50% of the file, indicating possible embedded payloads) and Anomaly__OverlayPresent (flags overlays >1KB with entropy >7.0, indicating compressed/encrypted data). These heuristics help surface appended data that may contain hidden or packed content for further analysis.
2026-04-10 16:40:21 +03:00
DosX
df1038c6c2 Add PE import anomaly YARA rules
Add three import-related heuristics to DiE_EnhancedHeuristics_by_DosX.yar to detect suspicious PE import tables: Anomaly__NoImports (native PE with zero imports, excluding DLLs), Anomaly__SingleImportDll (native PE with exactly one import DLL), and Anomaly__SuspiciousMinimalImports (PEs importing only LoadLibrary[AW] and GetProcAddress). These rules help flag likely packed/crypted executables that resolve APIs manually and supplement existing entry-point/int3 heuristics.
2026-04-10 16:40:06 +03:00
DosX
a41cd5eca0 Add PE entry-point anomaly YARA rules
Introduce a new "Entry point anomalies" block with multiple YARA rules to detect suspicious PE entry-point placements and characteristics. Adds rules: Anomaly__EntryPointInLastSection (EP in last section, common for appended code/packers), Anomaly__EntryPointInNonCodeSection (EP inside a section without CODE flag), Anomaly__EntryPointOutsideAnySections (EP not in any section, skips DLLs and zero EP, ignores sections with no raw data), Anomaly__EPStartsWithNops (EP begins with a 4+ NOP sled), and Anomaly__EPStartsWithInt3 (EP begins with INT3). Rules use raw file offsets for pe.entry_point and include guards to reduce false positives.
2026-04-10 16:39:47 +03:00
DosX
bfd32a1317 Add section anomaly heuristics to YARA
Add multiple YARA rules to detect PE section anomalies commonly associated with packers, obfuscators, or tampered binaries. New rules cover: writable+executable code sections, executable .data/.rdata/.bss, empty or non-printable section names, sections with zero raw size but non-zero virtual size and execute flag, raw data extending beyond file size, virtual size much larger than raw size (excluding .bss), high-entropy sections (excluding .rsrc), and duplicate section names. These heuristics improve detection of suspicious PE files for further analysis.
2026-04-10 16:39:17 +03:00
DosX
8fc2c41722 Add DiE enhanced PE heuristics YARA rules
Add new YARA rules (yara_rules/DiE_EnhancedHeuristics_by_DosX.yar) for the Detect It Easy project authored by DosX. The file imports pe and math and defines reusable predicates (IsPE, IsNative, Is64) plus multiple PE header anomaly rules to detect suspicious or tampered PE files (e.g. zero-sized optional header, suspicious image base, zero entry point, entry point beyond image, invalid/tiny alignments, checksum mismatch, zero size_of_image, large section counts, suspicious subsystem, and forced integrity dll characteristic). These heuristics help flag manually crafted, packed, or corrupted binaries; copyright/author metadata is retained in the file.
2026-04-10 16:38:55 +03:00
DosX
4d6d56cc30 Avoid appending empty debug type
In detect(), assign sType.toLowerCase() to a local variable and only append it to sOptions when non-empty. This prevents empty strings from being added to sOptions when the debug type is blank, making debug data type handling more robust.
2026-04-10 16:21:25 +03:00
DosX
712ae27327 Enhance UX-Locker NET detection heuristics
Broaden the UX-Locker heuristic to trigger not only on lc.exe/lc module or assembly names but also on several .NET indicators. Add checks for PE.isNetObjectPresent("0xC00000FD: The memory location at the specified address returned \"null\"") and PE.isNetUStringPresent for "%temp%\\$unlocker_id.ux-cryptobytes", "attrib $h $s $r $i /D ", and "OneDrive10293" so samples without the original module/assembly names are still identified.
2026-04-10 16:14:35 +03:00
DosX
05d00ffb61 Heuristic: flag UX-Locker for 'lc' modules
Add a heuristic in scanForMaliciousCode_NET_and_Native to push a UX-Locker verdict when no other verdicts exist and the .NET module or assembly name is 'lc.exe' or 'lc'. The verdict object includes empty version and details fields. This introduces an early detection rule before existing RAT/anti-AV checks.
2026-04-10 15:49:33 +03:00
Benjamin Funke
1cb4eb11da merge changelog from old-die 2026-04-09 14:29:15 +02:00
Benjamin Funke
5203bef429 add release dates to changelog 2026-04-09 14:14:06 +02:00
DosX
ea101f2f63 Normalize OS version '0' to empty string
In detect() (db/ELF/_ELF.0.sg) handle the case where ELF.getOperationSystemVersion() returns the string "0" by converting it to an empty string (sVersion = String()). This prevents a misleading '0' value from being treated as a real version when verbose output is enabled.
2026-04-09 00:03:55 +03:00
horsicq
ad0f19a32c docs: fix typos and update method names in Binary.md 2026-04-07 23:11:43 +02:00
Benjamin Funke
07ea62d719 add DEV7 v1.20a variant to game_engine_DEV7.3.sg 2026-04-07 19:14:48 +02:00
DosX
11169a42e9 Add temporary Wayback guard in _setLang
Add a short-term compatibility check in db/language::_setLang to support legacy Wayback calls: if version is the boolean false, the function returns null and aborts further processing. Comment notes this is temporary and will be removed.
2026-04-07 14:02:57 +03:00
DosX
e8349e0db8 dbs_min update 2026-04-07 11:44:58 +03:00
DosX
d28f5465b8 Update DOS-mode signature strings
Expand and refine the list of DOS-mode signature messages used for custom DOS detection. Adds additional known headers (e.g., "This program requires Microsoft Windows" for MASM/FASM/older assemblers and "Win32 only." for Pellec C), reorders entries, and clarifies comments for existing strings (twinBASIC, Borland, Legacy Win32 SDK, Watcom). This improves detection of DOS stub messages emitted by various compilers/linkers.
2026-04-07 11:44:38 +03:00
DosX
101e21adcf Check overlay presence before compareOverlay
Add a guard using PE.isOverlayPresent() before calling PE.compareOverlay in the detect() function. This ensures overlay comparison only runs when an overlay exists, avoiding false comparisons or errors for files without an overlay. (Updated db/PE/sign_tool_Windows_Authenticode.7.sg)
2026-04-07 10:23:13 +03:00
DosX
95a65df591 dbs_min update 2026-04-04 21:30:18 +03:00
DosX
4ccb121e2b Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-04-04 21:28:42 +03:00
DosX
d90c5ef5d6 Add 'Enhanced: DosX' and remove duplicate header
Update db/PE/_debug_data.5.sg: remove a duplicated header comment and add a new "// Enhanced: DosX" note. This clarifies the file metadata without changing detection logic for PE Debug Directory entries.
2026-04-04 21:28:28 +03:00
DosX
e443ef9a2e Include .reloc in section detection
Broaden the section name check to match both ".rsrc" and ".reloc" (using /. (rsrc|reloc)/i) instead of only matching "rsrc". This ensures reloc sections are counted in the resourceSectionsCounter and improves accuracy when identifying resource/relocation sections in PE parsing.
2026-04-04 21:28:11 +03:00
Benjamin Funke
e55da7cb08 dbs_min update 2026-04-04 17:08:31 +02:00
Benjamin Funke
3f3913f02e dbs_min update 2026-04-03 19:53:38 +02:00
Benjamin Funke
f8ecc41c4d dbs_min update 2026-04-02 12:55:33 +02:00
Benjamin Funke
7bce8fd158 dbs_min update 2026-04-01 20:32:58 +02:00
Benjamin Funke
ce43456555 refactor ILK signature 2026-04-01 19:57:46 +02:00
Benjamin Funke
a919a29d0e add version number to GME signature 2026-04-01 19:54:29 +02:00
Benjamin Funke
08662b9184 improve CloneCD signature
print 'v' before versionNumber variable output, to display the version number properly
2026-03-31 20:10:02 +02:00
Benjamin Funke
9e78bb925b remove unused zeros in archive_PAK.1.sg 2026-03-31 19:40:30 +02:00
Benjamin Funke
b3921c4c89 improve PAK Compiler detection 2026-03-31 19:39:00 +02:00
Benjamin Funke
03a9354f50 dbs_min update 2026-03-31 18:44:37 +02:00
DosX
383cd8f752 dbs_min update 2026-03-29 11:17:30 +03:00
DosX
da565edf49 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-03-29 11:16:37 +03:00
DosX
9cc535d698 Create format_SafeNova.1.sg 2026-03-29 11:16:34 +03:00
Benjamin Funke
68437c5f5a dbs_min update 2026-03-29 09:07:17 +02:00
Benjamin Funke
af4cb08f06 sync AGS signature with game engine 2026-03-29 09:06:09 +02:00
Benjamin Funke
43c39e1df7 add dbs_min tools for Linux 2026-03-28 17:24:15 +01:00
Benjamin Funke
d9e2f2dc69 dbs_min update 2026-03-28 17:21:38 +01:00
DosX
28de3a048e dbs_min update 2026-03-27 23:43:56 +03:00
Benjamin Funke
072e44bd3a remark LordPE as tool instead of packer
I added it as packer which was wrong it is indeed an tool to dump/rebuild and more PE executables
2026-03-22 13:38:20 +01:00
DosX
24284d2426 dbs_min update 2026-03-22 00:58:41 +03:00
Benjamin Funke
89d4682e09 add LordPE signature 2026-03-21 10:24:45 +01:00
horsicq
fb1ac1bf28 chore: update detection rules and add author comments 2026-03-19 19:16:53 +01:00
DosX
f9c75671e1 Detect MAX spyware by company and normalize label
Add CompanyName check for "Communication Platform LLC" alongside ProductName "Max" so the heuristic also flags samples by company, and change the verdict type string from "Max Spyware" to "MAX Spyware". Also reformat a long isSignaturePresent call into multiple lines for readability.
2026-03-18 20:29:00 +03:00
DosX
550d89c1ec Refactor PE debug_data rule and rename file
Rename debug_data.5.sg to _debug_data.5.sg and remove executable bit (100755 -> 100644). Add a meta declaration for "debug data" records and refactor detect flow: rename variables for clarity, mark bDetected when records exist, accumulate debug types into sOptions (lowercased), and return result(). The unknown-data detection logic (Borland TDS / Delphi / C++ TDS) was preserved but moved below detect for clearer organization.
2026-03-18 20:19:09 +03:00
DosX
c7ee6ca357 Split PEiD userdb into PE-specific files
Move and split peid_rules/userdb.txt into multiple PE-focused signature files under peid_rules/PE (compiler, file_format, installer, joiner, overlay, packer, protection, protector, sfx_archive, and PE/userdb.txt). Add split_userdb.ps1 script used to perform the split and include the generated PE signature files (auto-categorized from the original userdb).
2026-03-18 19:41:15 +03:00
DosX
3110557fc3 PEiD support: add userdb signature file
Add peid_rules/userdb.txt: a new PEiD-style user signature database (generated with Add Signature v2.00) containing thousands of packer/protector signatures (e.g. PseudoSigner, VMProtect, UPX, Armadillo and many heuristics). This file enables additional detection rules for PE scanning and packer identification.
2026-03-18 01:49:32 +03:00
DosX
7c654795fd Delete .compiler_cache 2026-03-16 14:03:35 +03:00
DosX
d98bf27657 Add .compiler_cache to .gitignore
Add .compiler_cache to .gitignore to prevent committing compiler/build cache files.
2026-03-16 14:03:06 +03:00
DosX
7d58891acb dbs_min update 2026-03-16 14:01:35 +03:00
DosX
77a060daee Add GDF marker scanning for PE files
Introduce scanForInterestingMarkers_NET_and_Native to detect GameDefinitionFile (__GDF_XML) resources in unmanaged PE resources and set a ~marker result when present. Hook the new scan into main() under verbose mode and add a log message to scanForDebugData_NET_and_Native. Provides additional heuristic detection for specific OS-read markers in .NET and native binaries.
2026-03-16 00:07:56 +03:00
DosX
8734812704 Enhance SteamStub detection order and add reference
Add a reference URL for SteamStub and change the second PE.compareEP check from an independent if to an else if. This ensures the x64 pattern is only considered when the first pattern doesn't match, preventing multiple matches from conflicting and improving architecture detection (sOptions/bDetected handling).
2026-03-16 00:07:44 +03:00
DosX
d55109d388 Rename rule to protection SteamStub
Rename detection file from db/PE/other_Steam.6.sg to db/PE/protection_SteamStub.5.sg and update metadata from meta("other", "Steam") to meta("protection", "SteamStub"). Remove the unused sVersion = "stub" assignment; detection logic is unchanged. This reclassifies the rule as a protection signature and cleans up the file.
2026-03-15 23:33:31 +03:00
DosX
1155c9fa35 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-03-15 23:23:58 +03:00
DosX
06b7e93d86 dbs_min update 2026-03-15 23:23:53 +03:00
Benjamin Funke
33c7523e3b add make to AppImage build instructions 2026-03-15 09:28:29 +01:00
Benjamin Funke
4aee45fc7f add QT5 AppImage instructions 2026-03-14 22:08:12 +01:00
DosX
3228a1dfd3 dbs_min update 2026-03-14 21:55:18 +03:00
DosX
05db854d3a
Merge pull request #339 from Dinlon5566/fix
Make DIE beta package version configurable in Dockerfile
2026-03-13 00:38:06 +03:00
DosX
df4617877e dbs_min update 2026-03-12 22:37:32 +03:00
DosX
3eef47d918 Organize MSDOS db files into categorized names
Rename several MSDOS database files to add category prefixes and reorganize one entry into db_extra. No content changes (100% similarity); this is a file-structure cleanup to make types explicit:
- db/MSDOS/Power_C.4.sg -> db/MSDOS/compiler_Power_C.4.sg
- db/MSDOS/CauseWay_DOS_Extender.0a.sg -> db/MSDOS/extender_CauseWay_DOS_Extender.6.sg
- db/MSDOS/Copy_Protector.2.sg -> db/MSDOS/protector_Copy_Protector.2.sg
- db/MSDOS/Copylock_PC.1.sg -> db/MSDOS/protector_Copylock_PC.2.sg
- db/MSDOS/FCP_IV.2.sg -> db_extra/MSDOS/packer_FCP_IV.2.sg
2026-03-12 22:37:06 +03:00
DosX
95b6d2f7b0 dbs_min update 2026-03-11 20:06:25 +03:00
Dinlon5566
f690d96946
Update Dockerfile
Make DIE beta package version configurable in Dockerfile.
2026-03-10 20:05:39 +08:00
DosX
7d7176baf1 Refine consonant-cluster obfuscation check
Tighten heuristic for detecting obfuscated tokens by updating the consonant-cluster rule. Adds an exclusion for abbreviation-style doubled consonants (e.g., "spprgrss.dll") so strings with repeated consonants aren't falsely flagged, while preserving existing common-pattern exceptions (str|chr|thr|sch|scr|spr). Updated comment and combined regex checks to reduce false positives.
2026-03-09 15:31:30 +03:00
DosX
35a1f7c2e5 Fix detection for missing IAT and EAT
Introduce isDllIatAndEatMissing and move the check earlier to detect DLLs that lack both Import Address Table and Export Address Table (but have an entry point). When such DLLs are found the option "No IAT and EAT" is added. Adjust the subsequent EAT-missing logic to skip when both IAT and EAT are missing to avoid duplicate/conflicting flags. This ensures correct heuristics for DLLs without imports/exports (excluding resource-only DLLs).
2026-03-09 15:31:17 +03:00
DosX
4a49b824e4 dbs_min update 2026-03-09 13:18:55 +03:00
DosX
3e2cf8f129 Fix VMDK version parse and remove unused var
Adjust VM image detector to assign the raw version byte (remove the "v" prefix) and add missing statement terminator in db/Binary/format_img.VM.1.sg. Also remove an unused local variable (test) from the PerlApp PE resource loop in db/PE/compiler_PerlApp.1.sg to avoid dead code/lint issues. These are small cleanups to correct version handling and tidy up the PE detection code.
2026-03-09 13:18:43 +03:00
DosX
bfa2caa6bc Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-03-09 13:17:27 +03:00
DosX
fc5a2d4039 Categorize and rename MS-DOS rule files
Rename several db/MSDOS detection rules to include category prefixes (compiler_, packer_, protector_, sfx_) for clearer organization. Example renames: BSTAR_FORTH.4.sg -> compiler_BSTAR_FORTH.4.sg, Symantec_BASIC.4.sg -> compiler_Symantec_BASIC.4.sg, Topspeed_C.4.sg -> compiler_Topspeed_C.4.sg, Turbo_Basic.4.sg -> compiler_Turbo_Basic.4.sg, Turbo_Prolog.4.sg -> compiler_Turbo_Prolog.4.sg, Tenth_Planet.2.sg -> packer_Tenth_Planet.2.sg, AVAST_CRC-Check.2.sg -> protector_AVAST_CRC-Check.2.sg, PKZIP_mini-sfx.1.sg -> sfx_PKZIP_mini-sfx.1.sg.

Also adjusted BSTAR_FORTH file mode from 100755 to 100644 (removed executable bit) and fixed a minor formatting/brace issue in the BSTAR_FORTH detection function. No other functional changes to rule logic.
2026-03-09 13:17:25 +03:00
Benjamin Funke
d7e9939892 remove duplicated image
This image is identical to docs/5.png
2026-03-08 15:04:58 +01:00
Benjamin Funke
f5a753273a add QT6 linux build instructions 2026-03-07 09:52:46 +01:00
Benjamin Funke
034151dc45 set bDetected after sVersion in format_img.VM signature 2026-03-05 19:52:16 +01:00
Kaens
a639e80bad *ROM_1 *archive_HIP
ROM_1: 'SEGA' @100h ROM family vastly improved, info-ed & ripper-ready (not enough testing data but should work fine)

HIP: the text was written in as text (KISS principle)
2026-03-05 12:08:41 +01:00
horsicq
362a59fd35 docs: update PerlApp compiler detection logic 2026-03-04 21:20:23 +01:00
DosX
138ebda816 Inline linker version check; remove final newline
Replace temporary nMajor/nMinor vars with direct PE.getMajorLinkerVersion()/PE.getMinorLinkerVersion() calls when detecting TASM32 (maps TLINK32 2.25 to TASM32 5.x). Also update linkers.6.sg EOF so the file no longer ends with a trailing newline.
2026-03-04 18:54:28 +03:00
Benjamin Funke
3a6d1d344f remove debuginfo_TASM32
Replaced with d21b49a7ea
2026-03-02 20:04:53 +01:00
horsicq
d21b49a7ea feat: add detection rules for TASM32 and debug data 2026-03-02 19:57:58 +01:00
Benjamin Funke
e5815ef65b fix VROOMM signature 2026-03-02 17:20:54 +01:00
Benjamin Funke
03d83c703b add debuginfo_TASM32 signature 2026-03-02 16:53:51 +01:00
Benjamin Funke
919694b173 add runtime_VROOM signature 2026-03-02 16:28:26 +01:00
horsicq
c81032f9b1 fix(PE): refine Delphi detection logic in linkers.6.sg 2026-03-01 21:58:33 +01:00
DosX
98d0e14b05 dbs_min update 2026-03-01 13:38:27 +03:00
DosX
736e802ca6 Delete ren_files_by_dosx.js 2026-03-01 13:37:48 +03:00
DosX
49f938f8a7 Format cleanup and string tweaks in db/Binary
Stylistic and wording cleanup across db/Binary rule files. archive_PEA: condensed multi-line switch cases into single-line statements for readability. debug_data_debugData: merged related var declarations into a single statement. format_bin.KeePass: normalized version labels to 1.X/2.X and adjusted pre-release wording; options unchanged. win_resources: removed empty second argument from meta("format"), tightened mapNames spacing/formatting, and fixed file trailing newline. Changes are primarily formatting and minor text normalizations with no intended functional changes.
2026-03-01 13:36:38 +03:00
DosX
7b4a385457 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-03-01 13:31:28 +03:00
DosX
e2b5b3d975 Add Max heuristic, resource DB, renamer script
Add heuristic to detect 'Max' product in PE heuristics: push a "Max Spyware" verdict when ProductName equals "Max" in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg. Add a new binary DB file dbs_special/db_view_resource_names.db. Add ren_files_by_dosx.js: a Node.js utility that recursively finds .sg files, extracts the first argument passed to meta(), and renames files by prefixing that value (underscores in names are used to skip renaming). The script includes logging, safety checks for existing target names, and accepts a start directory argument (defaults to current dir).
2026-03-01 13:31:24 +03:00
Benjamin Funke
d9f2164459 add debug build linux instructions 2026-03-01 08:44:47 +01:00
Benjamin Funke
b02c6de601 add XPAT Game engine signature 2026-03-01 07:40:12 +01:00
Benjamin Funke
e46b5e6725 fix Parsec Collection signature typo
Removed oversight _ in library_ParsecCollection.1.sg signature
2026-03-01 06:45:13 +01:00
horsicq
c2ecaf7e9a chore: update Microsoft.6.sg version detection logic 2026-03-01 01:48:25 +01:00
horsicq
dd88665bca chore(db): update VS version detection ranges 2026-03-01 01:06:26 +01:00
horsicq
63d00c408f fix: improve Borland TDS version parsing in debug data detection 2026-02-28 23:42:44 +01:00
Benjamin Funke
b45ebd1178 add Parsec Collection signature
Used by Games like:
* Dunke Schatten 1
* Skyworker
2026-02-28 17:28:54 +01:00
Benjamin Funke
7bb3160dd2 improve signature (BZip/LZOP)
* split sName into sVersion/sOptions
* move sName to meta()
* add reference to doc-ref
2026-02-28 15:10:17 +01:00
Benjamin Funke
7179a39a2b improve PEA signature
* move sName values to meta()
* call bDetected to after sVersion
2026-02-28 15:00:28 +01:00
Benjamin Funke
841824ded9 change format_DAA to archive_DAA 2026-02-28 13:33:19 +01:00
Benjamin Funke
a998c290f6 add sVersion to PEFF signature 2026-02-28 11:42:19 +01:00
Benjamin Funke
441649ed64 add PowerPC to PEFF signature 2026-02-28 10:46:11 +01:00
Benjamin Funke
207f9c53d7 rewrite KeePass signature 2026-02-28 10:36:17 +01:00
Benjamin Funke
66a9e21f70 change format_UE to archive_UnrealEngine 2026-02-28 09:58:11 +01:00
Benjamin Funke
780fef4194 remove signature file comment on format_text_pdb signature 2026-02-28 09:52:52 +01:00
horsicq
25c89a2908 feat: add Windows resources detection rule file 2026-02-27 17:19:30 +01:00
Benjamin Funke
1c32a3efff enhance MSVC 2026 detection
Fix https://github.com/horsicq/DIE-engine/issues/165

Since for 2026 is still 14.50 we just enhance the version number from 18.00 to 18.0-18.3
2026-02-26 18:01:44 +01:00
Benjamin Funke
1e4b2f8056 improve emulator_Wine signature
First call sVersion before executing bDetected variable
2026-02-25 18:50:30 +01:00
Benjamin Funke
b0fac803c8 add Adobe Authorwave signature 2026-02-25 18:45:14 +01:00
Benjamin Funke
64a05e45a6 improve Director signature 2026-02-25 18:34:27 +01:00
DosX
e0b391f1fa dbs_min update 2026-02-24 13:55:49 +03:00
DosX
adb8cc0581
Merge pull request #334 from horsicq/copilot/greet-user-in-chat
Add community greeting section to README
2026-02-24 11:48:10 +01:00
Benjamin Funke
0bed5ab921 add movie data atom to QuickTime signature 2026-02-23 19:04:31 +01:00
Kaens
9ba8a3bec5 *read *audio.1.sg *bytecodeparsers *_runtime_helpers
audio.1.sg updated: see https://github.com/Kaens/audio1sg/commits/

chunkparsers: cosmetic changes
bytecodeparsers:
 - functions repositioned
 - MUAP98CMDStr debugged
 - parseMDGYM improved
 - parseYM3812RegLog sped up a bit
 - cosmetics

_runtime_helpers:
 - startsWithCI & endsWithCI improved
 - cosmetics

read:
 - "var" removed from global constants
 - certain popular PETSCII encoding flavours added
 - function descriptions made compatible
 - decEncoding & decAnsi now support full 256-char layouts
 - isWithinRanges added: sugar combining multiple isWithin
 - 80-bit float value reader readFloat80 added here, until it's in the C++ codebase
 - debugged firstNotOf, isAllZeroes, outArray, secondsToTimeStr
 - funSampleName improved
 - profiler CheckpointTimer shows more details

.gitignore now ignores IDEA's folder
2026-02-23 16:12:43 +01:00
DosX
213272f904 Style: unify rule brace placement in YARA files
Reformat YARA rule declarations across yara_rules/crypto_signature.yar, yara_rules/packer.yar and yara_rules/packer_compiler_signatures.yar by moving the opening brace onto the same line as the `rule` name and cleaning up surrounding blank lines/indentation. These are non-functional, stylistic changes to improve consistency and readability; rule logic and string conditions were not altered.
2026-02-23 12:44:03 +03:00
DosX
7dcc6a4fef Remove ': PEiD' specifiers from YARA rules
Update yara_rules/peid.yar by stripping the ': PEiD' module/inheritance specifier from numerous rule declarations, converting them to plain 'rule <Name>' forms. Also apply minor formatting cleanup across the file to improve YARA compatibility and consistency.
2026-02-23 12:35:20 +03:00
copilot-swe-agent[bot]
5ed8586324 Add greeting message for users in Community section of README
Co-authored-by: DosX-dev <117774904+DosX-dev@users.noreply.github.com>
2026-02-23 09:29:00 +00:00
copilot-swe-agent[bot]
f3fa1deeaf Initial plan 2026-02-23 09:24:29 +00:00
DosX
bc9ce17092 dbs_min update 2026-02-22 22:28:44 +03:00
DosX
ab7ba3d738 dbs_min update 2026-02-21 15:41:14 +03:00
Benjamin Funke
c202f178e6 fix dBase sName in signature 2026-02-21 08:43:22 +01:00
DosX
d9dc8f3c17 Sanitize detection strings and limit version
Use File.cleanString on the regex matches for sName and sVersion to sanitize extracted values. Replace the simple null check with a stricter condition (truthy and length < 32) so only valid, reasonably sized version strings mark the PE detection as true, reducing false positives.
2026-02-20 15:41:06 +03:00
DosX
83c3f67685 dbs_min update 2026-02-20 15:39:45 +03:00
Benjamin Funke
25a6ebccd2 add Godot Game Engine signature 2026-02-18 19:37:29 +01:00
DosX
af18d244ef dbs_min update 2026-02-18 12:31:54 +03:00
DosX
42a4eec273 Cache PK overlay check in WinRAR sfx
Store result of PE.compareOverlay("'PK'") in a local isPkOverlay variable and reuse it in the detection logic to avoid calling the check twice. This improves readability and avoids redundant overlay comparisons without changing behavior.
2026-02-18 12:31:14 +03:00
github-actions[bot]
1156f66ccb style: auto-format JavaScript files in db directories 2026-02-17 17:36:49 +00:00
horsicq
550e1b4c9b feat: extend WinRAR SFX detection to include ZIP overlays 2026-02-17 18:36:14 +01:00
DosX
0940314eff dbs_min update 2026-02-15 12:44:27 +03:00
DosX
a9780f311d Switch cache to Brotli and hex keys
Change cache format and related handling: computeKeyForPath now produces a hex 64-bit-like key (adler32<<32 | crc32). Cache read/write switched from zlib deflate/inflate to Brotli compression/decompression with max quality and text mode. Cache entries are stored as sorted key=hex_value pairs joined by ';' for better compression; load parses hex values via parseInt(...,16). Miscellaneous improvements: always update newCache with current mtime before skipping unchanged files, move obsolete-file deletion earlier (and skip the cache file itself), log skipped/deleted counts, and small style refactors (grouped const declarations) in file traversal helpers.
2026-02-15 12:41:43 +03:00
DosX
8fef710f96 Ignore version tags in token checks
Add a regex in isTokenObfuscated to treat version-style tokens (e.g., v1.0, v21.9) as non-obfuscated. This reduces false positives by excluding common version control tags from heuristic obfuscation detection alongside existing CI/build token exceptions.
2026-02-14 21:13:15 +03:00
DosX
44e66d9560 dbs_min update 2026-02-14 19:58:27 +03:00
DosX
88cd1eb352 Prefix db/COM filenames by category
Rename multiple files in db/COM to include explicit category prefixes (e.g. compiler_, converter_, cryptor_, immunizer_, other_, packer_, protector_) for clearer organization. Example changes: 8086_Forth_83.4.sg -> compiler_8086_Forth_83.4.sg, EXETools_EXE2COM.1.sg -> converter_EXETools_EXE2COM.1.sg, Anti-Lamer_Cryptor.2.sg -> cryptor_Anti-Lamer_Cryptor.2.sg, ARF_AV_Inject.1.sg -> immunizer_ARF_AV_Inject.1.sg, integrity_checker.1.sg -> other_integrity_checker.1.sg, CyberWare_Packer.2.sg -> packer_CyberWare_Packer.2.sg, and several protector_ renames. Also a tiny whitespace/newline adjustment was made in the Borland C++ detector file during the rename.
2026-02-14 19:58:00 +03:00
DosX
14d8e45a22 dbs_min update 2026-02-14 19:40:59 +03:00
DosX
ea6df4392f Add file mtime cache to skip unchanged files
Introduce a simple on-disk cache to avoid reprocessing unchanged DB files. Adds zlib-compressed CACHE_FILE in the output dir, Adler32+CRC32 key generation (computeKeyForPath), and loadCache/saveCache helpers (with fallback to plain text). The main flow now loads the cache, compares stored mtime values to current mtimes, increments stats.skipped and skips unchanged files, processes only files that changed, and writes an updated cache at the end. Includes defensive parsing/IO handling and keeps existing deletion of obsolete output files.
2026-02-14 19:39:33 +03:00
DosX
455967700f Skip unchanged files and remove obsolete outputs
Avoid unnecessary file rewrites and prune stale outputs. Add writeIfChanged to worker.js to skip writing identical content (new 'skipped' / '*-skip' result types), update task.js to count skipped/deleted files and report stats, and introduce syncDeleteOldFiles/getAllFilesInDir/deleteEmptyDirs to remove obsolete files from dbs_min before processing. Also restore MAX_PARALLEL to 16 and simplify worker resolution/exit handling. Finally, comment out the unconditional rd command in dbs_min_generate.cmd so the output folder is preserved.
2026-02-14 19:24:00 +03:00
DosX
0d3810e494 dbs_min update 2026-02-14 19:03:08 +03:00
DosX
a2c1f3cd18 Fix syntax and formatting in PE game engine db
Fix minor issues in PE detection scripts: add a missing semicolon to the sOptions assignment in db/PE/game_engine_DEV7.3.sg, and insert a blank line before the return statement in db/PE/game_engine_Atlas.3.sg and db/PE/game_engine_Wintermute.3.sg for improved readability.
2026-02-14 18:11:54 +03:00
DosX
e638a5899d Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-02-14 18:10:38 +03:00
DosX
d41891258f Restrict EP and malware pattern checks to x86
Add PE_Cached.isArchX86 guards around SFX entry-point comparisons, entry-like-packer checks, and several EP-based malicious signature matches so x86-only byte-pattern tests are not applied to non-x86 binaries. Also move isSfx assignment inside the guarded block and make minor whitespace/comment alignment changes in MSIL opcode definitions for readability.
2026-02-14 18:10:35 +03:00
Benjamin Funke
9fca3442c5 add XDelta signature 2026-02-14 09:50:10 +01:00
Benjamin Funke
cb0df0ff50 add Atlas Game engine signature 2026-02-11 14:18:42 +01:00
Benjamin Funke
18e887edc5 improve Director 11.5 detection 2026-02-10 18:33:16 +01:00
Benjamin Funke
e5c628f3bc improve Director PE signature 2026-02-09 21:21:37 +01:00
Benjamin Funke
499866b2f0 add Wintermute Game engine signature 2026-02-09 21:01:23 +01:00
Benjamin Funke
e0b3aa93a8 add DEV7 game engine signature 2026-02-09 19:05:23 +01:00
Benjamin Funke
befe003a1f add 9.0 to Director PE signature 2026-02-09 19:00:38 +01:00
Benjamin Funke
29e73f56c2 add version 5.0.1 to Director signature 2026-02-09 18:28:40 +01:00
Benjamin Funke
d4ceee9a31 mark Director NE signature as Game Engine 2026-02-09 17:05:53 +01:00
Benjamin Funke
367258ecc2 mark Director as Game engine instead of engine
Changing Director from an Engine to specific Game Engine like for the Xash signature
2026-02-09 16:55:00 +01:00
DosX
3cced35581 dbs_min update 2026-02-08 23:06:30 +03:00
DosX
48d7c0f65b Enhance token obfuscation heuristics
Update isTokenObfuscated in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg to improve detection and reduce false positives. Adds exemptions for pure-digit changelist/build numbers (6–12 digits) and common build/CI/server keywords (jenkins, gitlab, buildbot, steam, win32/64, x86/x64, etc.). Introduces new obfuscation detections: repeating 2–3 char segments, repeated letter+digit clusters, chaotic letter+digit alternation, long consonant clusters, excessive repetition of a single consonant for short tokens, common keyboard walks, and high digit-letter transition counts (thresholds to flag likely obfuscated tokens). Includes a TODO note for future upgrades.
2026-02-08 22:50:56 +03:00
DosX
27f8cc3b5a Update packer_UPP header comment
Refactor the file header comment in db/PYC/packer_UPP.1.sg: replace the specific "UPP Packer detection for Python Bytecode" line with a generic "detection rule file" and move the project URL to its own commented line. This is purely a comment/formatting change with no functional impact.
2026-02-08 22:15:31 +03:00
DosX
cb71ea215c Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-02-08 22:13:09 +03:00
DosX
16dc26dd1a Categorize and rename COM database files
Rename multiple files under db/COM to add explicit category prefixes and improve consistency/organization. Renamed files: Turbo_C++.4.sg → compiler_Turbo_C++.4.sg; Turbo_C.4.sg → compiler_Turbo_C.4.sg; Turbo_Pascal.4.sg → compiler_Turbo_Pascal.4.sg; Watcom_C.4.sg → compiler_Watcom_C.4.sg; Zbikowski_C.4.sg → compiler_Zbikowski_C.4.sg; Zortech_C.4.sg → compiler_Zortech_C.4.sg; Cheat_packer.2.sg → packer_Cheat_packer.2.sg; com_RLE_packer.2.sg → packer_com_RLE_packer.2.sg; Keygen_crypt.2.sg → protector_Keygen_crypt.2.sg; virus_virus.1.sg → virus.1.sg.
2026-02-08 22:13:00 +03:00
DosX
a4c56c116d
Update README.md 2026-02-08 22:02:04 +03:00
Benjamin Funke
bef912c2eb add Director PE signature 2026-02-08 18:07:47 +01:00
DosX
3063042139 dbs_min update 2026-02-08 19:45:41 +03:00
DosX
0ffacd5f6e Refine PE heuristic checks, logging and 7z detection
Updates PE heuristic script and 7z detector:

- Add supported architectures list to header comment.
- Require DIE engine >= 3.20 (message updated) and add debugger triggers in legacy/wrong-environment/cache stubs for easier debugging.
- Add detection for single-section PE files in both .NET and native scans and add an "Only one section" option when found.
- Normalize logging categories (logType.net/logType.any) and update several log messages for clarity.
- Fix isArchX86 logic and documentation to correctly map ARM/ARMNT/THUMB and x86 variants.
- Tweak opcode/net checks and minor message changes in various scan routines.
- Tighten 7z overlay detection to only mark bDetected when the parsed version matches a numeric X.Y pattern.

Files changed: db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg, db/PE/archive_7z.6.sg.
2026-02-08 10:13:27 +03:00
DosX
3c0ac6b599 dbs_min update 2026-02-08 00:13:40 +03:00
DosX
9d3cbd2f6b Validate HIP build date before detecting
Use a shorter hex offset (0x58) and add a strict regex check for the build date string before setting sVersion and bDetected. This avoids treating arbitrary or malformed data as a valid build date; only strings matching the expected "Mon Mon DD HH:MM:SS YYYY" pattern are accepted and prefixed with "Build date:".
2026-02-08 00:11:06 +03:00
DosX
c370f2efe4 Extract date and copyright from MUDGE4 header
Improve detection of 'MUDGE4' archive headers by matching a date (DD/MM/YYYY) and Copyright owner in the version string. The code now captures the date and owner via regex, formats sVersion as "DD/MM/YYYY, Owner", and sets bDetected; this replaces the previous numeric-only version check.
2026-02-08 00:07:19 +03:00
DosX
2e209d94bd dbs_min update 2026-02-08 00:00:03 +03:00
DosX
251d30c02c Add stealer heuristics and 'payload' name checks
Update scanForMaliciousCode_NET_and_Native to expand heuristic detections: - Include PE.isNetObjectPresent("BlockAvSites") in existing RAT-like signature checks. - Add a new heuristics block that pushes a "Stealer" verdict when various .NET objects (potentiallyVulnerablePasswords, ScanGeckoBrowsersPaths, ScannedWallets, GetPasswords, ScanSteam, GetCookies) are present. - Treat assembly/module names containing "payload" as suspicious alongside other obfuscation/name indicators. These changes improve detection coverage for credential/wallet stealers and payload-named assemblies.
2026-02-07 23:59:22 +03:00
DosX
8117987a47 Fix syntax & file name 2026-02-07 17:44:00 +03:00
DosX
5685cd9264 dbs_min update 2026-02-07 14:11:15 +03:00
DosX
150538c620 Fix syntax and simplify PE detection logic
Added a missing semicolon in a logging call and normalized comment spacing. Replaced a redundant second if with else if in Mystic Compressor to avoid an extra check when the first pattern matches. Simplified nested conditionals in SerGreen Appacker by combining NET and overlay checks into a single if to reduce nesting and improve readability. Overall minor cleanup and refactor of PE detection code.
2026-02-07 14:10:23 +03:00
DosX
95cc7af2f7 Add ARM support and refine EP heuristics
Refactor entry-point heuristic checks to be architecture-aware and use cached PE data (PE_Cached). Split x86/x64 and ARM/ARM64 logic for stack-op detection, strange call/jmp detection, NOP-equivalents, CPUID and "stack-push" tricks; add ARM/ARM64 opcode lists and branch checks (B/BL/BX/BLX) and extend NOP detection to ARM MOV-based equivalents. Also replace direct PE queries with cached values (firstEpAsmInstruction, isArchX86, is64bit, isDynamicLinkLibrary), adjust scan ranges, and improve TLS/EP breakpoint/return detection. These changes improve reliability across different CPU architectures and reduce repeated calls to disassembly functions.
2026-02-06 10:19:39 +03:00
DosX
0b1aa54bc8 Use cached PE properties and expand packer DB
Populate new cached fields (firstEpAsmInstruction, is64bit, isDotNet, isDynamicLinkLibrary, indexOfImportsSection, indexOfExportsSection) in the PE cache and replace numerous direct PE.* calls with PE_Cached.* checks throughout the heuristics to improve performance and consistency. Refactor getFirstEpAsmOpCode to use the cached instruction. Also expand and clean up the packer/cryptor/protector section-name database (add many signatures, remove/merge duplicates and reorder entries) and apply related logic/formatting tweaks across native/.NET detection rules.
2026-02-06 10:19:13 +03:00
DosX
760c68f9fd Cache PE.isNet calls and polish comments
Add PE_Cached.isDotNet to the PE cache and switch repeated PE.isNet() checks to use the cached flag for consistency/performance. Align and clarify inline comments (logType, PE_Cached, MSIL opcode annotations), adjust ASCII-art indentation, and make small formatting tweaks across NetOpCodes and other .NET-related scans.
2026-02-06 10:17:44 +03:00
DosX
a819d023b0 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-02-06 09:42:15 +03:00
DosX
5ab24dfc7b Update die_version.txt 2026-02-06 09:42:13 +03:00
Benjamin Funke
9b33ec0035 add MUDGE4 to PAK archive signature 2026-02-03 20:55:40 +01:00
DosX
2fc9f41c25 dbs_min update 2026-02-02 12:02:23 +03:00
DosX
2f2e83e28b Ignore Windows App SDK when detecting .NET cctors
Skip marking a global .NET constructor as present if the binary links the unpackaged Windows App SDK. Adds an additional check to scanForObfuscations_NET so PE_Cached.isNetGlobalCctorPresent is only acted on when not C++/CLR-like and when isUnpackagedWindowsAppSdkLinked() is false, reducing false positives for apps that link the Windows App SDK.
2026-02-02 11:43:21 +03:00
DosX
eaa66a1075 Release runtime var; add Windows App SDK check
Clean up and add heuristics in PE analysis: release the protectionsRuntime dictionary by setting protectionsRuntime = undefined to avoid lingering state; introduce isUnpackagedWindowsAppSdkLinked() to detect unpackaged Windows App SDK linkage by checking for .NET objects "AutoInitialize" and "InitializeWindowsAppSDK"; and update the isArchX86 JSDoc to clarify which architectures are treated as x86-like.
2026-02-02 11:42:14 +03:00
DosX
da758b1a34 Add PE detection rule for Html Agility Pack library 2026-02-02 11:36:20 +03:00
DosX
6af3a0913b Add PE detection rule for Markdig library 2026-02-02 11:36:12 +03:00
DosX
8123146db3 Detect SQLite-net (.NET) in PE library
Add detection for the .NET 'sqlite-net' library in the PE scanner. Inserted a comment linking to the sqlite-net GitHub repo and added logic: if not already detected and PE.isNet() and PE.isNetObjectPresent("SQLite-net"), append -net to sName and set bDetected = true. This enables identifying sqlite-net in .NET PE files.
2026-02-02 11:00:31 +03:00
DosX
2ed1ce9a66 Fix operator_assign typo in PE heuristic
Corrects a misspelled mapping for the mangled operator code '4' in db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg: changes 'operator_assigтгn' to 'operator_assign' so the heuristic correctly names the assignment operator (operator=).
2026-02-01 14:03:41 +03:00
DosX
cd71c4d57d Add isArchX86 function to detect x86 architecture
Introduced the isArchX86 utility to determine if the PE file's OS architecture is x86-based. Registered the function in the cacheMap for local use.
2026-01-30 15:17:43 +03:00
DosX
5358acc3e9 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-01-30 14:37:50 +03:00
DosX
c740cfaa8e Refactor Go compiler and .NET libs detection scripts
Removed unnecessary whitespace and unused return statement in _NetCompilersLibs.4.sg. Updated Go compiler version string in compiler_Go.4.sg for improved clarity.
2026-01-30 14:37:49 +03:00
Benjamin Funke
b1fe3aec3d improve CSO signature 2026-01-29 20:50:54 +01:00
Benjamin Funke
b5fee44e49 define sVersion in LoadServ/Edit_Dev signature
LoadServ is only used for Adibou2, so we can define sVersion for Adibou2
2026-01-29 11:15:26 +01:00
DosX
4d947aa507 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-01-29 13:00:48 +03:00
DosX
49d8a72117 Rename database files for consistency
Renamed several files in the db directory to follow a more consistent naming convention, improving clarity and organization.
2026-01-29 13:00:26 +03:00
Benjamin Funke
90cb9aa1f0 improve HIP signature 2026-01-28 18:29:28 +01:00
DosX
965424bf23 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-01-28 10:32:24 +03:00
DosX
5819fc9bdb Refactor PE and MSDOS rule file naming and structure
Renamed and reorganized numerous rule files in db/PE and db/MSDOS to use consistent prefixes (e.g., compiler_, installer_, packer_, etc.) and moved some files to db_extra. Also deleted the obsolete IBM_VisualAge_PL_I.6.sg file. This improves maintainability and clarity of the rule database.
2026-01-28 10:32:21 +03:00
Benjamin Funke
d73f16f125 add python 3.14rc3 to Python signature 2026-01-27 19:39:08 +01:00
Benjamin Funke
8b59f15c7d read buildDate from HIP archives 2026-01-25 12:56:43 +01:00
DosX
24016de679 dbs_min update 2026-01-25 13:51:16 +03:00
DosX
e164e67b2f
Correcting a typo 2026-01-25 11:35:03 +03:00
DosX
946e017e31 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-01-25 11:24:28 +03:00
DosX
4278f0d283 Update Alcatraz and UnoPiX detection rule metadata
Added a GitHub reference to the Alcatraz protector rule for additional context. Renamed 'scrambler_UnoPiX.2.sg' to 'tool_UnoPiX.2.sg' and updated the meta tag from 'scrambler' to 'tool' to better reflect its classification.
2026-01-25 11:24:19 +03:00
Benjamin Funke
96e542e752 add MWCC signature 2026-01-25 09:22:37 +01:00
DosX
9e621e1954 Rename and reorganize rule files
Renamed and moved numerous .sg files in the db directory to follow a more consistent naming convention and directory structure, grouping by type (e.g., compiler, cruncher, packer, protector, etc.). This improves maintainability and clarity of the signature database organization.
2026-01-25 11:20:39 +03:00
DosX
dc2a925b3d Rename and reorganize PE rule files
Renamed PE rule files to use a consistent naming convention with prefixes indicating their type (e.g., compiler_, packer_, installer_, etc.). Also updated file permissions to 100644 where needed and made minor whitespace-only changes to some files for consistency. This improves maintainability and clarity of the signature database.
2026-01-25 11:00:27 +03:00
DosX
48a93325b6 dbs_min update 2026-01-25 10:45:47 +03:00
DosX
154e26192a Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-01-25 10:44:27 +03:00
DosX
fbf66a82e4 Simplify conditional in LLVM compiler detection
Removed unnecessary parentheses in the if statement within the detect function for improved code clarity.
2026-01-25 10:44:18 +03:00
github-actions[bot]
ae180a3a93 style: auto-format JavaScript files in db directories 2026-01-25 07:43:29 +00:00
DosX
ac34c8900f Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-01-25 10:42:51 +03:00
DosX
a7b081afa3 Rename and reorganize detection rule files
Detection rule files were renamed and reorganized to use more descriptive prefixes (e.g., compiler_, packer_, sfx_, etc.) for improved clarity and maintainability. Minor code formatting changes were made to some files, and a new detection rule for IBM VisualAge PL/I was added.
2026-01-25 10:42:34 +03:00
Benjamin Funke
9c2ca0f533 modify Squirrel signature
Changed meta() name from 'Squirrel Installer' to 'Squirrel'

change filename from Squirrel_installer.1.sg to installer_Squirrel.1.sg

Change _sVersion to versionString to avoid duplication names in signature
2026-01-25 08:01:34 +01:00
Benjamin Funke
9929fa5396 add sLang to LLVM compiler signature 2026-01-24 19:26:02 +01:00
Benjamin Funke
63a4257b4d fix LLVM signature 2026-01-24 17:37:54 +01:00
Benjamin Funke
2105caad2b add reference for Squirrel Installer 2026-01-24 17:08:01 +01:00
Benjamin Funke
8313010779 Revert "add LLVM compiler signature"
This reverts commit d46d7d1359.
2026-01-24 14:20:16 +01:00
Benjamin Funke
d46d7d1359 add LLVM compiler signature 2026-01-24 12:44:27 +01:00
DosX
034e223091 dbs_min update 2026-01-23 21:51:55 +03:00
DosX
361be6f989 Expand resource name check in heuristic analysis
Updated the resource name regular expression to include 'SERVER' in addition to 'STUB' when scanning for anomalous resources in PE files.
2026-01-23 21:51:24 +03:00
horsicq
77f4f0972d chore(license): update copyright year to 2026 2026-01-21 19:38:03 +01:00
Benjamin Funke
51f8eec393 use sOptions for copyrightYeat in SHP signature 2026-01-21 19:32:20 +01:00
DosX
8acbda92c3 dbs_min update 2026-01-21 00:44:43 +03:00
DosX
ad63a5f921 Add EuroASM compiler detection rule
Introduces a new detection rule for the EuroASM compiler in the PE database. The rule identifies EuroASM-compiled binaries based on specific PE header values and byte patterns, supporting version differentiation and architecture detection.
2026-01-20 10:07:59 +03:00
DosX
1021bf13dd Remove commented-out detection code and rename file
Deleted unused, commented-out detection logic from MoleBox.2.sg to clean up the code. Also renamed 'sign tool_Windows_Authenticode.7.sg' to 'sign_tool_Windows_Authenticode.7.sg' for consistency.
2026-01-19 20:55:26 +03:00
DosX
303b127b79 dbs_min update 2026-01-19 10:13:46 +03:00
DosX
00400c04c6 Improve detection logic for Intel C/C++ and CodeBase
Refined the Intel C/C++ detection rule to better extract version information and updated author metadata. Enhanced CodeBase library detection by setting sOptions to 'static' when the export function is present.
2026-01-18 10:38:01 +03:00
Benjamin Funke
8c70b518ac add GhidraZipFile signature 2026-01-17 09:12:09 +01:00
Benjamin Funke
37df365a04 add CodeBase signature 2026-01-15 20:03:42 +01:00
Benjamin Funke
e6a66045a4 add Intel C++ compiler 2026-01-15 17:34:49 +01:00
Benjamin Funke
6be1be758c add OGG ELF signature 2026-01-15 06:02:42 +01:00
DosX
f452035db1 dbs_min update 2026-01-12 16:03:12 +03:00
DosX
4eebb1c386 Standardize and clarify PE rule file naming
Renamed numerous db_extra/PE and db/Binary rule files to use consistent prefixes (e.g., cryptor_, protector_, installer_, etc.) for improved organization and clarity. Minor metadata and whitespace adjustments were made in a few files to match naming conventions.
2026-01-12 16:01:58 +03:00
DosX
2e058cd161 Rename and standardize database file naming for BJNFNE's fules
Renamed numerous files in the db/Binary, db/ELF, db/ISO9660, db/NE, and db/PE directories to use a consistent naming convention with underscores and clearer prefixes (e.g., archive_, audio_, format_, library_, tool_, etc.). This improves clarity, organization, and maintainability of the database file structure.
2026-01-12 15:32:27 +03:00
DosX
8fa4dbe531 Reorganize and update PE detection rule files
Renamed and moved several PE detection rule files to /db_extra/. Minor comment updates were made in Sepanta.1.sg and PyInstallerHider.1.sg to standardize file headers and improve clarity.
2026-01-12 15:20:58 +03:00
DosX
b28b67dcbc dbs_min update 2026-01-12 15:14:28 +03:00
DosX
e0895674ec Rename and update RAD Basic detection rule
Renamed RADBasic.6.sg to compiler_RADBasic.6.sg and added author, contact, and project information to the file header.
2026-01-12 15:02:40 +03:00
DosX
dead15c993 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-01-12 00:02:13 +03:00
DosX
09e52a2dc9 Standardize and reorganize database file naming for DosX's rules
Renamed and reorganized numerous database files across APK, DEX, ELF, PE, and other directories to use consistent prefixes such as 'library_', 'protector_', 'packer_', 'cryptor_', 'tool_', and similar. This improves clarity, maintainability, and categorization of the database entries.
2026-01-12 00:02:11 +03:00
Benjamin Funke
ccd2f9379d fix comment in Denuvo signature 2026-01-11 19:45:02 +01:00
github-actions[bot]
d4a7ddc151 style: auto-format JavaScript files in db directories 2026-01-11 15:18:37 +00:00
Benjamin Funke
da714da8e1 add exported Denuvo functions
This change helps to detect more games which use Denuvo over checking for those exported functions implemented into the game by Denuvo
2026-01-11 16:18:12 +01:00
Benjamin Funke
936fbc8dd1 move sName in VDI signature to meta() 2026-01-11 15:39:15 +01:00
DosX
dbde3b0cc5 Refactor switch statement formatting in MS-WIM detector
Condensed the switch statement cases for compression options into single-line statements to improve code readability and maintainability.
2026-01-11 17:16:25 +03:00
Benjamin Funke
3ebf6c41d4 add Java SE 25 to Java signature
Add Java SE 25 to nMajor switch

Add reference to Java's version history
2026-01-11 15:14:02 +01:00
Benjamin Funke
892bb6f4c2 add missing release date to Java signature 2026-01-11 15:02:40 +01:00
Benjamin Funke
1f643559b9 fix indentation in LCA/RCO signature 2026-01-11 15:01:50 +01:00
Benjamin Funke
3254ad9f96 rewrite MS-WIM.1.sg signature 2026-01-11 14:06:59 +01:00
Benjamin Funke
0364ebc2b2 fix indentation in signatures 2026-01-11 13:23:16 +01:00
DosX
f51ef8607a Update logo image in documentation
Replaces the existing logo_text.png in the docs directory with a new version. This may reflect branding or design updates.
2026-01-11 12:45:02 +03:00
DosX
ae916cc8d3 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-01-11 12:42:03 +03:00
DosX
4332968cd5 Add project logo to README
Inserted logo image at the top of README and added logo_text.png to docs for improved visual branding.
2026-01-11 12:42:00 +03:00
Benjamin Funke
c91612c899 fix GAL signature
Detect GAL as Version 1.0.2

Also add check with regex to determine the 'frame'
2026-01-11 08:40:58 +01:00
DosX
f71c399bf0
Update die_version.txt 2026-01-11 01:23:20 +03:00
DosX
671039fd8b dbs_min update 2026-01-11 00:59:22 +03:00
DosX
aec61cb7b9 Limit parallel workers and improve cleanup in dbcompiler
Reduced MAX_PARALLEL from 16 to 6 to prevent resource exhaustion. Refactored worker event handling in processFile to ensure proper cleanup and avoid multiple resolutions by introducing an isResolved flag and a cleanup function.
2026-01-11 00:58:44 +03:00
DosX
0fe529cb69 Refactor cache initialization 2026-01-11 00:48:53 +03:00
DosX
9018cf208d Refactor .NET detection to use cached values
Replaced direct calls to .NET detection functions with cached values in PE_Cached for improved performance and consistency. Updated logic in scanForObfuscations_NET, isCppClrLikeApp, and isFrameworkComponent to use these cached properties.
2026-01-10 20:22:08 +03:00
Benjamin Funke
1e98e5c676 replace regex with Binary.getString() in GAL signature 2026-01-10 16:08:04 +01:00
Benjamin Funke
fe76d87c1b fix CTRK signature
Some game parts are larger then 11 chars. So we just read the entire string.

This change is needed to show the game names correct.
2026-01-10 16:00:23 +01:00
DosX
a0e10656bd dbs_min update 2026-01-10 17:40:17 +03:00
DosX
fe42569f0d Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-01-10 17:38:24 +03:00
DosX
861637fd55 Fix isVerbose usage to method call in FMX check
Replaces property access with method call for isVerbose in the FMX chiptune result block to ensure correct verbosity check.
2026-01-10 17:38:21 +03:00
Benjamin Funke
ffd9bbaaf2 remove detect/result() calling conventions 2026-01-10 10:28:02 +01:00
Benjamin Funke
f3c7b0fb86 add sOptions to WBFS signature 2026-01-10 09:08:37 +01:00
Benjamin Funke
fa0d60a3c6 update EvilLabs URL in AmigaIcon signature 2026-01-10 08:25:36 +01:00
Benjamin Funke
253c5a4f67 add sOptions to CTRK signature 2026-01-10 08:10:06 +01:00
DosX
efda60c066 dbs_min update 2026-01-09 19:27:33 +03:00
DosX
c246f3eb3a Improve JS code parsing and legacy compatibility
Enhanced the universal safe JavaScript parser to better skip comments, strings, and regexes. Added new post-processing steps for legacy compatibility: replace empty constructors (String(), Boolean(), Number()) with literals, improved arrow function replacement, and refined delete statement handling for strict mode. Refactored code for clarity and robustness in minification workflow.
2026-01-09 19:26:56 +03:00
DosX
74ff8a5410 dbs_min update 2026-01-09 17:58:51 +03:00
DosX
7bf7704c03 Refactor JS code parsing and add bDetected replacement
Refactored the let-to-var replacement logic to use a new parseJSCodeSafe utility for safer code parsing. Added replaceBDetectedSafe to convert bDetected=!0/!1 patterns to bDetected=1/0, and updated the processing pipeline to include this transformation for improved legacy compatibility.
2026-01-09 17:58:08 +03:00
DosX
3bc19b9bf4 Add JSDoc for unloadCache function
Added a JSDoc comment to the unloadCache function to clarify its purpose and return value.
2026-01-09 15:55:34 +03:00
DosX
59edb03030 Cache isCppClrLikeApp result in PE_Cached object
Added isCppClrLikeApp property to the cache map and updated references to use the cached value instead of calling isCppClrLikeApp() repeatedly. This improves performance and consistency in .NET obfuscation scanning logic.
2026-01-09 15:48:44 +03:00
DosX
7f05d45c01 dbs_min update 2026-01-09 15:42:10 +03:00
DosX
a2b48b1a77 Add db_compress call to dbs_min_generate.cmd
After generating the database, the script now calls db_compress to further process the output. This automates compression as part of the generation workflow.
2026-01-09 15:41:42 +03:00
DosX
0f6e398fee Refactor dbcompiler to use worker threads for parallelism
Moved file minification and copying logic into a new worker.js file, enabling parallel processing of files using Node.js worker_threads. The main task.js script now manages a pool of workers (up to 16 in parallel) for improved performance and responsiveness when processing large numbers of files.
2026-01-09 15:41:00 +03:00
DosX
eab039e0f0 Improve let-to-var replacement to handle strings and regex
Refactors the replaceLetWithVarSafe function to more accurately handle JavaScript string and regex literals, preventing incorrect replacements inside them. This change improves the safety and correctness of code transformations involving 'let' to 'var' replacements.
2026-01-09 15:27:05 +03:00
DosX
58bb5ad250 Improve let-to-var replacement to avoid regex literals
Enhanced the replaceLetWithVarSafe function to prevent replacing 'let' inside regular expression literals. This change reduces the risk of incorrect code transformation when processing JavaScript files.
2026-01-09 15:24:59 +03:00
DosX
10bfb6b2e8 dbs_min update 2026-01-09 15:21:53 +03:00
DosX
749ef5af2e Use File.cleanString for options in detect()
Replaces direct assignment of Binary.getString with a cleaned string using File.cleanString in the detect() function to ensure the options string is properly sanitized.
2026-01-09 15:20:35 +03:00
DosX
50f186ce22 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-01-09 15:18:33 +03:00
DosX
da3cfa6adf Refactor PE cache usage and add Daleth RAT detection
Replaces direct calls to PE.isRichSignaturePresent() with cached value in PE_Cached for consistency and performance. Adds detection logic for Daleth RAT v1.0. Refactors BitRAT detection to distinguish Tor stub version and introduces unloadCache() to clear cached PE data.
2026-01-09 15:18:26 +03:00
DosX
dbf1cfbbf3 Improve Unity Engine detection logic
Detection now checks for the presence of the 'UnityMain' export function in addition to 'UnityPlayer.dll', increasing reliability in identifying Unity Engine binaries.
2026-01-09 15:18:03 +03:00
Benjamin Funke
7077f0ab5e add Coktel Vision Installer signature 2026-01-08 20:54:24 +01:00
Benjamin Funke
e2f64146f0 add sOptions to OBC signature
Introduce usage of sOptions in OBC signature to read with Binary.getString() the compilation date of the OBC script.
2026-01-08 18:53:55 +01:00
Benjamin Funke
7149d35384 refactor GameMaps signature
Avoids false positive detection if "TED5v1.0" is present in file.

Also add sVersion to GameMaps to recognize as 1.0
2026-01-08 18:29:12 +01:00
Benjamin Funke
0d4bd26e96 move Rimage signature to ISO9660 2026-01-08 16:22:37 +01:00
Benjamin Funke
f04adc5243 refactor Director signature 2026-01-08 12:20:18 +01:00
DosX
339a138e5c dbs_min update 2026-01-08 14:13:54 +03:00
DosX
f1ba56d80b Add fix for delete statements in strict mode
Introduced fixDeleteStatements to replace 'delete varName' with 'varName = undefined' before minification, preventing strict mode errors. Also updated UglifyJS minify options to allow bare returns.
2026-01-08 14:13:35 +03:00
DosX
91fde0cc6e Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-01-08 14:10:27 +03:00
DosX
e0c9aad943 Fix regex syntax error in funSampleName function
Removed an extraneous closing parenthesis in a regular expression within the funSampleName function to correct a syntax error.
2026-01-08 14:10:13 +03:00
Benjamin Funke
bdf8701fb5 add UCM signature 2026-01-08 12:03:34 +01:00
DosX
3a8229c40b Update detection rules and metadata in rule files
Added or updated metadata comments and detection logic in several rule files for improved clarity and accuracy. Refactored AutoHotKey manifest detection for efficiency, fixed a missing semicolon in doc.PDF.1.sg, and renamed Cryptect.1.sg to Cryptect.2.sg with no logic changes. Minor code style and comment adjustments were also made.
2026-01-08 13:58:15 +03:00
DosX
c67fa135fa dbs_min update 2026-01-07 22:27:23 +03:00
DosX
e49b55bd75 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-01-07 18:42:03 +03:00
DosX
2831f31af0 Add isWinCert check to audio.1.sg detection
Introduced the isWinCert function to skip WIN_CERTIFICATE overlays during scans for efficiency. The detect function now returns early if a WIN_CERTIFICATE is detected.
2026-01-07 18:41:50 +03:00
Benjamin Funke
90f3c10f30
add PYC help description 2026-01-07 11:13:58 +01:00
Benjamin Funke
cfac5aa0e7
Add ISO9660 format to Supported file types list 2026-01-07 11:09:34 +01:00
github-actions[bot]
bccd5785c1 style: auto-format JavaScript files in db directories 2026-01-06 18:25:46 +00:00
horsicq
c9b0eaf128 chore: add manual trigger to JS formatting workflow 2026-01-06 18:49:07 +01:00
horsicq
b14d7be026 chore: update JS formatting workflow to preserve line endings 2026-01-06 17:36:41 +01:00
horsicq
548ae363fb chore: update JS formatting workflow and remove test file 2026-01-06 14:30:39 +01:00
DosX
0b33e838ae
Create TEST.0.sg 2026-01-06 16:09:11 +03:00
horsicq
b36c82e960 fix: use RELEASE_TOKEN in JS formatting workflow 2026-01-06 13:57:26 +01:00
horsicq
485346bbd1 chore: update prettier config and formatting workflow 2026-01-06 13:48:22 +01:00
DosX
16ae70012b Refine regex for 'protector' detection
Updated the regular expression to exclude exact matches for 'prot' when identifying protectors, improving accuracy in packer and cryptor scanning.
2026-01-06 12:51:20 +03:00
horsicq
896514d827 add .github 2026-01-06 02:30:37 +01:00
horsicq
23a843cd80 add .prettierrc 2026-01-06 02:30:06 +01:00
DosX
b679afb933 Remove unused FASM options retrieval in detect() 2026-01-05 19:36:20 +03:00
DosX
71e89f253c Newlines trimmed 2026-01-05 19:35:59 +03:00
horsicq
bc063f3fc2 feat: add UPP packer detection for Python bytecode 2026-01-05 07:48:14 +01:00
horsicq
893fcdd282 feat: add PYC detection rule and initialization files 2026-01-05 07:20:42 +01:00
DosX
f62ddd2a2b Fix abbreviation check in isNameObfuscated function
The abbreviation check now only applies to the first token, preventing false negatives when later tokens match the abbreviation pattern.
2026-01-05 01:19:24 +03:00
DosX
b2d21c25f0 Improve obfuscation check for names with abbreviations
Updated isNameObfuscated to skip tokens starting with 3+ uppercase letters, treating them as non-obfuscated (e.g., abbreviations in resource file names). This prevents false positives for names containing abbreviations separated by spaces.
2026-01-05 01:18:31 +03:00
DosX
89a9088208 dbs_min update 2026-01-04 20:57:22 +03:00
DosX
bb046b924d Refactor ISO9660 tool detection scripts for clarity
Refactored multiple ISO9660 tool and library detection scripts to improve code clarity and consistency. Changes include combining variable declarations, minor whitespace adjustments, and reordering assignments for better readability. No functional changes were made.
2026-01-03 17:27:39 +03:00
DosX
930c7fdb19 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-01-03 17:24:07 +03:00
DosX
c7a80848cb Improve language detection in PDB file parser
Enhanced the detect() function to identify the programming language (VB.NET, C#, F#, C++) by scanning for specific signatures after detecting the PDB version. Refactored version detection logic for clarity and maintainability.
2026-01-03 17:24:04 +03:00
horsicq
d7402dbb54 feat: add genisoimage detection rule for ISO9660 2026-01-03 01:42:25 +01:00
horsicq
c34aed866b feat: add ISO9660 detection rules for CD tools 2026-01-03 00:56:09 +01:00
horsicq
0a0a956ba2 feat: update ISO9660 detection and documentation 2026-01-03 00:56:04 +01:00
Benjamin Funke
317d76e5ea add HMI signature 2026-01-02 20:05:39 +01:00
Benjamin Funke
c49729933e use ISO99660.getString() to print version number 2026-01-02 07:32:42 +01:00
Benjamin Funke
b5760c7aeb use ISO9660.compare() instead of Binary.compare() 2026-01-02 07:05:08 +01:00
Benjamin Funke
eba3bc643a refactor meta() for ISO99660 signatures 2026-01-02 07:00:16 +01:00
horsicq
e5100cacc1 feat: add Nero Burning ROM detection rule 2026-01-02 02:50:40 +01:00
horsicq
9407ab1174 refactor: update UltraISO detection logic 2026-01-02 02:50:36 +01:00
horsicq
6cb46e7ff9 docs: add ISO9660 class reference documentation 2026-01-02 00:39:55 +01:00
Benjamin Funke
20b8b7cc1f add new ISO9960 signatures 2026-01-01 14:10:40 +01:00
DosX
998d52d54a dbs_min update 2026-01-01 13:50:38 +03:00
DosX
547bdb85c6 Minor formatting updates in ISO9660 scripts
Added missing newline at end of files and adjusted whitespace in _ISO9660.0.sg and _init for consistency. No functional changes.
2026-01-01 13:50:20 +03:00
DosX
52adbe1a69 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2026-01-01 13:47:49 +03:00
DosX
582d2025e3 Refactor demangling function & .NET reference added
Replaced empty string defaults with String() constructor for better clarity and consistency when parsing mangled item patterns. Added a reference link for .NET array initializers in scanForObfuscations_NET.
2026-01-01 13:47:47 +03:00
Benjamin Funke
79edd22a76 move AppleHFS to ISO99660 folder 2026-01-01 08:23:18 +01:00
horsicq
caa24c58e8 feat: add ISO9660 detection rules for 5 tools 2026-01-01 02:33:27 +01:00
horsicq
4debecd7d7 chore: remove outdated ISO detection rules 2026-01-01 02:33:22 +01:00
horsicq
08677a96c6 feat: add ISO9660 detection rule and init files 2026-01-01 01:56:04 +01:00
Benjamin Funke
abc30be825 add 3.5.7 Toxio PC Partition to RoxioToast signature 2025-12-31 15:57:52 +01:00
Benjamin Funke
895ddb43c2 add new ISO signatures 2025-12-30 19:00:06 +01:00
DosX
041d96b9bb dbs_min update 2025-12-30 18:21:30 +03:00
DosX
be6e7d0d87 Rename Cxfreeze.1.sg to Cxfreeze.2.sg
Renamed the file from Cxfreeze.1.sg to Cxfreeze.2.sg.
2025-12-30 18:21:15 +03:00
DosX
d3d5a044d8 Optimize version detection logic in PE script
Moves the call to PE.getOperationSystemVersion() to only execute when the rossymSection check fails.
2025-12-30 18:20:32 +03:00
DosX
61c435d6c9 Update PDB detection rule and language identification
Removed redundant doc-ref comment, updated the language for version 1.0 detection from 'C#' to 'MSIL'.
2025-12-30 18:17:44 +03:00
Benjamin Funke
6f9d8bf92c use for iso signatures .iso instead of .bin 2025-12-30 15:13:26 +01:00
Benjamin Funke
58b30d7563 add Rimage signature 2025-12-30 10:40:42 +01:00
Benjamin Funke
0a2b42e8fb add The Personal RomMaker signature 2025-12-30 00:24:37 +01:00
Benjamin Funke
2d6ddbe5c3 add 5.0 version of Roxio Toast to signature 2025-12-30 00:18:40 +01:00
Benjamin Funke
f8f7560ddc fix typo in AppleHFS signature 2025-12-29 23:50:36 +01:00
Benjamin Funke
75869e42ae add 9.0.2 version of Roxio Toast to signature 2025-12-29 21:28:49 +01:00
Benjamin Funke
c2f0df134c add 3.5.3/3.5.6 Roxio Toast version to signature 2025-12-29 19:02:17 +01:00
Benjamin Funke
8d7801979f add BIN variant of HFS format 2025-12-29 19:01:54 +01:00
Benjamin Funke
1595daf074 add ImgBurn/RoxioToast signature 2025-12-29 17:28:16 +01:00
Benjamin Funke
0c5e4668ba add AppleHFS signature 2025-12-29 13:46:45 +01:00
Benjamin Funke
a476d14558 add GME signature 2025-12-29 13:24:07 +01:00
Benjamin Funke
da25562854 add PSARC signature 2025-12-29 12:22:59 +01:00
Benjamin Funke
3623a425c8 add NB02 to overlays signature 2025-12-29 10:40:12 +01:00
Benjamin Funke
acff446adc add Robot Animation signature 2025-12-28 18:02:33 +01:00
Benjamin Funke
14a22c5b45 add version number of Indeo3 to VMD signature 2025-12-28 14:42:49 +01:00
Benjamin Funke
3fbf0949bb add new VMD detection 2025-12-28 13:08:55 +01:00
Benjamin Funke
bffd088102 add new Indeo VMD variant to VMD signature 2025-12-28 10:14:36 +01:00
Benjamin Funke
8c2b859734 add Adibou2 Animation to VMD signature 2025-12-27 17:55:56 +01:00
Benjamin Funke
54df7964e4 add Animation detection to VMD 2025-12-27 08:42:06 +01:00
Benjamin Funke
ceee6e9197 improve VMD signature 2025-12-26 20:15:13 +01:00
Benjamin Funke
18455a396e add VMD signature 2025-12-26 18:08:08 +01:00
Benjamin Funke
0c59cd5f97 add sLang to PDB signature
This change is an addition to the detection rule to display if the PDB file is either from an C++ or C# program
2025-12-26 14:00:50 +01:00
Benjamin Funke
b2c2221ac6 add new signatures 2025-12-26 11:37:09 +01:00
Benjamin Funke
a1b366fa74
update Build instructions for Ubuntu 25.10 2025-12-24 22:45:31 +01:00
DosX
6cc5a92436 dbs_min update 2025-12-22 22:14:58 +03:00
DosX
3e15fc3ac5 Add 'sg' file suffix to heuristic detection
Updated the MiniJavaScriptHeuristic to recognize files with the 'sg' suffix, improving detection for Detect It Easy modules.
2025-12-22 22:12:21 +03:00
DosX
55c608f4f3 Update version detection range in DirectorPlayer
Changed the detected version string from '<3.0' to '1.0-3.0' in the detect() function to clarify the supported version range.
2025-12-22 22:06:50 +03:00
DosX
2ad771d990 Update signature comparison in TOT binary detection
Modified the signature pattern in the detect() function to improve accuracy when identifying TOT binary files.
2025-12-22 14:49:47 +03:00
Benjamin Funke
31e5959532 add sVersion to Director Player signature 2025-12-20 19:38:41 +01:00
Benjamin Funke
8f744c9452 add Director Player signature 2025-12-20 16:28:53 +01:00
horsicq
03c77a2b85 chore: update DIE-engine to version 3.11 in Dockerfile 2025-12-20 00:51:28 +01:00
Benjamin Funke
347421b1cf add DXA signature
https://github.com/horsicq/Detect-It-Easy/issues/322
2025-12-19 23:56:03 +01:00
Benjamin Funke
1b72e67836 add Shockwave Audio signature 2025-12-19 22:55:42 +01:00
DosX
955bf14c23 dbs_min update 2025-12-15 21:48:56 +03:00
DosX
bf5194d586 Update regex for minified code detection
Modified the regular expression to improve detection of minified or compiled JavaScript code by allowing for more flexible matching of equality and negation operators.
2025-12-15 19:31:07 +03:00
DosX
225d4bcf86 dbs_min update 2025-12-15 19:24:27 +03:00
DosX
4aeb4c4225 Remove debug logging from segment processing loop
Eliminated a debug statement that logged segment formatting information within the main function's segment processing loop.
2025-12-15 19:24:06 +03:00
DosX
313e084a0a Improve JavaScript minification detection logic
Refactored the script to more accurately split code outside of string literals, handling escaped quotes and template literal expressions. The detection now processes code segments outside of strings, improving reliability when identifying minified or compiled JavaScript.
2025-12-15 19:23:51 +03:00
DosX
2301812b74 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-12-15 18:29:01 +03:00
DosX
e03cd0ad6d Reorder and add script includes in db/_init
Moved 'includeScript' calls for '_runtime_helpers' and 'language' to the top of the file for better initialization order. No functional changes to logic.
2025-12-15 18:28:58 +03:00
Benjamin Funke
c9253f1552 add Vise Installer signature
- Added Vise Installer signature
- Fixed index number for InnoSetup signature
2025-12-14 17:06:34 +01:00
Benjamin Funke
c17430047d add signature for Inno Setup archives 2025-12-14 16:41:42 +01:00
Benjamin Funke
9d27c7c8cd use sOptions in MacroMix signature
Using sOptions to display "Director Engine" as an option rather then as an Version
2025-12-14 15:45:24 +01:00
Benjamin Funke
5cd3b7c7e4 add Interleaf File signature 2025-12-14 15:42:37 +01:00
Benjamin Funke
2e8b2cc8f5 improve Director signature
- Define sVersion to platform type
- add MDGFrevF/59CMpami to signature
2025-12-13 16:12:06 +01:00
Benjamin Funke
e996d42523 add FGDCFver to Director signature 2025-12-13 15:47:34 +01:00
DosX
e45715b251 Improve input validation in meta and result functions
Enhanced the meta function to use named parameters and provide clearer error messages for missing detection type. Added error handling in result for missing detection name. Default values are now set using String() for consistency.
2025-12-13 15:48:01 +03:00
DosX
8482f1ca90 dbs_min update 2025-12-13 15:40:49 +03:00
DosX
1a2e2aedbe Refactor PE Advanced_installer detection logic
Replaced PE.findSignature with PE.isSignaturePresent for improved clarity and updated string reading from X.SU16 to PE.read_unicodeString. These changes enhance code readability and maintainability in the detection function.
2025-12-13 15:39:54 +03:00
Benjamin Funke
9b38c99104 add AIF signature 2025-12-13 08:58:50 +01:00
Benjamin Funke
185eaf09f3 add MOV signature 2025-12-13 08:51:44 +01:00
Benjamin Funke
1c64ce3640 define sVersion and copyright in ASIPort signature 2025-12-12 18:58:39 +01:00
Benjamin Funke
2d302f35b7 add Director Engine detection rules 2025-12-12 11:24:11 +01:00
DosX
b522acef2b Rename DirectorAPI.1.sg to DirectorAPI.4.sg
Renamed the detection rule file for Director API from DirectorAPI.1.sg to DirectorAPI.4.sg
2025-12-11 20:03:22 +03:00
Benjamin Funke
1fbe9fbbe2 add DirectorAPI signature 2025-12-11 17:34:37 +01:00
horsicq
80347b6b72 chore: remove obsolete MB2 and VLK detection rules 2025-12-09 23:18:19 +01:00
horsicq
42db6ccb13 feat: add MB2 and VLK detection rule files 2025-12-09 22:46:20 +01:00
DosX
c08e27d7ed dbs_min update 2025-12-09 15:42:59 +03:00
DosX
aff6417de9 Expand resource name detection and refactor obfuscation check
Added 'INJECT' and 'CRYPTED' to the resource name detection regex for broader malicious resource identification. Also refactored the obfuscation check in isTokenObfuscated for clarity by inlining the transition ratio calculation.
2025-12-09 15:42:45 +03:00
DosX
c9c4ee5133 Enhance obfuscated name detection heuristics
Expanded the whitelist to exclude more common legitimate patterns such as version numbers, UUIDs, file sizes, IP addresses, and acronyms. Improved obfuscation detection by adding checks for character type transitions, repetitive patterns, and refined statistical thresholds. Updated comments for clarity and reorganized logic for better maintainability.
2025-12-09 15:38:35 +03:00
DosX
505125afa7 Improve obfuscation detection by excluding date patterns
Updated isTokenObfuscated to exclude common date formats (e.g., YYYY-YYYY, DD.MM.YYYY) from obfuscation checks, reducing false positives. Also refactored scanForMaliciousCode_NET_and_Native for clarity.
2025-12-09 15:30:26 +03:00
DosX
e2aa61198f dbs_min update 2025-12-08 13:05:32 +03:00
DosX
8ca12fb16b Refactor anti-analysis detection loops in .NET scan
Simplified and corrected loop conditions for anti-analysis and sandbox detection in scanForAntiAnalysis_NET. Replaced incorrect loop conditions and redundant checks with more concise and efficient logic, improving code readability and correctness.
2025-12-07 18:03:05 +03:00
Benjamin Funke
58748f4662 add RedShirt archive signature 2025-12-07 09:43:09 +01:00
horsicq
a8d05e2985 chore: remove obsolete detection rules, update heuristic comment 2025-12-07 02:08:38 +01:00
horsicq
691b8c3eb3 feat: add MB2 and VLK detection rule files 2025-12-07 01:50:12 +01:00
horsicq
f848621999 refactor: simplify PE heuristic analysis script 2025-12-07 01:50:07 +01:00
DosX
855f470183 dbs_min update 2025-12-05 20:58:51 +03:00
DosX
aa10721e0a Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-12-05 20:58:18 +03:00
DosX
fcb56a4d56 Clarify MSIL comment and add spacing in script
Updated a comment in scanForObfuscations_NET to specify 'ldc.i4 0' instead of just 'ldc.i4' for clarity. Added extra blank lines before the main function for improved readability.
2025-12-05 20:58:15 +03:00
Benjamin Funke
e0c5761c62 delete 2 incomplete signatures
Cannot find any Information about them.
2025-12-04 20:50:29 +01:00
DosX
934d30d058 Enhance .NET detection for .NET 10 support
Updated the detection logic to recognize .NET 10 by checking for the 'D'00'O'00'T'00'N'00'E'00'T'00'_' signature in addition to existing patterns. Updated a TODO comment to reflect the need for further improvements and explicit .NET 10 support.
2025-12-03 17:56:22 +03:00
DosX
a4dc0fd712 Add region comments for code organization
Introduced #region and #endregion comments to group related functions such as obfuscations, anti-analysis, packers, licensing systems, corrupted data, debug data, languages and compilers, and malicious code. This improves code readability and maintainability by clearly delineating functional sections.
2025-12-03 01:16:37 +03:00
DosX
3774652c42 dbs_min update 2025-11-30 12:07:02 +03:00
DosX
eaaf1a4e39 Add heuristic for Amp WinLocker Sumhex Edition
Introduces a new detection heuristic for Amp WinLocker (Sumhex Edition) based on specific PE characteristics, including absence of Rich signature, presence of TLS, and certain import position hashes. This enhances detection coverage for this malware variant.
2025-11-30 12:06:34 +03:00
DosX
8f1069f97c Update .NETZ packer detection logic
Replaces PE.isNet() with PE.isNetObjectPresent("NetzStarter") in the detect() function.
2025-11-29 23:00:52 +03:00
DosX
51c78851e8 Expand resource name pattern in heuristic analysis
Updated the regular expression to match resource names with any three uppercase letters after 'STUB.' instead of only 'EXE' or 'DLL'. This broadens detection coverage for anomalous resources.
2025-11-29 22:54:43 +03:00
DosX
d16c8c40ae Refactor for-loops to use index iteration in heuristics
Replaced for-in loops with standard index-based for-loops for array iteration in scanForObfuscations_NET and related functions. This improves code clarity, correctness, and avoids potential issues with iterating over array properties.
2025-11-29 22:52:54 +03:00
DosX
f911ee1c11 dbs_min update 2025-11-29 22:26:28 +03:00
DosX
02d947f359 Optimize PE property access with caching
Introduced a PE_Cached object and an initializeCache function to cache frequently accessed PE properties. Updated all relevant code to use cached values instead of repeated PE API calls, improving performance and code clarity.
2025-11-29 22:26:16 +03:00
DosX
7d30acff42 Refactor detect function to improve structure
Moved environment checks directly into the detect() function and adjusted main() to be called only after passing those checks. This clarifies the flow and ensures early returns for unsupported environments.
2025-11-29 21:28:23 +03:00
DosX
045549e597 dbs_min update 2025-11-29 21:25:12 +03:00
DosX
dbb688ec1b Refine linker version check and option label
Replaces loose falsy checks with explicit zero comparisons for linker version detection. Updates the option label from 'No linker version' to 'Zero linker version' for clarity.
2025-11-29 21:25:00 +03:00
DosX
f75ffd30e7 Remove Social Media section note from changelog
This is unnecessary information for changelog
2025-11-28 21:46:04 +03:00
DosX
8616284011 Fix linker version display for Microsoft Linker detection
Update the logic to only display the linker version if the major version is not zero when detecting Microsoft Linker. This prevents showing an empty or misleading version string.
2025-11-28 16:12:03 +03:00
DosX
1668e54b4a Detect zero linker version in PE analysis
Adds a check for PE files with both major and minor linker versions set to zero. If detected, the option 'No linker version' is added to the analysis results.
2025-11-28 16:10:28 +03:00
DosX
5392c313bc Update Qatar RAT 1.2 detection logic
Fixed Qatar RAT 1.2 detection to use .NET module name 'QatarC.exe' instead of import hash checks. Removed the previous MPRESS-packed import hash-based detection.
2025-11-28 16:10:12 +03:00
DosX
6bf572e3e4 Expand resource name check to include .DLL in heuristic
Updated the resource name regular expression in scanForMaliciousCode_NET_and_Native to match both .EXE and .DLL extensions for 'STUB' resources. This enhances detection of anomalous resources in PE files.
2025-11-28 15:53:44 +03:00
horsicq
f201dd7d9c Merge branch 'master' of github.com:horsicq/Detect-It-Easy 2025-11-27 18:21:40 +01:00
Benjamin Funke
8828a892ca
mention Social Media addition in Changelog 2025-11-27 17:32:37 +01:00
horsicq
25aecf09b1 Update file(s): 2025-11-26 2025-11-26 18:56:07 +01:00
Benjamin Funke
493ec1575b
Update changelog with new changes 2025-11-26 16:40:39 +01:00
DosX
2e0ac0c72b dbs_min update 2025-11-25 20:43:28 +03:00
DosX
53c53e9b39 Detect export names starting with digits as obfuscated
Updated the export function name check in scanForObfuscations_Native to flag names that start with a digit as potentially obfuscated. This enhances the heuristic for identifying suspicious or obfuscated export names in PE files.
2025-11-25 20:43:11 +03:00
DosX
63fcf17498 Add Antlr detection rule for PE files
Introduces a new detection script for identifying Antlr .NET libraries (versions 3.X and 4.X) in PE files. The rule checks for the presence of Antlr3.Runtime and Antlr4.Runtime objects.
2025-11-25 20:07:26 +03:00
DosX
7cb960175f dbs_min update 2025-11-22 17:33:38 +03:00
DosX
39e4c9e727 Enhance .NET anti-analysis and anti-VM detection
Added new anti-VM triggers for 'VMBusHID' and 'WDAGUtilityAccount' in .NET analysis. Included reference comments for dnSpy and ILSpy detection logic. Also fixed a minor formatting issue in obfuscation attribute detection.
2025-11-22 17:33:18 +03:00
DosX
234fbc7590 Detect Anti-Wine techniques in .NET analysis
Added detection for Anti-Wine techniques by checking for the presence of 'wine_get_unix_file_name' in global Unicode strings or signatures. If detected, the 'Anti-Wine' option is added to the analysis results.
2025-11-22 17:33:11 +03:00
DosX
dacef5df48 Detect Anti-Cuckoo Sandbox techniques in .NET analysis
Added detection logic for Anti-Cuckoo Sandbox techniques by checking for Cuckoo Sandbox-related signatures and objects in .NET binaries. This enhances heuristic analysis by identifying attempts to evade Cuckoo Sandbox environments.
2025-11-22 17:32:59 +03:00
DosX
9a527294c5 Detect Qihoo 360 Sandbox anti-analysis in .NET
Added detection logic for Qihoo 360 Sandbox anti-analysis techniques in .NET binaries. The scan now checks for specific Qihoo 360 signatures and related .NET objects, improving heuristic analysis coverage.
2025-11-22 17:32:51 +03:00
DosX
4a7052b6d0 Detect Comodo Sandbox anti-analysis in .NET scan
Added detection logic for Comodo Sandbox anti-analysis techniques in the scanForAntiAnalysis_NET function. The code now checks for Comodo-related module signatures and .NET object presence, similar to existing Sandboxie detection.
2025-11-22 17:32:36 +03:00
DosX
0c4c42abf9 dbs_min update 2025-11-20 09:39:22 +03:00
DosX
e4178b1d67 Add detection rule for ReaLTaiizor UI library
Introduces a new Detect It Easy rule file to identify the presence of the ReaLTaiizor UI library in .NET PE files. The rule checks for the 'ReaLTaiizor' object and sets detection accordingly.
2025-11-20 09:38:57 +03:00
DosX
0f3b873467 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-11-20 09:38:45 +03:00
DosX
70648becd8 Refactor function calls for clarity and consistency
Updated several function calls to use direct argument passing instead of named parameters, improving code readability and consistency. Also added a comment explaining the RunPE method. Refactored a loop to use a standard for-loop for better clarity.
2025-11-20 09:38:39 +03:00
Benjamin Funke
6c25003563 add WSL build instructions (Ubuntu)
More are following soon.
2025-11-19 18:38:57 +01:00
Benjamin Funke
6bb71098ca remove AGS overlay from overlays.6.sg 2025-11-18 19:16:18 +01:00
Benjamin Funke
990ca8fa35 add Adventure Game Studio signature 2025-11-18 17:44:27 +01:00
DosX
368bc5cdba Add Webremote TorCT detection to heuristic analysis
Introduces detection logic for Webremote TorCT in the scanForMaliciousCode_NET_and_Native function by adding relevant references and marking it as VB.NET. Also refines PDB signature search and adds minor code formatting improvements.
2025-11-18 13:46:31 +03:00
DosX
e0d0f86cff Expand RAT detection heuristics in scan function
Added additional assembly and module name checks for NjRAT detection ("k" and "k.exe") and refactored AsyncRAT detection condition for clarity. This improves coverage for variants using different names.
2025-11-18 13:46:02 +03:00
DosX
25c085af99 dbs_min update 2025-11-18 13:31:42 +03:00
DosX
472728e4b0 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-11-18 13:31:19 +03:00
DosX
d16d31db44 Improve .NET import detection logic in heuristic analysis
Refactored the detection of required .NET imports to count found imports and require 'System.Net.Sockets' plus at least two others. Also fixed loop condition for checking malicious import patterns. This enhances accuracy in identifying suspicious .NET binaries.
2025-11-18 13:31:16 +03:00
Benjamin Funke
0cea59d9a7 add AGS Game Engine overlay 2025-11-18 11:23:58 +01:00
DosX
81bb1f85fc Add detection for Syndrome RAT 4.3.X
Introduces heuristic checks to identify Syndrome RAT version 4.3.X based on import hashes and absence of Rich signature. Also fixes formatting in Remcos RAT detection condition.
2025-11-17 18:47:36 +03:00
DosX
a455e31435 Update changelog with new features and improvements
Added notes on configurable BufferSize, new PEiD scanning method, and clarified previous entries. Reflects recent enhancements and bug fixes.
2025-11-16 10:10:24 +03:00
DosX
ea7ed1ef6e dbs_min update 2025-11-15 17:40:09 +03:00
DosX
2c20f0e7cd Revert "Add new file(s): 2025-11-14"
This reverts commit b92b043121.
2025-11-15 17:35:37 +03:00
Benjamin Funke
0909d8c043 add CONTRIBUTING.md
This markdown file introduces our contribution guidelines for Detect It Easy
2025-11-14 22:25:17 +01:00
horsicq
b92b043121 Add new file(s): 2025-11-14 2025-11-14 22:02:13 +01:00
Benjamin Funke
610a7fd28a add XLive PE signature 2025-11-14 19:38:10 +01:00
DosX
e43e113efa dbs_min update 2025-11-13 18:32:17 +03:00
DosX
433833c37c Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-11-13 18:31:04 +03:00
DosX
fb5228f76f Refactor DLL export function check in scanForObfuscations_Native
Simplified the logic for detecting executable-like DLLs by replacing multiple explicit export function checks with a single regular expression-based check using PE.isExportFunctionPresentExp.
2025-11-13 18:31:02 +03:00
horsicq
d0e214e376 Merge branch 'master' of github.com:horsicq/Detect-It-Easy 2025-11-13 02:01:41 +01:00
horsicq
2f3874ae59 Update file(s): 2025-11-13 2025-11-13 01:54:02 +01:00
DosX
d0437ae730 Detect Liberium WinLocker in .NET PE analysis
Adds a heuristic to identify Liberium WinLocker by checking for the presence of the 'button_unlock_Click' .NET object. This improves detection coverage for specific WinLocker variants during PE analysis.
2025-11-12 21:58:26 +03:00
DosX
96b2dea411 Update malware detection verdict details and formatting
Adds explicit 'infected' detail for Ramnit verdict and improves code formatting for detection logic. Also adds a blank line after anti-tamper detection for readability.
2025-11-12 11:48:48 +03:00
DosX
00774f82a4 Optimize .NET obfuscation scan with cached validation
Caches the result of validateNetObject('<PrivateImplementationDetails>') to avoid redundant calls during the obfuscation scan loop, improving performance and code clarity.
2025-11-12 11:37:51 +03:00
DosX
8e4caa69ca dbs_min update 2025-11-12 00:21:36 +03:00
DosX
be9a109fe5 Fix compression class iteration in scan function
Replaces 'for...in' with a standard 'for' loop when iterating over compressionClasses to prevent issues with unexpected properties and ensure correct array traversal.
2025-11-12 00:18:35 +03:00
DosX
73e2c3e1a5 Refactor fake section names structure in heuristic analysis
Simplified the structure of dbCollectionOfFakeSectionNamesDict by removing unused null values and adjusting the mapping logic to correctly assign regex patterns. This improves code clarity and consistency in section name validation for packer and cryptor detection.
2025-11-12 00:04:12 +03:00
DosX
1f834b252b Fix regex array usage for cryptor detection
Corrected the cryptor detection entry to use an array for regex patterns, ensuring consistent handling with other detection rules.
2025-11-12 00:03:10 +03:00
DosX
b8bac098c9 Add ConsoleDevil RAT detection heuristic
Introduces a new heuristic to detect ConsoleDevil RAT variants (v1.0 and v1.2) by matching specific entry point patterns and import hashes. This enhances the scanner's ability to identify and classify ConsoleDevil samples.
2025-11-11 22:56:26 +03:00
DosX
ff555985d0 dbs_min update 2025-11-11 22:33:59 +03:00
DosX
9d1302974d Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-11-11 22:31:50 +03:00
DosX
05e04654fa Improve resource name detection in heuristic analysis
Replaced PE.isResourceNamePresent("STUB") with PE.isResourceNamePresentExp(/^STUB(\.EXE)?$/) to allow matching both 'STUB' and 'STUB.EXE' resource names. This enhances detection of anomalous resources in the scanForMaliciousCode_NET_and_Native function.
2025-11-11 22:31:48 +03:00
Benjamin Funke
21a0135795 add SLNX signature
SLNX is the successor of the SLN (Solution) files.

SLNX is introduced by MSVC2026
2025-11-11 19:52:09 +01:00
DosX
34966f6a5e Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-11-11 21:49:23 +03:00
DosX
fdd4542e62 Rename AMD_AGS.4.sg to AMD_GraphicalServices.4.sg
Renamed the file for improved clarity and consistency in naming conventions.
2025-11-11 21:49:20 +03:00
Benjamin Funke
eeb9235d88 add PE signatures (Boost/FAAD/LZMA) 2025-11-11 10:51:16 +01:00
Benjamin Funke
a4f5dc9e96 add AMD Graphical Services signature 2025-11-10 19:42:39 +01:00
DosX
46c3f71642 dbs_min update 2025-11-10 13:35:23 +03:00
DosX
4ab276f23d Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-11-10 13:35:06 +03:00
DosX
57b873500e Refactor fake section names handling in scan function
Replaces hardcoded fake section names with a dynamically generated list using a mapping function for improved maintainability and clarity in the scanForPackersAndCryptors_NET_and_Native function.
2025-11-10 13:35:04 +03:00
Benjamin Funke
fa17b1470e
Update BufferSize options in changelog 2025-11-09 07:42:02 +01:00
DosX
f8d766b3be Improve VB and DOS stub detection in PE analysis
Added vbCompilerRuntime variable and enhanced detection of modified/patched VB libraries in Microsoft.6.sg. Updated DOS stub signature check to use isSignaturePresent in __GenericHeuristicAnalysis_By_DosX.7.sg for improved accuracy.
2025-11-08 23:48:17 +03:00
DosX
c12c8e8a74 Add shell mutation option to ASMGuard detection
Introduced 'shell mutation' to sOptions when ASMGUARD section is detected, providing more detailed detection information for ASMGuard version 2.XX.
2025-11-08 15:31:56 +03:00
DosX
ef947b9c17 dbs_min update 2025-11-08 12:49:41 +03:00
DosX
db2460b4cc Rename and update PE signature files
Renamed Py2exe.1.sg to py2exe.2.sg and The_Best_Cryptor.2.sg to db_extra/PE. scr2exe.2.sg refactored.
2025-11-08 12:49:26 +03:00
DosX
a84e08f185 Add Aqua RAT detection for VB5 binaries
Introduced logic to detect Aqua RAT variants (0.0.1 and 0.2) in VB5 binaries lacking a Rich signature by checking import position hashes and section signatures.
2025-11-08 11:25:46 +03:00
Benjamin Funke
cf37afa71e fix XBF signature
- Use correct link
- Changed from 'archive' to 'format'
2025-11-07 19:02:39 +01:00
DosX
931b9df63b dbs_min update 2025-11-07 19:07:18 +03:00
DosX
b2eaff5972 Delete IDA.4.sg 2025-11-07 18:39:47 +03:00
DosX
b6367e4b51 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-11-07 18:39:11 +03:00
DosX
21e3959cc9 Refactor .NET object presence checks to use validateNetObject
Replaced multiple calls to PE.isNetObjectPresent with validateNetObject. Also updated related comments for clarity.
2025-11-07 18:39:06 +03:00
Benjamin Funke
b634c110d4 add XBF archive signature 2025-11-07 14:19:59 +01:00
Benjamin Funke
e6f1b0c40b add PRI signature 2025-11-07 14:07:02 +01:00
Benjamin Funke
c710094fa1 add IDA PE signature 2025-11-07 11:14:37 +01:00
DosX
d12fabeec3 dbs_min update 2025-11-06 17:44:12 +03:00
DosX
c099684e8b Improve VMProtect .NET detection logic
Refines the detection conditions by adding checks for 'get_IsAttached' and 'OpCodes' objects, simplifies pattern construction, and updates signature matching logic for better accuracy in identifying VMProtect .NET 3.X.
2025-11-06 17:43:45 +03:00
DosX
070e49d2ff Refactor detection scripts to use sVersion instead of sOptions
Updated Aeco_installer.1.sg and Watcom.6.sg detection scripts to assign version information to sVersion instead of sOptions, improving consistency in version handling.
2025-11-06 12:56:38 +03:00
DosX
08352a9fab Trim whitespace from processed code output
Applies .trim() to the result.code before further legacy compatibility transformations, ensuring that leading and trailing whitespace is removed from the output.
2025-11-05 21:41:50 +03:00
DosX
c42c1f3eff dbs_min update 2025-11-05 21:41:26 +03:00
DosX
e034672a11 dbs_min update 2025-11-05 21:32:58 +03:00
DosX
b532d379a7 Improve RAT detection and string handling in analysis
Updated string replacement logic to use String() for consistency. Added Malpedia reference comments for several RAT detections and set Orcus RAT version explicitly. Improved variable initialization and clarified detection logic for multiple malware families.
2025-11-05 21:30:00 +03:00
DosX
59e740464e Improve debug section detection and NjRAT heuristics
Changed debug section name matching to be case-insensitive and reordered NjRAT detection logic to include additional heuristics such as checking for '|PWD| ' string presence. These updates enhance detection accuracy for both debug sections and NjRAT malware.
2025-11-05 18:41:53 +03:00
DosX
af55a2d88e Update Windows Authenticode detection logic
Replaces overlay comparison with PE.isSigned() for signature detection and refines overlay check to append 'after overlay' to options if applicable. Improves accuracy and clarity of detection rule.
2025-11-05 17:29:52 +03:00
DosX
cb84ed2c18 dbs_min update 2025-11-04 17:50:54 +03:00
DosX
ee26b06e9b Refactor debug section detection with regex
Replaces multiple string checks with a regular expression to detect debug sections, simplifying and consolidating the logic for identifying TCC/GCC and modern LLVM debug sections.
2025-11-04 17:50:35 +03:00
DosX
3a5d278242 dbs_min update 2025-11-04 17:17:39 +03:00
DosX
884b7870eb Add verdict checks and references for various RATs
Added 'verdicts.length === 0' checks to ensure only one verdict is pushed per scan. Inserted Malpedia reference comments for several RAT families (Ramnit, Neshta, Poison Ivy, Gh0st RAT, DarkComet, BitRAT, Octopus RAT, Bozok, NetWire, Remcos) to improve code clarity and maintainability. Also refactored some conditional formatting for consistency.
2025-11-04 17:15:28 +03:00
DosX
4bab6803e1 Detect Bozok RAT variants by import hash
Added heuristic to identify Bozok RAT versions 1.0, 1.2-1.3, and 1.4-1.5.X based on import position hashes and absence of Rich signature. Detected variants are added to the verdicts array.
2025-11-04 17:06:44 +03:00
DosX
654f5ebb0f Detect Exception RAT by PE section name
Added a heuristic to identify 'Exception RAT' malware by checking if the first PE section name matches a specific pattern. This enhances detection capabilities for this threat.
2025-11-04 17:06:33 +03:00
DosX
3c2fcb77ed Add detection for Aquates RAT in PE analysis
Introduces a new heuristic to identify Aquates RAT v1.0 based on import count, Rich signature, and specific import position hash. This enhances the detection capabilities of the PE analysis script.
2025-11-04 17:06:24 +03:00
DosX
b1919195db Fix for-in loop usage in array iteration
Replaced for-in loops with standard for loops when iterating over arrays in scanForAntiAnalysis_NET and scanForPackersAndCryptors_NET_and_Native functions. This prevents potential issues with inherited properties and ensures correct array traversal.
2025-11-04 15:28:28 +03:00
DosX
4e06377ea3 dbs_min update 2025-11-04 15:19:17 +03:00
DosX
21c5a62d36 Add QQProtect detection and improve resource scanning
Added 'QQProtect' to the packer/cryptor detection list and updated the resource name check to include 'SHELLCODE' alongside 'PAYLOAD' for improved malicious code detection.
2025-11-04 15:19:01 +03:00
DosX
56db1ffc0c Initialize version variables as empty strings & regex update
Changed uninitialized variables 'versionBySectionDetected' and 'versionByResourceDetected' to be initialized as empty strings. Also updated a regular expression to match 'a pc' in section name validation logic.
2025-11-04 15:03:41 +03:00
DosX
08edc0f310 Add Bat To Exe Converter resource name signature
Added detection for 'Bat To Exe Converter' by including its resource name signature in the packer and cryptor scanning function.
2025-11-04 14:57:17 +03:00
DosX
b6a38b2193 Enhance NetReactor detection logic
Wrapped anti-tamper and kernel32 signature checks within a global .cctor presence condition. Added an alternative detection path for kernel32 object and signature, improving detection accuracy.
2025-11-04 11:21:55 +03:00
DosX
f564102101 Expand import hash check in BatToExeConverter detection
Added an additional import position hash (0x2afcef3f) to the detection logic for Bat To Exe Converter packer, improving detection coverage.
2025-11-04 11:16:15 +03:00
DosX
f1826ec25a Handle JScript.NET modules in build info check
Added detection for JScript.NET standard library and adjusted build info modification logic to avoid false positives for JScript.NET modules. Introduced isJscriptNetStandardLibraryPresent() to support this detection.
2025-11-04 11:12:10 +03:00
DosX
d16764809b Fix section lookup logic in UPX-Patcher detect function
Corrects the way the '.fish' section is accessed by using the section index rather than the section object. This prevents potential errors when checking for the '.fish' section after '.dosx'.
2025-11-04 11:02:51 +03:00
DosX
1839051f25 Update header comments and add donation info
Reformatted and expanded the file's header comments for improved readability. Added a new donation section with cryptocurrency addresses and updated the ABOUT and CONTACTS sections.
2025-11-03 17:53:18 +03:00
DosX
b42fa36cc1 dbs_min update 2025-11-02 22:20:59 +03:00
DosX
c6b73e471f Refactor PE signature detection scripts for consistency
This commit refactors several PE detection scripts to improve code consistency, formatting, and readability. Changes include normalizing indentation, fixing comment formatting, removing redundant code, and updating string concatenation to use the 'append' method where appropriate. No functional logic changes were made except for minor cleanups.
2025-11-02 22:20:41 +03:00
DosX
3f1898623e Add rule for Microsoft Linker detection
Introduced a new YARA rule 'Linker__Microsoft_Linker' that triggers when the Rich signature is present, leveraging the existing IsRichSignPresent rule.
2025-11-02 22:02:00 +03:00
DosX
cb912f6efe Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-11-02 21:56:56 +03:00
DosX
2fb0d6bf45 Add YARA rule for XVolkolak tool detection
Introduced a new rule 'Tool__XVolkolak' to detect PE files with a section named '.xvlk', indicating the presence of the XVolkolak tool.
2025-11-02 21:56:53 +03:00
DosX
a5f6839683 Add new heuristic signature
Added the pattern 'E8000000005D81ED' to improve detection of ASPack (x32) and TTP Pack (x32) in the scanForPackersAndCryptors_NET_and_Native function.
2025-11-02 21:56:49 +03:00
Benjamin Funke
f95ef57b92 add detection rule for GLEW/OpenAL (ELF) 2025-11-02 19:01:56 +01:00
Benjamin Funke
dbdaba7d06 add detection rule for FreeType/LZMA/PulseAudio (ELF) 2025-11-02 08:57:16 +01:00
Benjamin Funke
c8178d242b add detection rules for FluidSynth/Midmod/MPEG2
Introduces new ELF detection rules

These rules helps to improve the detection of ELF library in ELF binaries
2025-11-01 17:51:06 +01:00
Benjamin Funke
c358f39efa add detection rule for FFmpeg/Lego1 (ELF)
Introduces new ELF signatures, those were mostly ported from the PE variant
2025-11-01 14:45:13 +01:00
Benjamin Funke
711d9d0711 add detection rule for Curl/FLAC 2025-11-01 12:46:37 +01:00
Benjamin Funke
c5d229317e rewrite FAS signature 2025-11-01 09:49:23 +01:00
DosX
e51db7e1bc Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-11-01 09:25:58 +03:00
Benjamin Funke
49aa43b060 add detection rule for DirectInput
Introduces new detection rule for DirectInput

These rules help to detect DirectX Input library in binaries.
2025-11-01 07:25:34 +01:00
DosX
6d9be06dfc Improve library detection regex for OpenColorIO and libpng
Updated the detection logic in OpenColorIO.4.sg and libpng.4.sg to use case-insensitive regular expressions, ensuring more robust identification of the respective libraries.
2025-11-01 09:24:44 +03:00
DosX
62968382e0 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-11-01 09:22:19 +03:00
DosX
4d9b86944e Enhance nPack.2.sg detection and update comments
Added a new detection case in nPack.2.sg for PE files with specific entry point and import hash. Mark detected files as 'modified' if the .nPack section is missing. Also updated a comment in bin.SystemErr.1.sg for clarity.
2025-11-01 09:22:17 +03:00
Benjamin Funke
5ee86c9a07 add detection rule for libpng
Introduces new detection rule for libpng

This rule identifies any version of libpng if present in binaries
2025-11-01 01:06:42 +01:00
Benjamin Funke
3c581c6cfd add detection rule for 16Edit
Introduces new detection rule for 16Edit

16Edit is an Hex Editor which is used by LordPE
2025-11-01 00:34:25 +01:00
Benjamin Funke
a08411d79a Add detection rule for Atlantic/OpenColorIO
Introduces new detection rule for Atlantic & OpenColorIO

These rules help to detect video library in binaries.
2025-10-31 22:51:39 +01:00
Benjamin Funke
3571c84904 refactor Gimp Pattern signature 2025-10-31 22:39:22 +01:00
Benjamin Funke
d7fbc3ee57 refactor TRE/TFM signature 2025-10-31 22:05:44 +01:00
Benjamin Funke
f97fddfab7 improve DatPack/FFN signature
Added byte check for FFN Windows format.
Added reference to DatPack format
2025-10-31 21:34:24 +01:00
Benjamin Funke
8388532fcb refactor BTF signature 2025-10-31 19:39:49 +01:00
Benjamin Funke
22216e1d4e improve signatures (MAT/SystemErr)
Refactored MAT signature with regex to identify the version number.

SystemErr reference added
2025-10-31 19:16:20 +01:00
DosX
a27842404d dbs_min update 2025-10-31 21:02:43 +03:00
DosX
aae1244cec Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-31 20:52:15 +03:00
DosX
10fd1d096c Update signature scanning to use section file offset
Modified signature scanning in detect() to start from the first section's file offset instead of 0x00. Also replaced PE.findSignature with PE.isSignaturePresent for Unicode string detection.
2025-10-31 20:52:13 +03:00
Benjamin Funke
95e877f6d1 add SLN signature
Introduces new detection rule for SLN (Solution file)
2025-10-31 18:44:07 +01:00
DosX
2d89a18cc8 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-31 15:55:50 +03:00
DosX
af405349e9 Remove donation request block from script header 2025-10-31 15:55:49 +03:00
Benjamin Funke
46db676de5 add detection rule for Miles Sound System 2025-10-30 20:55:34 +01:00
DosX
812a07e92b dbs_min update 2025-10-30 20:01:44 +03:00
DosX
1a52a40222 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-30 20:00:50 +03:00
DosX
04ec52a578 Add new packer and cryptor heuristic signatures
Added detection signatures for 'Vbs To Exe', 'CodeVeil', 'DZA Patcher', and 'UPX Protector' in the packer and cryptor analysis database. These updates improve the heuristic analysis coverage for .NET and native applications.
2025-10-30 20:00:30 +03:00
Benjamin Funke
6c2a214c2d LIXS signature cleanup
Removed unnecessary bDetected variable usage, Added reference for the game.
2025-10-30 17:59:09 +01:00
DosX
d9b9d74e54 Update library detection regex for FFmpeg and PortAudio
Refined the detection logic for FFmpeg to use a case-insensitive regex and simplified the PortAudio regex to match 'portaudio_x86' or 'portaudio_x64' more concisely.
2025-10-30 19:15:14 +03:00
DosX
99dc707044 dbs_min update 2025-10-30 19:08:38 +03:00
DosX
ddd00f096f Expand resource name check for malicious code scan
The scan now checks for resources matching the pattern /PAYLOAD/ in addition to 'STUB', improving detection of anomalous resources in PE files.
2025-10-30 19:07:41 +03:00
DosX
9b9fbd4d37 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-30 19:06:01 +03:00
DosX
0800599511 Fix typos and update resource name check in heuristic analysis
Corrected the function name from isVbNetstandardLibraryPresent to isVbNetStandardLibraryPresent for consistency. Also updated the resource name check to use PE.isResourceNamePresent("STUB") instead of a regex.
2025-10-30 19:05:56 +03:00
Benjamin Funke
afcb7ca2b3 Add detection rule for FFmpeg 2025-10-29 18:29:44 +01:00
Benjamin Funke
2570b33fdd add PortAudio PE signature
Introduces new detection rule for PortAudio

These rules help to detect audio library in binaries.
2025-10-29 11:42:08 +01:00
DosX
869b4a8940 dbs_min update 2025-10-28 23:41:54 +03:00
DosX
9cea681143 Detect Qatar RAT 1.2 packed with MPRESS
Added heuristic to identify Qatar RAT version 1.2 when packed with MPRESS by checking for specific import hashes and import count.
2025-10-28 23:09:48 +03:00
DosX
2037feeaf9 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-28 23:04:12 +03:00
DosX
74a175cab9 Detect Octopus RAT via import hash and signature
Added a heuristic to identify Octopus RAT by checking for a specific import position hash and the presence of the 'Octopus' signature in a section. This enhances detection capabilities for this malware family.
2025-10-28 23:04:08 +03:00
DosX
68585ab1bf Detect Furax RAT via import position hashes
Added heuristic to identify Furax RAT by checking for specific import position hashes in PE files. This enhances detection capabilities for this malware family.
2025-10-28 23:03:47 +03:00
DosX
c1907a3a10 Detect Imminent Monitor RAT via .NET object check
Adds a heuristic to flag files as 'Imminent Monitor RAT' if both 'LZLoader' and 'Injector' .NET objects are present and no other verdicts have been made.
2025-10-28 23:03:38 +03:00
DosX
6734fdbcf2 Detect Orcus RAT via Orcus.Shared .NET object
Added a heuristic to identify Orcus RAT (versions 1.3-1.9.1) by checking for the presence of the 'Orcus.Shared' .NET object. This enhances detection coverage for this malware family.
2025-10-28 23:03:33 +03:00
DosX
fd354bc7c2 Detect DarkRAT based on .NET module and object
Adds a heuristic to identify DarkRAT when the .NET module name is 'Client.exe' and the 'fusion' object is present. This enhances detection coverage for this specific malware family.
2025-10-28 23:03:27 +03:00
DosX
06772973b5 Detect jnRAT based on Kheir.exe module name
Adds a heuristic to identify jnRAT by checking if the .NET module name is 'Kheir.exe' and no other verdicts have been found. This enhances detection coverage for this specific malware variant.
2025-10-28 23:03:20 +03:00
Benjamin Funke
79c9f96680 add detection rules for D3DRM/DirectSound/QMixer
Introduces new detection rules for D3DRM/DirectSound/QMixer

These rules help to detect audio/graphic libraries in binaries.
2025-10-28 18:45:41 +01:00
Benjamin Funke
aa25a0e967 add DirectDraw/VFW PE signature 2025-10-28 17:59:49 +01:00
DosX
c49f0e1b68 Improve PE section detection for compiler heuristics
Enhanced the logic in scanForLanguagesAndCompilers_NET_and_Native to explicitly check for '.eh_frame' and '.build-id' sections using PE.section. This refines the detection of MinGW and Microsoft Visual Studio by considering these sections, improving accuracy in compiler identification.
2025-10-28 19:38:52 +03:00
DosX
52bdf2ae12 Remove Rich Signature check in PyInstaller detector
Updated the PyInstaller.2.sg script to no longer require the presence of a Rich Signature for detection, allowing analysis of files without this signature. The check for .NET files remains in place.
2025-10-28 19:31:31 +03:00
DosX
b9578cf061 dbs_min update 2025-10-28 19:25:09 +03:00
DosX
06949602b2 Update packer detection signatures in heuristic analysis
Enhanced detection for DragonArmor by supporting optional leading dot in 'DAStub'. Added new signatures for 'SoftEntry' and 'ASM Guard' packers in the resource name checks.
2025-10-28 17:44:03 +03:00
DosX
093850f48a Update detection logic for DragonArmor and PyInstaller
Refined section name matching in DragonArmor detection to use a regular expression and adjusted PyInstaller detection to remove 'modified' from the options when an overlay is present.
2025-10-28 17:43:51 +03:00
DosX
9442e546ac Fix SecuROM signature array structure in packer scan
Corrected the SecuROM signature entry to use an array for multiple patterns, ensuring proper detection during packer and cryptor scanning.
2025-10-28 15:48:33 +03:00
DosX
30120e3477 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-28 15:45:48 +03:00
DosX
efe97282ae Add spacing and clarify example variable names in PE init
Added blank lines for readability after return statements and updated example variable names in documentation for PE.section and PE.resource to be more descriptive.
2025-10-28 15:45:45 +03:00
Benjamin Funke
3824c65c12 add Smacker PE signature 2025-10-27 18:54:28 +01:00
DosX
4265b3dfca dbs_min update 2025-10-27 18:18:22 +03:00
DosX
8ee246a1c2 Replace single quotes with double quotes in log messages
Updated log message formatting to use double quotes instead of single quotes for consistency and improved readability in heuristic analysis script.
2025-10-27 18:18:06 +03:00
DosX
532b1f5ede Set options to 'modified' if PEBundle section missing
Adds a check in the detect() function to set sOptions to 'modified' if a section matching /^(peb|PEB)undle$/ is not present. This helps flag modified bundles for further processing.
2025-10-27 13:24:35 +03:00
DosX
1a00b7889e Improve PE-Shield detection logic
Refactors section name check to use cached 'peShieldSection' variable and adds handling for cases where the section is missing but detection is true, setting sOptions to 'modified'.
2025-10-27 13:24:15 +03:00
DosX
b7a4dedf9e Remove Rich signature check from section heuristics
Eliminated the PE.isRichSignaturePresent() condition from MinGW and FASM section heuristics in scanForLanguagesAndCompilers_NET_and_Native().
2025-10-27 13:24:00 +03:00
DosX
affd85f88f dbs_min update 2025-10-27 12:19:38 +03:00
DosX
b3070bdd45 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-27 12:19:04 +03:00
DosX
0bac3b098c Relax Rich signature check in compiler detection
Modified the logic in scanForLanguagesAndCompilers_NET_and_Native to trigger on the presence of a Rich signature alone, rather than requiring a specific pattern match. This broadens detection for Microsoft Visual Studio compiled binaries.
2025-10-27 12:19:01 +03:00
Benjamin Funke
2fb1c4878b fix spacing & add reference to signatures 2025-10-26 16:32:33 +01:00
Benjamin Funke
da34ed544c add new signatures (GodotPCK/GAL) 2025-10-26 15:12:29 +01:00
Benjamin Funke
805443cd2e add TPU/RARREG signature 2025-10-26 10:51:12 +01:00
DosX
be28ae8362 dbs_min update 2025-10-25 17:18:14 +03:00
DosX
67909e5012 Detect anomalous 'stub' resource in PE files
Adds a check for the presence of a resource named 'stub' (case-insensitive) in PE files. If found, an 'Anomalous resources' verdict is added, potentially indicating suspicious or malicious content.
2025-10-25 17:17:56 +03:00
DosX
292b865b78 Add resource name heuristic for packer detection
Introduced a check for known packer and protector resource names in PE files by adding a resource name validation step in the heuristic analysis. Added the `validateResourceNames` function to support this feature. Also fixed a typo in the operator name mapping.
2025-10-25 17:17:43 +03:00
DosX
4b9b313717 Add function to find resource by name pattern
Introduced PE.isResourceNamePresentExp to locate the first resource whose name matches a given pattern. The function returns match details including the resource number and captured subpatterns, or null if not found.
2025-10-25 16:38:20 +03:00
DosX
55be6e35fe Improve detection logic for ElectronApp and Intel XeSS
Refactored ElectronApp detection to check for the existence of the CPADinfo section object before searching for strings. Updated Intel XeSS detection to use a regular expression for library presence, allowing for more flexible matching.
2025-10-25 16:38:14 +03:00
DosX
6a5eccdb47 Update detection rules and metadata for PE signatures
Renamed UPX_Mutanter.2.sg to AHTeam_UPX_Mutanter.2.sg and updated its metadata for clarity. Corrected the protector name casing in beria.2.sg and improved formatting. Added language metadata to obfus_h.5.sg for better identification.
2025-10-24 22:29:34 +03:00
DosX
998cb9c9f2 dbs_min update 2025-10-24 22:02:35 +03:00
DosX
3650d9880c Change library name to 'Discord RPC'
Changed the meta library name from 'discord-rpc' to 'Discord RPC'.
2025-10-24 22:01:56 +03:00
Benjamin Funke
40a7ede357 add new detection rules for discord-rpc/WinSparkle/XPatFC
Introduces new detection rules for discord-rpc/WinSparkle/XPatFC
2025-10-23 20:41:18 +02:00
Benjamin Funke
aa02067b24 Add detection rule for Lego1
Introduces new detection rule for Lego Island game

This rule helps to identify if the Game uses the release or debug version of the Game library
2025-10-23 18:13:00 +02:00
Benjamin Funke
27806e98c7 add new various PE signatures
Approved by horsicq
Adding new PE signatures:
- AtMsg32
- Edit_Dev (ADI4)
- iMuse
- LoadServ
- SmartHeap
2025-10-23 11:57:54 +02:00
DosX
c9bac39f35 Fix ScriptHookV detection logic
Replaces the use of PE.isLibraryPresentExp with PE.isLibraryPresent for detecting ScriptHookV.dll. Also adds a reference link to the official ScriptHookV page.
2025-10-22 21:38:56 +03:00
DosX
029bc113b8 dbs_min update 2025-10-22 17:49:59 +03:00
DosX
f7a8f454d9 Add Fatpack packer detection to heuristic analysis
Added 'Fatpack' to the list of known packers and updated the section names dictionary to improve detection coverage in scanForPackersAndCryptors_NET_and_Native.
2025-10-22 17:25:21 +03:00
DosX
b68867f2db Add detection rule for Fatpack packer
Introduces a new rule file for identifying the Fatpack packer in PE files. The rule checks for specific characteristics such as 64-bit architecture, TLS presence, import hashes, section/resource counts, and resource/section names to determine detection and options.
2025-10-22 17:24:52 +03:00
DosX
3567f4b2ac dbs_min update 2025-10-21 17:00:56 +03:00
DosX
e30c238f24 Enhance RAT detection heuristics
Added detection for Smart RAT 1.0.X based on import position hashes and improved NjRAT detection by checking for the presence of the 'njLogger' .NET object.
2025-10-21 17:00:40 +03:00
DosX
75162856c2 dbs_min update 2025-10-21 15:54:35 +03:00
DosX
b85138fa9e Refactor PE detection and update YARA rule formatting
Simplified the React OS detection logic in db/PE/_PE.0.sg and removed an unnecessary blank line in db/PE/AverCryptor.2.sg. Cleaned up formatting in the DiE_InterestingThings_by_DosX.yar YARA rules file. Also removed screenshot.jpg from the repository.
2025-10-21 15:54:15 +03:00
DosX
af1ba1d744 Detect NonEuclid RAT via isVM_by_wim_temper object
Added a heuristic to identify NonEuclid RAT by checking for the presence of the .NET object 'isVM_by_wim_temper' in the scanForMaliciousCode_NET_and_Native function.
2025-10-21 15:53:28 +03:00
DosX
72cc45c010 Update packer detection patterns in heuristic analysis
Expanded detection patterns for 'DxPack' and 'SoftSentry' packers in the scanForPackersAndCryptors_NET_and_Native function. 'DxPack' now checks for both 'coderpub' and '.reloc1', while 'SoftSentry' includes a regex for multiple section names and '.prdata'.
2025-10-21 15:53:20 +03:00
DosX
38eae6dad4 Add detection rules for EAX Unified and Vorbis libraries
Introduced new rule files for identifying EAX Unified (EAX.dll) and Vorbis libraries in PE files. These rules help automate detection of these audio libraries in binaries.

Co-Authored-By: Benjamin Funke <58399929+BJNFNE@users.noreply.github.com>
2025-10-21 15:51:49 +03:00
DosX
229f571ce2 Use section-based signature detection in .NET check
Replaces PE.findSignature with PE.isSignatureInSectionPresent for improved accuracy when detecting the SettingsSingleFileGenerator signature in .NET assemblies.
2025-10-20 11:41:51 +03:00
DosX
ee2a237fa0 dbs_min update 2025-10-20 11:35:01 +03:00
DosX
989aa2fe31 Fix ASDPack and update PACE detection rules
Refined ASDPack detection logic to check for exactly one import, three sections, and specific import details. Added a reference link to PACE detection rule for context.
2025-10-20 11:34:46 +03:00
DosX
febdc9686f Improve detection logic in ASDPack.2.sg
Added an additional condition to detect when there are no imports and Kernel32.dll is present with a specific import position hash.
2025-10-20 11:32:28 +03:00
DosX
30dcb42716 Enhance bambam.2.sg detection logic
Added new detection condition for files with zero imports and a specific import position hash. Also, set 'modified' option if the '.bedrock' section name is not present after detection.
2025-10-20 11:26:01 +03:00
DosX
2fcbf0650c Update PE packer detection signatures and options
Refined detection logic and signatures for BeRoEXEPacker, HidePE, and generic heuristic analysis scripts. Adjusted string patterns and options for improved accuracy in identifying packers and cryptors.
2025-10-20 11:12:46 +03:00
DosX
801ba1bac6 Add detection and rename VisualStudio_NET.6.sg
Added an additional detection condition to BeRoEXEPacker.2.sg for '(C)BeRo!PE' signature. Renamed VisualStudio_NET.6.sg to Microsoft_VisualStudio_NET.6.sg.
2025-10-20 00:19:15 +03:00
DosX
3df56ebf1d Add detection rule for TNTSI library
Introduces a new Detect It Easy rule file to identify the presence of TNTSI.dll in PE files.

Co-Authored-By: Benjamin Funke <58399929+BJNFNE@users.noreply.github.com>
2025-10-19 22:05:37 +03:00
DosX
164d8c12bc Standardize headers in PE detection rule files
Updated multiple PE detection rule files to use a consistent header format: '// Detect It Easy: detection rule file' and standardized author attribution. This improves clarity and maintainability across the rule database.
2025-10-19 21:54:34 +03:00
DosX
e0de558888 Update PETetris rule and improve detection logic
Added a description header to the PETetris rule file for clarity. Modified the detection function to return the result of main() instead of just calling it. Extended the section name validation to include PETetris in the heuristic analysis.
2025-10-19 21:46:04 +03:00
DosX
c07e855e87 Detect 'crypted' in .NET assembly and module names
Added checks for 'crypted' in .NET assembly and module names to improve heuristic detection of potentially malicious code.
2025-10-19 20:46:22 +03:00
DosX
d91a0393c5 Update comment to reference meta() instead of init()
Replaces a comment reference to init() with meta() to clarify the recommended function for use with _setResult in detection scripts.
2025-10-19 20:38:04 +03:00
DosX
b66e2d00e2 dbs_min update 2025-10-19 20:17:42 +03:00
DosX
c04f484a20 Add new packer signatures and rename rule file
Added detection signatures for PwdProtect and ID Application packers in the heuristic analysis script. Renamed 'TheHypers protector.2.sg' to 'TheHypers.2.sg'.
2025-10-19 20:17:28 +03:00
DosX
73e17bce2a Rename PwdProtect.2.sg and update bin.XBE.1.sg option
PwdProtect.2.sg was moved from db/PE to db_extra/PE. Also, the sOptions value in bin.XBE.1.sg was updated from 'Unsigned' to 'unsigned' for consistency.
2025-10-19 20:04:11 +03:00
DosX
3e464bd832 Add CONFIG file for partner autotools 2025-10-19 20:02:23 +03:00
DosX
7a82c2e0ee Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-19 19:56:07 +03:00
DosX
b185ec3578 Enhance packer detection and refactor language scan
Added detection for new packers and cryptors (Lumy, KeySec, TomatoX) in scanForPackersAndCryptors_NET_and_Native. Refactored scanForLanguages_NET_and_Native to scanForLanguagesAndCompilers_NET_and_Native and updated its usage. Improved section name handling and regular expression matching for exception sections.
2025-10-19 19:56:01 +03:00
DosX
e6eb9d52e0 Move PE rule files to db_extra 2025-10-19 19:55:45 +03:00
Benjamin Funke
4e47ac938f improve HNM signature
Found new Woodypecker samples for HNM
2025-10-19 14:10:53 +02:00
Benjamin Funke
f4446b5113 rewrite OGG signature 2025-10-18 17:23:22 +02:00
Benjamin Funke
5532193d46 refactor XBE signature 2025-10-18 15:50:34 +02:00
Benjamin Funke
8a4df1df0d OBC signature refactoring 2025-10-18 13:00:11 +02:00
Benjamin Funke
ef62fb905f add Matroska signature 2025-10-17 20:29:36 +02:00
DosX
f478ccd6f1 Update packer signature entries in heuristic analysis
Removed PECompact 0.975-1.10b3 and WinUpack signature entries, and adjusted the kkrunchy signature entry to use a different index.
2025-10-17 13:56:49 +03:00
DosX
cf14264964 dbs_min update 2025-10-17 13:41:59 +03:00
DosX
203f7bb9a3 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-17 13:38:35 +03:00
DosX
a0ebcbfe27 Update packer detection signatures
Removed EXE32PACK signature and consolidated VMProtect 3.6.0+ signatures into a single entry with an array of hashes for improved maintainability.
2025-10-17 13:38:29 +03:00
DosX
1daabe17df Refine version detection for Yodas Protector
Added a check to exclude files with a '.inq' section when detecting versions 1.02-1.03, improving accuracy of the detection logic.
2025-10-17 13:38:15 +03:00
Benjamin Funke
c993f96ab8 add key signatures 2025-10-17 11:42:28 +02:00
DosX
a27d73df8b Improve logging messages in heuristic analysis script
Enhanced log messages for better clarity in .NET obfuscation and packer detection routines. Added explicit messages for virtualization-like behavior and improved consistency in log formatting.
2025-10-17 00:26:03 +03:00
DosX
1e6f64d655 Add log messages to scanning functions
Introduced log statements at the start of various scanning functions to indicate the type of scan being performed. Also updated some log message texts for clarity and consistency.
2025-10-17 00:14:54 +03:00
DosX
318cb48284 dbs_min update 2025-10-16 22:48:27 +03:00
DosX
b19457f033 Expand and refine MSIL opcode definitions in NetOpCodes
Added missing MSIL opcodes, improved coverage for arithmetic, logical, array, indirect, control flow, type, object, and exception handling operations. Enhanced comments and formatting for clarity and maintainability.
2025-10-16 22:48:08 +03:00
DosX
0da45b41e7 Update VB library detection to use regex
Replaced string-based DLL detection with regular expression-based checks for MSVBVM60, MSVBVM50, and VB40032 libraries to improve flexibility and case insensitivity.
2025-10-16 22:20:07 +03:00
DosX
7a06a12a16 Fix anti-analysis trigger loop logic
Replaces 'for...in' loops with standard index-based loops for iterating over antiDnSpyTriggers and antiIlSpyTriggers arrays, ensuring correct traversal and detection logic.
2025-10-16 21:55:38 +03:00
DosX
23aff833f8 dbs_min update 2025-10-16 20:23:48 +03:00
DosX
e8d8669d21 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-16 20:22:22 +03:00
DosX
a51223f653 Improve UPX-Patcher section detection logic
Refactored the detect() function to use section name lookups and added a check for the number of sections. Enhanced entry point comparison logic and improved code readability.
2025-10-16 20:22:20 +03:00
DosX
49088576ac Fix packer name from 'Epack' to 'EXE Pack'
Corrected the packer name in the detection list from 'Epack' to 'EXE Pack'.
2025-10-16 20:22:13 +03:00
DosX
ee7f945f53 Improve AHpacker detection logic
Updated the detection function to check both the first and last PE section names for '!EPack', enhancing accuracy in identifying packed files.
2025-10-16 20:21:57 +03:00
Benjamin Funke
a9aa66328a add LVL signature 2025-10-16 18:38:35 +02:00
DosX
69ea428cb0 Add newline before function return in bin.PGP.1.sg 2025-10-16 18:39:05 +03:00
DosX
b6ee8b09d2 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-16 18:38:24 +03:00
DosX
ed77bbf2fa Expand export function checks in DLL analysis
Added checks for 'WinMain', 'wWinMain', and 'EntryPoint' export functions when determining if a DLL is acting as an executable. This enhances the heuristic analysis for obfuscated PE files.
2025-10-16 18:38:14 +03:00
Benjamin Funke
4249132b0a add PGP signatures
PGP signature is based on the PEM signature
2025-10-16 12:06:39 +02:00
Benjamin Funke
1fec60e63b add POL signature 2025-10-15 19:35:41 +02:00
DosX
532f12298b dbs_min update 2025-10-15 14:01:33 +03:00
DosX
dc41b0ddfd Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-15 14:01:11 +03:00
DosX
90b14e9956 Move PE rules to db_extra directory
Moved rules from db/PE/ to db_extra/PE/ to better organize the database structure.
2025-10-15 14:01:09 +03:00
Benjamin Funke
308ad8d5fc add links to signatures & cleanup 2025-10-15 09:43:12 +02:00
DosX
58c0db32e1 dbs_min update 2025-10-15 01:14:55 +03:00
DosX
45689be5e0 Refactor PE packer detection scripts for efficiency
Consolidated section skipping logic in VMProtect.2.sg, replaced multiple import function checks with hash-based checks in XComp.2.sg and XPACK.2.sg for improved performance, and removed redundant line in Zig.4.sg. These changes streamline detection logic and enhance maintainability.
2025-10-15 01:14:45 +03:00
DosX
1e8dd7bb97 Refactor and update VMProtect detection script
Refactored function names to camelCase for consistency, updated option strings to lowercase, improved return values to use booleans, and cleaned up author comments. Also commented out the unused detect_old function and made minor formatting improvements.
2025-10-14 23:41:25 +03:00
DosX
75053331ae Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-14 16:51:16 +03:00
DosX
d369a1a61b Update __GenericHeuristicAnalysis_By_DosX.7.sg 2025-10-14 16:51:15 +03:00
Benjamin Funke
9bd4c333fb add DTA signature 2025-10-14 12:22:52 +02:00
Benjamin Funke
665d0e13f3 add MCS signature 2025-10-13 21:50:09 +02:00
DosX
63d963a874 dbs_min update 2025-10-13 19:09:00 +03:00
DosX
427f22050a Detect DLLs missing both IAT and EAT
Adds a check to identify DLLs that lack both Import Address Table (IAT) and Export Address Table (EAT) sections, and marks them with a new option. This helps flag potentially suspicious or obfuscated DLLs.
2025-10-13 19:08:46 +03:00
DosX
e421b40d06 Detect missing or empty EAT in DLLs
Added logic to identify DLLs with missing or empty Export Address Tables (EAT). Flags 'No EAT' for DLLs without exports and entry point, and 'Empty EAT' for DLLs with an empty export table.
2025-10-13 19:08:39 +03:00
DosX
f0caf904be Fix IAT directory check in obfuscation scan
Updated the condition to check for a valid import section before marking the IAT directory as empty. This prevents false positives when the import section is missing.
2025-10-13 19:07:46 +03:00
DosX
9cd9877211 Detect and flag empty IAT in heuristic analysis
Enhanced the heuristic analysis to distinguish between missing and empty Import Address Table (IAT) in PE files. Now adds a separate 'Empty IAT' option when the IAT section exists but contains no imports.
2025-10-13 18:44:06 +03:00
DosX
fb4214be7d Add export section check to NET Native detection logic
Updated the detect function to require the presence of an export section (EAT) when identifying the NET Native format. This enhances detection accuracy by ensuring the export address table is always present.
2025-10-13 18:43:39 +03:00
DosX
c904c2f3db Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-13 18:31:58 +03:00
DosX
5a70780ede Fix incorrect packer name in heuristic analysis
Replaces 'Epack' with 'AHpacker' in the packer detection list to correct the identification of the '!EPack' signature.
2025-10-13 18:31:56 +03:00
Benjamin Funke
9647a22eb3 refactor RWPACK in PAK signature 2025-10-13 15:18:31 +02:00
DosX
f9112eb199 dbs_min update 2025-10-13 14:12:43 +03:00
DosX
087d485306 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-13 14:12:26 +03:00
DosX
ee1329e5b5 Improve logging in heuristic analysis script
Updated log message formatting for section name collisions to use double quotes. Added a log entry at the start of the malicious code scanning function to indicate when scanning begins.
2025-10-13 14:12:18 +03:00
Benjamin Funke
956dbe6e55 refactor Bink Video signature 2025-10-13 12:56:46 +02:00
DosX
2526865112 dbs_min update 2025-10-13 13:50:12 +03:00
DosX
72ec89488b Improve module format detection and metadata accuracy
Refactored and enhanced detection logic for various tracker and module formats, improving accuracy and robustness. Updated module metadata to include more precise author and tracker attributions. Replaced many 'return false' error paths with early returns for clarity and maintainability. Improved verbose output and added missing TODOs for future enhancements.

Co-Authored-By: Kae <Kaens@users.noreply.github.com>
2025-10-13 13:48:41 +03:00
DosX
61dfd90484 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-13 13:45:26 +03:00
DosX
52d43dfa3a Add detection rule for 32LiTe packer on MSDOS
Introduces a new signature file for detecting the 32LiTe packer in MSDOS executables.
2025-10-13 13:45:24 +03:00
Benjamin Funke
673f588146 refactor W3D signature 2025-10-13 12:41:25 +02:00
Benjamin Funke
02db73ae22 refactor signatures (DatPack/IPW) 2025-10-12 19:15:30 +02:00
Benjamin Funke
3fdbfc8e33 refactor RGS signature 2025-10-12 18:50:04 +02:00
Benjamin Funke
79e07d0eb9 refactor FSH signature 2025-10-12 15:54:16 +02:00
Benjamin Funke
6bd941aa33 add CTRK signature 2025-10-12 14:06:17 +02:00
DosX
c90d98cd37 Update ASM Guard detection logic
Refactored the detection function to check for the 'ASMGUARD' section name first, and added detection for the 'NT.DLL' resource name. Removed overlay signature search and related logic for improved accuracy and maintainability.
2025-10-12 11:14:33 +03:00
DosX
aed83117d7 Detect modified AZProtect if section missing
Adds a check for the presence of the 'AZPR0001' section name in the PE file. If the section is missing, sets the options to 'modified' to indicate a potentially altered protector.
2025-10-12 10:39:20 +03:00
DosX
4d97e40920 dbs_min update 2025-10-12 00:28:14 +03:00
DosX
f9927a5ecb Update bin.P7X.1.sg 2025-10-12 00:27:43 +03:00
DosX
e69d7b07f8 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-12 00:26:02 +03:00
DosX
6c81a3b30b Update detection rules for several PE signatures
Refined detection logic for ASPack, Agile, and Babel .NET to improve accuracy and reliability. Renamed Amazon_X-Ray signature file to Amazon_X-Ray.4.sg. Added a reference link to Smart Install Maker signature.
2025-10-12 00:26:00 +03:00
Benjamin Funke
f8c4eb6ac6 refactor P7X signature 2025-10-11 23:10:08 +02:00
Benjamin Funke
ebaad1997b refactor PEM signature 2025-10-11 22:08:20 +02:00
DosX
6f4fd79ec2 Improve ACProtect 1.X detection logic
Refines the detection of ACProtect 1.X by checking the '.perplex' section's Characteristics field with a bitmask, ensuring more accurate version identification.
2025-10-11 20:21:58 +03:00
DosX
094d254426 dbs_min update 2025-10-11 18:59:48 +03:00
DosX
8ef71e3a5e Add spacing and comments for clarity in heuristic engine
Added blank lines after log statements and enhanced comments for better readability in the scanForObfuscations_NET and scanForAntiAnalysis_NET functions. Also updated packer signature comments with relevant URLs for reference.
2025-10-11 18:57:13 +03:00
DosX
c8ba554098 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-11 18:52:02 +03:00
DosX
463df5e03f Refactor option string concatenation with addOption helper
Replaces repeated manual string concatenation for the 'options' variable with a new addOption() helper function throughout the analysis scripts. This improves code readability and maintainability by centralizing the logic for appending option strings.
2025-10-11 18:42:28 +03:00
Benjamin Funke
a11ac0579c add ZinsSAV signature 2025-10-11 17:40:06 +02:00
DosX
fe70c70ab3 Refactor AverCryptor detection logic
Detection now checks the entry point pattern before verifying the '.avc' section. Also adds an option flag 'modified' if the section is missing, improving detection accuracy for modified samples.
2025-10-11 16:16:56 +03:00
DosX
027af99961 Fix & refactor Enigma version detection functions
Renamed version detection functions for clarity (e.g., getVersion to getEnigmaVersion). Updated detection logic to use new function names and improved structure for .NET and native stubs. Minor code style improvements and added missing variable initializations.
2025-10-11 11:58:01 +03:00
DosX
f2e7dc9298 Update URLs and comments for packer detection rules
Replaced outdated or less relevant URLs with current or archived GitHub links for AtomPePacker, Private EXE Protector, and Windows PE Packer by Chenzs108. Added or updated comments in heuristic analysis to reference these sources and clarified some existing comments for accuracy.
2025-10-11 01:10:31 +03:00
DosX
3182838d00 Refine fake Enigma section name regex in heuristic analysis
Updated the regular expression for detecting 'fake Enigma' section names to more accurately match only '.enigma' or 'enigma', improving the precision of packer and cryptor detection.
2025-10-11 00:55:45 +03:00
DosX
895d52d26f dbs_min update 2025-10-11 00:31:08 +03:00
DosX
81f80cd950 Update NetShield.2.sg detection rule and metadata
Updated author information and added contact details and relevant links. Enhanced detection logic to identify 'Anti-ILDASM' and 'Anti-de4dot' features, and improved option labeling for 'Fake signs'.
2025-10-11 00:27:02 +03:00
DosX
5597cb7d62 Add NetShield to packer detection list
Included NetShield (identified by '!Sugar') in the list of known packers and cryptors for .NET and native applications.
2025-10-11 00:21:49 +03:00
DosX
a3930ac51c Update NetShield detection rule and reorganize files
Replaces the old NetShieldProtector.2.sg rule with a new NetShield.2.sg detection rule, simplifying detection logic. Also moves Box_Stub.1.sg from db/PE to db_extra/PE for better organization.
2025-10-11 00:21:23 +03:00
hypn0chka
5815fccc38 Correcting confusion 2025-10-11 01:43:49 +05:00
horsicq
c2731784ad Update file(s): 2025-10-10 2025-10-10 19:33:35 +02:00
DosX
90e9399438 Rename MacroMix.1.sg to MacroMix.4.sg 2025-10-10 16:05:30 +03:00
DosX
8f73e0fbf3 Update MacroMix detection logic and metadata
Changed meta field from 'plugin' to 'library' and improved section detection logic to check for specific characteristics in the MacroMix section. Also added author attribution for the rewrite.
2025-10-10 16:05:08 +03:00
DosX
12fa3104d0 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-10 15:46:59 +03:00
DosX
130014520e Enhance detection logic for Windows PE Packer
Updated the detection function to include additional checks for 32-bit, non-.NET binaries, section count, import position hash, and entry point comparison. Also added logic to flag modified sections and import address table (IAT) changes.
2025-10-10 15:46:57 +03:00
Benjamin Funke
4f8d5d3b3f add MacroMix signature 2025-10-10 13:09:23 +02:00
DosX
0b7eac5491 dbs_min update 2025-10-10 12:52:39 +03:00
DosX
e311ccec33 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-10 12:42:35 +03:00
DosX
b219cebb5b Update PE detection and reorganize extra signatures
Improved MinGW PE detection by checking '.eh_frame' section characteristics. Moved ADS_Self_Extractor.1.sg, Box_Stub.1.sg, and DirTy CrYpt0r.2.sg to db_extra/PE/ and normalized the filename for DirTy CrYpt0r. Minor formatting changes in bin.BSP.1.sg and bin.HNM.1.sg.
2025-10-10 12:42:33 +03:00
Benjamin Funke
aa876896d8 fix regex for Battlecry signatures 2025-10-08 21:36:50 +02:00
Benjamin Funke
d316a4afef refactor signatures (VM2/ZZDATA/Smacker) 2025-10-08 21:19:55 +02:00
DosX
fa98b1f695 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-08 22:05:06 +03:00
DosX
7cf8eb1795 Expand EP pattern checks in obfuscation scan
Added additional entry point patterns to the obfuscation detection logic in scanForObfuscations_Native. This enhances detection of proxy jumps by including more opcode sequences.
2025-10-08 22:05:04 +03:00
Benjamin Funke
c436797964 update url for W3D signature 2025-10-08 19:35:10 +02:00
Benjamin Funke
08505e55c2 refactor signatures (BSP/HNM/WBFS/ICNS/SMDH) 2025-10-08 19:17:06 +02:00
Benjamin Funke
707f620a49 refactor RCK signature 2025-10-08 18:31:17 +02:00
Benjamin Funke
64628cae29 refactor ITL signature 2025-10-08 12:42:57 +02:00
DosX
b7b8ab47b8 Improve PE section validation and regex in analysis
Enhanced checks for PE section FileOffset and FileSize to detect invalid values exceeding the file size minus overlay. Fixed a missing end-of-line anchor in the RET opcode regex for more accurate matching.
2025-10-08 10:32:32 +03:00
DosX
9bbbb3eb60 Add missing MSIL opcodes to NetOpCodes mapping
Added several missing MSIL opcodes to the NetOpCodes function, including ldelem.ref, jmp, leave, leave.s, and various conv and conv.ovf instructions. This improves the completeness of the opcode mapping for .NET bytecode analysis.
2025-10-08 10:08:00 +03:00
DosX
b78235fb8a Add more MSIL opcodes to NetOpCodes mapping
Expanded the NetOpCodes function with additional MSIL opcode mappings for comparison, constant loading, argument, local variable, and indirect operations. Also removed an extraneous entry from the packers and cryptors list.
2025-10-08 01:23:43 +03:00
DosX
7262102748 dbs_min update 2025-10-08 01:04:56 +03:00
DosX
e4f993362d Update packer and cryptor detection signatures
Added new signatures for XComp, SDProtector, Shielden, SimbiOZ, SoftSentry, PE Lock Phantasm, LARP, DalKrypt, Fish PE, NoobyProtect (Safengine), Xenocode Postbuild, XVolkolak, and LordPE. Updated BeRoEXEPacker and Windows PE Packer by Chenzs108 identifiers. Removed DotFix NiceProtect entry.
2025-10-07 18:59:10 +03:00
DosX
15ffc01426 Refactor and enhance PE detection rules
Updated detection logic and signatures for several PE rule scripts, improving accuracy and maintainability. Notable changes include refactoring detection conditions, updating string and section checks, and moving the Win9x.CIH virus rule to a more descriptive location with improved metadata.
2025-10-07 18:59:06 +03:00
DosX
23158e89b0 Fix pattern validation logic in audio.1.sg
Updated the conditional check to ensure proper validation of pattern and order values during heuristic scan.
2025-10-07 17:56:29 +03:00
DosX
d0786ee493 Improve curl library detection in PE module
Enhanced the detect() function to also identify static linking by checking for exported functions matching /^curl_easy_/. Sets sOptions to 'static' when detected.
2025-10-07 17:34:28 +03:00
DosX
19d0b02060 Enhance SecuROM detection in heuristics and YARA
Added '.securom' and '.dsstext' as additional SecuROM indicators in the heuristic analysis script. Introduced a new YARA rule to detect SecuROM by checking for a '.securom' section in PE files.
2025-10-07 17:25:58 +03:00
DosX
7eca8f0058 Update SecuROM detection logic
Refined the detection logic to check the name of the last PE section for '.securom' instead of using a direct section lookup.
2025-10-07 17:24:01 +03:00
DosX
a63879d34a Update detection logic for Quick Batch File Compiler
Replaces direct section and function checks with isSectionNamePresent and isResourceNamePresent for improved detection reliability.
2025-10-07 17:23:10 +03:00
DosX
a08c17364a Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-07 15:37:49 +03:00
DosX
37be01d297 Fix regex for export function detection in Denuvo.2.sg
Updated the regular expression in the export function check to properly match any characters between 'ANTICHEAT_OBFUSCATE_' and '_CODEMARKER', ensuring more accurate detection.
2025-10-07 15:37:47 +03:00
Benjamin Funke
afa19a7271 refactor PVF signature 2025-10-07 13:10:06 +02:00
DosX
91d947f53e Add detection rule for XVolkolak unpacker
Introduces a new rule file for identifying executables unpacked with XVolkolak.
2025-10-07 13:54:21 +03:00
DosX
9d4e87a713 Rename and enhance WWPACK detection rule
Renamed 'WWPACK.2.sg' to 'WWPack32.2.sg' and updated metadata to reflect 'WWPack32'. Added an additional detection condition for DLLs with a '.WWP32' section. Included author attribution and a reference URL.
2025-10-07 11:05:07 +03:00
DosX
731d77aa97 Expand packer detection regex in heuristic analysis
Updated the regular expression for detecting packers to include additional patterns such as 'exe' and optional 'a' in 'pack'. This enhances the accuracy of packer identification in .NET and native application scans.
2025-10-07 11:01:08 +03:00
DosX
17845ccc41 Remove Spoon Studio detection rule // A LOT OF FS
Deleted the Spoon_Studio.2.sg detection rule file from the PE database.
TODO: Find samples and rewrite.
2025-10-07 10:55:19 +03:00
DosX
f563d3bc2f Update packer/protector detection patterns and names
Standardized 'SHRINKER' to 'Shrinker' and refined regex patterns for detecting packers, cryptors, and protectors. Improved matching for terms like 'shell', 'enc', 'obf', and 'shield' to enhance heuristic analysis accuracy.
2025-10-07 10:48:16 +03:00
Benjamin Funke
7155cd08a2 add more links 2025-10-06 21:02:47 +02:00
DosX
46488de8f7 Rename and update Windows PE Packer signature
Renamed the signature file to 'Windows_PE_Packer_by_Chenzs108.2.sg' and updated the packer meta information for clarity and consistency.
2025-10-06 20:25:01 +03:00
DosX
111e3c5908 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-06 19:58:13 +03:00
Benjamin Funke
db04a038ae add links to signatures 2025-10-06 18:35:54 +02:00
hypn0chka
147c4f1dd3 Restoring justice
These files will be in the main base! Anyone can delete them in own projects in adoptation to their needs.
2025-10-06 21:15:28 +05:00
DosX
8ec218dc0b Rename and update PE Lock Phantasm rule file
Renamed the detection rule file for PE Lock Phantasm by Ding Boy and updated the meta information to reflect the new name for clarity and consistency.
2025-10-06 14:32:42 +03:00
DosX
c6bd827abf Add about.txt files for .NET and Native PE scripts
Introduced about.txt files in db/PE/dotnet_only and db/PE/native_only directories to clarify their purpose for storing scripts specific to .NET and Native PE files.
2025-10-06 13:35:42 +03:00
DosX
e278c60a12 Improve detection logic in PE signature scripts
Refined detection conditions in Microsoft_C_Runtime.4.sg and Microsoft_Class_Installer.1.sg to ensure bDetected is set only when appropriate. Updated obfusheader_h.5.sg to use section file offset for signature detection, improving accuracy.
2025-10-06 11:10:40 +03:00
DosX
acc2e22da7 Refactor detection scripts for consistency and style
Standardized code formatting, improved switch/case and conditional statements, and updated version string formats across multiple detection rule files. These changes enhance readability and maintain consistency in detection logic and output.
2025-10-06 11:06:56 +03:00
DosX
f4c7d6a700 Update detection logic in bin.Python.1.sg
Refines the detection condition to check for a signature presence and updates verbose output to use X.isVerbose() and append magic value to version string.
2025-10-06 00:19:50 +03:00
DosX
b3cba33af4 Add binary comparison in Python detector
Updated the detection logic to include a binary comparison before checking the magic value, improving accuracy for Python binary identification.
2025-10-05 23:55:55 +03:00
DosX
363ef874de dbs_min update 2025-10-05 23:52:26 +03:00
DosX
58c0b44c72 dbs_min update 2025-10-05 22:43:31 +03:00
DosX
d262d58b43 Improve MinGW detection logic in PE script
Refactored the detection logic to check for the presence of the .eh_frame section when no overlay is present, enhancing accuracy in identifying MinGW binaries.
2025-10-05 22:43:19 +03:00
DosX
040236fba7 Add Virbox detection rule for APKs
Introduces a new detection rule file for Virbox protector in APKs. The rule checks for the presence of specific library files to identify Virbox protection.
2025-10-05 22:11:29 +03:00
DosX
f67c6c8788 Add ExTrus AppDefence detection rule
Introduces a new rule for identifying ExTrus AppDefence in APK files by checking for the presence of 'assets/appdefence_xml'.
2025-10-05 22:07:03 +03:00
DosX
1b9864ae44 Add detection rule for Build38 APK protector
Introduces a new rule file to identify APKs protected by Build38 by checking for the presence of '__license.tak' or 'license.tak' archive records.
2025-10-05 22:05:37 +03:00
DosX
5dbebaedd5 dbs_min update 2025-10-05 21:55:23 +03:00
DosX
1041b4c9e6 Improve MinGW detection logic in PE script
Adds a null check for the .rsrc section and enhances detection by checking for a specific overlay signature when the initial detection fails but an overlay is present.
2025-10-05 21:53:34 +03:00
DosX
2b253c0790 Add czs108's packer and improve packer detection
Added detection for 'czs108's packer' with the '.shell' signature and updated generic packer detection to include 'shell' in the matching pattern.
2025-10-05 21:45:30 +03:00
DosX
d30a921a0b Add detection rule for czs108's PE Packer
Introduces a new rule file to identify executables packed with czs108's Windows PE Packer by checking import count, library name, and section presence.
2025-10-05 21:42:14 +03:00
DosX
12e9b8844b Add PESpin and DBPE packer detection, update section check
Added PESpin and DBPE signatures to the packer and section name databases for improved detection. Updated section name validation logic to use PE.isSectionNamePresent for string checks, enhancing accuracy.
2025-10-05 19:10:45 +03:00
DosX
c194d31d3e Set sLang to Java in Jar2exe detection
Assigns 'Java' to the sLang variable in the detect function of Jar2exe.1.sg to explicitly indicate the language being detected.
2025-10-05 19:10:34 +03:00
DosX
c8ca72638b Add detection for DotNetPatcher mod in ConfuserEx
Extends the ConfuserEx detection logic to identify the DotNetPatcher mod by checking for the presence of DotNetPatcherPackerAttribute in .NET objects.
2025-10-05 18:02:20 +03:00
DosX
12c6f16261 dbs_min update 2025-10-05 17:12:19 +03:00
DosX
666eaa5ae5 Enhance NetReactor detection logic
Simplifies and restructures the detection logic for .NET Reactor versions and options. Replaces multiple variables with unified ones, improves signature checks, and streamlines result handling for better maintainability and clarity.
2025-10-05 17:11:51 +03:00
DosX
5720ddd001 Improve section name detection for packers and cryptors
Updated RCryptor detection to use a regular expression for section name matching. Added '.Polyene' as a valid section for AverCryptor and included RCryptor in the heuristic analysis. Expanded cryptor keyword matching to include 'inj'.
2025-10-05 16:45:38 +03:00
DosX
b18166b30a Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-05 16:18:06 +03:00
DosX
702d79bd05 Add reference URLs for packers and protectors
Added official website URLs as comments for several packers and protectors in the scanForPackersAndCryptors_NET_and_Native function to improve documentation and facilitate further research.
2025-10-05 16:18:05 +03:00
Benjamin Funke
49db1fe6e8 refactor MDL signature 2025-10-05 12:55:02 +02:00
DosX
da773c3e6e dbs_min update 2025-10-05 12:20:27 +03:00
DosX
7cb4bcd4d4 Clean and trim CLR version string in .NET detection
Uses File.cleanString to sanitize the CLR version obtained from PE.getNETVersion and trims the first character before appending to dotNetLibraryVersion. This improves the accuracy and formatting of the detected CLR version string.
2025-10-05 12:20:13 +03:00
DosX
c7dc43ccfa Refactor .NET reference checks and minor fixes
Removed unnecessary assignment to 'references' in isAllNetReferencesPresent calls for clarity. Added 'use strict' directive at the top of the file. Removed a sample opCode pattern and updated a log message for mangled export detection.
2025-10-05 00:47:31 +03:00
DosX
5d03263385 Refine version detection logic for Go and Obsidium
Updated Go signature version string to '1.15.0+' for clarity. Removed assignment of 'unknown' version strings in Obsidium detection and simplified generic entry point checks for improved maintainability.
2025-10-05 00:47:23 +03:00
DosX
da7bbf8ee1 dbs_min update 2025-10-04 20:50:24 +03:00
DosX
cb97480e7c Add '.const' section name for Private EXE Protector
Updated the packer detection to include '.const' as an additional signature for Private EXE Protector, improving heuristic analysis coverage.
2025-10-04 20:42:59 +03:00
DosX
76aeb94a7c Add Wutao Easy Compiler detection rule
Introduces a new rule for identifying binaries compiled with Wutao Easy Compiler (EPL). The rule checks for a specific signature in the .ecode section and sets language and version metadata accordingly.
2025-10-04 20:02:34 +03:00
DosX
466bb7ff08 Add new MSIL opcodes and ArmDot obfuscation pattern
Introduced additional MSIL opcodes for array element storage (stelem_i2, stelem_i8, stelem_r4, stelem_r8, stelem_ref) and added a new obfuscation detection pattern for ArmDot in .NET analysis.
2025-10-04 20:00:44 +03:00
DosX
9b325ecd07 Update detection logic and options for Codewall
Changed sOptions from 'Evaluation' to 'demo' in Codewall.2.sg detection logic. Minor formatting updates in AtariST scripts to ensure consistent file endings.
2025-10-04 20:00:16 +03:00
DosX
498de39834 dbs_min update 2025-10-04 15:10:49 +03:00
DosX
2cff677e77 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-04 15:09:42 +03:00
Benjamin Funke
07c9cc18e1 add ILK signature 2025-10-04 11:43:15 +02:00
DosX
c0001ab5a1 Add detection for RLPack with single import
Extended the detect() function to identify RLPack when there is only one import and the .RLPack section is present. This improves detection accuracy for additional RLPack variants.
2025-10-04 09:00:48 +03:00
horsicq
5767d82d2e Add new file(s): 2025-10-04 2025-10-04 02:12:54 +02:00
DosX
e813e4db11 Add PolyCrypt 2.8 detection to packer scan
Introduces detection for PolyCrypt version 2.8 in the scanForPackersAndCryptors_NET_and_Native function by matching section names with the pattern /^sec[0-9]$/. This enhances the heuristic analysis for .NET and native applications.
2025-10-04 00:02:15 +03:00
DosX
59aa00b9bd Update RLPack detection and improve IAT check
Added and reorganized RLPack packer signatures, including a fake sign for Obsidium. Simplified the IAT missing check by removing unnecessary section name validation.
2025-10-03 23:54:14 +03:00
Benjamin Funke
2eb0c73f98 refactor WASM signature 2025-10-03 22:26:56 +02:00
DosX
a0ff16b7b4 Fix variable name and logic errors in analysis script
Corrects a variable name from isStrangeResourcesPresent to isStrangeUnmanagedResourcesPresent, fixes isAsciiString to return false for invalid input, and updates loop logic in scanForMaliciousCode_NET_and_Native to properly check pattern imports.
2025-10-03 23:17:40 +03:00
Benjamin Funke
fbb0e2e103 add byte check to PACK 2025-10-03 21:54:58 +02:00
DosX
65f0d38212 Improve mangler detection and scanning logic
Refactored mangler detection to return both compiler and language information, updating related function names and usages. Enhanced scanning logic to better distinguish between C++ and other languages, and improved loop conditions for obfuscation checks. Updated packer detection patterns for accuracy.
2025-10-03 19:43:58 +03:00
DosX
c0d8d9c6e0 Fix detection logic and formatting in binary scripts
Updated the detection pattern in bin.CSO.1.sg for more accurate matching and standardized function closing in bin.HSM.1.sg and bin.SDI.1.sg by removing unnecessary characters and ensuring consistent formatting.
2025-10-03 19:43:42 +03:00
Benjamin Funke
118d69a9a1 add byte check to DPAK 2025-10-03 15:53:43 +02:00
Benjamin Funke
a21c0c7b70 refactor signatures (HSM/SDI) 2025-10-02 22:55:47 +02:00
Benjamin Funke
6842b4db54 refactor CSO signature 2025-10-02 20:27:16 +02:00
DosX
cf445aecf5 dbs_min update 2025-10-02 16:32:11 +03:00
DosX
8a3e4086bd Update detection logic for JDPack and RCryptor
Reordered version detection in JDPack.2.sg for accuracy and added logic in RCryptor.2.sg to flag modified packers when the .RCryptor section is missing. Minor formatting update in Free_Pascal.6.sg.
2025-10-02 16:32:00 +03:00
DosX
c893ca04d9 Improve detection logic for coderpub section
Refines the detection logic by checking for the presence of the 'coderpub' section and setting options accordingly. This change ensures more accurate handling of cases where detection status and section presence differ.
2025-10-02 16:22:52 +03:00
DosX
2d784bf6c7 Update mangler detection to include Swift
Expanded the documentation for getManglerNameByMangledItem to mention Swift as a possible detected mangler. The function now clarifies support for C++ and Swift mangling schemes.
2025-10-02 16:02:08 +03:00
DosX
b6bdb4c57f Add Swift mangling support to symbol analysis
Extended heuristic analysis to detect and decode Swift-mangled symbol names. Updated isItemMangled and getManglerNameByMangledItem to recognize Swift patterns, and enhanced getNameOfMangledItem to extract readable names from Swift mangled symbols. Added documentation and examples for Swift support.
2025-10-02 15:03:36 +03:00
DosX
e55c57bb51 Update method for retrieving first EP instruction
Replaced the use of PE.getDisasmString with PE.getAsmInstructionByIndex(0) in getFirstEpAsmInstruction for improved accuracy or consistency. The previous implementation is now commented out.
2025-10-02 14:29:02 +03:00
DosX
741db1dfcb Optimize EP assembly instruction retrieval with caching
Introduces caching for entry point assembly instructions to avoid redundant disassembly calls. Updates related functions to use the cached instructions, improving performance and code clarity.
2025-10-02 14:25:02 +03:00
DosX
3738844db8 Detect Ace RAT 1.X via import hash in heuristic scan
Added a check for a specific import position hash to identify Ace RAT version 1.X in the scanForMaliciousCode_NET_and_Native function. This enhances detection capabilities for this malware family.
2025-10-02 09:03:25 +03:00
DosX
878f16c38d dbs_min update 2025-10-02 00:18:01 +03:00
DosX
d9576903e4 Enhance BoxedApp detection logic
Moved demo version detection to occur after confirming BoxedApp presence. Added an alternative detection path based on import count and entry point comparison for improved accuracy.
2025-10-02 00:16:47 +03:00
DosX
f28d9d1c44 Detect TLS with hidden entry point in heuristic scan
Adds detection for Thread Local Storage (TLS) with a suspicious entry point (such as INT3 or RET instructions) in the generic heuristic analysis. This helps identify obfuscation techniques used to hide the real entry point, commonly seen in packers like BoxedApp.
2025-10-02 00:13:27 +03:00
DosX
487e77ee76 Add YARA rule for BoxedApp packer detection
Introduces a new rule 'Packer__BoxedApp' to identify PE files packed with BoxedApp by checking for '.bxpck' and '.main' section names. This enhances detection capabilities for packed executables.
2025-10-02 00:13:14 +03:00
DosX
9ae7963fa9 Add py2exe detection to DiE and YARA rules
Added a header comment to the Py2exe.1.sg rule file for clarity. Introduced a new YARA rule to detect py2exe-packed PE files by checking for the 'PyArg_ParseTuple' export.
2025-10-01 23:55:58 +03:00
DosX
bd235ceaa9 Improve PE signature detection and add Biorante heuristic
Updated LCL.5.sg to use section[0].FileOffset for signature search, improving accuracy. Added new heuristic in __GenericHeuristicAnalysis_By_DosX.7.sg to detect Biorante malware based on import position hashes.
2025-10-01 23:41:20 +03:00
DosX
ea139f1373 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-01 23:15:54 +03:00
DosX
000266bc8e Use signature search for LCLVersion detection (fix!)
Replaces string search with signature-based search for 'LCLVersion' in the PE detection logic, improving accuracy when locating version information.
2025-10-01 23:15:45 +03:00
Kaens
d53fd11a5a Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-01 22:15:04 +02:00
Kaens
d29345faff Qt6 polyfill fixed up; profiler function added
- mostly it shouldn't redefine the functions if they exist
 - prototype.includes drastically reworked. Hopefully no other issues occur
 - overwritten DosX's version, I'm really sorry but this just seemed a better idea

 - in db/read, CheckpointTimer added for profiling functions in a succinct manner; outputs as detection results type "Prof".
2025-10-01 22:14:46 +02:00
DosX
7bebfadd06 Detect BitRAT via import hash in heuristic analysis
Added a check for PE files with a single import and specific import position hashes to identify BitRAT variants (stub.bin and stub_tor.bin) in the generic heuristic analysis function.
2025-10-01 23:13:09 +03:00
DosX
afcecaab66 Refactor and modularize runtime helpers
Moved all prototype and helper functions from db/_init to a new db/_runtime_helpers file for better modularity and maintainability. Updated db/_init to include the new helpers script and removed duplicate code. No functional changes to detection logic.
2025-10-01 22:56:11 +03:00
DosX
b34c699293 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-01 22:36:01 +03:00
DosX
b1deea1e04 dbs_min update 2025-10-01 22:35:56 +03:00
Benjamin Funke
9cd0c54194 refactor PAF signature 2025-10-01 12:33:21 +02:00
DosX
d639297fe0 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-10-01 12:21:19 +03:00
DosX
165fe0902b Add demo option detection for PE signature
Updates the detect() function to set sOptions to 'demo' if a specific signature is present in section 0. This enhances detection capabilities for demo builds.
2025-10-01 12:21:05 +03:00
DosX
e310b11d8e Improve logging and packer detection heuristics
Log entry point and last section addresses in hexadecimal for better readability. Update packer detection to support multiple section names for StarForce and Private EXE Protector.
2025-10-01 12:20:56 +03:00
DosX
b802ce38c4 Update detection option strings in signature scripts
Standardized version and option strings in BackupMii, Private_EXE_Protector, and SpicesNet signature scripts. Changed 'v1.0' to '1.0', replaced 'Trial' and 'Evaluation' with 'demo' for consistency.
2025-10-01 12:20:42 +03:00
Kaens
19f41a7877 Update _init
.includes should now work for Strings too
2025-09-30 18:07:44 +02:00
DosX
76b7d54675 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-30 18:33:24 +03:00
DosX
3d69b74e64 Update heuristic analysis with new obfuscators and packers
Added detection for 'fake Beds-Protector' obfuscator and several new packers/cryptors including 'Quick Batch File Compiler', 'ORiEN', 'Goliath', 'PE Encrypt', and 'PECRYPT32'. Improved SVK Protector section name matching for better accuracy.
2025-09-30 18:33:21 +03:00
DosX
e7744bcc44 Update Goliath and PELock detection rules
Improved Goliath detection by checking for '.GOLIATH' section and added demo option detection. Updated PELock rule metadata to credit additional contributor.
2025-09-30 18:32:55 +03:00
DosX
9954e7bd76 Update version string formats in PESpin and Perl detectors
Adjusted the version string for PESpin 1.3 to include a comma and 'beta'. Updated Perl version signature patterns to use '%%' placeholders (ASCII) for improved matching and modified patch version detection logic accordingly.
2025-09-30 18:32:26 +03:00
Kaens
e91a911d28 +HOBETA *vCard *CVM
- Hobeta header added to rom.1.sg
 - bin.VCF.1.sg mess turned into proper vCard detection (the other format will need to wait)
 - bin.CVM.1.sg rewritten from archive.CVM.1.sg: tightened, detailed, attributed, ripper-ready
2025-09-30 17:10:09 +02:00
DosX
d8859b755c dbs_min update 2025-09-30 17:09:18 +03:00
DosX
6ae409449d Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-30 17:08:47 +03:00
DosX
02eb77d16c Update PE detection logic and fix function name
Refined detection condition in Microsoft.6.sg to check for Rich signature and TLS presence. Renamed isImportHashPositionPresent to isImportPositionHashPresent in PELock.2.sg.
2025-09-30 17:08:45 +03:00
Benjamin Funke
df5a5e3f16 refactor TLB signature 2025-09-30 15:10:07 +02:00
DosX
1a47e87f45 Add PELock 2.X signature to packer detection
Added a new signature for PELock version 2.X in the scanForPackersAndCryptors_NET_and_Native function to improve detection accuracy for this packer.
2025-09-30 15:25:14 +03:00
DosX
ec8e851c54 Update PELock detection logic and add 2.X signature
Replaces Rich Signature check with a 64-bit check to exclude unsupported AMD64 files. Adds detection for PELock 2.X using a new entry point signature and import hash position.
2025-09-30 15:25:04 +03:00
DosX
ee1b10571d Refactor PE signature scripts and minor logic fixes
Refactored variable names for clarity in SpicesNet.2.sg, simplified version assignment in Python.4.sg, and added missing language assignment in linker.6.sg. Also improved detection loop logic in rar.1.sg and removed unnecessary code in Microsoft.6.sg and Pelles_C.6.sg. These changes improve code readability and maintainability.
2025-09-30 15:24:44 +03:00
DosX
0d5041ff56 dbs_min update 2025-09-30 11:58:15 +03:00
DosX
17a160d64f Add Swift PE detection rule and minor formatting fixes
Introduces a new detection rule for Swift-compiled PE files in db/PE/Swift.6.sg. Also removes trailing newlines from bin.DAA.1.sg and bin.GBI.1.sg for consistency.
2025-09-30 11:57:13 +03:00
DosX
fd8255b88c Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-30 10:49:33 +03:00
Benjamin Funke
4e15a0e513 refactor GBI signature 2025-09-30 07:11:58 +02:00
Benjamin Funke
86da12fe02 refactor DAA signature 2025-09-29 15:17:37 +02:00
DosX
f0afce35fd Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-29 12:29:56 +03:00
DosX
a7075b5cbe dbs_min update 2025-09-29 12:29:51 +03:00
Benjamin Funke
98743a3fe3 improve signatures (CCA/CVM/HIP/PUP/VVD/XEX/BIK) 2025-09-28 17:32:00 +02:00
DosX
71acc747cf Fix formatting and minor logic in PE and Binary detectors
Standardized file endings by ensuring no trailing newlines and removed unnecessary blank lines. Also fixed the order of assignments in db/PE/Direct3D.4.sg to set sVersion before bDetected, improving code clarity.
2025-09-28 17:01:43 +03:00
DosX
7bb69ed591 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-28 16:33:47 +03:00
DosX
0bd049c39c Log generation timestamp in dbs_min_generate.cmd
Adds a command to write the current date to dbs_min/timestamp.log after running the dbcompiler task, providing a record of when the generation script was executed.
2025-09-28 16:33:43 +03:00
Benjamin Funke
34193b1d1f refactor signatures (BackupMii/VCF) 2025-09-28 10:39:41 +02:00
DosX
b5977027b8 dbs_min update 2025-09-28 11:22:14 +03:00
DosX
907badd7d9 Fix array comparison in isProtrackerMOD function
Replaced direct array comparison with compareArrays utility to correctly check for specific byte patterns in the isProtrackerMOD function.
2025-09-28 11:19:43 +03:00
DosX
b867d509c1 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-28 11:18:31 +03:00
DosX
1849caeb45 Fix detection logic and naming in PE signature scripts
Corrected the casing of 'PECompact' in Adobe_FlashPlayer_downloader.1.sg, fixed detection flag placement and formatting in AtomPePacker.2.sg, and updated signature check to use isSignaturePresent in MaskPE.2.sg for improved accuracy and consistency.
2025-09-28 11:18:28 +03:00
Benjamin Funke
dcfc85e147 improve SFK signature 2025-09-27 21:25:57 +02:00
DosX
d53f9a3957 Fix pattern arrays for NsPack and enhance cryptor detection
Corrected the pattern array for NsPack by removing an extraneous comma and added an additional pattern for cryptor detection to improve accuracy.
2025-09-27 22:21:52 +03:00
DosX
cd0c4c17ae Update packer detection patterns in heuristic analysis
Refined the detection patterns for RPCrypt and fake VMProtect packers to use regular expressions, improving accuracy in identifying these packers during heuristic analysis.
2025-09-27 22:14:13 +03:00
DosX
dd0be1065d Enhance heuristic analysis for obfuscation detection
Improved the CPUID detection loop to exit early if CPUID is found. Added detection for proxy JMP instructions at the entry point. Updated language extension mapping for Java from 'class' to 'jar' in the language scan function.
2025-09-27 22:00:21 +03:00
DosX
288cdd400b Refactor EAT, static option to static with comment
Replaces all instances of 'EAT, static' with 'static' and adds a comment '// EAT' for clarity in multiple PE detection scripts. This change improves consistency and readability of the sOptions assignment.
2025-09-27 21:35:52 +03:00
DosX
d02f8c5f63 dbs_min update 2025-09-27 19:44:30 +03:00
DosX
4f8d2d980e Refactor IDA binary detection script formatting
Consolidated switch-case statements and variable declarations for improved readability and maintainability. Minor logic adjustments and code style improvements were made, including moving bDetected assignment and updating version handling.
2025-09-27 19:44:02 +03:00
DosX
74a53980e5 Enhance PE detection and update packer signatures
Added detection for 'demo' version in BoxedApp by checking for a specific signature in the section. Updated generic heuristic analysis to include '.BJFnt' packer signature with version '1.X'.
2025-09-27 19:31:42 +03:00
DosX
9a1fb1566c Refine DNGuard .NET detection logic
Update the DNGuard detection script to require the presence of a .NET global static constructor for .NET binaries, improving detection accuracy.
2025-09-27 19:30:59 +03:00
DosX
a58131791d Fix null check in OxiJoiner detection and rename file
Added a null check for the .rsrc section in OxiJoiner.2.sg to prevent errors if the section is missing. Also renamed 'Anslym Crypter.2.sg' to 'Anslym_Crypter.2.sg' for consistency.
2025-09-27 19:30:34 +03:00
DosX
820dec4cce Improve North Star PE Shrinker detection logic
Detection now checks for the absence of the 'nsp0' section name in addition to the existing entry point pattern. This enhances accuracy for version 1.3 identification.
2025-09-27 19:29:27 +03:00
DosX
c201426fc1 Update detection logic in PECompact and PELock scripts
In PECompact.2.sg, verbose output now reports unknown build numbers as options instead of versions. In PELock.2.sg, detection skips files with a Rich Signature in addition to .NET files.
2025-09-27 19:29:18 +03:00
DosX
8996e49cf0 Set sName to 'ConfuserEx' for specific detections
Updated the detection logic to assign 'ConfuserEx' directly to sName instead of appending 'Ex' when certain conditions are met. This ensures consistent naming for detected variants.
2025-09-27 19:29:01 +03:00
DosX
d5aeb21575 Add new signatures for eXPressor and PEBundle detection
Added additional signatures for eXPressor versions 1.6 and 1.6.1, and moved the PEBundle signature to a more appropriate location in the packer detection list.
2025-09-27 19:00:31 +03:00
DosX
689120b1c9 Add detection rule for AbyssMedia ScriptCryptor
Introduces a new rule to identify executables protected with AbyssMedia ScriptCryptor, based on resource names, import hashes, and export/import characteristics.
2025-09-27 16:46:34 +03:00
DosX
d71c7a7e8f dbs_min update 2025-09-27 15:12:39 +03:00
DosX
291b5bccb8 Add new packer signatures to heuristic analysis
Added detection signatures for PKLITE32 v1.1 and PeX v0.99 packers in the scanForPackersAndCryptors_NET_and_Native function to improve packer identification coverage.
2025-09-27 15:12:11 +03:00
DosX
132e871996 Add Virbox, ElecKey, and PKLITE32 packer signatures
Added detection signatures for Virbox, ElecKey, and PKLITE32 packers in both hash and section name validation arrays to improve heuristic analysis coverage.
2025-09-27 15:12:03 +03:00
DosX
6926200815 Add language info to FASM false positive rule
Updated the false positive detection for FASM by specifying the language as ASMx86 when the Simple Pack packer is present. This improves the accuracy of false positive removal.
2025-09-27 15:11:15 +03:00
DosX
bb2d1bc692 Refactor tElock and update twinBASIC detection
Refactored switch statements in tElock.2.sg for conciseness and readability. Added .NET check to twinBASIC.6.sg to skip detection for .NET binaries.
2025-09-27 15:11:00 +03:00
DosX
7ebd1c1dcd Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-27 15:04:23 +03:00
DosX
d309e4c21a Fix detection logic for sVersion and sOptions
Wrap sVersion and sOptions in Boolean() to ensure correct logical evaluation in the detection condition.
2025-09-27 15:04:20 +03:00
DosX
31d4d6bc4e
Merge pull request #316 from Northkatz/master
Add support for other python interpreters in pyc
2025-09-27 15:03:44 +03:00
DosX
bfa4e7208e Refactor and enhance NSIS detection logic and code formatting
Improves the Nullsoft Scriptable Install System (NSIS) detection by adding an early return for .NET binaries, simplifying switch-case formatting, and cleaning up commented code and whitespace for better readability.
2025-09-27 14:55:22 +03:00
DosX
5dfe976295 Improve detection logic for PyInstaller and Python scripts
Added checks in PyInstaller.2.sg to skip .NET files and those without a Rich Signature. Updated Python.4.sg to set sLangVersion if sVersion is available, improving version reporting.
2025-09-27 14:52:09 +03:00
DosX
b1b351a8d0 Set language for detected linkers in PE linker script
Adds assignment of the sLang variable for LCC Linker and Turbo Linker (Delphi) in the detect() function, improving language identification for these toolchains.
2025-09-27 14:51:51 +03:00
DosX
9a11191043 Fix formatting and return placement in binary scripts
Corrected indentation, return statement placement, and ensured consistent formatting in several binary detection scripts. No functional changes were made.
2025-09-27 14:49:58 +03:00
DosX
6ea800ebe5 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-27 14:45:00 +03:00
DosX
4dad7c20cf Update SQLite and kkrunchy detection logic
Set the format metadata for SQLite 3 database and remove redundant assignment in detection. Enhance kkrunchy PE detection to set 'modified' option if the 'kkrunchy' section is missing.
2025-09-27 14:44:58 +03:00
Benjamin Funke
9e433ba68d refactor signatures (XZP/HIV/XEX) 2025-09-27 11:28:17 +02:00
Benjamin Funke
1631574a23 refactor FST signature 2025-09-27 09:13:48 +02:00
Northkatz
f11c25f11b
minor improvements 2025-09-27 01:17:34 +03:00
Northkatz
7c28d3bd66
fixed duplicates 2025-09-27 01:11:59 +03:00
Northkatz
b615253e27
Merge branch 'horsicq:master' into master 2025-09-27 01:11:28 +03:00
Benjamin Funke
77213fef23 refactor BOU signature 2025-09-26 23:40:52 +02:00
Benjamin Funke
bc44ad6450 improve PBP signature 2025-09-26 21:43:08 +02:00
Benjamin Funke
9305367ba2 fix regex for PKG signature 2025-09-26 19:59:59 +02:00
Benjamin Funke
b85862f646 refactor signatures (BCD1/SystemErr) 2025-09-26 18:06:04 +02:00
Benjamin Funke
0d932a3c11 improve IVF signature 2025-09-26 17:15:17 +02:00
Northkatz
f8972ae69c
pyc magic 48 supported 2025-09-26 14:44:27 +03:00
Northkatz
cb20ac691f
Merge branch 'horsicq:master' into master 2025-09-26 14:43:40 +03:00
DosX
1548a7c7a1 Update detection rules for Huan and Nuitka packers
Added a comment header to the Huan detection rule file. Renamed Nuitka.1.sg to Nuitka.2.sg, changed file permissions, and updated the detection logic to remove the overlay presence check.
2025-09-26 14:31:07 +03:00
Northkatz
25200f39a7
Add files via upload 2025-09-26 11:23:51 +03:00
Northkatz
e043b2b365
more python interpreters supported 2025-09-26 11:13:35 +03:00
DosX
ddcbb1935f Update STK archive detection logic and metadata
Refactored the detection logic for STK archives to improve signature matching and version extraction. Updated author and contributor metadata to reflect new maintainers and sample sources.
2025-09-26 10:07:33 +03:00
DosX
8e0e1b96bc Refactor detection logic and update packer signatures
Refactored detection logic in Binary/graphics.1.sg to set bDetected based on sName, improving consistency. Updated Binary/formats.1.sg to use a similar approach. Enhanced PE/__GenericHeuristicAnalysis_By_DosX.7.sg with improved and additional packer and fake packer signatures, and commented out a problematic malicious code detection condition.
2025-09-26 09:54:35 +03:00
DosX
d01e92853a Add kernel32 check to VMProtect_NET.2.sg rule
Updated the detection logic to require the presence of the 'kernel32' .NET object in addition to existing checks. This improves the accuracy of VMProtect_NET.2 identification.
2025-09-26 00:09:20 +03:00
DosX
a1b5cafb48 Update PE detection logic for Microsoft.6.sg
Refines the PE format check by requiring a NOP before the entry point and removes the check for api-ms-win-crt libraries. Also adjusts the logic for detecting .NET runtime signatures in the second section.
2025-09-26 00:09:02 +03:00
DosX
057e3ee16d Improve detection logic for MS Compound and PELock
Refined detection in archive.MS_Compound.1.sg by clarifying magic values, updating naming for Microsoft Installer and Office, and adding version info. In PELock.2.sg, added a check to skip detection for .NET binaries.
2025-09-26 00:08:53 +03:00
DosX
3fc72473fa Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-25 23:08:08 +03:00
DosX
df254a926b Remove 'v' prefix from version string in CHM detection
The version string assignment in the detect function no longer prepends 'v' to the version number. This change ensures the version is represented as a plain integer value.
2025-09-25 23:08:05 +03:00
Benjamin Funke
3eb8cecbfc add byte check to LAB signature 2025-09-25 21:05:38 +02:00
DosX
24fcc2a7a2 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-25 19:15:06 +03:00
DosX
c2cd3ea678 Refactor and clean up binary detection scripts
This commit applies code formatting improvements, such as consistent indentation, removal of unnecessary blank lines, and switch statement compacting across multiple binary detection scripts. It also adds missing newlines at end of files and minor logic adjustments for clarity, improving maintainability and readability.
2025-09-25 19:12:47 +03:00
Benjamin Funke
33812a5a55 refactor signatures (STK/PEM) 2025-09-25 16:41:28 +02:00
DosX
0d42bc1abd Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-25 16:59:23 +03:00
DosX
7d77723b5c Refactor PSD and DotFix_Nice_Protect detection scripts
Simplified and consolidated variable declarations and switch statements in image.PSD.1.sg for improved readability. Combined conditional checks in DotFix_Nice_Protect.2.sg to streamline detection logic.
2025-09-25 16:27:20 +03:00
Benjamin Funke
cdafe61665 refactor signatures (CKP/EDP) 2025-09-25 15:03:23 +02:00
DosX
2be42589f9 Refactor detection scripts and fix variable assignments
Corrected variable assignment in AOLSetup.1.sg, improved loop condition in ARJSFX.1.sg, condensed switch cases and fixed formatting in DBPE.2.sg, and updated sOptions value in Denuvo.2.sg. These changes improve code clarity and accuracy in detection logic.
2025-09-25 15:57:52 +03:00
DosX
a065d46e72 Refactor PE detection scripts for clarity and consistency
Improved detection logic and code style in BeRoEXEPacker, Nullsoft Scriptable Install System, Nvidia DLSS, and PECompact scripts. Changes include more robust detection conditions, consistent switch/case formatting, removal of unnecessary blank lines, and clearer assignment of .NET-related options in PECompact.
2025-09-24 22:31:24 +03:00
DosX
81f3cf2f20 Rename JScript.6.sg to Microsoft_JScript.6.sg
Renamed the signature file for JScript 6 to Microsoft_JScript.6.sg for improved clarity and consistency in naming conventions.
2025-09-24 22:04:29 +03:00
DosX
fc606af2b9 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-24 21:45:08 +03:00
DosX
cf59a42bec Refactor detection logic and update metadata
Streamlined switch-case statements in several detection scripts for improved readability and maintainability. Updated version formatting and metadata in Fish_PE.2.sg and SfxCA.1.sg. Moved O'Setup95.1.sg to db_extra/PE and changed its file mode to 100644.
2025-09-24 21:44:35 +03:00
Benjamin Funke
dded8c53ed refactor signatures (DunkleSchattenConfig/DunkleSchattenSave/JAM) 2025-09-24 20:44:03 +02:00
DosX
9c5664fbb2 Normalize formatting in binary detection scripts & fixes
Removed unnecessary blank lines, fixed indentation, and ensured consistent placement of return statements across multiple binary detection scripts for improved readability and maintainability.
2025-09-24 21:27:13 +03:00
DosX
ffa44e476d Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-24 21:18:02 +03:00
DosX
b4eb1a233f Refactor version assignment and string formatting in PE scripts
Simplified version assignment in nPack.2.sg by using single-line case statements. Updated Paquet.1.sg to combine version and author into one string. Removed redundant 'v' prefix in PyInstaller.2.sg version assignment for consistency.
2025-09-24 21:17:59 +03:00
Benjamin Funke
8f52f1aa29 refactor TUN signature 2025-09-24 18:09:13 +02:00
DosX
a5cd1c93fe Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-24 12:52:58 +03:00
DosX
76ac47327b Enhance Robust Obfuscator detection logic
Added a check for Net global class constructor presence in the detection function to improve accuracy of Robust Obfuscator identification.
2025-09-24 12:52:57 +03:00
Benjamin Funke
dbd97d3429 refactor XTT detection rule 2025-09-23 21:14:38 +02:00
Benjamin Funke
a7cd3f58c0 update CURE detection rule 2025-09-23 19:41:35 +02:00
DosX
7b05b9940c Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-23 19:33:19 +03:00
DosX
c324c90eca Refactor section detection logic in ANDpakk.2.sg
Replaced direct access to PE.section.length with PE.getNumberOfSections() for consistency and clarity in section count detection.
2025-09-23 19:33:17 +03:00
Benjamin Funke
783cd43d98 use other link for P7X detection rule 2025-09-23 17:28:54 +02:00
DosX
7127b1287d dbs_min update 2025-09-23 17:20:09 +03:00
DosX
6b5b94d220 Fix version detection logic in Delphi.4.sg and linker.6.sg
Corrected conditional checks for version string assignment and detection in db/PE/Delphi.4.sg, ensuring sVersion is properly evaluated. Also updated linker.6.sg to retrieve compiler version and improved formatting of version string for Turbo Linker.
2025-09-23 17:12:40 +03:00
DosX
6831089b3c Add detection rule for XorCryptor
Introduces a new rule file for identifying .NET XorCryptor packer in PE files. The rule checks for specific .NET object and string patterns associated with XorCryptor.
2025-09-23 16:51:01 +03:00
DosX
c8689fcae8 Add detection rule for NET-MalwareCryptor
Introduces a new rule file to identify binaries using the NET-MalwareCryptor cryptor engine by checking for specific .NET object and string patterns.
2025-09-23 16:37:33 +03:00
DosX
4507ce566b Refactor and improve PE detection scripts
Refactored detection logic in several PE database scripts for improved clarity and maintainability. Combined repetitive conditional checks in Acronis_installer.1.sg, simplified .NET detection in JScript.6.sg, fixed detection order in 7z.6.sg, added a default case in MPRESS.2.sg, and made a minor formatting adjustment in __GenericHeuristicAnalysis_By_DosX.7.sg.
2025-09-23 16:37:22 +03:00
DosX
a4d4cd0163 Fix string replacement and loop in .NET obfuscation scan
Replaces String.prototype.replace with replaceAllInString for consistent pattern substitution in math mutation detection. Also changes for-in loop to a standard for loop when iterating protectionsRuntime to avoid prototype property issues.
2025-09-23 15:52:45 +03:00
DosX
fe7fb8f2b0 Refactor signature presence check logic
Simplified the conditional in isSignatureInBeginAndEndPresent by combining the initial check and the chunk size comparison into a single statement.
2025-09-23 15:42:39 +03:00
DosX
63d123ce3f Update Celesty_File_Binder rule and rename FSH file
Added header comments and updated options in Celesty_File_Binder.1.sg for clarity. Renamed image.FSH.sg to image.FSH.1.sg for consistency.
2025-09-23 15:41:30 +03:00
DosX
b9045dd31b Rename BatchToApp.2.sg to BatchToApp.6.sg
Renamed the BatchToApp.2.sg file to BatchToApp.6.sg for consistency or versioning. Also removed the trailing newline from Borland_C++.6.sg to standardize file formatting.
2025-09-23 15:38:54 +03:00
DosX
f5bcb41739 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-23 14:10:32 +03:00
DosX
0dd9dc453d Improve ACProtect detection logic
Enhanced the detection for ACProtect 1.X by requiring both a specific entry point and the presence of the .perplex section. Also updated the detection flag logic to consider previous detection state and options.
2025-09-23 14:10:30 +03:00
DosX
cdaeca1a5e
Fix _init
Always-false statement fix
2025-09-23 11:33:50 +03:00
Kaens
ac48e85d5f Update _init
Array.prototype.includes added (again?) to extend Qt5
2025-09-23 09:47:05 +02:00
DosX
2b458a463b Fix detection logic for WinUpack signatures
The detection function now considers both sVersion and sOptions when determining if WinUpack is present, increasing detection accuracy.
2025-09-23 10:32:27 +03:00
DosX
df0fee5db5 Add detection for Simple_Pack with .spack section
Extended the detect() function to identify Simple_Pack variants that have entry points '6050' or '55' and contain a '.spack' section.
2025-09-22 23:45:09 +03:00
DosX
998a45dbe1 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-22 23:37:24 +03:00
DosX
6266ceff5e dbs_min update 2025-09-22 23:37:18 +03:00
Benjamin Funke
53578ac43b fix variable uppercase typo for PKG signature 2025-09-22 19:39:41 +02:00
DosX
ee52952a3c Add YARA rule for SimplePack packer detection
Introduced a new rule 'Packer__SimplePack' to detect PE files packed with SimplePack by checking for a section named '.spack'.
2025-09-22 12:47:32 +03:00
DosX
5077e432c1 Add YARA rules for PEPack and SoftwareCompress packers
Introduced two new rules: Packer__PEPack and Packer__SoftwareCompress. These rules detect PE files packed with PEPack and SoftwareCompress by checking for specific section names in the PE headers.
2025-09-22 00:35:19 +03:00
DosX
9ab65bb711 Rename and updateYARA rules
Renamed DosX_Heuristic.yar and DosX_InterestingThings.yar to DiE_BasicHeuristics_by_DosX.yar and DiE_InterestingThings_by_DosX.yar, respectively. Added comments indicating these modules are specifically for the Detect It Easy project and to retain copyright information.
2025-09-22 00:30:45 +03:00
DosX
45c7a61268 Improve Nuitka packer detection logic
Refines the detection by checking for the absence of a Rich signature and the presence of an overlay. Also adds language identification as Python and updates string search logic for better accuracy.
2025-09-22 00:30:23 +03:00
DosX
1e50f4e46c dbs_min update 2025-09-22 00:08:15 +03:00
DosX
c556c00776 Add VPacker, RLPack, and TheArk packer signatures
Added VPacker and RLPack to the hash-based packer detection list and TheArk to the section name-based detection list. Also removed a duplicate VPacker entry from the hash-based cryptor detection array.
2025-09-22 00:07:59 +03:00
DosX
eb7aac812a Update meta field from 'library' to 'marker' in PE scripts
Renamed the meta field from 'library' to 'marker' in AMD_PowerXpress and Nvidia_Optimus PE scripts to better reflect their purpose. Also incremented the indexes in the filenames.
2025-09-22 00:07:05 +03:00
DosX
a5236d88e7 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-22 00:05:57 +03:00
DosX
50bf2e2cfc Fix Denuvo signature scan range in detection script
Updated the signature scan in the Denuvo.2.sg detection script to start at the first section's file offset instead of 0. This ensures the signature search is limited to the relevant section, improving detection accuracy.
2025-09-22 00:05:54 +03:00
Benjamin Funke
0b1e464f45 refactor signatures (iCalender/LCA) 2025-09-21 22:28:11 +02:00
DosX
7660980b83 Add newline before return in detect functions 2025-09-21 19:25:22 +03:00
DosX
8b0de3c9d3 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-21 19:14:28 +03:00
DosX
92c0526abc Add YARA rules for VPacker and XPack packers
Introduces detection rules for VPacker and XPack packers. The VPacker rule matches a specific byte pattern at the PE entry point, while the XPack rule checks for a section named '.XPack0'.
2025-09-21 19:14:26 +03:00
Benjamin Funke
6a6a724d19 refactor signatures (UPC/UPF/UPI) 2025-09-21 17:18:30 +02:00
DosX
244520eefe Refactor Denuvo detection logic and signatures
Updated section name detection to use a regex-based method for improved accuracy. Reordered and refactored signature checks, replacing PE.findSignature with PE.isSignaturePresent and adjusting the order of Unity and signature checks. Added a Wikipedia reference for Denuvo.
2025-09-21 17:49:52 +03:00
DosX
f137f6e418
Merge pull request #313 from 0x80000003/master
Denuvo Signature Update
2025-09-21 17:37:13 +03:00
DosX
05ceceb345 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-21 16:44:51 +03:00
DosX
828213d24c Add VPacker 0.02.X signature to packer detection
Added detection for VPacker version 0.02.X in the packers and cryptors signature list to improve heuristic analysis coverage.
2025-09-21 16:44:47 +03:00
Benjamin Funke
5584042fe3 refactor signature (CURE/IMG) 2025-09-21 15:28:17 +02:00
Benjamin Funke
07b88d6cf5 text.AS.1.sg > bin.AS.1.sg & add link for Flatpak 2025-09-21 13:56:35 +02:00
DosX
b321ff291c Fix formatting and version strings in binary detectors
Standardized return statement indentation and removed extraneous blank lines in several binary format detector scripts. Updated version string formatting in bin.PDB.1.sg to remove 'v' prefix for consistency.
2025-09-21 12:39:51 +03:00
DosX
6d3a957a64 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-21 12:36:14 +03:00
Benjamin Funke
d515b81e53 add more links to signatures & image.ICN.1.sg > image.SMDH.1.sg 2025-09-21 11:32:33 +02:00
Benjamin Funke
19e48e2681 refactor signatures (IFP/CCD/SHBIN) 2025-09-21 09:28:03 +02:00
Benjamin Funke
023916389c improve signature Flatpak/XCF 2025-09-21 01:30:45 +02:00
Benjamin Funke
5a65a85f10 improve signatures P2L/OGG/PSM2CFG 2025-09-21 00:35:13 +02:00
Benjamin Funke
3c24565122 refactor CVM/FAS/LGX signature 2025-09-20 21:55:57 +02:00
Benjamin Funke
15e968682c refactor STK/BackupMii/VLK signature 2025-09-20 21:01:04 +02:00
DosX
47b82b9fa0 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-20 21:45:11 +03:00
Benjamin Funke
70a4e1097a Video.FLV.1.sg > video.FLV.1.sg 2025-09-20 18:45:19 +02:00
Benjamin Funke
a72745f1f6 refactor XCS signature 2025-09-20 17:14:17 +02:00
Benjamin Funke
7b366beec7 archive.SHP.1.sg > archive.Shaped.1.sg 2025-09-20 16:37:37 +02:00
Kaens
bfde669f0c SPRX annexed by Certified File
- Nintendō Certified File detected, and ripper-ready; includes a much-tightened SPRX detection as its part
2025-09-20 16:24:52 +02:00
DosX
dd824f7008 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-20 12:59:37 +03:00
DosX
f0680054a8 Add QQProtect detection rule for PE files (private protector)
Introduces a new detection script for QQProtect in the PE resource section. The rule checks for the presence of the 'QQPROTECT' resource name to identify protected files.
2025-09-20 12:59:35 +03:00
Benjamin Funke
93136ec877 refactor FNX/SHP signature 2025-09-20 11:49:10 +02:00
Gin
b89ea8515f
Update Denuvo.2.sg 2025-09-20 10:34:16 +01:00
Gin
5fe2f3acd1
Denuvo Signature Update 2025-09-20 10:25:05 +01:00
Benjamin Funke
f44b96992e use another regex for OBC copyright year check
use the same check as for DCP to detect the year better
2025-09-20 11:22:34 +02:00
DosX
7720725e8a Refactor binary format detectors for verbosity and consistency
Updated several binary format detector scripts to only set sOptions when verbose mode is enabled, improved variable naming consistency, and standardized version and copyright extraction. These changes enhance code clarity and ensure that additional information is only shown when requested.
2025-09-20 11:29:05 +03:00
DosX
de7f96c73a Rename and update CFBF detection rule files
Renamed 'Microsoft Installer.1.sg' and 'Microsoft Office.1.sg' to use underscores instead of spaces for consistency. Also updated the Office version string from '97-2003' to '1997-2003' and fixed formatting in both scripts.
2025-09-20 11:20:18 +03:00
DosX
c4441fa7d6 Refactor ELF compiler detection scripts
Standardized version extraction functions and improved code readability in DMD, FASM, and GCC ELF detection scripts. Updated variable naming for clarity, simplified logic, and made minor corrections to version string formatting.
2025-09-20 11:19:08 +03:00
DosX
a363ac739c Fix syntax error in detect function
Removed an extraneous variable declaration and corrected the if statement in the detect function to prevent a syntax error.
2025-09-20 11:12:06 +03:00
DosX
b7201d70e9 Improve detection logic in Borland and Watcom scripts
Updated the detection logic in Borland_C.4.sg and Watcom_C.4.sg to set bDetected if any of sVersion, sOptions, or previous bDetected are truthy. Also fixed assignment to sVersion instead of sOptions in Borland_C.4.sg for better accuracy.
2025-09-20 11:11:10 +03:00
DosX
0aa40253f1 Refactor MACH detection scripts for consistency
Simplified and standardized code in Delphi.4.sg, UPX.2.sg, and Zig.4.sg detection scripts. Improved readability by removing redundant variables, fixing indentation, and ensuring consistent return statements.
2025-09-20 11:10:06 +03:00
DosX
dcf07c79c3 Restrict copyright year to 1000-2999 in DCP detection
Updated the regular expression to only match copyright years between 1000 and 2999, preventing invalid years from being detected in the DCP archive detection logic.
2025-09-20 11:03:23 +03:00
DosX
666459d86a Fix regex usage and unify version assignment in detectors
Corrects regular expression usage by adding missing .test() calls in multiple binary file detectors. Also standardizes assignment to sVersion instead of sOptions for version information, and normalizes variable naming for consistency.
2025-09-20 11:00:26 +03:00
Benjamin Funke
654a38c2f9 add copyright check to DCP signature 2025-09-20 08:48:46 +02:00
Benjamin Funke
d34a35496d add creationDate check to MWD signature 2025-09-20 08:38:40 +02:00
Kaens
fce57de7b3 Update archive.RVZ.1.sg
- Actually uses regex as intended
 - Respects isVerbose
2025-09-20 07:25:47 +02:00
Benjamin Funke
a64040bdfc use regex on Battlecry3 signatures 2025-09-20 00:37:34 +02:00
Benjamin Funke
1859d29d8d use regex on P2L 2025-09-20 00:32:12 +02:00
Benjamin Funke
99b6865217 use regex on PSM2CFG signature 2025-09-20 00:30:11 +02:00
Benjamin Funke
3d1947023b use regex on IVF signature 2025-09-20 00:26:12 +02:00
Benjamin Funke
c2f1ad3e9b use regex on BackupMii signature 2025-09-20 00:23:30 +02:00
Benjamin Funke
8975d0d889 use regex on PKG signature 2025-09-20 00:20:59 +02:00
Benjamin Funke
4b8eb4f872 use regex on RVZ signature 2025-09-20 00:15:30 +02:00
Benjamin Funke
7c3257d0bd add link to SFK signature 2025-09-20 00:15:07 +02:00
Benjamin Funke
d7796d1806 add links to signatures 2025-09-19 23:56:56 +02:00
Kaens
b92dfcbc1d Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-19 19:09:11 +02:00
Kaens
d7a0cf56fe +CYM
- A heuristic added to detect YM2151/OPM register logs, aka. .CYM format
2025-09-19 19:09:07 +02:00
DosX
71c115202a Add IsPE rule and require PE check in rules
Introduced a private IsPE rule to check for PE files and updated multiple rules to require IsPE in their conditions. This ensures that rules only match on PE files, improving accuracy and reducing false positives.
2025-09-19 19:52:30 +03:00
DosX
f25d9686a1 Refactor and expand YARA rules for PE analysis
Added new private rules for detecting 32-bit and DLL PE files, improved formatting and readability, and expanded comments for clarity. Updated conditions in several rules to use the new helpers and improved string/condition formatting for consistency.
2025-09-19 19:16:30 +03:00
DosX
42f9fa629f Add "InterestingThings" YARA module for PE file detection
Introduces a new set of YARA rules in DosX_InterestingThings.yar for identifying various PE file characteristics, including .NET Native, Qt Framework, UPX and MPRESS packers, and obfus.h protection. These rules help in automated detection and classification of Windows executables.
2025-09-19 18:59:52 +03:00
DosX
b13ed8392f Add initial YARA rules for malware and crypto detection
Introduces several new YARA rulesets: DosX_Heuristic.yar for obfuscation, packing, and anti-analysis detection; crypto_signature.yar for identifying cryptographic constants, algorithms, and related malware signatures; malware_analisys.yar, packer.yar, packer_compiler_signatures.yar, and peid.yar for further malware, packer, and PE analysis. These rules enhance the detection capabilities for malware analysis and reverse engineering workflows.
2025-09-19 18:58:32 +03:00
DosX
3b84c0eefb dbs_min update 2025-09-19 00:52:23 +03:00
DosX
973d7c14ab Refine copyright year validation in binary detectors
Updated the regular expression to only match years starting with 1 or 2, ensuring the copyright year is a valid 4-digit year. Minor whitespace adjustments were also made.
2025-09-19 00:46:53 +03:00
DosX
6dadd2523a Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-19 00:45:00 +03:00
DosX
197572642b Improve Lua runtime detection in PE files
Enhanced the detect() function to better identify Lua runtimes by checking for export functions and extracting embedded version information from the .rdata section. Also refined the regular expression for library presence detection.
2025-09-19 00:44:58 +03:00
Benjamin Funke
3419f70b86 add LIXS signature 2025-09-18 18:19:32 +02:00
Benjamin Funke
928629dbc0 use regex for copyright year detection on OBC signature 2025-09-18 15:29:29 +02:00
DosX
1eeb25d425 Refine .NET Native debug detection logic
Improves the detection of .NET Native debug information by adjusting the conditions for identifying debug builds and exported functions. Also adds a check to ensure the binary is not a DLL when marking as 'modified'.
2025-09-18 15:59:02 +03:00
DosX
54b6d7e3f5 Update Amiga rule files to clean up reference comments
Moved reference URLs in Amiga detection rule files from commented 'Ref:' lines to direct comment lines for consistency. Also fixed minor whitespace and formatting issues in bin.DSW.1.sg.
2025-09-18 13:17:12 +03:00
DosX
8fe2737744 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-18 13:09:35 +03:00
DosX
6ae41f5384 Refactor MiniJavaScriptHeuristic detect function
Changed 'detect' from a constant assignment to a function declaration and replaced string initializations with String() for clarity. These changes improve code readability and maintain consistency in variable initialization.
2025-09-18 13:08:37 +03:00
DosX
f1004aa40b Refactor Themida detection logic for clarity
Inlined resource and import section checks, condensed switch cases for version detection, and combined version/options assignment for Winlicense. These changes improve code readability and maintainability.
2025-09-18 12:50:22 +03:00
Benjamin Funke
6d10e23bac use regex for DSW signature 2025-09-17 23:21:13 +02:00
DosX
8ab74d5de2 Remove debug log statement from .NET detection
Eliminated a leftover debug message ('TESSSST') from the .NET native detection logic to clean up output.
2025-09-17 21:49:02 +03:00
DosX
f0214833e1 Add missing semicolons and minor code style fixes
This commit adds missing semicolons to various functions and statements for consistency and to adhere to JavaScript best practices. It also updates some comments for clarity and changes the b64Chars variable to a constant.
2025-09-17 21:45:39 +03:00
DosX
9add890db3 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-17 21:40:45 +03:00
DosX
8c4fd49a51 Improve .NET and PE detection logic
Refactored detection of .NET Core, .NET Framework, and .NET Native by using section offsets and enhancing debug/release build identification. Updated string cleaning to use File.cleanString, improved section existence checks, and simplified version mapping for Visual Studio. Also made minor code cleanups and improved robustness when accessing PE sections.
2025-09-17 21:40:40 +03:00
horsicq
0356c36b64 Update file(s): 2025-09-17 2025-09-17 20:31:53 +02:00
horsicq
24be969492 Update file(s): 2025-09-17 2025-09-17 20:26:05 +02:00
Kaens
56cd96c74e *audio.1.sg *db/read
- audio.1.sg updated to its main repo
 - db/read's _logIt slightly tweaked to allow for more possible values
2025-09-17 12:12:48 +02:00
DosX
53ca691f5b Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-16 22:54:56 +03:00
DosX
24315736ae Standardize version string formatting in EP.MSVC.4.sg
Updated version strings to remove redundant 'v' prefixes and ensure consistent formatting across all detection cases. Also improved detection logic by updating the assignment to bDetected to account for sOptions.
2025-09-16 22:54:52 +03:00
Benjamin Funke
0843cd44cb add Inno Setup Uninstall Log signature 2025-09-16 20:26:48 +02:00
Benjamin Funke
17a9977a59 remove comment from signatures 2025-09-16 18:00:48 +02:00
Benjamin Funke
f064f0bda5 add WIP BinkMovie signature 2025-09-16 17:44:15 +02:00
DosX
16ab1c7387 Improve 7-Zip library detection in PE script
Updated the detect function to also recognize 'lib7z' (case-insensitive) as a valid 7-Zip library, enhancing detection coverage.
2025-09-16 14:29:23 +03:00
DosX
f02dff7bc5 Fix regex for .tmp module name detection
Corrected the regular expression to properly match module names ending with '.tmp'. Removed an unnecessary '+' character to ensure accurate detection.
2025-09-16 00:07:29 +03:00
DosX
d6fd811c73 Refactor SZDD.1.sg formatting and comments
Improved code readability by adjusting comment placement and whitespace in the detect function. No functional changes were made.
2025-09-15 12:40:29 +03:00
DosX
fbb5d77250 Update README with new mascot and contributor info
Enhanced the README with improved example use cases, updated contributor acknowledgments, and replaced the mascot image with docs/logo2.png. Also updated the contributors image source and clarified the description of the lightweight GUI version.
2025-09-14 23:00:01 +03:00
DosX
bdbbb92cb7 Fix default parameter handling in _logIt function
Replaces the default parameter assignment for 'msg' with an explicit check and assignment inside the function. This ensures compatibility with environments that do not support default parameters.
2025-09-14 21:37:20 +03:00
DosX
cee995906c Add 'static' to EAT options in PE detection scripts
Updated multiple PE detection scripts to set sOptions to 'EAT, static' instead of just 'EAT' when export address table (EAT) detection is used. Also refactored WwiseAudioEngine detection logic for clarity. Renamed WPF.MahApps_Metro.sg to WPF.MahApps_Metro.4.sg for consistency.
2025-09-14 16:44:40 +03:00
DosX
e1c18a381c Update SQX Archive Installer detection
Added a check to ensure the .data section exists before accessing its properties in the detect() function, preventing potential runtime errors.
2025-09-14 14:59:31 +03:00
DosX
1fcd4cb703 Update detection rules and metadata for PE and Binary scripts
Standardized version strings in MEW.2.sg, corrected library metadata in MassTransit.4.sg, and updated protector metadata in Tages.2.sg. Renamed Python.3.sg to Python.4.sg and adjusted file permissions. Minor formatting improvements and whitespace adjustments in several detection scripts.
2025-09-13 19:29:36 +03:00
DosX
98e9de6e2a Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-13 18:24:29 +03:00
Benjamin Funke
c3187fff21 add FAS signature
Found the FAS file in my Adiboo3 game directory.

The string said the FAS file was located for Adiboo3's game executable (Loader7.exe): (D:\coktel\Adiboo3\LOADER7.EXE)
2025-09-13 15:43:50 +02:00
Benjamin Funke
aea1d225c1 add copyright year to OBC signature 2025-09-13 15:34:29 +02:00
Benjamin Funke
985e5c3b87 add DSW signature 2025-09-13 12:11:15 +02:00
DosX
5b833572dc Skip IAT directory check for Turbo Linker
Wrapped the IAT directory empty check in a condition to skip it when the linker is Turbo Linker, as indicated by the absence of a specific result. This prevents false positives for Delphi binaries.
2025-09-13 11:36:20 +03:00
Benjamin Funke
e8d1c20b54 add SystemErr signature 2025-09-13 08:58:34 +02:00
DosX
563f4e631d Enhance module name checks for .NET and native scans
Added a regex check to identify module names starting with 'tmp' or ending with '.tmp' as suspicious. This improves detection of potentially malicious or temporary modules during heuristic analysis.
2025-09-12 22:11:25 +03:00
DosX
08c3641ea3 Remove BedsProtector and RabbitMQ rules, update Confuser
Deleted detection rules for Bed's Protector and RabbitMQ .NET from the PE database. Integrated Bed's Protector detection logic into the Confuser rule, consolidating detection and reducing redundancy.
2025-09-12 22:11:12 +03:00
Benjamin Funke
a7d4704182 add PSM2CFG signature 2025-09-12 11:16:21 +02:00
DosX
87447442d7 dbs_min update 2025-09-12 11:00:27 +03:00
Benjamin Funke
a99a5418dc add Dunkle Schatten signatures 2025-09-12 09:32:47 +02:00
Benjamin Funke
7f9b54a016 add P2L signature 2025-09-12 09:29:49 +02:00
Benjamin Funke
0a7d7a1f5f add BOU signature 2025-09-12 09:14:03 +02:00
DosX
2d1bbdd7a9 Add detection rule for rlottie library
Introduces a new rule file to identify the rlottie library in PE files using library and export function patterns.
2025-09-11 22:09:39 +03:00
DosX
6ff133d9fb Add RNNoise detection rule for PE files
Introduces a new detection script for identifying the RNNoise Noise Suppressor library in PE files. The rule checks for the presence of RNNoise-related libraries or functions to improve detection accuracy.
2025-09-11 22:09:10 +03:00
DosX
2e1e716a86 Enhance OpenGL detection for ANGLE support
Added detection for ANGLE by checking for ANGLE-specific export functions. Sets version and options accordingly when ANGLE is detected.
2025-09-11 22:08:55 +03:00
DosX
f6fc60529d Remove conditional definition for isSectionNamePresentExp
The isSectionNamePresentExp function is now always defined, removing the previous check for undefined. This simplifies the code and ensures consistent function availability.
2025-09-11 21:32:56 +03:00
DosX
44475404f2 Revert "Reformat and clean up code for consistency"
This reverts commit 86dfccf26a.
2025-09-11 21:32:26 +03:00
DosX
86dfccf26a Reformat and clean up code for consistency
Removed unnecessary conditional wrapper from PE.isSectionNamePresentExp and reformatted multiple functions and variable declarations in db/read for consistent indentation and style. This improves code readability and maintainability.
2025-09-11 21:31:23 +03:00
Benjamin Funke
849bb68a30 add XCI signature 2025-09-11 16:07:18 +02:00
Benjamin Funke
540bbc2bcf add XCG signature 2025-09-11 14:30:45 +02:00
Benjamin Funke
e88b0018c4 add XCR signature 2025-09-11 14:25:55 +02:00
Benjamin Funke
8640285f54 rewrite FNX signature 2025-09-10 20:44:25 +02:00
Benjamin Funke
c41e80169a IVF > Duck IVF 2025-09-10 20:28:45 +02:00
DosX
0523934236
Version display fix for ReXCrypter 2025-09-10 17:45:52 +03:00
Kaens
b76a781549 Update read
_currentLine and _logIt actually work now ^^; Additionally, _logIt accepts optional messages
2025-09-10 15:37:04 +02:00
Kaens
b9de7a8268 Update read
- compressedArrays rewritten to full-featuredness and precision
 - the much fuller funSampleName returned
 - various tiny tweaks
2025-09-09 20:19:27 +02:00
DosX
f37362bd2d dbs_min update 2025-09-09 19:29:22 +03:00
DosX
60ac7d3307 Refine Alienyze protector detection logic
Enhanced the detection function by adding checks for the number of sections and the file offset of the first section. This improves accuracy by reducing false positives.
2025-09-08 00:27:26 +03:00
DosX
c9f8aec320 Update detection rules and metadata for several PE signatures
Enhanced metadata and detection logic for GoldSrc, Intel IPP, Jar2Exe, MPQ, MSLRH, and NTPacker signature files. Added or updated URLs, improved detection accuracy, and clarified library/protector names. Also moved Native_UD_Packer.2.sg to db_extra/PE directory.
2025-09-08 00:20:26 +03:00
DosX
eab58e6fce Improve desktop entry detection logic
Enhanced the detect() function to check for text files and additional signature conditions before identifying '[Desktop Entry]'. This increases accuracy in detecting desktop shortcut files.
2025-09-07 23:38:42 +03:00
DosX
3793d4cf31 Add detection rules for various .NET libraries
Introduced new Detect It Easy rule files for identifying several .NET libraries, including Alibaba Cloud SDK, Amazon CloudWatch, Amazon EC2, Amazon RDS, LibVLCSharp, Microsoft Azure SDK, Plivo, RamlToOpenApiConverter, Twilio, AvalonEdit, and ControlzEx. Each rule checks for the presence of a specific .NET object to detect the corresponding library.
2025-09-07 22:40:47 +03:00
DosX
11aaa6baad Update Edge WebView library detection logic
Renamed the library meta to 'Microsoft Edge Chromium WebView' and improved detection logic to set bDetected for both native and .NET WebView2 components.
2025-09-07 22:30:59 +03:00
DosX
8f3bc4d4ce Improve SQLite version detection logic
Refactored the detect() function to extract the SQLite version dynamically from library or export function names using regex. This enhances flexibility and reduces hardcoded checks for specific versions.
2025-09-07 22:03:09 +03:00
DosX
3cbd9b6b46 Fix .NET version check to only run for .NET binaries
The check for a corrupted .NET CLR version now only runs if the binary is detected as a .NET binary. This prevents unnecessary checks and potential false positives for native binaries.
2025-09-07 22:02:57 +03:00
hypn0chka
4fd6f4f3a4 Amiga Hunk new & update 2025-09-07 20:30:00 +05:00
DosX
ac33a333c3 Update detection logic for Crc.NET library
Modified the detect() function to check for either 'CrcBase' or 'Crc32Base' objects in addition to existing checks. This improves detection accuracy for different variants of the Crc.NET library.
2025-09-07 18:23:11 +03:00
DosX
995b5d3e57 Improve VMProtect .NET detection logic
Refactored signature checks to use logical OR for version 3.X detection, simplifying the condition. Enhanced section name collision handling to specifically detect '.vmp' and set version to 2.X-3.X, improving accuracy of version and options identification.
2025-09-07 18:22:45 +03:00
DosX
ef58139c6d Update library meta name to 'MahApps Metro UI'
Changed the meta information for the library from 'MahApps Metro' to 'MahApps Metro UI' for improved clarity and consistency.
2025-09-07 16:46:43 +03:00
DosX
48e5889bfe Enhance .NET corruption checks in PE analysis
Added detection for corrupted .NET CLR version and improved labeling for .NET header corruption in the scanForBadFileFormat_NET_and_Native function.
2025-09-07 15:55:39 +03:00
DosX
cc95a5caab Update bin.PS-X.1.sg 2025-09-07 15:37:14 +03:00
DosX
84dfceedca Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-07 15:36:30 +03:00
DosX
1d41378fcb Add UpdaterEXE check to .NET/native malicious code scan
Enhanced the heuristic analysis to include a check for the presence of the 'UpdaterEXE' .NET object when scanning for malicious code. This improves detection coverage for certain malware variants.
2025-09-07 15:36:28 +03:00
Benjamin Funke
896c9ec299 add region string check to PS-X signature 2025-09-07 14:27:59 +02:00
DosX
27ff364d2b dbs_min update 2025-09-07 14:58:20 +03:00
DosX
99d3e87450 Fix typos and rename Amiga font file
Renamed 'Amiga font.1.sg' to 'Amiga_font.1.sg' for consistency. Corrected language assignment in GNU_C.4.sg from 'C++' to 'C'. Updated meta format in bin.CCD.1.sg from 'CloneCD Control File' to 'CloneCD Control'.
2025-09-07 14:58:06 +03:00
DosX
4ebcb87a7a Add detection rules for multiple .NET libraries
Added new rule files for a wide range of .NET libraries and NuGet packages under db/PE/. Each rule enables detection of a specific library by checking for unique .NET objects, improving automated identification of dependencies in PE files.
2025-09-07 13:16:22 +03:00
horsicq
751c181d33 Update file(s): 2025-09-07 2025-09-07 00:17:15 +02:00
hypn0chka
5f415def45 Amiga Hunk new & update 2025-09-07 01:37:15 +05:00
hypn0chka
81d1d9fab0 Amiga Hunk new & update 2025-09-06 19:48:37 +05:00
Benjamin Funke
2567867567 add CloneCD Control File signature 2025-09-06 12:31:08 +02:00
Benjamin Funke
d716bbd291 add PlayStation 1 executable signature 2025-09-06 12:23:56 +02:00
hypn0chka
0ac0e1bf7b Amiga Hunk new & update 2025-09-05 23:07:12 +05:00
DosX
2d90665bbd Delete where-is-structure-example.txt 2025-09-05 10:59:00 +03:00
DosX
f2078ce044 dbs_min update 2025-09-04 23:42:57 +03:00
DosX
a8e53ca291 Update PE heuristics and fix formatting in APK script
Renamed LDC.4.sg to LDC.6.sg in the PE database, added detection for 'SafeNet Sentinel LDK' in the generic heuristic analysis script, and fixed a formatting issue in the SingleJar APK detection script.
2025-09-04 23:42:34 +03:00
DosX
5feb3cbffa dbs_min update 2025-09-04 23:36:26 +03:00
DosX
b1bd73b5df Update PE detection rules and rename signature files
Refactored and improved several PE detection scripts, including logic changes in 12Ghosts_Zip2, ActiveMark, FileSplit_Self-Merger, HASP_HL_Protection, HidePE, Photo_Compiler, and tcc.6. Updated meta fields for accuracy, improved detection logic, and standardized function signatures. Renamed multiple signature files to new version numbers for consistency.
2025-09-04 23:36:12 +03:00
DosX
fe4c657629 Rename PE signature files from .4.sg to .6.sg
Renamed multiple PE signature files to use the .6.sg extension for consistency. Also updated file permissions for JScript and Watcom signatures, and added 'sLang = "C++";' to obfusheader_h.5.sg to specify the language.
2025-09-04 23:15:47 +03:00
DosX
0269f63ace Refine section name check in obfuscation scan
Updated the heuristic to exclude '.00cfg' from being flagged as a strange section name during native obfuscation scanning. This prevents false positives for legitimate section names.
2025-09-04 23:13:08 +03:00
DosX
f3c5b49ec4 Update and rename MinGW and RADBasic detection scripts
Renamed MinGW.4.sg to MinGW.6.sg and RADBasic.4.sg to RADBasic.6.sg, updating detection logic in both scripts. Added a new detection pattern for MinGW and resource name check for RADBasic. Removed the obsolete gcc.4.sg detection script.
2025-09-04 23:12:59 +03:00
DosX
52970f8171 Update twinBASIC.6.sg 2025-09-04 23:03:54 +03:00
DosX
f33c2d5e36 Add detection rule for twinBASIC compiler
Introduces a new rule file for identifying executables compiled with twinBASIC. The rule checks for specific import hashes and resource names, and sets version information for 64-bit binaries.
2025-09-04 23:03:22 +03:00
DosX
f3d77ae17a Update DOS message checks and IAT directory logic
Added detection for the twinBASIC DOS message and removed unnecessary options check when determining if the IAT directory is empty.
2025-09-04 23:03:07 +03:00
DosX
e696f67349 Enhance Alienyze detector with version and options checks
Updated the Alienyze PE detection logic to check for absence of imports and to identify demo versions via signature matching. Also added detection of modified samples when the '.alien' section is missing.
2025-09-04 22:43:50 +03:00
DosX
b41c6ccc7d dbs_min update 2025-09-04 22:18:48 +03:00
DosX
c20867900f Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-04 22:17:32 +03:00
DosX
b852348a08 Add NoodleCrypt detection to packer analysis
Added support for detecting NoodleCrypt (version 2.X) by recognizing its section names in the packer and cryptor scanning function.
2025-09-04 22:17:23 +03:00
hypn0chka
81b5bcb5f1 Watcom update 2025-09-04 23:09:22 +05:00
DosX
58ae29866d Guard isSectionNamePresentExp definition for Qt6 bugfix
Wrapped the definition of PE.isSectionNamePresentExp in a conditional to prevent redefinition, addressing a bug in DiE Qt6 (04.09.2025).
2025-09-04 21:05:28 +03:00
hypn0chka
d519ba0c33 Amiga Hunk new & update 2025-09-04 22:27:28 +05:00
DosX
c2d648eac6 Add new RAT detection heuristics
Introduces detection logic for Orcus RAT, Liberium RAT, and ICARUS Evil Worm RAT based on .NET module names and object presence. Also simplifies the Remcos RAT import hash check for improved readability.
2025-09-04 20:22:09 +03:00
DosX
c9bc3b8aed Update audio.WAV.1.sg 2025-09-04 19:59:29 +03:00
DosX
a1b423529a Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-09-04 19:58:06 +03:00
DosX
520c41d372 Move from db_extra to db after review 2025-09-04 19:58:03 +03:00
Kaens
887e361406 *WAV +WEM +vgmcodingutils
- RIFF .WAV fixed up a little, works on Qt5 again :D
 - Audiokinetic Wwise RIFF .wem/.bnk added and infoed; it's similar to .wav but it's a special beast! The sizes are supposed to be wrong sometimes, welcome to the real world perfectionists
 - Together with WEM, a new shared 'library' is introduced for various helper routines
2025-09-04 17:47:54 +02:00
hypn0chka
4a0d5221cf new & update 2025-09-03 21:43:27 +05:00
DosX
52489b84c5 Refine detection logic for AMD FSR and Argon2
Improves the detection functions for AMD FSR and Argon2 libraries by distinguishing between library presence and export function presence, and setting detection options accordingly. This enhances accuracy in identifying specific versions and features.
2025-09-03 16:20:09 +03:00
DosX
0e3e611435 Refactor and improve PE packer/protector detection scripts
Refactored detection logic in multiple PE packer/protector scripts for consistency and clarity, including variable usage, code formatting, and detection conditions. Renamed Anticrack_Software_Protector.2.sg to Anticrack_Software.2.sg. Improved resource checks, section name handling, and streamlined result returns across scripts.
2025-09-03 12:01:15 +03:00
DosX
6ec4fafbe5 Improve detection logic for several PE libraries
Enhanced detection functions for AMD FSR, Nvidia DLSS, OodleCompression, OpusAudio, and libfvad by refining regular expressions and setting sOptions to 'EAT' when export functions are present. These changes improve accuracy and consistency in identifying library versions and exported functions.
2025-09-03 01:11:19 +03:00
DosX
8f14874b07 Add new packer and cryptor signatures
Added detection for Squishy (logicoma) and BattlEye (sections .be0, .be1, .be2) to the packer and cryptor signature list in scanForPackersAndCryptors_NET_and_Native.
2025-09-03 01:00:20 +03:00
DosX
424996490d Add libfvad detection rule for PE files
Introduces a new rule to identify the libfvad library in PE files by checking for its presence and exported functions.
2025-09-03 01:00:09 +03:00
DosX
03047dc771 Improve detection logic for protection schemes
Enhanced detection functions for AMD FSR, BattlEye, DeepSea, and Denuvo by broadening library matching patterns and refining version assignment logic. These changes improve accuracy and robustness in identifying protection technologies.
2025-09-03 00:59:59 +03:00
DosX
5282b686a2 Update PE detection logic for multiple protectors and libraries
Adjusted detection thresholds and methods in Dotfuscator, Fish PE, Nvidia DLSS, and OodleCompression scripts. These changes improve accuracy by refining result limits, using section count functions, expanding library regex checks, and adding export function detection.
2025-09-03 00:59:46 +03:00
DosX
7fef5210b9 Refactor and improve PE detection rule scripts
Refactored detection logic in several PE rule scripts for clarity and efficiency, including combining conditional checks, simplifying switch statements, and improving resource scanning loops. Added comments and minor documentation updates for Squishy and Yano rules. These changes enhance maintainability and detection accuracy.
2025-09-03 00:59:20 +03:00
DosX
e5a9b3b71a Refactor WinUpack detection logic
Simplified the detection logic by removing redundant bDetected assignments and consolidating its final value based on sVersion. Also streamlined switch-case formatting for better readability.
2025-09-03 00:03:51 +03:00
DosX
4895a55830 dbs_min update 2025-09-02 22:53:23 +03:00
DosX
27ed148d1e Refactor detection rules and relocate TrueCrypt-VeraCrypt installer
Updated comments and logic in Alcatraz.2.sg, DMD.4.sg, FSG.2.sg, and eXPressor.2.sg for clarity and consistency. Moved TrueCrypt-VeraCrypt_installer.1.sg from db/PE to db_extra/PE, with minor code and metadata adjustments.
2025-09-02 22:52:54 +03:00
DosX
19af83d00d Refactor SQLite detection rules and remove sql-server rule
Consolidated SQL Server detection logic into the SQLite rule file and enhanced version detection for SQLite 3 and 4. Removed the redundant sql-server.4.sg file to streamline rule management.
2025-09-02 22:42:29 +03:00
Hors
7876124a28
Delete db/PE/NecroVM.Virt.2.sg 2025-09-02 10:01:11 +02:00
Hors
b32b6dfad7
Delete db/PE/KBys_Packer.2.sg 2025-09-02 10:00:50 +02:00
horsicq
934c9f11ac Add new file(s): 2025-09-02 2025-09-02 01:19:32 +02:00
DosX
d5ad9b0661 Refactor PE protector detection scripts
Improved code style and consistency in detection logic for Metrowerks CodeWarrior, PyInstaller, RLP, and Setup Factory scripts. Updated function calls, streamlined conditional checks, and standardized version and options assignment.
2025-09-01 20:41:52 +03:00
DosX
79b1eefb9e Update Maxon_C++.4.sg 2025-08-31 21:46:28 +03:00
hypn0chka
e16df61c99 Amiga Hunk update 2025-08-31 22:21:48 +05:00
DosX
eec5c9c9be dbs_min update 2025-08-31 15:58:35 +03:00
DosX
8f41915774 Add new .NET obfuscator and packer detections
Added detection for CliSecure obfuscator runtimes and Alcatraz packer in the heuristic analysis script to improve coverage of protected .NET applications.
2025-08-31 15:58:17 +03:00
DosX
7fa763eedf Refactor PE version detection logic in Delphi.4.sg
Replaced deprecated PE.isPEPlus() with PE.is64(), improved resource and section access by using local variables, and standardized return values to boolean true/false for clarity. Also merged duplicate case statements and cleaned up code formatting for better readability.
2025-08-31 15:58:05 +03:00
DosX
8840da7f9a Improve RAT detection logic in heuristic analysis
Expanded the conditions for RAT detection to include 'AntiTaskManager', 'NtSetInformationProcess', and clarified signature checks. Also updated verdict type for NetWire detection to 'NetWire RAT' for consistency.
2025-08-31 15:05:30 +03:00
DosX
2b4f1fb407 Add Babylon RAT detection via import hash checks
Introduced new detection logic for Babylon RAT by checking specific import position hashes, including variants for UPX packed samples. This enhances the heuristic analysis to identify more malware families.
2025-08-31 11:36:49 +03:00
DosX
f11356f162 Add new heuristic checks for AntiTaskManager and Sinique RAT
Introduces detection logic for the presence of 'AntiTaskManager' .NET object as a RootKit and checks for specific import hashes to identify Sinique RAT v1.0. These additions enhance the coverage of the generic heuristic analysis for malicious code.
2025-08-31 00:55:40 +03:00
DosX
c39c8418c5 dbs_min update 2025-08-31 00:31:18 +03:00
DosX
8c0b3a0826 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-08-31 00:29:09 +03:00
DosX
423c90910f Add detection for several new RAT families
Expanded heuristic analysis to detect NanoCore, Poison Ivy, Gh0st, DarkComet, NetWire, and Remcos RATs using PE structure and import hash checks.
2025-08-31 00:29:07 +03:00
Benjamin Funke
5c0c411297 add contentID to PKG signature 2025-08-30 18:59:59 +02:00
DosX
68aa8c64e9 Remove redundant PE.isNet() checks in UI library detectors
Simplified detection logic for OpenCV, Guna UI2, Krypton, MetroFramework, and MaterialSkin libraries by removing unnecessary PE.isNet() checks. Detection now relies solely on the presence of relevant .NET objects, improving code clarity.
2025-08-30 10:56:51 +03:00
DosX
bfeb649c44 dbs_min update 2025-08-29 23:30:39 +03:00
DosX
44ec12ab0a Clarify comment formatting in UPC, UPF, UPI rule files
Updated comments in bin.UPC.1.sg, bin.UPF.1.sg, and bin.UPI.1.sg to clarify the reference to 'My Fearless Friend' and its source link, improving readability and consistency.
2025-08-29 23:27:53 +03:00
DosX
2d5de884d9 Update detection rules and metadata for PE packers
Refactored switch statement formatting in PESpin.2.sg for readability. Corrected metadata casing in XPACK.2.sg and improved code formatting. Adjusted detection logic in XerinFuscator.2.sg to remove redundant check. Expanded XPack and added new entries in heuristic analysis. Renamed and updated STUD.2.sg, changing metadata from 'protector' to 'cryptor' and moved to db_extra.
2025-08-29 23:27:10 +03:00
DosX
58cdc9df89 Refactor packer and cryptor section name detection
Moved detection of fake packer signatures to a later stage in the validation process and added a new fake MPRESS signature. Updated conditional logic to improve accuracy of packer identification.
2025-08-29 22:41:22 +03:00
Benjamin Funke
e950313ab1 add My Fearless Friend as ref 2025-08-29 19:45:27 +02:00
DosX
43f46d6bd2 dbs_min update 2025-08-29 20:39:17 +03:00
Benjamin Funke
ade71cf299 add gameID to RVZ signature 2025-08-29 19:00:13 +02:00
DosX
d961734670 Add version info for DYAMAR packer detection
Updated the DYAMAR entry in the packer detection list to include version '1.3.X'. This improves identification accuracy for DYAMAR-protected files.
2025-08-29 16:59:58 +03:00
DosX
fd29986392 Refactor packer signature patterns to regex
Updated packer and cryptor signature definitions to use regular expressions for improved matching accuracy and maintainability
2025-08-29 16:52:53 +03:00
DosX
7a4a6a9ae5 Refactor section detection logic in DYAMAR.2.sg
Replaced direct section checks with a regular expression using PE.isSectionNamePresentExp for improved maintainability and flexibility in detecting '.dyamarC' and '.dyamarD' sections.
2025-08-29 16:52:19 +03:00
DosX
fbc3d45b59 Add detection rules for .NET libraries
Introduced new rule files for DnsClient.NET, Fasterflect, MongoDB.NET, Snappier, and Combres libraries. These rules enable identification of the respective .NET libraries in PE files by checking for specific .NET objects.
2025-08-29 15:36:56 +03:00
DosX
fccda85cdb dbs_min update 2025-08-29 13:31:44 +03:00
DosX
9595a4828e Add Byfron packer detection to heuristic analysis
Added detection for the Byfron packer by including its section names ('.byfron', '.byfron1') in the packers and cryptors scan function
2025-08-29 13:31:30 +03:00
DosX
8913998ecc Move and update PE detection rule files
Renamed CrypToCrack_Pe_Protector.2.sg to CrypToCrack.2.sg. Moved Cryptic.2.sg and PE-Admin.2.sg from db/PE to db_extra/PE, updating file permissions and making minor formatting changes to both rule files.
2025-08-29 13:31:16 +03:00
DosX
e5527a32a5 Add detection rules for popular .NET libraries
Introduced Detect It Easy rule files for Autofac, LINQKit, RabbitMQ, RestSharp, SharpZipLib, log4net, and xUnit.net. These rules enable identification of these libraries in .NET PE files.
2025-08-29 13:23:39 +03:00
DosX
f61f625724 Rename .sg files to .4.sg in db/PE directory
Renamed Castle.Net.sg and Discord.Net.sg to Castle.Net.4.sg and Discord.Net.4.sg for indexing purposes.
2025-08-29 13:10:05 +03:00
DosX
88c651429f dbs_min update 2025-08-29 01:37:19 +03:00
DosX
b66e5056d8 Add detection rules for various .NET libraries
Introduces Detect It Easy rule files for multiple .NET libraries including Castle.Net, Discord.Net, FluentValidation, MassTransit, MessagePack, NJsonSchema, Nerdbank.Streams, NodaTime, OpenTelemetry, Perfolizer, Scrutor, Starkbank ECDSA, Telegram.Bot, and Twilio SendGrid. These rules enable identification of the respective libraries in PE files.
2025-08-29 01:36:53 +03:00
DosX
6b948dc158 Rename Azure.Core.4.sg to Microsoft_Azure_SDK.4.sg
Renamed the file and updated the library meta tag to 'Microsoft Azure SDK' for better clarity and alignment with naming conventions.
2025-08-29 01:36:48 +03:00
DosX
6c8f05ec4a Bugfix: br.meta -> br.init
Replaces 'meta' with 'init' in stored block handling, updates meta() call to remove empty string argument.
2025-08-28 01:27:03 +03:00
DosX
b91e2c26bf dbs_min update 2025-08-28 00:39:14 +03:00
DosX
3e2c5ce4fe Refactor MSDOS address conversion and update PE rules
Renamed MSDOS.AddressToOffset to MSDOS.addressToOffset for consistency and added a backward compatibility alias. Updated detection scripts to use the new method name. Renamed and updated several PE rule files for clarity and accuracy, including metadata corrections and minor code improvements.
2025-08-28 00:37:54 +03:00
DosX
33711a0407 Add standard DiE-JS framework header to db files
Added a standard header comment to all db framework and detection rule files, indicating they are part of the Detect It Easy (DiE-JS) framework and warning against unauthorized changes. This improves consistency and clarifies file purpose for maintainers.
2025-08-27 23:21:24 +03:00
DosX
e7a094093a Update example rule: init(...) -> meta(...) 2025-08-27 22:59:10 +03:00
DosX
1f049ce2c2 Global restandardization: init(...) -> meta(...) 2025-08-27 22:58:17 +03:00
DosX
e85b5549a5 Add protector generic detection to heuristic analysis
Extended section name validation to include 'protector' signatures for improved detection of packers, cryptors, and protectors in .NET and native applications. Updated conditional logic to account for the new 'protector' category.
2025-08-27 22:46:53 +03:00
DosX
c7cfa05f49 Refine packer/cryptor section name validation
Improves the condition for identifying packer and cryptor section names by excluding generic matches for 'a cryptor' or 'a packer'. This helps prevent false positives when scanning for packers and cryptors in .NET and native applications.
2025-08-27 22:10:16 +03:00
DosX
a36709c909 dbs_min update 2025-08-27 09:59:05 +03:00
DosX
1c0386c83e Expand packer and cryptor detection signatures
Added new signatures for PEBundle, BoxedApp, KByS, and HyperTech Crackproof. Enhanced Themida and NsPack section name detection. Improved cryptor regex and export name obfuscation logic for more accurate identification.
2025-08-27 09:58:54 +03:00
DosX
1d445f8e58 Update BoxedApp detection and rename KByS rule
Refined BoxedApp detection to require more than two sections. Renamed KBys_Packer.2.sg to KByS.2.sg and updated packer name for consistency.
2025-08-27 01:44:34 +03:00
DosX
e2df876b4d Add ReXCrypter rule and move NecroVM rule
Added a new detection rule for ReXCrypter v2 in db/PE/ReXCrypter.2.sg. Moved NecroVM.Virt.2.sg from db/PE to db_extra/PE.
2025-08-27 00:50:28 +03:00
DosX
48620b4cb4 Refactor resource and section access in PE scripts
Updated AutoHotKey.3.sg and AutorunProEnterpriseII.1.sg to add missing semicolons for consistency. Refactored Delphi.4.sg to use local variables for resource and section access, improving code readability and maintainability.
2025-08-27 00:20:14 +03:00
DosX
401e8cb8c4 dbs_min update 2025-08-26 21:37:07 +03:00
Benjamin Funke
4c89a26692 read signature from STK21 archives 2025-08-26 17:47:57 +02:00
DosX
39ef136575 dbs_min update 2025-08-25 21:24:44 +03:00
DosX
172b6886fa Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-08-25 21:24:15 +03:00
DosX
7ebf2672fc Refactor packer/cryptor/protector signature handling
Consolidated multiple hash and section name signatures into arrays for packers, cryptors, and protectors in the detection database. Updated validation logic to support array-based matching for both import hashes and section names, improving maintainability and reducing redundancy.
2025-08-25 21:24:10 +03:00
Benjamin Funke
28c5c106a9 read consoleID in BackupMii binaries 2025-08-25 20:05:11 +02:00
DosX
7bb5c205be Enhance section name validation for packers/cryptors
Added support for detecting packer and cryptor section names using regular expressions in the section name validation logic. This improves heuristic analysis for .NET and native applications by broadening detection coverage.
2025-08-25 20:16:58 +03:00
DosX
0bed2d49ac Rename isSectionPresentExp to isSectionNamePresentExp
Refactored the function name for clarity, indicating that the pattern match is performed on section names rather than sections themselves.
2025-08-25 20:06:48 +03:00
horsicq
3e75e70062 Add new file(s): 2025-08-25 2025-08-25 06:50:10 +02:00
DosX
64f7e574f2 Update packer detection signatures in heuristic analysis
Modified UPX signature entries to adjust version and offset parameters. Added new signature for PE-PACK 1.0 to improve detection coverage.
2025-08-25 01:07:02 +03:00
DosX
c9717317d6 Add new PECompact and CExe packer detections
Added detection for PECompact build 20316 (version 3.02.1b) and updated the default build number output. Also added CExe 1.0a packer signature to heuristic analysis.
2025-08-25 00:58:57 +03:00
DosX
f7005ee381 Update Virbox.2.sg to use 'protector' type
Changed the initialization from 'packer' to 'protector' for Virbox detection. Removed unused sVersion assignment for cleaner rule logic.
2025-08-25 00:49:27 +03:00
DosX
419fac6a99 dbs_min update 2025-08-25 00:45:19 +03:00
DosX
b5eaa924e7 Add new packer and protector signatures to analysis
Added detection signatures for py2exe, MEW, nPack, and XPack packers/protectors in the scanForPackersAndCryptors_NET_and_Native function to improve coverage of packed and obfuscated binaries.
2025-08-25 00:44:44 +03:00
Kaens
fa2561a8dc *WAV +CXT
- RIFF .WAV was corrected & now has lots more game resource detections thanks to vgmstream project
 - Adobe Director Protected Cast .CXT added & integrity-checked & ripper-ready
2025-08-24 19:46:33 +02:00
hypn0chka
bd0b4f4d85 Amiga Hunk new & update 2025-08-24 20:42:35 +05:00
hypn0chka
7a230f15e5 Amiga Hunk new & update 2025-08-24 18:11:35 +05:00
Benjamin Funke
cbe831fec7 add BCD1 signature 2025-08-24 15:04:08 +02:00
hypn0chka
3925ec10f5 Amiga Hunk new & update 2025-08-24 15:05:48 +05:00
Benjamin Funke
58512d7f4d add ZZDATA signature 2025-08-24 11:02:56 +02:00
DosX
ea58d73fe4 Add ExeShield detection and update heuristic analysis
Introduces a new detection rule for ExeShield in the PE database and updates the generic heuristic analysis to recognize the '.shield' section name associated with ExeShield.
2025-08-24 11:29:00 +03:00
DosX
c286776fee Refine export function obfuscation detection
Updated the logic to check for obfuscated export function names by ensuring names are not mangled before flagging them as obfuscated. This improves the accuracy of the obfuscation detection in native scans.
2025-08-24 00:00:16 +03:00
DosX
955602477a Refactor PE protector detection rules and relocate FixupPak
Updated detection logic for CrypToCrack and EXEFog to improve clarity and efficiency. Refactored Themida detection for better variable naming and logic. Moved FixupPak.2.sg from db/PE to db_extra/PE and changed its file mode to 100644.
2025-08-23 23:48:12 +03:00
DosX
a3247ef27b Add logging for strange resource names in analysis
Introduces log statements to record unusual or obfuscated resource names during .NET and native heuristic analysis. This improves traceability and debugging of resource name anomalies.
2025-08-23 23:29:53 +03:00
DosX
9b70009892 Improve IPCH detection rule for version parsing
Refactored the detection logic to dynamically extract the EDG C/C++ version from the binary, replacing hardcoded checks for specific versions. This makes the rule more flexible and future-proof for additional versions.
2025-08-23 23:28:26 +03:00
DosX
f6e71392d8 Improve PE analysis logging and refactor resource checks
Added detailed logging for RunPE-like behavior, compressed sections, sections with wrong offset/size, and duplicate section offsets. Moved PE-in-resources detection from scanForObfuscations_Native to scanForPackersAndCryptors_NET_and_Native for better organization. Enhanced export function name checks to include obfuscated names.
2025-08-23 23:14:31 +03:00
Benjamin Funke
cf946d8adc add version 6.7 to IPCH signature 2025-08-23 22:11:43 +02:00
Benjamin Funke
01046a3256 add IPCH signature 2025-08-23 22:06:51 +02:00
Benjamin Funke
21d3cba730 add gitignore to heuristic detection 2025-08-23 22:05:16 +02:00
hypn0chka
0e7390e5dd Amiga Hunk detections 2025-08-24 00:41:29 +05:00
Benjamin Funke
0a978112a8 rewrite GamingRoot signature 2025-08-23 18:55:38 +02:00
DosX
123c6b5aba Detect PE files embedded in resources and overlay
Renamed variable for overlay PE detection for clarity and updated log message. Added logic to scan resources for embedded PE files by checking for 'MZ' signatures, and updated options string accordingly.
2025-08-23 19:51:41 +03:00
DosX
bf70682a1c Add checks for strange resources in PE analysis
Introduces detection of strange unmanaged resources in .NET and native PE scans by analyzing resource names for non-ASCII characters or obfuscation. Updates options to flag files with suspicious resources, improving heuristic analysis coverage.
2025-08-23 19:27:23 +03:00
DosX
2bba0d4782 Fix detection logic in AMD_FSR.4.sg
Detection now preserves previous bDetected state and sets it to true if sVersion is present, ensuring cumulative detection results.
2025-08-23 19:09:43 +03:00
hypn0chka
025ad78814 Amiga Hunk detections 2025-08-23 19:59:04 +05:00
Benjamin Funke
b4a4447b75 add GamingRoot signature 2025-08-23 14:07:25 +02:00
Benjamin Funke
2dd3ab6bb5 fix indentation for C# PDB detection 2025-08-23 11:36:38 +02:00
DosX
e7f44fc924 dbs_min update 2025-08-23 01:44:26 +03:00
DosX
26cefe53d8 Revert "Update file(s): 2025-08-23"
This reverts commit 56c1c6dc8d.
2025-08-23 01:38:43 +03:00
horsicq
56c1c6dc8d Update file(s): 2025-08-23 2025-08-23 00:32:00 +02:00
DosX
c28ddc7207 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-08-23 01:29:54 +03:00
DosX
d4d49ad909 Add tElock 0.98 signature to packer detection
Included detection for tElock version 0.98 in the scanForPackersAndCryptors_NET_and_Native function to improve coverage of packer identification.
2025-08-23 01:21:54 +03:00
horsicq
9bcac742e6 Add new file(s): 2025-08-23 2025-08-23 00:21:27 +02:00
DosX
9583462ea2 dbs_min update 2025-08-23 01:09:33 +03:00
DosX
5644512a97 Add environment check for heuristic scan
The script now checks if heuristic scan and verbose mode are enabled before warning about running outside the environment. This prevents unnecessary messages when not in heuristic scan mode.
2025-08-23 01:06:56 +03:00
DosX
b93ee304aa Update packer detection logic and section name database
Enhanced NakedPacker detection to check for '.naked1' section and specific entry point. Moved fake UPX and Themida section names to the top of the section name database for improved heuristic analysis.
2025-08-23 01:03:45 +03:00
DosX
005bc3d14b Improve detection logic for packers in PE scripts
Updated Advanced BAT to EXE Converter script to use 'packer' instead of 'protector'. Enhanced AlushPacker detection by checking for 'FlushInstructionCache' import and refining packed section identification and signature matching.
2025-08-23 00:47:14 +03:00
Benjamin Funke
6ae7252e57 add C# pdb format to PDB signature 2025-08-22 22:46:26 +02:00
DosX
6dcb13c437 Add reference link to AlushPacker repository
Added a comment with the official AlushPacker GitHub repository URL for reference and documentation purposes.
2025-08-22 11:17:31 +03:00
DosX
623c434c5f Add AlushPacker detection rule for PE files
Introduces a new detection rule for AlushPacker in the PE database. The rule checks for specific import functions, Rich signature, and vcruntime140 library presence to identify packed files, and flags them as modified if the .packed section is missing.
2025-08-22 11:17:06 +03:00
DosX
85ca39a6bc dbs_min update 2025-08-22 00:27:07 +03:00
DosX
8ed7f70074 Improve detection logic in Binary and PE rule files
Refactored db/Binary/formats.1.sg to streamline detection by removing redundant bDetected assignments and ensuring bDetected is set based on sName. Enhanced db/PE/ExeStealth.2.sg with additional detection for ExeStealth using TN resource and section name checks. Added reference link for ExeStealth technique.
2025-08-22 00:26:37 +03:00
DosX
08bb667684 Improve packer detection and fix section name assignment
Added detection for 'ExeStealth' and additional fake UPX section names. Fixed logic for assigning section names when duplicate offsets are found, ensuring correct indices are used.
2025-08-21 13:46:42 +03:00
DosX
820dca3403 Refactor packer/protector type handling and add cryptor
Updated the type system for packers, protectors, and protections to include a distinct 'cryptor' type. Adjusted hash database entries and detection logic to support the new type. Improved section name validation and added new fake packer/protector signatures for enhanced detection accuracy.
2025-08-21 13:33:51 +03:00
DosX
3317974adb Update detection rules and metadata for PE protectors
Added reference links to AZProtect and Alienyze detection scripts, updated Alienyze script filename, and changed UPX Protector type from 'tool' to 'protector' for consistency.
2025-08-21 13:31:55 +03:00
DosX
8369ed0303 dbs_min update 2025-08-20 23:49:43 +03:00
DosX
7807d26d8b Add 'hydrated' (.NET Native) to unusual section names list
Included 'hydrated' in the standartSectionsWithUnusualValuesDict array to improve detection of packers and cryptors in .NET and native applications.
2025-08-20 23:47:39 +03:00
DosX
d6a7b7e6a3 Add SkiaSharp detection rule for PE files
Introduces a new rule to identify SkiaSharp libraries in PE files, distinguishing between Mono-based and native implementations.
2025-08-20 23:29:32 +03:00
DosX
0e089b3f30 Fix export name check in obfuscation scan
Adds a null check for export function names before verifying if they are ASCII strings in scanForObfuscations_Native(). Prevents potential errors when export names are missing.
2025-08-20 23:16:20 +03:00
DosX
73eab2a82d Add detection rule for NSubstitute library
Introduces a new rule file to identify the NSubstitute .NET library in PE files. The rule checks for the presence of the 'NSubstitute' object to determine detection.
2025-08-20 23:14:11 +03:00
DosX
8206c724d0 Add MimeKit detection rule for Detect It Easy
Introduces a new detection rule file for the MimeKit library in Detect It Easy. The rule checks for the presence of MimeKit and MimeKitLite .NET objects to identify the library and its variant.
2025-08-20 23:11:34 +03:00
DosX
0b400f489c Improve obfuscation detection for .NET names
Excludes 64-character hexadecimal strings from being flagged as obfuscated, as these may be compiler-generated. This reduces false positives in the obfuscation heuristic.
2025-08-20 23:05:35 +03:00
DosX
d0f7f81209 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-08-20 21:25:00 +03:00
DosX
080b7f9934 Add detection rules for six .NET libraries
Introduces Detect It Easy rule files for AngleSharp, CsvHelper, ImageSharp, LiteDB, MailKit, and Spectre.Console. These rules enable identification of the respective libraries in PE files by checking for their .NET objects.
2025-08-20 21:24:21 +03:00
Benjamin Funke
4441cccc2f add new signatures 2025-08-20 20:21:43 +02:00
DosX
46cc2bff44 Add detection rules for popular .NET libraries
Introduced Detect It Easy rule files for BenchmarkDotNet, Dapper, Humanizer, MediatR, NUnit, Polly, and Swashbuckle.AspNetCore. These rules enable identification of assemblies containing these libraries by checking for their respective .NET objects.
2025-08-20 20:29:58 +03:00
DosX
8b06b7422b Add detection rule for ManagedCuda library
Introduces a new Detect It Easy rule file to identify the ManagedCuda .NET library in PE files. The rule checks for the presence of the 'ManagedCuda' object and sets detection accordingly.
2025-08-20 20:15:18 +03:00
DosX
5a7410bafd dbs_min update 2025-08-20 16:36:59 +03:00
DosX
0089ed6617 Improve import section analysis and string checks
Refactored import section analysis in scanForObfuscations_Native to better detect strange imports and use isAsciiString for validation. Updated warning message and clarified opcode pattern comments. Replaced isAnsiString with isAsciiString for section name checks.
2025-08-20 16:36:46 +03:00
DosX
19b50f1c15 Detect non-ASCII export names in PE analysis
Added logic to identify and flag PE files with export function names containing non-ASCII characters. Also renamed isAnsiString to isAsciiString for clarity and updated related references and comments.
2025-08-20 13:09:04 +03:00
DosX
5c623edd94 Add heuristic for excessive .NET PE sections
Introduces a check in scanForObfuscations_NET to flag .NET PE files with more than 10 sections as potentially obfuscated. This enhances detection of suspiciously structured .NET binaries.
2025-08-20 07:44:52 +03:00
DosX
79b5c39367 Detect PE files with excessive section count
Adds a heuristic to flag PE files containing more than 20 sections as potentially suspicious by updating the scanForObfuscations_Native function.
2025-08-20 07:40:44 +03:00
DosX
8c2f44e0df dbs_min update 2025-08-20 06:34:15 +03:00
DosX
4b866bc6f9 Fix dongle detection loops in PE scripts
Replaced assignment-in-condition while loops with explicit infinite loops and break statements in Key-Lok II and Rockey4 dongle detection scripts.
2025-08-20 06:33:59 +03:00
DosX
c488fae4a6 Fix assignment of currentSectionIndex in scan function
Replaces incorrect assignment of currentSectionIndex with itself instead of sectionIndex in scanForPackersAndCryptors_NET_and_Native. This change ensures the correct section index is used for further processing.
2025-08-19 19:38:12 +03:00
hypn0chka
d28d403dde Amiga Hunk detections 2025-08-19 17:59:21 +05:00
DosX
43aa1ee5e8 Update Sepanta.1.sg 2025-08-18 22:47:34 +03:00
DosX
84815b4b7c Sepanta updated (new CHECKS!!!!!!) 2025-08-18 22:45:45 +03:00
DosX
b5601fbd03 Update Sepanta.1.sg 2025-08-18 22:28:38 +03:00
DosX
8b730eb90d dbs_min update 2025-08-18 19:01:42 +03:00
DosX
06dae30a7c Refactor section index variables and add EP zero padding check
Renamed section index variables for clarity and consistency throughout the heuristic analysis functions. Added logic to detect zero padding at the beginning of the entry point section in scanForObfuscations_Native().
2025-08-18 18:59:19 +03:00
DosX
b63ec0747a dbs_min update 2025-08-18 13:54:38 +03:00
DosX
72f11f87e6 Refactor PE detection scripts for consistency
Standardized code style and improved logic in multiple PE detection scripts. Changes include removing unnecessary parentheses, adding missing semicolons, refining loop conditions, and updating version strings for clarity and consistency.
2025-08-18 13:54:17 +03:00
DosX
3b5a8d5faa Added extra and unnecessary check
Why is it needed? Nobody knows.
This is idea of @hypn0chka
2025-08-18 13:07:55 +03:00
DosX
88ccd6cd1b Refactor XerinFuscator detection logic
Simplified the conditional checks for XerinFuscator detection by moving '.Xerin' section name presence to the second detection branch. This improves clarity and ensures legacy detection is triggered appropriately.
2025-08-18 13:03:47 +03:00
DosX
0a87972416 Update ByteGuard detection logic
Refines the detection conditions for ByteGuard by checking for specific section names and overlay patterns, improving accuracy and reducing false positives.
2025-08-18 12:59:28 +03:00
DosX
89818e590d Improve XerinFuscator detection logic
Enhanced the detection condition to check for multiple sections and ensure the first section is not '.text' when identifying XerinFuscator obfuscation. This increases accuracy for certain .NET binaries.
2025-08-18 12:51:08 +03:00
DosX
d543b6d5f4 Update __GenericHeuristicAnalysis_By_DosX.7.sg 2025-08-18 12:30:33 +03:00
DosX
05f3af7ffd Add detection for Legacy CrytpoObfuscator
Enhanced the detect() function to identify Legacy CrytpoObfuscator by checking for the presence of the 'CrytpoObfuscator' .NET object. This improves detection coverage for obfuscation variants.
2025-08-18 12:30:31 +03:00
DosX
fdd8181215 Remove 'v' prefix from version strings in PE detectors
Standardized version string formatting by removing the 'v' prefix across multiple PE detection scripts. This improves consistency in version reporting for BattleshipCrypter, Denuvo, Fish_PE, Obsidium, OneVM, PEUnion, Perl, VbsToExe, WF.Guna.UI2, and _PE modules.
2025-08-18 11:19:51 +03:00
DosX
d9ce1ac7a8 dbs_min update 2025-08-17 23:10:15 +03:00
DosX
6461548b0d Update author info and signature checks in bin.TOT.1.sg
Revised author and contact details, added sample credits, and updated signature check conditions to use '!== -1' for more accurate detection logic.
2025-08-17 23:10:04 +03:00
DosX
9f93f0da05 Add XerinFuscator to packer detection list
Included 'XerinFuscator' in the packers and cryptors array for improved detection in .NET and native applications.
2025-08-17 22:58:16 +03:00
DosX
62dd574246 Update PE protector detection logic and relocate Soft Defender
Improved detection logic for ByteGuard and XerinFuscator by refining section and string checks. Relocated Soft_Defender.2.sg to db_extra and streamlined its detection flow.
2025-08-17 22:55:36 +03:00
DosX
02d6b6cdde Limit overlay string search to 4096 bytes
Changed the string search in the overlay detection logic to scan only the first 4096 bytes instead of the entire overlay size. This may improve performance and reduce false positives.
2025-08-17 22:38:19 +03:00
DosX
513a5229a6 dbs_min update 2025-08-17 22:33:18 +03:00
DosX
498b2b2e98 Improve .NET metadata and import checks in heuristics
Added detection for corrupted .NET metadata when no imports are present and refined native obfuscation checks to require imports with .NET metadata. Also added comments for .NET runtime attach function detection.
2025-08-17 22:33:03 +03:00
DosX
b125f00941 Update PE protector rules and reorganize files
Updated detection rule metadata and comments for several PE protectors. Fixed version string formatting in Instalit.1.sg. Moved Anskya_Binder.2.sg, BitShape_PE_Crypt.2.sg, and MZ-Crypt.2.sg to db_extra/PE, and normalized file permissions and formatting.
2025-08-17 22:26:20 +03:00
DosX
60edc214d2 Refactor version detection and switch statements in PE scripts
Standardized return values to boolean (true/false) in version detection functions and replaced multi-line switch cases with single-line format for brevity across several PE database scripts. Also improved string initialization and minor logic consistency.
2025-08-17 22:12:52 +03:00
DosX
61418ccbdf Refactor detection logic and update Code-Lock path
Refactored detection logic in several PE and Binary rule files for improved readability and consistency, including switch-case formatting and loop conditions. Updated cab_resource to return boolean values. Renamed and moved Code-Lock.2.sg from db_extra/PE to db/PE, adding a reference URL.
2025-08-17 22:08:20 +03:00
DosX
ca79eec617 Add new packer signatures and .NET runtime detection
Added detection for 'ExE Pack' packer signatures and implemented logic to identify .NET runtime attach functions by checking for _CorExeMain and _CorDllMain. This enhances heuristic analysis for both packers and .NET applications.
2025-08-17 22:04:58 +03:00
DosX
0599caabc8 Remove Alex Protector detection rule 2025-08-17 22:04:44 +03:00
DosX
222563cda0 Refactor VDI option switch and rename Alienyze file
Condensed the switch statement in format.VDI.1.sg for improved readability. Renamed Alienyze.1.sg to Alienyze.5.sg and updated file permissions.
2025-08-17 22:04:25 +03:00
Benjamin Funke
fe560df180 add VLK signature
I need to do more research about this format.

Also need to look for an proper reference.
2025-08-17 18:24:27 +02:00
Benjamin Funke
874077cec0 add PEM signature 2025-08-17 16:00:50 +02:00
hypn0chka
4fe90151ca Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-08-17 17:17:14 +05:00
hypn0chka
1eb284f042 new & update 2025-08-17 17:17:11 +05:00
Benjamin Funke
8dd551be7f use . for STK10 in heuristic extension detection
same as a5583fd
2025-08-17 11:55:48 +02:00
Benjamin Funke
a5583fdbd0 use . to better distgunish STK's versions in signature 2025-08-17 11:52:30 +02:00
hypn0chka
f8efd611f7 new COM sigs 2025-08-17 14:19:24 +05:00
DosX
fd0d1a2fff dbs_min update 2025-08-16 11:24:43 +03:00
Benjamin Funke
c045bbc44f add missing semicolon to LCA signature 2025-08-14 22:12:35 +02:00
Benjamin Funke
5e152b8dd9 add missing semicolon to LGX signature 2025-08-14 22:08:51 +02:00
Benjamin Funke
f7fd53f14a move OBC to bin and add missing semicolon 2025-08-14 22:05:09 +02:00
Benjamin Funke
9da733e14d remove sName from FFN signature
Its enough to be defined in the init section
2025-08-14 22:04:50 +02:00
Benjamin Funke
d243e8e4dc add missing semicolon to CURE signature 2025-08-14 22:04:03 +02:00
DosX
ccc988c13e Update BackupMii version detection to v1.0
Changed the detected version string from 'v1' to 'v1.0' in bin.BackupMii.1.sg for more accurate version reporting.
2025-08-14 22:52:51 +03:00
DosX
24a438b85a Add missing semicolons in binary detection scripts
Added missing semicolons to improve code consistency and prevent potential issues in archive.PAK.1.sg and text.FST.1.sg detection functions.
2025-08-14 22:52:46 +03:00
Benjamin Funke
a6ec563863 add BackupMii signature 2025-08-14 19:14:50 +02:00
DosX
79f9fc22c5 dbs_min update 2025-08-14 19:13:12 +03:00
DosX
68cc2d5e9c Clarify detection logic comments in .sg files
Added comments to indicate that bDetected is always set to true in detect() functions for Watcom and lipo scripts. This improves code clarity for future maintenance.
2025-08-14 12:19:38 +03:00
DosX
449124c2f8 Fix function call for entry point signature detection
Replaces incorrect call to PE.getEPSignature with PE.getEntryPointSignature in Krypton.2.sg to ensure proper version detection logic.
2025-08-14 12:18:15 +03:00
DosX
91809face1 Improve Themida detection logic for .NET
Refactored detection to set bDetected if sVersion or sOptions are present. Added check for _CorExeMain to identify DotNET and set sOptions accordingly.
2025-08-14 12:16:08 +03:00
DosX
5d3f778d71 Add new signature for Themida and Safengine Shielden
Added the pattern 'E8........53' to improve detection of packers and cryptors, specifically for Themida (x32) and Safengine Shielden samples.
2025-08-14 01:22:21 +03:00
DosX
9054ae8af0 Update detection logic for Autorun Pro Enterprise
Changed the conditional in the detect function to require both .rsrc section and CODE section name presence, improving accuracy of detection for Autorun Pro Enterprise installers.
2025-08-13 23:51:23 +03:00
horsicq
f9366f60f7 Merge branch 'master' of github.com:horsicq/Detect-It-Easy 2025-08-13 22:28:25 +02:00
horsicq
d9dbeb62c5 Add new file(s): 2025-08-13 2025-08-13 20:42:17 +02:00
DosX
f47cfe5b85 dbs_min update 2025-08-13 19:41:12 +03:00
DosX
5083617491 Add environment warning and refactor linker check
Added a warning message when the script is run outside the expected environment. Refactored the Turbo Linker check to use _isResultPresent instead of _getNumberOfResults for improved clarity.
2025-08-13 19:40:15 +03:00
DosX
1e6bf34562 Improve section and import checks in heuristic analysis
Expanded section name checks to include '.bss', 'BSS', and '.tls' for unusual values. Refined duplicate section offset detection to exclude standard sections. Added a condition to skip recurring import checks for Delphi binaries.
2025-08-13 19:35:23 +03:00
DosX
92922b7b6f dbs_min update 2025-08-13 15:13:26 +03:00
DosX
b3016ce7e3 Refactor variable names for consistency
Renamed several dictionary variables to use 'Dict' suffix instead of 'Dictionary' for consistency and clarity. Also added explicit cleanup of these variables after use. No functional changes to logic.
2025-08-13 15:12:59 +03:00
DosX
37756e0e1b Update __GenericHeuristicAnalysis_By_DosX.7.sg 2025-08-13 14:53:58 +03:00
DosX
b360c9cb0a Improve section analysis and reporting in PE heuristic
Enhanced detection of compressed sections, sections with wrong offset or size, and sections with duplicate offsets in PE files. Updated output formatting to consistently use section numbers with '#' for clarity. Removed redundant and less accurate checks for sections without virtual address.
2025-08-13 14:52:09 +03:00
DosX
88e6a88e10 Update detection rules and relocate INCrypter script
Modified Paquet.1.sg to update archive type and fix formatting. Expanded sql-server.4.sg detection to include SQLite. Moved INCrypter.2.sg from db/PE to db_extra/PE and changed file permissions.
2025-08-13 14:52:00 +03:00
DosX
55e57da1f1 Refactor detection scripts and relocate NOS/BulletProofSoft rules
Removed redundant bDetected assignments and improved detection logic in ASProtect.2.sg and Instalit.1.sg. Added clarifying comment in BattlEye.5.sg. Relocated BulletProofSoft_installer.1.sg, NOS_Installer.1.sg, and NOS_Packer.2.sg to db_extra/PE, and removed or adjusted sOptions assignments for Netopsystems.
2025-08-12 13:31:44 +03:00
DosX
1776ad1b0f Detect sections with zero file offset in PE analysis
Enhanced the scanForPackersAndCryptors_NET_and_Native function to identify and report PE sections with a file offset of 0x00, indicating a potentially incorrect section offset. This provides additional heuristics for analyzing suspicious or malformed PE files.
2025-08-11 19:24:38 +03:00
DosX
523e8b696a Refactor resource section detection logic
Simplified variable usage by assigning PE.section[".rsrc"] to a local variable and improved readability. Also fixed a logic error by comparing FileOffset to VirtualSize instead of FileSize to VirtualSize.
2025-08-11 19:21:38 +03:00
DosX
c25d6a86fb Enhance Costura.Fody detection logic
Added a check for the presence of a .NET global static constructor before confirming detection of Costura.Fody. This improves accuracy by ensuring both the global cctor and specific object/string are present.
2025-08-11 19:21:21 +03:00
DosX
1cfa799331 Update 7-Zip detection to use regex match
Replaces the direct '7z.dll' check with a regular expression match using PE.isLibraryPresentExp(/^7z/), allowing detection of any library starting with '7z'.
2025-08-10 22:26:04 +03:00
DosX
264fa39dee dbs_min update 2025-08-10 21:50:26 +03:00
DosX
aeea85cf54 Improve HTML detection regex and update language code
Enhanced the regular expression for HTML detection to be more robust and case-insensitive. Also updated the language code from 'HTML' to 'HTM' for consistency.
2025-08-10 00:31:29 +03:00
DosX
275324ff71 Refactor shellcode detection scripts for clarity
Reformatted long string assignments in shellcode.pe_to_shellcode.1.sg for readability and grouped related variable declarations. Simplified and cleaned up the detection logic in srdi-monoxgas.1.sg by removing redundant checks and streamlining the detection flow for both 32-bit and 64-bit sRDI shellcode.
2025-08-10 00:31:22 +03:00
DosX
8726afb27a Refactor TIFF image detection for readability
Simplified and condensed switch statements and loop logic in the TIFF image detection script. The changes improve code readability and maintainability by reducing nesting and removing redundant checks.
2025-08-10 00:31:11 +03:00
DosX
55d3e9dc24 Refactor and clean up binary detection scripts
Refactored several binary detection scripts for consistency, improved code style, and reduced redundancy. Changes include switch statement simplifications, improved variable naming, removal of unnecessary code, and minor bug fixes. Some detection rules now use more concise or accurate format names, and verbose output handling is more consistent.
2025-08-10 00:31:04 +03:00
DosX
d4d4b42847 Update VTF detection rule for improved accuracy
Enhanced the detection logic in bin.VTF.1.sg to match the VTF signature with additional bytes and updated the format name to 'Valve Texture'. Added a reference link for documentation.
2025-08-09 23:51:11 +03:00
DosX
fe62629789 Enhance version and copyright extraction logic
Updated the detect() function to extract version information using a new signature search. Now both version and copyright year are concatenated if found, improving metadata detection.
2025-08-09 23:42:26 +03:00
DosX
7ca829eae7 Update bin.TOT.1.sg 2025-08-09 23:31:03 +03:00
DosX
a638656790 Replace text.TOT.1.sg with bin.TOT.1.sg detection rule
Removed the text-based TOT detection rule and added a new binary-based TOT detection rule file. The new rule includes enhanced detection logic and version extraction.
2025-08-09 23:30:19 +03:00
DosX
cd47dc5b23 Rename and update DatPack detection rule
Renamed the detection rule file from archive.PCK.1.sg to archive.DatPack.1.sg and updated the init function to reflect the new name. This improves clarity and consistency in detection rule naming.
2025-08-09 23:11:51 +03:00
Benjamin Funke
01bbcc68a1 define better name for CCA signature 2025-08-09 21:57:51 +02:00
Benjamin Funke
c3042bfdd7 add missing sName to PCK signature 2025-08-09 21:42:44 +02:00
Benjamin Funke
472c2e1f4d add PCK signatures
Found while researching ADI 4's minigames from Coktel Vision
2025-08-09 21:37:57 +02:00
DosX
cdafcb7c08 Update changelog and improve WAV detection scripts
Revised changelog entries for clarity and accuracy, including contributor names and bug fix notes. Cleaned up and refactored audio.RIFF-IMA.1.sg and audio.WAV.1.sg scripts for better readability and maintainability, including improved comments, formatting, and minor logic adjustments.
2025-08-09 17:58:42 +03:00
DosX
4aee86d63f Refactor and add references to Nintendo audio detection rules
Refactored detection logic in BCSAR, RIFF-IMA, and STRM rule files for improved readability and maintainability. Added relevant documentation links to each file for easier reference. No functional changes to the WAV rule file; only whitespace and indentation adjustments.
2025-08-09 16:27:12 +03:00
DosX
f29a8c83cb dbs_min update 2025-08-09 16:21:49 +03:00
DosX
d27c3df749 Refactor string emptiness checks to truthy checks
Replaces explicit string emptiness comparisons (e.g., `if (x != "")`) with truthy checks (e.g., `if (x)`) throughout detection scripts. This improves code readability and consistency across multiple file format detection modules.
2025-08-09 16:21:28 +03:00
DosX
ea80e977ad Refactor Java class file detection logic
Simplified and compacted the switch statement for Java version detection, improved variable declarations, and updated naming conventions for better readability and maintainability.
2025-08-09 16:20:31 +03:00
Kaens
55053a149b Create audio.STRM.2.sg
Abylight's 3DS STRM added, info-ed & ripper-ready
2025-08-08 16:59:13 +02:00
Kaens
66576a9256 Update audio.STRM.1.sg
NDS STRM bugfixed, another tightening check added
2025-08-08 16:20:35 +02:00
Kaens
5722aff906 Create audio.RIFF-IMA.1.sg
Nintendo DS RIFF....IMA added, info-ed & ripper-ready
2025-08-08 12:34:04 +02:00
Kaens
f565a3a6eb Update audio.WAV.1.sg
Renamed properly, chunked more safely, info-ed a lot more and correctly, too
2025-08-08 12:31:33 +02:00
horsicq
05c479235d Add new file(s): 2025-08-07 2025-08-07 21:46:52 +02:00
Kaens
212e41f93d *.BCSAR +STRM
- Nintendo .BCSAR tightened, info fixed
 - Nintendo DS .STRM added, info-ed, ripper-ready
2025-08-06 16:52:52 +02:00
horsicq
49675665f3 Update file(s): 2025-08-05 2025-08-05 19:22:46 +02:00
Benjamin Funke
0db1881603 add reference to DESKTOP signature 2025-08-03 10:10:05 +02:00
Benjamin Funke
4ba6b3aa75 add desktop signature 2025-08-02 16:50:33 +02:00
Benjamin Funke
e8d40df4e3 add VM2 signature 2025-08-01 11:27:21 +02:00
DosX
f581541e4e
Update changelog.txt 2025-07-31 17:47:18 +03:00
DosX
155be1a71b
Update changelog.txt 2025-07-31 17:42:54 +03:00
Benjamin Funke
93c9994084
mention new Buffersize option in 3.11 changelog 2025-07-30 17:35:46 +02:00
Benjamin Funke
7ba775808e add CSO signature 2025-07-30 09:11:17 +02:00
Benjamin Funke
34010266f5 add new PAK signature 2025-07-30 08:34:53 +02:00
Benjamin Funke
f135aa4e05 mention new v3.11 change in changelog 2025-07-29 12:43:51 +02:00
horsicq
cac376d107 Merge branch 'master' of github.com:horsicq/Detect-It-Easy 2025-07-28 18:29:27 +02:00
horsicq
2c9ae880a4 Update file(s): 2025-07-28 2025-07-28 18:19:37 +02:00
Benjamin Funke
2119a101ce add 3.11 to Changelog 2025-07-28 17:09:00 +02:00
Benjamin Funke
2600e6c690 add missing semicolon to sOptions in AS signature 2025-07-28 12:37:48 +02:00
Benjamin Funke
73b3e8bb40 Playstation > PlayStation 2025-07-28 12:36:31 +02:00
Benjamin Funke
0380251fc9 mention PS5 on PUP signature 2025-07-28 11:15:00 +02:00
Benjamin Funke
a5e064f91e add PS Vita to PUP 2025-07-28 11:05:12 +02:00
Benjamin Funke
5c34347d20 add new PlayStation signatures 2025-07-28 11:02:10 +02:00
Benjamin Funke
05925a1419 add FST signature 2025-07-28 10:29:22 +02:00
Benjamin Funke
d986bcd42f use sOptions for AS signature 2025-07-27 21:53:03 +02:00
Benjamin Funke
8d5060f202 add CURE signature 2025-07-27 21:47:58 +02:00
Benjamin Funke
c0d57d6e9b use .1 extension for VCF signature 2025-07-27 21:44:50 +02:00
Benjamin Funke
23349de73d add AS signature 2025-07-27 21:44:32 +02:00
Benjamin Funke
f6b7955bea add WIP TOT script
This only supports so far one of the earliest Coktel Vision games script.

Its the predecessor of the OBC script system.

3C 3E 01 27 00 00 = junk maybe we can somehow skip this? Without this "junk" it wont get detected at all.
2025-07-27 13:01:50 +02:00
Benjamin Funke
9ca3dd3b0e add generic PAK archive signature 2025-07-27 12:46:24 +02:00
DosX
bb5155d519 Move and update example detection script
Relocated example.0.sg from db_custom/PE/ to db_custom/ and expanded it with additional comments and tips for writing detection scripts.
2025-07-27 01:35:00 +03:00
DosX
d8493dea97 Rename font binary files with .1.sg suffix
Renamed font binary files in db/Binary/ by appending .1.sg to their filenames. No content changes were made to the files.
2025-07-27 01:34:41 +03:00
DosX
d9e206140b Rename getEPSignature to getEntryPointSignature
Refactored all usages of PE.getEPSignature to PE.getEntryPointSignature for clarity and consistency. Updated function definition and all references in PE detection scripts.
2025-07-27 01:11:42 +03:00
DosX
38e3239c2c Add function to locate PE section by pattern
Introduced PE.isSectionPresentExp, which searches for the first section matching a given pattern and returns its index, name, and captured subpatterns. This enhances the ability to query PE sections dynamically.
2025-07-27 01:08:05 +03:00
DosX
8c1dba3325 dbs_min update 2025-07-27 01:00:58 +03:00
DosX
38cc47f07e Refactor and improve code style and consistency
Standardized semicolon usage, improved code formatting, and enhanced readability across multiple files. Replaced direct property access with a function call in Alienyze.1.sg, and made minor logic and style improvements in chunkparsers and read. These changes improve maintainability and code quality without altering core functionality.
2025-07-27 00:57:51 +03:00
DosX
2ce1a6a5cd Add new packer signatures to detection list
Added signatures for AtomPePacker and DotFix NiceProtect to the packer and cryptor detection array to improve heuristic analysis coverage.
2025-07-27 00:17:11 +03:00
DosX
aeb3845d17 Fix syntax and logic issues in PE signature scripts
This commit corrects missing semicolons, simplifies conditional logic, and removes redundant or unreachable code in several PE signature detection scripts. These changes improve code consistency and maintainability across CodeCrypt, CoffeeCup_SFX, DNGuard, Eazfuscator, Instalit, Windows_Installer, and Zip_SFX signature files.
2025-07-27 00:16:59 +03:00
DosX
f183ca60e7 dbs_min update 2025-07-26 23:21:14 +03:00
DosX
93e59cd56e Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-07-26 18:54:16 +03:00
DosX
f0100f988b Add new packer signatures and RAT injector detection
Added signatures for TSULoader and RPCrypt packers in the packer detection array. Introduced detection logic for a new RAT Injector based on the presence of the 'avfucker' .NET object.
2025-07-26 18:15:55 +03:00
Benjamin Funke
f1becdd74b mention OBC is compiled as Bytecode with sOptions 2025-07-26 16:59:09 +02:00
DosX
31ea21cff5 Add Huan and Morphnah packer signatures
Added detection entries for 'Huan' and 'Morphnah' packers in the scanForPackersAndCryptors_NET_and_Native function to improve heuristic analysis coverage.
2025-07-26 14:52:19 +03:00
DosX
2692932008 Refactor and relocate several PE detection scripts
Refactored detection logic for improved readability and conciseness in multiple PE rule files. Updated naming and version strings for accuracy. Moved ADS_Self_Extractor.1.sg, DataAnubis.1.sg, and UPXcrypter.2.sg from db/PE to db_extra/PE, adjusting file modes as needed. Minor code style and logic improvements applied throughout.
2025-07-26 14:52:11 +03:00
DosX
4e951a2c0b Improve SPRX binary detection logic
Enhanced the detect() function to check for a more specific signature pattern and verify the presence of an ELF header, increasing accuracy in identifying SPRX binaries.
2025-07-26 14:34:40 +03:00
Benjamin Funke
a4327c1b87 add better check for SPRX signature 2025-07-26 12:42:21 +02:00
DosX
763025b7de Enhance .NET license check detection logic
Added detection for common .NET license checking methods and improved the logic for combining detected licensing options. Now, if both DotNET methods and Provider attribute are present, both are reflected in the options string.
2025-07-26 13:32:28 +03:00
DosX
ae8ec5903a Add new icon files and rename library icon
Added archive.png, converter.png, malware, virus.png, and package.png to the db/_icons directory. Renamed library.png to library, module.png for improved clarity.
2025-07-26 13:11:05 +03:00
DosX
62432a2608 Add icon images for various detection types
Added multiple PNG icon files to db/_icons/ representing different file types and categories such as compiler, linker, library, certificate, and more. These icons can be used for UI representation or categorization within the application.
2025-07-26 01:49:24 +03:00
DosX
45f57adc50 Refactor PE detection scripts for readability
Condensed switch cases in AHTeam_EP_Protector.2.sg for improved readability, simplified nested conditions in ANDpakk.2.sg, and standardized the init call in AutorunProEnterprise.1.sg to use lowercase 'installer'. These changes enhance code clarity and maintain consistency across detection scripts.
2025-07-26 01:48:57 +03:00
DosX
c587e42faa dbs_min update 2025-07-25 19:31:35 +03:00
DosX
b912ec65b7 Enhance RAT detection heuristics in .NET analysis
Improved detection logic for NjRAT and added new detection for AsyncRAT based on assembly/module names and object presence. Also expanded generic RAT detection to include additional signature and object checks for more accurate identification.
2025-07-25 19:30:06 +03:00
DosX
09abdf01c4 Update audio.1.sg 2025-07-25 18:52:19 +03:00
Benjamin Funke
e07232168d add SPRX signature 2025-07-25 17:33:25 +02:00
DosX
02cac3f178 dbs_min update 2025-07-25 17:53:20 +03:00
DosX
40200c6f67 Refactor detection logic in audio and PE scripts
Simplified return statement in isSoundTrackerPro, added a check for Net global cctor in ByteGuard detection, and condensed switch cases in ORiEN detection for improved readability and maintainability.

@hypn0chka, crazy code-style! But if I were you I wouldn't use 'if' unless it's required.
2025-07-25 15:03:06 +03:00
hypn0chka
338c317b0f fix false detect 2025-07-25 16:09:29 +05:00
DosX
252e7fdec3 Improve Denuvo detection for Activation.dll variants
Updated detection logic in Denuvo.2.sg and heuristic analysis to check for both Core/Activation.dll and Core/Activation64.dll, ensuring more accurate identification of Denuvo licensing systems.
2025-07-24 17:41:35 +03:00
DosX
1f9f70b097 Move library presence checks outside else block in Denuvo.2.sg
Relocated checks for 'uplay_r1_loader64.dll' and 'Core/Activation64.dll' to run after the main detection logic, ensuring these checks are always performed regardless of earlier conditions.
2025-07-24 17:39:05 +03:00
DosX
ffcc95898f Add new signatures for ILProtector, ASPack, and Denuvo DRM
Added detection for ILProtector runtime libraries and a new ASPack signature. Also introduced Denuvo DRM detection by checking for the Activation64 library in .NET and native licensing systems analysis.
2025-07-24 17:34:15 +03:00
DosX
0ed5fe57d1 Improve Opus Audio library detection logic
Updated the detection function to check for export functions matching 'opus_(de|en)code*' in addition to library presence. Also updated the library name to 'Opus Audio' for clarity.
2025-07-24 17:33:20 +03:00
DosX
7394404944 Refactor switch statements to single-line cases
Simplified switch statements in the detect() function by converting multi-line case blocks to single-line case statements for improved readability and conciseness.
2025-07-24 17:13:27 +03:00
DosX
a9da920e0a Update format string and add version detection
Simplified the format string in the init function and added assignment of sVersion in the detect function to specify 'Windows Registry Script' when detected.
2025-07-24 17:06:53 +03:00
Benjamin Funke
af3bb78d3b add RGS script 2025-07-24 16:04:30 +02:00
DosX
d2c26b10c2 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-07-24 17:03:18 +03:00
DosX
a8b1053350 Add script to generate and publish dbs_min
Introduces dbs_min_generate_and_publish.cmd, which runs the dbs_min_generate.cmd script, stages changes in the dbs_min directory, commits with a standard message, and pushes to the repository.
2025-07-24 17:03:06 +03:00
Benjamin Funke
f9689e15ee add TLB signature 2025-07-24 15:59:41 +02:00
DosX
dfda510cb0 dbs_min update 2025-07-24 16:57:49 +03:00
Benjamin Funke
bef5e6eb7d add Logox signature 2025-07-24 15:55:03 +02:00
Benjamin Funke
113e6f7207 use .1 file extension for SOU/TUN 2025-07-24 15:40:14 +02:00
DosX
64af2c9297 Fix missing semicolons and formatting in bytecodeparsers
Added missing semicolons and improved code formatting for consistency and readability in the db/bytecodeparsers file. No functional changes were made.
2025-07-24 12:51:21 +03:00
DosX
84555252b7 Add missing semicolons and minor code cleanups
Added missing semicolons throughout db/read and improved code consistency. Refactored variable declarations and switch statements in database.SQLite.1.sg for clarity. Removed unnecessary comments and improved formatting in audio.FSB.1.sg.
2025-07-24 12:45:05 +03:00
DosX
13b88a21cb Standardize version string casing and minor code cleanups
Updated various detection scripts to use consistent uppercase 'X' in version strings (e.g., '1.1x' to '1.1X') for standardization. Minor formatting and code cleanups were applied, including compacting switch cases, fixing indentation, and correcting return statements. Also, moved and changed permissions for CodeSafe.2.sg to db_extra/PE/CodeSafe.2.sg.
2025-07-24 12:26:22 +03:00
Benjamin Funke
137ffe6547 implement IMG signature 2025-07-24 09:38:39 +02:00
Benjamin Funke
f2af0d30b2 add STK2.0 support 2025-07-24 09:00:36 +02:00
DosX
3e066bd256 Clean up comments and refactor detection scripts
Removed outdated or redundant comments referencing Exeinfo PE detection from several detection rule files. Improved code clarity in UnoPiX.2.sg by simplifying section access and variable usage. Moved Wind_of_Crypt.2.sg from db/PE to db_extra/PE without content changes.
2025-07-24 02:01:02 +03:00
DosX
1cf3fe1b50 Refactor string emptiness checks in PE detection scripts
Replaces checks like `sVar == ""` with more idiomatic JavaScript falsy checks (`!sVar`) across multiple PE detection scripts for improved readability and consistency. Also splits variable declarations for clarity and updates a section name check to use falsy logic.
2025-07-24 01:55:44 +03:00
DosX
13efa48664 Standardize version suffixes to uppercase 'X' in PE rules
Updated various PE detection scripts to use uppercase 'X' in version suffixes (e.g., '1.3X' instead of '1.3x') for consistency. Also improved Themida detection logic, added .NET exclusion to WinRAR, removed Winlicense rule (merged with Themida), and renamed Xojo.3.sg to Xojo.4.sg with minor metadata changes.
2025-07-24 01:53:38 +03:00
DosX
8fa2581b4e Standardize version formatting to use uppercase 'X'
Updated various detection rule files to consistently use uppercase 'X' in version strings (e.g., '1.x' to '1.X', '2.xx' to '2.XX'). This improves clarity and maintains uniformity across the database.
2025-07-24 01:48:05 +03:00
DosX
1a1aa69ba3 Refactor PE entry point access to use getEntryPointOffset
Replaced direct usage of PE.nEP with PE.getEntryPointOffset() across multiple PE detection scripts for consistency and improved encapsulation. Also made minor code cleanups and updated author comments in some files.
2025-07-24 01:44:40 +03:00
DosX
e0d0971c5e Refactor PE.isNET() to PE.isNet() in detection scripts
Replaces all occurrences of the PE.isNET() method with PE.isNet() across multiple PE detection scripts for consistency and to match updated API naming conventions.
2025-07-24 01:34:32 +03:00
DosX
85f3c139b5 Refactor PE detection scripts to standardize return values
Replaces 'return null' with 'return' in multiple PE detection scripts for consistency. Also updates NetShieldProtector's display name to 'NetShield' and adds .NET support checks to Kotlin and LCC-Win32 scripts. These changes improve code clarity and maintainability.
2025-07-24 01:33:48 +03:00
DosX
24f8919cd2 Add .NET detection guards and clean up PE rules
Added checks to skip detection for .NET binaries in several PE rule scripts (Denuvo, ENIGMA, EXECryptor, FreeBasic, Intel_C, IntelliProtector). Cleaned up code formatting and logic in multiple scripts. Removed Astral-PE rule, added a reference link to AMD_PowerXpress, and moved UPX_shit.2.sg to db_extra.
2025-07-24 01:29:28 +03:00
DosX
0fa3f0adb2 Refactor and simplify UPX detection logic
Refactored the isPatchedUPX function for clarity by renaming variables and consolidating detection conditions. Simplified getUPXOptions and getUPXVersion by using more concise checks. Improved detect function by removing redundant code and adding an early return for .NET binaries.
2025-07-24 01:20:50 +03:00
DosX
178beb61b5 Improve detection logic for SecretRabbitCode and Wwise
Enhanced the detection functions for SecretRabbitCode and Wwise Audio Engine libraries to check for additional function presence, increasing reliability in identifying these libraries.
2025-07-24 01:09:38 +03:00
DosX
49e0b15569 Improve detection for AMD PowerXpress and Nvidia Optimus
Enhanced the detect() functions to recognize when the 'Disabled' export functions are present for both AMD PowerXpress and Nvidia Optimus, setting sOptions accordingly. Also renamed AMD_PowerXpressSDK.4.sg to AMD_PowerXpress.4.sg for clarity.
2025-07-24 01:02:40 +03:00
DosX
a91aee9342 Add detection rule for Epic Games Services SDK
Introduces a new Detect It Easy rule file to identify the presence of the Epic Games Services SDK by checking for libraries matching the pattern 'EOSSDK'.
2025-07-24 00:53:42 +03:00
DosX
8c695ff31a Refactor switch statement formatting in PECompact.2.sg
Condensed the switch statement for build number detection into a more compact format, reducing code length and improving readability. No functional changes were made.
2025-07-24 00:53:38 +03:00
DosX
a63228b63d Refactor detection logic in Setup-Specialist and SpicesNet
Simplified conditional logic in Setup-Specialist.1.sg by combining nested if statements. Minor formatting improvements in SpicesNet.2.sg for better readability.
2025-07-24 00:53:24 +03:00
Benjamin Funke
0d42f08e19 use for BIK sName 2025-07-23 19:54:51 +02:00
Benjamin Funke
6a2865ca8e replace sVersion with sName for few signatures 2025-07-23 19:47:43 +02:00
Benjamin Funke
a7d8d05ec8 refactor OBC signature 2025-07-23 19:45:29 +02:00
Benjamin Funke
1fdc598084 use .1 in DCP signature 2025-07-23 19:42:24 +02:00
Benjamin Funke
2e6a866ae7 use .1 in signature name 2025-07-23 19:41:00 +02:00
Benjamin Funke
6f5b14c76b use sName instead of sVersion in EDP signature 2025-07-23 19:39:59 +02:00
Benjamin Funke
41e8e1358a add native XPAT script 2025-07-23 19:37:51 +02:00
DosX
a89e228e9f
Update Direct3D.4.sg 2025-07-23 18:45:29 +03:00
DosX
1257d8d1cf Add detection rule for Nvidia Streamline library
Introduces a new Detect It Easy rule to identify the presence of Nvidia Streamline by checking for 'sl.interposer.dll' in PE files.
2025-07-23 13:19:36 +03:00
DosX
e79219f1ac Refactor Denuvo detection and add anticheat marker check
Removed redundant comments in the platform library detection logic for clarity. Added a new check for export functions matching ANTICHEAT_OBFUSCATE_*_CODEMARKER to enhance Denuvo detection.
2025-07-23 13:05:50 +03:00
DosX
b2dd0c9b12 Improve Vulkan library detection logic
Added an additional check for export functions matching /VULKAN/ to enhance the detection of the Vulkan library in PE files.
2025-07-23 01:57:07 +03:00
DosX
07e45f5b3d Improve Direct3D version detection regex
Updated the regular expression to match both 'd3d' and 'd3dx' library names and added a fallback check for any 'd3d' library presence. This enhances detection accuracy for different Direct3D variants.
2025-07-23 01:57:02 +03:00
DosX
551cf753b6 Refactor Direct3D version detection logic
Simplifies the Direct3D version detection by scanning import and export names for the highest version number, removing redundant helper functions and streamlining the code.
2025-07-23 01:36:36 +03:00
DosX
7978e97df1 Add detection rule for Intel XeSS library
Introduces a new Detect It Easy rule to identify the presence of the Intel XeSS library by checking for 'libxess.dll' in PE files.
2025-07-23 01:36:07 +03:00
DosX
26556e73af Refactor detection logic in MPRESS and Sepanta scripts
Refactored the signature check in MPRESS.2.sg to use a switch statement for clarity and maintainability. Updated Sepanta.1.sg to detect overlays if either '<Sepanta>' or '</Sepanta>' is present, improving detection accuracy.
2025-07-23 01:35:57 +03:00
DosX
c5ec91e424 Refactor and clarify PE detection scripts
Improved version string formatting in Instalit.1.sg, condensed switch-case statements in N-Joy.2.sg, and simplified nested conditionals in NTkrnl_Protector.2.sg for better readability and maintainability.
2025-07-23 01:02:40 +03:00
DosX
bcabe85d1c Update detection rules and move IMPostor_Pack script
Changed netshrink rule type from 'protector' to 'packer' and updated option descriptions to 'Encrypted/Password mode'. Added a blank line in HASP.2.sg for readability. Moved IMPostor_Pack.2.sg from db/PE to db_extra/PE.
2025-07-23 01:01:58 +03:00
DosX
1c68ca678f Refactor detection logic in EXEFog.2.sg and Gentee_Installer.1.sg
Simplified and consolidated conditional checks in both EXEFog.2.sg and Gentee_Installer.1.sg detection scripts. This improves code readability and maintainability by reducing nested blocks and combining related conditions.
2025-07-23 01:01:30 +03:00
DosX
ccd7b8d6c1 Simplify detection logic in Adveractive and DelZip scripts
Refactored the detect() functions in Adveractive.1.sg and DelZip_SFX.2.sg to combine nested if statements into single conditional expressions, improving code readability and maintainability.
2025-07-23 01:01:15 +03:00
DosX
aa61ef73f8 Add Maxtocode detection to .NET obfuscation scan
Added 'MRuntime3.dll' and 'Attick.dll' as indicators for Maxtocode obfuscator in the protectionsRuntime array to improve detection coverage in scanForObfuscations_NET.
2025-07-23 00:40:56 +03:00
DosX
c4036aeaa4 Replace PE.isPEPlus() with PE.is64() in PE scripts
Updated all PE detection scripts to use PE.is64() instead of PE.isPEPlus() for consistency and clarity in 64-bit checks. This change improves code readability and aligns the detection logic across multiple PE protector and packer scripts.
2025-07-23 00:37:09 +03:00
DosX
7da03704d8 dbs_min update 2025-07-22 22:35:29 +03:00
DosX
1fa8a3c1da Add function to match export functions by pattern
Introduced PE.isExportFunctionPresentExp to locate the first export function matching a given pattern, similar to the existing import library pattern matcher. Also updated function declarations to use consistent spacing.
2025-07-22 22:18:36 +03:00
DosX
c4b891da63 Refactor conditional checks in getVersion function
Simplified and standardized conditional expressions in the getVersion function by removing unnecessary parentheses and using direct falsy checks for sVersion. This improves code readability and consistency.
2025-07-22 22:13:49 +03:00
DosX
227d6b7d39 Set version to 'Chromium-based' on WebView2 detection
Assigns 'Chromium-based' to sVersion when either WebView2Loader.dll or msedge_elf.dll is present, clarifying the detected version of Microsoft Edge WebView.
2025-07-22 22:13:27 +03:00
DosX
459e03c797 Enhance Chromium WebView detection logic
Detection now checks for the presence of the 'CPADinfo' section in addition to 'chrome_elf.dll', improving identification accuracy for Chromium WebView libraries.
2025-07-22 22:13:19 +03:00
DosX
d6f4d0ed5a Add Argon2 detection rule for PE files
Introduces a new detection script for identifying Argon2 library presence in PE files by checking for the 'argon2_hash' function. This helps automate detection of Argon2 usage in binaries.
2025-07-22 22:13:13 +03:00
DosX
2781fd45bf Enhance SQLite detection logic
Added detection for SQLite by checking for the 'sqlite3_dbdata_init' export function, allowing identification of SQLite version 3 even if the library name is not present.
2025-07-22 22:13:03 +03:00
DosX
ae38ac281e Update library name in Xerces-CPP.4.sg
Changed the library initialization string from 'Xerces-C++' to 'Xerces-C++ XML Parser' for improved clarity.
2025-07-22 12:55:27 +03:00
DosX
ca19a6a1e0 Improve .NET obfuscation detection logic
Added a check for <PrivateImplementationDetails> objects with 40-character patterns to exit early. Also increased the threshold for strange patterns before marking bad namings from 1 to 2, refining the heuristic for detecting obfuscated .NET assemblies.
2025-07-22 12:48:02 +03:00
DosX
e51f56f2e2 Add detection rule for Intel TBB library
Introduces a new detection script for identifying the presence of the Intel Threading Building Blocks (TBB) library by checking for 'tbb.dll' in PE files.
2025-07-22 01:10:29 +03:00
DosX
2fa31132b8 Add Wwise Audio Engine detection rule
Introduces a new detection rule file for the Wwise Audio Engine in the PE database. The rule checks for the presence of the 'g_pAKPluginList' export function to identify the library.
2025-07-22 00:42:34 +03:00
DosX
e61d5130b1 Set language to Native MSIL/C# for .NET Native
Adds a check to set the language to 'Native MSIL/C#' when .NET Native is detected in the detect() function.
2025-07-22 00:34:17 +03:00
DosX
d2596e5c0b Update packer signatures and IL2CPP detection
Commented out a WinRAR Installer signature, added AverCryptor to the packer list, and improved IL2CPP section detection by updating the compiler and language result strings.
2025-07-22 00:28:16 +03:00
DosX
9a9a57e33b Add detection rule for AMD PowerXpress SDK
Introduces a new Detect It Easy rule file to identify the AMD PowerXpress SDK by checking for the 'AmdPowerXpressRequestHighPerformance' export in PE files.
2025-07-22 00:28:00 +03:00
DosX
a071e10bf5 Improve section presence checks in detect function
Refactored the detect function to assign section references to variables and check for their existence before proceeding. This enhances code readability and prevents potential errors if sections are missing.
2025-07-22 00:27:52 +03:00
DosX
1ccff960dc Add detection rule for Nvidia Optimus in PE files
Introduces a new detection script for identifying Nvidia Optimus libraries by checking for the 'NvOptimusEnablement' export in PE files.
2025-07-22 00:27:46 +03:00
DosX
afd290e104 Add detection rule for Unity Engine in PE files
Introduces a new script to detect Unity Engine libraries in PE files by checking for 'UnityPlayer.dll' and the 'il2cpp_alloc' export function. Sets relevant metadata when IL2CPP is detected.
2025-07-22 00:27:38 +03:00
DosX
f2e4d3688d Create RADVideoTools.4.sg 2025-07-21 16:34:35 +03:00
DosX
c359761ce1 Add detection rule for Secret Rabbit Code library
Introduces a new detection script for identifying the Secret Rabbit Code (libsamplerate) library in PE files. The rule checks for the presence of the library or specific export functions to determine detection.
2025-07-21 16:34:33 +03:00
DosX
4530cdf0ec Fix Direct3D version detection logic
Adjusts the conditions for updating sVersion in the detect function to ensure correct version assignment and avoid redundant concatenation.
2025-07-21 16:15:53 +03:00
DosX
6ec55cefdd Improve Direct3D version detection logic
Refactored the version extraction to use String.slice instead of substr for better clarity. Introduced getVersionByExports to generalize version detection from export names, consolidating and improving the logic for identifying Direct3D versions from exports.
2025-07-21 16:14:47 +03:00
DosX
619c423592 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-07-21 15:53:14 +03:00
DosX
3a3f7e22f1 Refactor and optimize Python binary detection logic
Simplified and condensed the version detection switch statements for Python compiled modules, improved magic value handling, and added a more robust file signature check. Also updated verbose output and increased the minimum binary size check for detection.
2025-07-21 15:53:10 +03:00
hypn0chka
65d41aa935 fix 2025-07-21 02:07:40 +05:00
Benjamin Funke
9378dc448a add asp to heuristic detection 2025-07-20 19:57:42 +02:00
Benjamin Funke
5cdc90f3f8 add n64 to heuristic detection 2025-07-20 17:37:05 +02:00
DosX
41efadc9ac Adjust threshold for obfuscated .NET name detection
Lowered the threshold for strangePatternsCounter from 3 to 1 in scanForObfuscations_NET(), making the detection of obfuscated .NET names more sensitive.
2025-07-20 16:22:14 +03:00
DosX
8647ec7bb1 Improve Direct3D version detection logic
Enhanced the detection function to check for specific export functions for Direct3D 12 and 11 when runtime library is not present. Also fixed minor syntax issues and improved code clarity.
2025-07-20 16:22:08 +03:00
DosX
057b207256 Add Oodle Compression detection rule
Introduces a new detection rule for Oodle Compression libraries in PE files. The rule identifies the presence of Oodle library variants and extracts their version information.
2025-07-20 16:21:59 +03:00
hypn0chka
3c161d2e76 fix 2025-07-20 17:34:29 +05:00
DosX
53309cf783 Refactor .NET CLR detection and update heuristics
Replaced isClrNET() with isCppClrLikeApp() for improved detection of C++/CLR .NET applications. Updated related heuristic checks and comments to reflect the new function and clarify its purpose.
2025-07-20 00:49:34 +03:00
hypn0chka
defee962a0 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-07-20 00:58:15 +05:00
hypn0chka
72dcbfda87 fix 2025-07-20 00:58:05 +05:00
DosX
7ede98926b Update __GenericHeuristicAnalysis_By_DosX.7.sg 2025-07-19 22:50:29 +03:00
DosX
b2bad1053f Fix! 2025-07-19 22:50:26 +03:00
DosX
64630db155 Enhance RunPE detection logic in heuristic analysis
Updated the RunPE detection conditions to require presence of 'ZwUnmapViewOfSection' alongside 'WriteProcessMemory' and 'VirtualAllocEx'. This improves accuracy in identifying RunPE techniques in .NET and native applications.
2025-07-19 21:16:29 +03:00
hypn0chka
7ff9e84f63 fix 2025-07-19 20:01:32 +05:00
DosX
82219f5948 Enhance detection of RunPE and NjRAT in heuristic analysis
Added improved logic to detect RunPE techniques by checking for related .NET objects and API usage. Refactored NjRAT detection to use a generated Unicode signature mask for more robust identification.
2025-07-19 16:37:59 +03:00
DosX
b8d539d276 Refactor conditional expressions in PE detection scripts
Simplifies conditional statements by removing unnecessary parentheses and improves code style in DS.Unikey_dongle.5.sg and NTkrnl_Protector.2.sg. Also updates comment formatting for consistency.
2025-07-19 12:25:41 +03:00
DosX
c670db98b5 Refactor loops to use for-in and improve checks
Replaced traditional for loops with for-in loops for array iteration throughout the script, improving readability and consistency. Updated conditional checks to use truthy evaluations for array lengths. Removed 'SHA256Managed' and other SHA classes from the crypto class list. Refactored obfuscated name detection to use a loop over fields for maintainability. Minor fixes to string handling and loop logic.
2025-07-19 12:25:27 +03:00
horsicq
be85e67fa7 Update file(s): 2025-07-19 2025-07-19 00:28:39 +02:00
horsicq
023ed34bef Add new file(s): 2025-07-19 2025-07-19 00:09:07 +02:00
horsicq
3fb9c8a8d4 Update file(s): 2025-07-19 2025-07-19 00:09:06 +02:00
DosX
3ddd96c73b Fix operator precedence in library detection
Added parentheses to ensure correct evaluation of logical conditions when detecting Visual Basic libraries and 'haspvb32.dll' string presence.
2025-07-18 22:40:05 +03:00
DosX
e1ac317a03 Enhance .NET heuristic analysis and detection logic
Added 'ldtoken' MSIL opcode to NetOpCodes, expanded packer detection with WibuKey and Wibu CodeMeter signatures, and improved malicious code scan by checking additional version string fields for obfuscation and stub indicators. Also updated DeepSeaObfuscator detection to use strict inequality for offset comparison.
2025-07-18 21:09:05 +03:00
DosX
35100079f0 Refactor PE detection logic for Nim and StarForce
Improves detection logic in Nim.4.sg by adding checks for Rich signature and msvcrt library presence. Refactors StarForce.2.sg to use isSectionNamePresent and simplifies version detection by handling empty strings and undefined values more robustly.
2025-07-18 18:50:03 +03:00
DosX
1b5fd8b52a Refactor dongle detection logic and remove EZ-Logic
Refactored string search loops in dongle detection scripts for Eutron SmartKey, Hardlock, MARX Crypto-Box, and Sentinel to improve clarity and correctness. Removed the obsolete EZ-Logic detection script. Simplified Zig compiler detection by streamlining section access and signature search.
2025-07-18 18:49:32 +03:00
horsicq
db642af392 Update file(s): 2025-07-18 2025-07-18 00:09:59 +02:00
DosX
f13b647c7d Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-07-18 00:45:34 +03:00
DosX
892790b7df Update __GenericHeuristicAnalysis_By_DosX.7.sg 2025-07-18 00:45:30 +03:00
hypn0chka
36c3ce22e1 fix 2025-07-18 01:29:42 +05:00
DosX
360cb161ed Refactor conditional expressions for consistency
Updated multiple files in db/PE to remove unnecessary parentheses in conditional expressions, standardizing the code style and improving readability. No functional changes were made.
2025-07-17 20:09:33 +03:00
DosX
a22f98ebb9 Refactor PE detection scripts for consistency
Standardized comparison operators to use !== -1 for string and signature searches, replaced direct section access with isSectionNamePresent where appropriate, and improved code clarity and reliability in detection logic. Also removed unused and commented-out code blocks, and deleted Enigma_Virtual_Box.2.sg detection rule file.
2025-07-17 18:50:49 +03:00
DosX
f33da94076 Add type validation to string utility functions
Added type checks to removeWhitespaces, removeSpaces, replaceAllInString, and isAnsiString to prevent runtime errors when input is not a string. Also updated a comment in scanForMaliciousCode_NET_and_Native to clarify the check for obfuscated names and anomalous signs.
2025-07-17 12:50:27 +03:00
DosX
dc5d30f48b Detect non-ANSI section names in obfuscation scans
Added isAnsiString function to check if section names contain only ANSI printable characters. Updated .NET and Native obfuscation scan functions to flag sections with non-ANSI names as strange, improving detection of obfuscated binaries.
2025-07-17 11:37:00 +03:00
horsicq
a879834ee4 Merge branch 'master' of github.com:horsicq/Detect-It-Easy 2025-07-17 00:56:41 +02:00
horsicq
f23887a019 Add new file(s): 2025-07-17 2025-07-17 00:03:10 +02:00
DosX
6fcc4093bd dbs_min update 2025-07-16 22:53:44 +03:00
DosX
0e2958a861 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-07-16 22:34:51 +03:00
DosX
8ebbda9b08 Improve obfuscated name detection heuristics
Enhanced the logic for detecting obfuscated names by refining chunk size, renaming functions for clarity, and expanding heuristics to include hexadecimal patterns and more robust statistical checks. This update increases detection accuracy for obfuscated tokens in .NET and native debug data analysis.
2025-07-16 21:21:02 +03:00
Benjamin Funke
f0884077cb add new heuristic file entry 2025-07-16 20:15:46 +02:00
DosX
fa0a3a5f25 Refactor obfuscated name detection logic
Improved the isNameObfuscated function to handle names with spaces by checking each token, and for names without spaces, by checking each chunk of the string. Extracted the obfuscation heuristic into a new isObfuscatedToken function for better modularity and clarity.
2025-07-16 21:00:29 +03:00
DosX
bb7899084d Detect unused exception section in PE analysis
Adds logic to identify and flag unused exception sections (.pdata or .xdata) in native PE files by checking if the exceptions directory is empty. This enhances heuristic analysis for obfuscation detection.
2025-07-16 20:30:11 +03:00
DosX
feedcb14b3 Refactor mangler detection and add getManglerNameByMangledItem
Introduced getManglerNameByMangledItem to centralize mangler identification logic for C++ symbols. Updated scanForLanguages_NET_and_Native to use this function for both imports and exports, improving maintainability and consistency. Relocated export mangler detection for better code organization.
2025-07-16 19:12:40 +03:00
DosX
9443d3dacd Detect mangled names in export functions
Added logic to scan export function names for mangling and log detected mangled exports. This enhances heuristic analysis by identifying libraries with mangled exports.
2025-07-16 17:27:53 +03:00
DosX
38730c9f6e Update packer/protector detection and logging
Corrected string formatting in log messages, improved options concatenation logic, and updated packer/protector hash database with new entries and naming consistency. Also refined section check logic in obfuscation detection.
2025-07-16 11:30:18 +03:00
DosX
eac50520b2 Improve NsPack 3.X detection logic
Adds an additional check for import position hash before detecting NsPack 3.X, making the detection more robust and accurate.
2025-07-16 11:21:36 +03:00
DosX
4a1a3229d9 Enhance Xenocode postbuild detection logic
Added detection for Xenocode postbuild using section name '.xcpad' and overlay comparison with 'xvm'0001. This improves coverage for additional Xenocode variants.
2025-07-16 11:15:13 +03:00
DosX
511f5db0aa Improve PE section detection and heuristic analysis
Updated DxPack.2.sg to add detection logic for 'coderpub' section and improved entry point comparison. In __GenericHeuristicAnalysis_By_DosX.7.sg, replaced direct section access with isSectionNamePresent for '_winzip_' and removed redundant obfuscation check for 'LegalCopyright'.
2025-07-16 10:42:50 +03:00
DosX
9d0ed2358b Update NjRAT edition names to use 'Edition' suffix
Standardized the naming of NjRAT editions from 'version' to 'Edition' for consistency in the malicious import patterns.
2025-07-15 23:21:14 +03:00
DosX
412580cc1c Improve PE heuristic analysis and detection logic
Enhanced entry point detection, improved string handling, and refined logging for obfuscation, packer, and debug data checks. Updated language heuristics, verdict structure, and obfuscation detection for .NET and native binaries. Refactored code for clarity and accuracy in identifying suspicious patterns and anomalous build information.
2025-07-15 23:17:12 +03:00
DosX
0ba439ae0f Add detection rule for Beds Protector in PE files
Introduces a new detection script for identifying Beds Protector in .NET PE files, specifically targeting assemblies with names starting with 'вє∂ѕ ρяσтє¢тσя'. Marks them as 'ConfuserEx modded' if detected.
2025-07-15 23:17:05 +03:00
DosX
9531fd004d dbs_min update 2025-07-14 13:43:48 +03:00
DosX
ceab7d4093 Improve PE detection scripts and heuristic analysis
Refactored HackShield.2.sg and NoobyProtect.2.sg to improve import section handling and null checks. Updated _FixDetects.9.sg to match 'Microsoft Visual Studio' tool name. Enhanced __GenericHeuristicAnalysis_By_DosX.7.sg to detect 'crtdll' as a C library and improved documentation formatting.
2025-07-14 13:43:19 +03:00
DosX
363222b4b4 special_db -> dbs_special && _init refactored 2025-07-12 21:26:21 +03:00
DosX
aa6ff5dcf6 Create db_native_and_net_sort.db 2025-07-12 21:06:25 +03:00
DosX
15946e0242 Thanks part updated
With permission by horsicq, I added myself to Special thanks
2025-07-12 20:12:15 +03:00
DosX
98b91128a6 Improve .NET framework component detection logic
Refines the isFrameworkComponent() function to more accurately identify .NET framework components by checking for global static constructors and matching assembly/module naming conventions. Updates related heuristic and anti-analysis checks to use the improved detection, reducing false positives for system assemblies.
2025-07-12 19:00:55 +03:00
DosX
8d2787017e Update donation information in script comments
Adjusted formatting and minimum amounts for BTC and LTC donation options in the script's comment section. Clarified that any amount is accepted for Payeer and improved alignment for better readability.
2025-07-12 15:52:58 +03:00
DosX
a0d57d3384 Enhance .NET obfuscation and build info detection
Added detection for modified .NET build information by comparing assembly and module names. Introduced utility function getFileNameWithoutExtension. Refactored repeated warning string to a constant. Minor comment and formatting improvements.
2025-07-12 15:32:31 +03:00
DosX
ba9d309fd2 Refactor obfuscation and anomalous build checks
Updated comments and log messages to clarify the 'Stack-push address near EP' detection. Moved and expanded the check for obfuscated names in .NET and native assemblies, improving detection of anomalous build information. Removed redundant code and improved code organization for better maintainability.
2025-07-12 12:12:30 +03:00
DosX
aec2845a71 Update legacy engine stub check to use getNetAssemblyName
Replaces the check for '_error' with 'PE.getNetAssemblyName' to determine if the current engine supports the required functionality. This ensures the heuristic analyzer prompts for an update only when the necessary method is unavailable.
2025-07-12 01:38:19 +03:00
DosX
39cdf513aa dbs_min update 2025-07-12 01:34:04 +03:00
DosX
6aac5ffefd Improve PE language and compiler detection heuristics
Refines the logic for detecting C/C++ and assembly compilers in PE files by adjusting section and library checks, improving accuracy for Microsoft Visual Studio, MinGW, and FASM. Removes unnecessary breaks in library detection loops and ensures language is only set when not already detected and relevant libraries are absent.
2025-07-12 01:30:37 +03:00
DosX
17670201ac Improve obfuscation and malware detection heuristics
Refactored obfuscated name detection into a dedicated function with enhanced heuristics and logging. Adjusted thresholds for obfuscation detection. Moved Base64 payload detection logic to a more appropriate location and improved verdict reporting. Enhanced detection of anomalous .NET assembly/module names and streamlined log message handling.
2025-07-12 01:11:58 +03:00
DosX
114feb197c Improve comments and formatting in heuristic analysis script
Reformatted and enhanced the header comments for better readability and presentation. Added clarifying comments to code sections related to obfuscation detection and pattern scanning. Fixed minor string formatting in packer detection logic.
2025-07-11 23:22:05 +03:00
DosX
a98c48bb4c Fix .NET library version string concatenation logic
Corrects the logic for appending CLR version to the dotNetLibraryVersion string, ensuring proper formatting when the version is empty or already set.
2025-07-11 21:56:32 +03:00
DosX
60d721936e Refactor options string concatenation and update pattern keys
Replaces checks for options.length !== 0 with a simpler truthy check (options) for string concatenation throughout the file, improving readability. Also renames 'version' to 'edition' in malicious import pattern objects and updates related references for consistency. Minor comment clarification in a code pattern.
2025-07-11 21:55:56 +03:00
DosX
45aec30c58 Refactor malware verdicts to use 'version' and 'details'
Replaces the 'edition' property with 'version' and adds a 'details' field in verdict objects for improved clarity and extensibility. Updates all relevant pattern definitions and verdict pushes, and adds new detection logic for general RAT and Neshta signatures.
2025-07-11 17:02:16 +03:00
DosX
4ba9ec1d7d dbs_min update 2025-07-11 15:23:38 +03:00
DosX
ee318f47d2 Refactor section checks and add symbol export detection
Renamed 'strangeSections' to 'isStrangeSectionsPresent' for clarity in both .NET and Native obfuscation scans. Added detection for exported symbols via the -Wl,--export-all-symbols linker option in scanForDebugData_NET_and_Native().
2025-07-11 15:22:34 +03:00
DosX
5210aed488 Improve .NET metadata presence check in PE analysis
Enhanced the isNetMetaDataPresent function to validate both the CLR directory RVA and size, ensuring more accurate detection of .NET metadata in PE files. Added clarifying comments for PE32 and PE64 offsets.
2025-07-11 11:18:34 +03:00
DosX
90f3ede5ff Improve .NET metadata detection in PE analysis
Refines the isNetMetaDataPresent function to more accurately detect the presence of .NET metadata by checking the number of RVA and sizes and validating offsets within PE file bounds. Also removes a redundant brfalse_s opcode definition and clarifies the brtrue_s comment.
2025-07-11 11:13:04 +03:00
DosX
2b095e977d Enhance .NET and native analysis heuristics
Added detection for .NET metadata in native files, improved language heuristics to distinguish MSIL/C/C++ when .NET metadata is present, and expanded NjRAT detection signatures. Also added new MSIL opcode patterns and refactored entry point checks for managed code.
2025-07-11 02:20:56 +03:00
DosX
179f956773 Improve CodeWall .NET trial version detection
Updated the detection logic to check for both 'CodeWallTrialVersion' and 'CodeWallTrialVersion\u0001' .NET objects, enhancing the accuracy of identifying CodeWall trial versions.
2025-07-11 01:38:59 +03:00
DosX
f4eef97190 Update heuristics and signatures for PE analysis
Expanded packer and section name detection with new entries for 'bambam'. Improved Visual Studio detection logic and added heuristics for MinGW and FASM compilers. Refactored section name checks for better accuracy.
2025-07-10 23:32:17 +03:00
horsicq
a951f47ac4 Add new file(s): 2025-07-10 2025-07-10 18:21:05 +02:00
horsicq
0b1c30c857 Update file(s): 2025-07-10 2025-07-10 18:21:04 +02:00
DosX
ee53e9909d Improve MinGW detection logic in PE script
Refines the detection function to check for a 'mingw' signature in the .rdata section before falling back to the previous logic. This enhances the accuracy of MinGW identification in PE files.
2025-07-10 12:36:11 +03:00
DosX
b73c958d1a Remove obsolete PE signature files
Deleted multiple .sg files from db_extra/PE related to various crypters and protectors. This cleanup removes unused or outdated signature files to streamline the database.
2025-07-10 12:35:55 +03:00
horsicq
91a2ea28a2 Update file(s): 2025-07-10 2025-07-10 09:35:26 +02:00
DosX
9e68f09e61 Fix null reference in Adobe installer detection
Added a check to ensure PE.resource[0] exists before accessing its Offset property, preventing potential runtime errors during signature detection.
2025-07-09 20:13:47 +03:00
DosX
ef12c879fb dbs_min update 2025-07-09 15:10:06 +03:00
DosX
14d8c76025 Expand packer and protector detection signatures
Added new signatures for Petite 2.2, Themida, Private EXE Protector, NeoLite, and additional ASPack and Themida section names. Improved section name collision logging by sanitizing section names. Enhanced log function to sanitize illegal characters in log messages instead of throwing errors.
2025-07-09 14:42:41 +03:00
DosX
e221fe0d6b TMP_FS_002: NsPack_.2.sg -> NsPack.2.sg 2025-07-09 14:42:21 +03:00
DosX
0873558600 TMP_FS_001: NsPacK.2.sg -> NsPack_.2.sg 2025-07-09 14:42:04 +03:00
DosX
5a4c3e6258 Normalize camera name and fix NsPack init string
Trim and normalize whitespace in camera EXIF name detection for JPEGs. Corrected the packer name from 'NsPacK' to 'NsPack' in the PE detection rule and fixed minor formatting issues.
2025-07-09 14:40:49 +03:00
DosX
8ee80d6f6b Update packer detection and improve CPUID check
Added detection for RLPack and Crunch packers. Improved CPUID detection logic to check for presence near the entry point and updated related log messages. Added Ramnit detection based on the presence of the .rmnet section.
2025-07-09 02:39:36 +03:00
DosX
4bdeb0b956 Update Private EXE Protector detection rules
Added new detection logic for 'Trial' and '.-PEP-' section names when a specific import position hash is present. Also updated file comments with a source link and reformatted code for improved readability.
2025-07-09 02:39:31 +03:00
DosX
73fe91afc1 Enhance PE-SHiELD detection logic
Added an additional detection method for PE-SHiELD by checking for a specific import position hash and section name. Also updated the author comment to include DosX.
2025-07-09 02:34:55 +03:00
DosX
3687fbfda5 Improve PE Cab and heuristic detection logic
Refactored Cab.1.sg to streamline resource section handling, improve version extraction, and consolidate detection conditions for SFX CABs. Updated __GenericHeuristicAnalysis_By_DosX.7.sg to avoid false positives by excluding a specific CALL opcode pattern at the entry point.
2025-07-09 00:20:53 +03:00
DosX
62ae342e2c Refactor and update PE detection scripts
Refactored and improved code style and logic in multiple PE detection scripts for consistency and reliability. Updated comments, fixed comparison operators, merged conditional checks, and improved section and string search logic. Also updated heuristic analysis rules for EXECryptor and Themida, and made minor documentation and formatting improvements.
2025-07-08 22:21:11 +03:00
DosX
6e487880e6 dbs_min update 2025-07-08 11:24:18 +03:00
hypn0chka
9b2ac53bd5 new & update 2025-07-07 22:53:08 +05:00
horsicq
80b001df7f Update file(s): 2025-07-07 2025-07-07 18:39:35 +02:00
horsicq
f4a9b965a6 Update file(s): 2025-07-07 2025-07-07 18:30:43 +02:00
hypn0chka
0c8fc3e934 new & update 2025-07-07 21:05:30 +05:00
Benjamin Funke
b26205d765
move Microsoft Store next to Windows section 2025-07-07 18:00:55 +02:00
Kaens
987bbb0d7f Update audio.1.sg
Further debugged, attributed, added and adapted. Details at https://github.com/Kaens/audio1sg
2025-07-07 18:00:11 +02:00
DosX
51a842ee66 Refactor and simplify detection logic in signature scripts
Refactored multiple detection scripts to simplify conditional logic, reduce variable usage, and improve code readability. Combined nested if statements, removed unnecessary variables, and standardized style across MSDOS and PE signature detection files. No changes to detection logic or functionality.
2025-07-07 17:08:56 +03:00
Benjamin Funke
1bfc5bfd08
mention Detect It Easy on Microsoft Store 2025-07-07 14:43:30 +02:00
DosX
196eb27c79 Improve code formatting and consistency in MSDOS scripts
Applied consistent spacing in array definitions and control structures in PROTECT.2.sg, improved variable declarations and strict comparison in UPX.2.sg, and fixed formatting in virus.1.sg. These changes enhance code readability and maintainability without altering functionality.
2025-07-06 21:23:38 +03:00
hypn0chka
12e2d5c743 new & update 2025-07-06 22:42:07 +05:00
hypn0chka
c924843207 new & update 2025-07-06 21:49:30 +05:00
hypn0chka
3fd77f1c9e fix :) 2025-07-06 18:05:53 +05:00
hypn0chka
71d2522c21 fix 2025-07-06 18:05:26 +05:00
hypn0chka
10696be297 new & update 2025-07-06 17:20:17 +05:00
horsicq
8ed2b10c6f Merge branch 'master' of github.com:horsicq/Detect-It-Easy 2025-07-06 13:28:37 +02:00
horsicq
60efe61fa6 Update file(s): 2025-07-06 2025-07-06 00:20:31 +02:00
DosX
579ce4dddb dbs_min update 2025-07-04 21:15:47 +03:00
DosX
4db5b191fb Enhance .NET opcode analysis and utility functions
Expanded the NetOpCodes class with comprehensive MSIL opcode documentation, additional opcodes, and improved helper methods for strict value substitution and opcode concatenation. Refactored utility functions for whitespace removal, string replacement, and section name sanitization to improve robustness and clarity. Fixed opcode usage in obfuscation detection logic and improved code comments for maintainability.
2025-07-04 21:00:06 +03:00
DosX
2c5735663e Add Borland C++ mangling support to symbol analysis
Extended isItemMangled and getNameOfMangledItem to detect and demangle Borland C++ symbol names. This improves recognition and extraction of function and method names from Borland-mangled symbols, including constructors and destructors.
2025-07-04 19:07:32 +03:00
DosX
d04d998973 Refactor PE.isNET to PE.isNet and strict equality checks
Replaces all occurrences of PE.isNET() with PE.isNet() for consistency with naming conventions. Updates all loose equality checks (options.length != 0) to strict checks (options.length !== 0) throughout the file. Also corrects a compiler name from 'Microsoft Visual C/C++' to 'Microsoft Visual C++' and fixes a logic bug in section name checks.
2025-07-04 18:47:31 +03:00
DosX
7ae519fb37 Enhance mangled symbol detection and demangling logic
Refactored and expanded the logic for detecting and extracting names from mangled C++ symbols, supporting both MSVC and GCC mangling schemes. Added detection for 'Address to stack trick' and CPUID at entry point. Improved function naming for clarity and updated usages to reflect new function names.
2025-07-04 17:52:35 +03:00
DosX
3d67ed1a5c Enhance packer and obfuscation detection heuristics
Expanded NOP-equivalent instruction detection for x86/x64, improved entry point pattern checks, and added new VMProtect signatures. Introduced linker detection and enhanced language detection heuristics for PE files. Also fixed a logic bug in IAT directory checks and removed redundant code.
2025-07-04 16:25:03 +03:00
DosX
c1048638a3 Update detection rules and move ASPR_Stripper.2.sg
Added a source URL to 12Ghosts_Zip2.1.sg and a header comment to BattleshipCrypter.2.sg for clarity. Moved ASPR_Stripper.2.sg from db/PE to db_extra/PE to better organize detection rule files.
2025-07-04 10:49:39 +03:00
DosX
08815969a1 Move and enhance CipherWall.1.sg detection rule
Moved CipherWall.1.sg from db/PE to db_extra/PE and updated the detection logic to identify Decryptor Console and GUI options based on EPSignature
2025-07-04 01:02:39 +03:00
horsicq
a5cf18cc98 Merge branch 'master' of github.com:horsicq/Detect-It-Easy 2025-07-02 23:23:00 +02:00
DosX
a3eb6eefb8 🥒 Microsoft.6.sg rewritten && optimized 2025-07-02 23:28:11 +03:00
DosX
c1e4cc5690 Update PE detection scripts with fixes and metadata
Improved detection logic and code style in several PE database scripts. Added or updated metadata comments and language tags, fixed section name checks, and refactored switch/case statements for clarity. Also updated product names and URLs for better identification.
2025-07-02 23:18:19 +03:00
DosX
980704a895 Move and update detection rules to db_extra directory
Several detection rule files were moved from db/ to db_extra/ for COM, ELF, MSDOS, and PE formats. Minor code style and comment updates were made to some scripts, and the about.txt file in db_extra was updated for clarity. The PE/Break_Into_Pattern.2.sg rule was renamed to Break-Into-Pattern.
2025-07-02 13:55:44 +03:00
DosX
02d3a13eb6 dbs_min update 2025-07-02 12:42:31 +03:00
DosX
51b2d47e19 Standardize result descriptions to 'Generic'
Updated _setResult calls in scanForPackersAndCryptors_NET_and_Native and scanForBadFileFormat_NET_and_Native to use 'Generic' as the result description for consistency.
2025-07-02 12:42:15 +03:00
DosX
cd398788a7 Detect CALL or JMP at entry point in last section
Updated heuristic to flag both CALL and JMP instructions at the entry point when it is located in the last section. This improves detection of suspicious control flow transfers at the entry point, not just CALLs.
2025-07-02 12:36:26 +03:00
DosX
8b3618197c Refactor and update PE installer detection scripts
Simplified the INTENIUM installer name, improved code formatting in Microsoft Class Installer and dotNET installer scripts, and moved Microsoft_Help.1.sg to db_extra/PE. These changes enhance code readability and maintainability.
2025-07-02 12:36:02 +03:00
DosX
bf4d6838a5 Improve version string handling in detect function
Added a check to assign sVersion only if the PackagerVersion string length is less than 7. This prevents assigning unexpected version strings and improves detection accuracy.
2025-07-01 23:28:32 +03:00
DosX
44f98cc360 Refactor compiler detection and add IL2CPP heuristic
Extracted compiler detection logic into a reusable isCompilerDetected() function. Added heuristic to detect IL2CPP by checking for specific section names. Improved comments and updated documentation for clarity.
2025-07-01 23:28:13 +03:00
DosX
9ba420ed03 Detect NjRAT via requests-separator signature
Added a heuristic to identify NjRAT by checking for a specific byte pattern in section 0 when no other verdicts are present. This enhances detection of this malware family in .NET PE files.
2025-07-01 22:44:24 +03:00
DosX
22702389d7 dbs_min update 2025-07-01 18:20:33 +03:00
DosX
6081d6e849 db refactoring 2025-07-01 18:19:46 +03:00
DosX
4035d7db58 Add support for language version in detection init
Introduces a new sLangVersion parameter to the detection initialization and result functions, allowing the version of the programming language to be specified and passed to _setLang. This enhances detection granularity for language-specific features.
2025-07-01 18:11:14 +03:00
DosX
340953273b Refactor language detection to simplify _setLang usage
Removed the 'isPositive' argument from _setLang and updated all detection scripts to set language via variable assignment instead of calling _setLang directly. This streamlines language detection logic and centralizes result handling, improving maintainability and reducing redundant checks.
2025-07-01 18:05:40 +03:00
DosX
26a06fdb84 Remove temporary script for setLang to sLang refactor
Deleted the _git.temp.task__setLang_to_sLang.js script, which was used to automate replacing _setLang calls with sLang assignments in .sg files. The script is no longer needed.
2025-07-01 17:54:50 +03:00
DosX
1495924272 _setLang func -> sLang field 2025-07-01 17:54:31 +03:00
DosX
7119a0339d Add script to replace _setLang with sLang assignment
Introduces a Node.js script that recursively processes .sg files in the current directory, replacing calls to _setLang(..., bDetected) with sLang assignment statements.
2025-07-01 17:52:22 +03:00
DosX
4c263055df Refactor detection logic and add language support
Removed redundant code and unreachable returns in _FixDetects.9.sg. Updated _init to support an optional language parameter, ensuring language is set during result processing and variables are properly reset.
2025-07-01 17:34:57 +03:00
DosX
dee8de6429 dbs_min update 2025-07-01 17:22:47 +03:00
DosX
efbebb3c3a Integrate malicious code detection into heuristic analysis
Moved and refactored the detection logic for various .NET malware families (e.g., NjRAT, XWorm, VenomRAT, RevengeRAT) from _simpleNetAntivirus.1.sg into __GenericHeuristicAnalysis_By_DosX.7.sg as scanForMaliciousCode_NET_and_Native. The new function is now called within the main heuristic analysis flow, consolidating detection and removing the standalone antivirus rule file.
2025-07-01 12:21:18 +03:00
horsicq
9bd0fcb081 Update file(s): 2025-07-01 2025-07-01 08:41:25 +02:00
DosX
39735ee25a Fix incorrect String assignment in scan function
Replaces assignment of String to a variable with a call to String(), ensuring 'version' is initialized as a string instance rather than referencing the String constructor.
2025-06-30 14:42:32 +03:00
DosX
5614383338 Update __GenericHeuristicAnalysis_By_DosX.7.sg 2025-06-30 14:38:24 +03:00
DosX
523aefcf0d Enhance .NET obfuscation and packer detection heuristics
Added new math opcode templates for .NET Reactor obfuscation detection and improved the logic for identifying strange calls at the entry point. Also added comments and structure for import-based packer/protector detection.
2025-06-30 14:34:18 +03:00
DosX
280a51fdbe Refactor PE scripts and update detection labels
Cleaned up ARJSFX.1.sg by removing commented code and improving formatting. Updated detection labels in AHTeam_EP_Protector.2.sg to use consistent 'X' notation. Moved ARM_Protector.2.sg from db/PE to db_extra/PE.
2025-06-30 13:17:33 +03:00
DosX
e5c1f36187 Clarify log messages for strange calls at entry point
Updated log and option messages to specify that the strange call occurs at the entry point (EP), improving clarity during analysis.
2025-06-30 13:14:08 +03:00
DosX
de21f4fee6 Refactor detection logic and version formatting
Updated version string formatting to use uppercase 'X' for unknown digits in both Pantaray_QSetup and Perl detection scripts. Refactored redundant variable assignments and improved code clarity by removing unnecessary variables and comments. Also streamlined conditional checks and variable declarations for better readability.
2025-06-30 11:40:32 +03:00
DosX
385670bba8 Refactor obfusheader detection and result removal
Simplified the signature check in the detect function and replaced multiple _removeResult calls with a single call using an array of protector names. This improves code readability and maintainability.
2025-06-30 11:32:49 +03:00
DosX
6b38939224 dbs_min update 2025-06-30 11:26:48 +03:00
DosX
70df3dbfe9 Add type field to packer/protector hash database
Extended dbCollectionOfHashesDictionary entries with a type field to distinguish between packers, protectors, and protections. Updated detection logic to use this new field for more accurate classification. Also removed the unfinished scanForMaciliousCode_NET_and_Native implementation.
2025-06-30 11:24:18 +03:00
DosX
0e24d44616 Update image.ICO.1.sg 2025-06-30 11:22:08 +03:00
Kaens
fea1ed42b0 Update image.ICO.1.sg
Tightened a bit, min~max resolution and colour depth added to info, rewritten in shorthand
2025-06-30 03:24:18 +02:00
horsicq
5346b446bc Update file(s): 2025-06-30 2025-06-30 00:37:12 +02:00
Kaens
61e9b97c8d Update image.ICO.1.sg
bugfixed
2025-06-29 21:44:59 +02:00
hypn0chka
cbf9b9da0d update 2025-06-29 20:08:58 +05:00
DosX
8c34781e2f Update heuristic.image.HDR.1.sg 2025-06-29 01:20:33 +03:00
DosX
67989258e2 db refactoring 2025-06-29 01:09:49 +03:00
DosX
cadac70050 db refactoring 2025-06-29 01:03:24 +03:00
Kaens
54ea0b7e53 *audio1.sg, +imge.hdr.1.sg
- Radiance RGBE/HDR added
- Fixes and additions in audio1sg, yoyu know the drill
- some helper stuff fixed/updated
2025-06-28 13:52:00 +02:00
DosX
bad12e823a db refactoring 2025-06-28 09:44:11 +03:00
DosX
349b60d6be AMD FSR detection fix for Denuvo builds (no ".rdata" section) 2025-06-26 17:56:09 +03:00
DosX
5bd095415e Create about.txt 2025-06-26 15:49:50 +03:00
DosX
adec109824 Refactoring && db -> db_extra
Oh this rule is terribly written (strange formatting and incomprehensible symbols: why are there spaces in the version?)
2025-06-26 15:44:32 +03:00
horsicq
92222474d9 Merge branch 'master' of github.com:horsicq/Detect-It-Easy 2025-06-26 03:49:18 +02:00
horsicq
d35d4bae37 Add new file(s): 2025-06-26 2025-06-26 03:26:16 +02:00
DosX
8c7f3740bb dbs_min update 2025-06-25 21:47:29 +03:00
DosX
55db3eb737 Heuristic module update, detection by Rich signature added 2025-06-25 21:45:14 +03:00
DosX
2b92250196 db refactoring 2025-06-25 21:44:55 +03:00
Kaens
b0e61bf74f legacy code cleanup
Functions like readBEword that've been lingering in db/read for backward compatibility have been removed, all functions using them corrected (into shorthand, might as well)
Be good to modernise the other signatures away from readByte and readWord in general, but that's many more changes to do
2025-06-25 16:03:38 +02:00
Kaens
5b7b58b8cc db/read and _init fixes
...due to something that happened during the codebase update
2025-06-25 15:33:43 +02:00
DosX
7775be4ff5 Reference URL && Rule index added 2025-06-25 15:20:04 +03:00
Benjamin Funke
4fc524bcc3 add new signature 2025-06-25 11:33:39 +02:00
horsicq
a97fdbcb3a Add new file(s): 2025-06-25 2025-06-25 02:11:51 +02:00
horsicq
95a86ceb47 Update file(s): 2025-06-25 2025-06-25 02:11:50 +02:00
horsicq
ff598a03cc Merge branch 'master' of github.com:horsicq/Detect-It-Easy 2025-06-25 01:07:31 +02:00
horsicq
9ab649175c Add new file(s): 2025-06-25 2025-06-25 00:48:08 +02:00
DosX
525ae2fe36 dbs_min update 2025-06-23 23:55:28 +03:00
DosX
895de049a3 db refactoring 2025-06-23 23:55:04 +03:00
Kaens
2b3cac6289 *TGA *MUAP98 +Sting.replaceAll
- image.TGA.1.sg improved against the ridiculously scary real world & is now in shorthand; the assumed charset is now explicit
 - db/bytecodeparsers MUAP98 endless recursion fault fixed, tests tightened
 - replaceAll added for String type in db/_init
2025-06-23 12:59:09 +02:00
DosX
2df9a48562 dbs_min update 2025-06-23 00:28:37 +03:00
DosX
73aed453c9 Heuristic module hotfix 2025-06-23 00:28:14 +03:00
DosX
7c87b76157 UPX detection update && _init fix 2025-06-23 00:28:02 +03:00
hypn0chka
02e793abd1 new & update 2025-06-22 22:43:32 +05:00
DosX
fc3f15a50b db refactoring 2025-06-22 01:04:21 +03:00
hypn0chka
320915c6e1 new & update 2025-06-21 23:54:38 +05:00
DosX
62d430dca0 dbs_min update 2025-06-21 21:07:54 +03:00
DosX
fe3a42dc24 db refactoring 2025-06-21 21:00:15 +03:00
hypn0chka
dd43425913 new & update 2025-06-21 18:15:31 +05:00
DosX
d64b37626c dbs_min update 2025-06-21 02:06:59 +03:00
DosX
789722d692 Update task.js 2025-06-21 02:06:39 +03:00
DosX
3250f5159d heuristic module update & db refactoring 2025-06-21 01:40:30 +03:00
DosX
73b883f508 MS-DOS bugfix & _init refactoring 2025-06-21 01:33:42 +03:00
DosX
bca6ef52fc Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-06-21 01:31:18 +03:00
DosX
3d324a5560 dbs_min update 2025-06-21 01:31:12 +03:00
DosX
1dcd587eae dbs_min update 2025-06-21 01:28:27 +03:00
DosX
1453419ccf db refactoring 2025-06-21 01:21:48 +03:00
DosX
38a3757403 Update Fox_Pro.3.sg 2025-06-21 01:03:03 +03:00
DosX
b3761a22e7 db refactoring 2025-06-21 00:57:21 +03:00
Benjamin Funke
af7a9ecc54
add Arch Linux build process 2025-06-20 23:32:39 +02:00
DosX
a24867e3f8 dbs_min update 2025-06-21 00:04:38 +03:00
DosX
36dfc38fb2 Update dbs_min_generate.cmd 2025-06-21 00:04:26 +03:00
Benjamin Funke
c060c5507e
add openSuse build process (zypper) 2025-06-20 22:45:35 +02:00
Benjamin Funke
96ed4da81c
add Fedora build process 2025-06-20 18:26:16 +02:00
Benjamin Funke
b556d39557
fix indentation 2025-06-20 17:40:50 +02:00
Hors
4282edbb38
Update update_db.yml 2025-06-20 12:58:50 +02:00
DosX
7f5f19cc69 Update rom.32X.1.sg 2025-06-19 19:13:25 +03:00
Benjamin Funke
0a60afc311 add 32X signature 2025-06-19 17:48:56 +02:00
DosX
88ebd0d86b dbs_min update 2025-06-19 16:58:57 +03:00
DosX
c2b3edb43e dbs_min update 2025-06-19 16:58:15 +03:00
DosX
501d4b977e db refactoring 2025-06-19 16:49:26 +03:00
horsicq
83f74f7a31 Merge branch 'master' of github.com:horsicq/Detect-It-Easy 2025-06-19 03:13:04 +02:00
hypn0chka
78d5c78fb2 new & update 2025-06-19 00:35:21 +05:00
horsicq
b2af318d77 Update file(s): 2025-06-18 2025-06-18 20:47:43 +02:00
hypn0chka
2c50d71a73 new & update 2025-06-18 23:02:10 +05:00
DosX
6f8840349b Update heuristic module 2025-06-18 14:58:47 +03:00
DosX
904a6bb5f1 Update IBM_VisualAge_COBOL.4.sg 2025-06-18 12:52:47 +03:00
hypn0chka
9f5f6a4637 new & update 2025-06-18 02:01:10 +05:00
DosX
ae8d30cdeb Update Obsidium.2.sg 2025-06-17 23:16:01 +03:00
hypn0chka
0914a5fdb0 update 2025-06-18 00:14:07 +05:00
DosX
4d79e5a93b dbs_min update 2025-06-17 19:18:02 +03:00
DosX
57d3d4826e Update heuristic module 2025-06-17 17:21:09 +03:00
DosX
f42ea024ab Update heuristic module 2025-06-17 16:42:39 +03:00
Benjamin Funke
6524488974 add new heuristic signature 2025-06-16 22:17:12 +02:00
horsicq
b6ffb4478f Update file(s): 2025-06-16 2025-06-16 21:27:39 +02:00
DosX
fa046f036f Update heuristic module 2025-06-16 13:50:20 +03:00
DosX
3845bae797 Update heuristic module 2025-06-16 01:50:15 +03:00
hypn0chka
f40dc670c0 new & update 2025-06-15 19:46:40 +05:00
Kaens
5c575d0309 Update audio.1.sg
MoonBlaster tightened, ImagesMusicSystem fixed
2025-06-15 12:18:53 +02:00
horsicq
23452ba3ec Update file(s): 2025-06-15 2025-06-15 00:52:30 +02:00
horsicq
fa49ab55ba Add new file(s): 2025-06-15 2025-06-15 00:46:14 +02:00
horsicq
b326d8c65b Merge branch 'master' of github.com:horsicq/Detect-It-Easy 2025-06-15 00:42:04 +02:00
horsicq
671184d987 Update file(s): 2025-06-15 2025-06-15 00:03:16 +02:00
Benjamin Funke
3afc70dd26 add more heuristic formats 2025-06-14 19:15:02 +02:00
DosX
2d959b297f db -> db_extra 2025-06-14 18:51:35 +03:00
hypn0chka
a2f5bbe4c8 new & update 2025-06-13 20:41:03 +05:00
Kaens
2878cedb97 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-06-13 10:00:50 +02:00
Kaens
00681b11eb Update archives.1.sg
RAZOR archiver .RZ attributed
2025-06-13 10:00:47 +02:00
horsicq
aca20a0865 Update file(s): 2025-06-13 2025-06-13 07:56:31 +02:00
hypn0chka
c39800edb9 new & update 2025-06-13 00:58:38 +05:00
Kaens
3157d7bc59 -Qt6-related warnings
- Qt6-related warnings about where the variables are defined: dealt away with
 - some bugs fixed
2025-06-12 18:05:18 +02:00
hypn0chka
0caffadd18 new & update 2025-06-12 20:25:04 +05:00
DosX
5034db80b9 dbs_min update 2025-06-11 21:12:56 +03:00
Hors
7639a3cc70
Update update_db.yml 2025-06-11 16:31:01 +02:00
DosX
4cc58e1059 Old media deleted 2025-06-11 17:12:39 +03:00
DosX
a0db835805 Delete old readme 2025-06-11 17:11:51 +03:00
DosX
1d2bf995f5 Mascots deleted & logo moved to /docs 2025-06-11 17:11:38 +03:00
DosX
3365b5e59b new workflow config 2025-06-11 17:10:30 +03:00
DosX
359d53bc74 +vscode config for custom and extra dbs 2025-06-11 17:04:47 +03:00
DosX
512efb30c6 Update archive.gp7bank.1.sg 2025-06-11 17:00:08 +03:00
DosX
d6707ef234 Update __GenericHeuristicAnalysis_By_DosX.7.sg 2025-06-11 17:00:01 +03:00
Kaens
40671bf120 Update archive.gp7bank.1.sg
Slightly renamed, tightened uselessly well :)
2025-06-11 15:31:19 +02:00
DosX
aa12d0cf5b dbs_min update: delete old files 2025-06-11 15:15:18 +03:00
DosX
ce20ac95a2 Update __GenericHeuristicAnalysis_By_DosX.7.sg 2025-06-11 15:12:27 +03:00
DosX
c865941876 dbs_min update 2025-06-11 15:05:37 +03:00
DosX
07321a5dbc Update archive.gp7bank.1.sg 2025-06-11 15:04:25 +03:00
Kaens
e434e05ca4 +Guitar Pro 7 soundbank detection 2025-06-11 12:34:56 +02:00
DosX
6213dd79e7 *.sg -> *.*.sg & refactoring 2025-06-09 19:06:33 +03:00
DosX
a3292ba75b Update README (Cosmetic changes) 2025-06-09 19:00:19 +03:00
DosX
a2063a856d +dbs_min support in db_compress 2025-06-09 18:56:03 +03:00
DosX
3e309d3328 "DIE's signature file" -> "Detect It Easy: detection rule file" 2025-06-09 18:53:59 +03:00
DosX
b504b1e7e0 Update CopyMinder.2.sg 2025-06-09 18:51:46 +03:00
DosX
34638438e4 Update Astral-PE.2.sg 2025-06-09 18:49:44 +03:00
DosX
95a6f6c750 \dbs_min\ generated 2025-06-09 15:13:44 +03:00
DosX
3654249066 New dbs_min generator (Uglify-JS based), terser removed 2025-06-09 15:13:24 +03:00
DosX
0d5d8d2aa6 Update archive.Cab.1.sg 2025-06-09 14:51:41 +03:00
DosX
54cd5227ba -\dbs_min\ 2025-06-09 14:35:24 +03:00
DosX
6dd1631848 \dbs_min\ generated 2025-06-09 01:40:51 +03:00
DosX
9ce80912e2 +node_modules for dbs_min script 2025-06-09 01:40:12 +03:00
DosX
0d87c69c8b +dbs_min 2025-06-09 01:36:57 +03:00
DosX
6d37d64843 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-06-09 01:17:07 +03:00
DosX
8cb6f61aaf *.sg -> *.*.sg 2025-06-09 01:17:05 +03:00
hypn0chka
b03fc3ba47 duplicate with Shadow_COM_encryptor.2.sg 2025-06-08 18:24:28 +05:00
DosX
73a17089a7 Update __GenericHeuristicAnalysis_By_DosX.7.sg 2025-06-08 15:54:26 +03:00
DosX
9ab3bd095a Update __GenericHeuristicAnalysis_By_DosX.7.sg 2025-06-08 15:46:46 +03:00
DosX
d60481f474 Heuristic module update (Empty IAT directory RVA from IMAGE_DIRECTORY_ENTRIES detection) 2025-06-08 15:40:09 +03:00
Benjamin Funke
329bd987db add new signatures 2025-06-07 21:07:47 +02:00
DosX
fcb88df568 Update archive.XZP.1.sg 2025-06-06 07:55:01 +03:00
Benjamin Funke
82d0600cc5 add more signatures 2025-06-05 21:52:21 +02:00
Benjamin Funke
cd1aa36c6b
update Detect It Easy version to 3.11 2025-06-05 01:25:57 +02:00
Benjamin Funke
7ec298eb5b add new signatures 2025-06-04 16:07:10 +02:00
DosX
5782b026f1 Heuristic module update, RWX detection added 2025-06-04 15:58:50 +03:00
DosX
2ed1d209eb - 2025-06-04 15:13:54 +03:00
Benjamin Funke
41cb52eb43 add new heur signature 2025-06-04 11:07:41 +02:00
Kaens
df5e077485 *db/read *audio.1.sg
- once again reverting the db/read autoformatting;
- audio.1.sg: Imago Orpheus .IMG rewritten, info-ed more and ripper-ready
2025-06-04 01:57:54 +02:00
horsicq
b14ddb98be Add new file(s): 2025-06-04 2025-06-04 00:54:50 +02:00
Benjamin Funke
b66f9bff27
add new signatures (#296) 2025-06-03 23:21:29 +02:00
DosX
229ec44faf Update srdi-monoxgas.1.sg 2025-06-03 19:10:00 +03:00
horsicq
6c3076c647 Merge branch 'master' of github.com:horsicq/Detect-It-Easy 2025-06-02 19:18:40 +02:00
horsicq
0a154720d4 Add new file(s): 2025-06-02 2025-06-02 19:08:41 +02:00
horsicq
dbf8ca078a Update file(s): 2025-06-02 2025-06-02 19:08:40 +02:00
hypn0chka
a9f056ebfa speed-up 2025-06-02 21:53:22 +05:00
hypn0chka
94f9024e28 new & update 2025-06-02 19:54:15 +05:00
DosX
24d42c5a53 - 2025-06-02 17:18:57 +03:00
hypn0chka
043e0fee4e new & update 2025-06-02 00:15:35 +05:00
hypn0chka
fd78b2ced7 update 2025-06-01 21:22:42 +05:00
DosX
965806ea8e Update read 2025-06-01 16:15:10 +03:00
Kaens
478f8158a1 +findMultipe
- db/read now has the findMultiple function

- some debug info removed by default
2025-05-31 19:45:40 +02:00
Kaens
8ce0a26212 Update bytecodeparsers
- O: a fringe case covered. rare bug fixed, debug mode off
2025-05-31 01:43:14 +02:00
Kaens
d7bb53e74b *audio1sg
See audio1sg updates
2025-05-30 21:42:29 +02:00
Kaens
c689e4e17b +bytecodeparsers *soundchips *_init
- db/soundchips is going to be just a database of sorts
 - db/bytecodeparsers created with the explicit purpose of handling bytecode parsing needed for the detections of some tougher stuff.
Has a uniform syntax.
Currently hosts MUAP98 and MXDRV parsers.

 - db/_init now has Number.prototype.clamp() as in C++
2025-05-30 21:36:31 +02:00
DosX
9645df70cd " " -> "_" 2025-05-29 21:08:49 +03:00
DosX
e46563bb51 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-05-29 21:07:40 +03:00
DosX
f3da881540 Delete GFIDS.2.sg 2025-05-29 21:07:38 +03:00
hypn0chka
e6844d09a6 new & update 2025-05-29 23:07:28 +05:00
hypn0chka
c66b6a5720 new & update 2025-05-29 19:21:45 +05:00
DosX
3f105f7549 Database update 2025-05-29 16:04:06 +03:00
horsicq
f38545df5c Add new file(s): 2025-05-28 2025-05-28 08:43:54 +02:00
horsicq
af8ceb382a Merge branch 'master' of github.com:horsicq/Detect-It-Easy 2025-05-24 13:12:12 +02:00
horsicq
20bc661229 Update file(s): 2025-05-24 2025-05-24 12:04:32 +02:00
DosX
1dea8b9aca Database update 2025-05-23 23:02:26 +03:00
DosX
433aeaf94d Update Denuvo.2.sg 2025-05-23 22:57:28 +03:00
DosX
f626eb6036 Database update 2025-05-23 22:56:36 +03:00
horsicq
3fea82a924 Update file(s): 2025-05-22 2025-05-22 05:15:39 +02:00
horsicq
33aa2b0bc9 Add new file(s): 2025-05-21 2025-05-21 21:47:02 +02:00
horsicq
ccb5df121c Update file(s): 2025-05-21 2025-05-21 21:47:01 +02:00
horsicq
73c877f278 Update file(s): 2025-05-21 2025-05-21 08:08:52 +02:00
DosX
21919c85ea
Merge pull request #293 from packmad/master
Dockerfile updated
2025-05-20 17:31:00 +03:00
Hors
72ecdceccd
Merge branch 'master' into master 2025-05-20 10:23:03 +02:00
horsicq
1d83ae2ce7 Add new file(s): 2025-05-20 2025-05-20 00:14:47 +02:00
horsicq
0586f0a39b Update file(s): 2025-05-20 2025-05-20 00:14:46 +02:00
DosX
203b7d9139
Merge pull request #292 from im-overlord04/docker-update-3.10
updated Dockerfile with DiE 3.10
2025-05-20 00:40:10 +03:00
Kaens
b471634e26 *audio1sg +db/soundchips
- db/soundchips added as the go-to place containing all big chiptune-related stuff
 - audio1sg updated, see its homepage
2025-05-19 18:31:20 +02:00
packmad
2c2153ee08 Dockerfile updated 2025-05-19 15:14:13 +02:00
Antonino Vitale
eb43a67881
typos 2025-05-19 14:48:01 +02:00
im-overlord04
65e430af59 updated Dockerfile with DiE 3.10 2025-05-19 14:37:55 +02:00
DosX
a55feecd9c
Merge pull request #291 from BJNFNE/ubuntu-2504
upgrade ubuntu version number to 25.04
2025-05-19 07:46:19 +03:00
horsicq
911e97057a Update file(s): 2025-05-18 2025-05-18 01:26:36 +02:00
horsicq
26002f7755 Merge branch 'master' of github.com:horsicq/Detect-It-Easy 2025-05-18 01:21:20 +02:00
horsicq
b71e9cb880 Add new file(s): 2025-05-18 2025-05-18 01:12:07 +02:00
horsicq
da20fc4b54 Update file(s): 2025-05-18 2025-05-18 01:12:06 +02:00
Benjamin Funke
df58d2e6e9 improve Detect It Easy 2025-05-17 18:40:12 +02:00
horsicq
cbd846efe9 Update file(s): 2025-05-16 2025-05-16 23:54:52 +02:00
horsicq
131dcd140e Update file(s): 2025-05-16 2025-05-16 05:13:08 +02:00
DosX
9476f23c29 Database review 2025-05-15 21:34:36 +03:00
DosX
288c98e509
Merge pull request #283 from BJNFNE/die-310
sync Detect It Easy version for portable version
2025-05-15 12:02:31 +03:00
DosX
a16d31ca08
Merge pull request #285 from BJNFNE/daa-implementation
implement DAA signature
2025-05-15 10:27:27 +03:00
DosX
54fe613a42
Merge pull request #286 from BJNFNE/gfids
add WIP GFIDS script
2025-05-15 10:25:15 +03:00
horsicq
de82d05dfb Update file(s): 2025-05-15 2025-05-15 07:45:26 +02:00
horsicq
cb2d07f8f9 Update file(s): 2025-05-15 2025-05-15 07:35:29 +02:00
Kaens
641de032b6 +ADX +AHX *read
- CRI Middleware's .ADX/.ADP/.AHX refactored out, better info-ed, AHX ripper-ready
 - db/read documented another bit, constants added, descriptions fixed, sOption and sOptionT now accept an optional separator string
2025-05-14 18:33:22 +02:00
horsicq
c2541939f3 Add new file(s): 2025-05-14 2025-05-14 17:49:37 +02:00
horsicq
68d86e3a83 Update file(s): 2025-05-14 2025-05-14 17:49:35 +02:00
horsicq
1f24406cca Merge branch 'master' of github.com:horsicq/Detect-It-Easy 2025-05-13 21:47:10 +02:00
horsicq
a55131f895 Update file(s): 2025-05-13 2025-05-13 21:04:35 +02:00
DosX
8687e906eb
Merge pull request #288 from BJNFNE/msys2-new
add MSYS2/MinGW as compile option
2025-05-13 21:32:05 +03:00
Benjamin Funke
8c5e5249eb add MSYS2/MinGW as compile option 2025-05-13 09:38:53 +02:00
Benjamin Funke
81e5b095e7 add WIP GFIDS script
May fixes #47
2025-05-12 17:45:03 +02:00
Benjamin Funke
8fb7c8e347 implement DAA signature
Fixes #45
2025-05-12 11:30:31 +02:00
Benjamin Funke
5f62e9c42e sync Detect It Easy version for portable version
fixed my 3.09 > 3.10 typo
2025-05-12 10:38:42 +02:00
DosX
acb7bd1c82
Merge pull request #284 from BJNFNE/die_version_txt
update DiE version in die_version.txt
2025-05-12 11:20:19 +03:00
DosX
c3037b94e3
Merge pull request #282 from BJNFNE/signature
implement more signatures
2025-05-12 11:19:13 +03:00
Benjamin Funke
b55a21bdc9
update DiE version in die_version.txt 2025-05-12 09:33:08 +02:00
Benjamin Funke
01a1151178 implement new signatures 2025-05-11 20:09:23 +02:00
Benjamin Funke
c2d82ab99b add article where ASAR is used with DiE 2025-05-11 20:09:23 +02:00
Benjamin Funke
6348f920a6 implement WebAssembly script
Fixes #249
2025-05-11 14:07:39 +02:00
Benjamin Funke
f4f7b1760e remove old comments 2025-05-10 22:18:48 +02:00
DosX
86816cf599
Merge pull request #281 from BJNFNE/implement
add new signatures
2025-05-10 17:46:42 +03:00
DosX
f6defc9372
Merge pull request #280 from BJNFNE/fr0stb1rd-1
mention fr0stb1rd blogpost aswell to build instructions
2025-05-10 17:45:52 +03:00
Benjamin Funke
98eb5b4920 add new signatures 2025-05-10 14:49:37 +02:00
Benjamin Funke
cbf9b45fda remove bDetected for false in STK script 2025-05-10 14:49:37 +02:00
Benjamin Funke
510e815c9f
mention fr0stb1rd blogpost aswell to build instructions 2025-05-10 13:15:36 +02:00
DosX
d6ad5f795a
Merge pull request #277 from BJNFNE/signature
add new signature
2025-05-10 12:26:24 +03:00
DosX
75164a78d5
Merge pull request #278 from b1rdfr0st/master
add youtube tutorial for debian building
2025-05-10 12:24:20 +03:00
fr0stb1rd
ea0556db4b
add youtube tutorial for debian building 2025-05-10 03:09:42 +03:00
Benjamin Funke
70ffbcf98b add new signature 2025-05-09 20:00:14 +02:00
Kaens
6d11aae91c Update audio.EXA.sg
Electronic Arts EX-XA infoed more
2025-05-09 16:22:09 +02:00
Kaens
c82f8e16cb +Electronic Arts EX-XA stream 2025-05-09 00:53:24 +02:00
Kaens
7b962855c4 Renderware .COL now handles very short entity names. 2025-05-08 11:09:36 +02:00
Kaens
3a7f4a4fba +BCWAV *COL
- Nintendo Binary CTR Wave audio .BCWAV added, info-ed & ripper-ready
 - Criterion's RenderWare collision data .COL redone, info-ed. Ripper-ready if such a weird situation were ever to occur.
2025-05-08 10:45:20 +02:00
Kaens
189cbaa800 db/read fixed up for Qt6
During testing with Qt6, made read more compatible with both 5 and 6.
2025-05-07 17:57:17 +02:00
Kaens
bc89c42e01 Replaces BCSAR, *BCSTM
- Nintendo .BCSAR redone: attributed, tight, has info & ripper-ready
 - BCSTM fixed up to foresee the possible big-endian resources (I got nothing to test that on)
2025-05-07 13:07:22 +02:00
Kaens
f27b401713 leftover readU8Array cleanup
Oopsie! NOW everything uses readBytes.
2025-05-07 12:28:22 +02:00
Kaens
4197c5db74 Replaces audio.BCSTM.1.sg
Redone: tight, info-ed & ripper-ready
2025-05-07 09:58:09 +02:00
DosX
404cb6382f Update __GenericHeuristicAnalysis_By_DosX.7.sg 2025-05-06 22:09:05 +03:00
DosX
aa655dce45 Database update 2025-05-06 21:24:51 +03:00
DosX
eedc5f7a0e
Merge pull request #276 from BJNFNE/database
implement new signature
2025-05-06 21:15:19 +03:00
Benjamin Funke
6278b690b9 add new signatures 2025-05-06 18:54:48 +02:00
Benjamin Funke
164be45bec add links to scripts 2025-05-06 18:54:48 +02:00
Kaens
30e0d942f7 1st line & detect() syntax unified across Binary, explicit "read" imports gone, -readU8Array +FLAC +AmigaIcon *GuitarPro -js detection of Mach-O
- all scripts in db/Binary now begin with "// Detect It Easy: detection rule file", and the detect() and result() now just have empty parentheses as per the modern syntax;
 - since _init now imports "read" for everything, all explicit imports removed from the scripts in Binary;
 - now that Binary.readBytes works as intended, the provisory readU8Array removed;
 - FLAC and AmigaIcon added with much detail;
 - flac and dbf extension-based heuristics removed;
 - some of the more obscure GuitarPro files are now detected with more stability and share some info (WIP);
 - Universal Binary is fully replaced by DIE's dedicated code so it's gone;
 - the funSampleName in db/read grew another bit;
 - your usual bloated audio.1.sg update's here too (Kaens/audio1sg history has the deets)
 - other small fixes
2025-05-06 17:36:40 +02:00
Kaens
0c3ceeeb22 Delete bin.WAD.1.sg
The detection was done more thoroughly and with more info in rom.1.sg
2025-05-06 16:13:09 +02:00
Kaens
9226c34c09 read:+funSampleName *_init
_init:
 - there's no reason to String() when you can just "";
 - "append" String proto extension got a proper description and a more intuitive length check;
 - other small stuff
2025-05-06 15:47:30 +02:00
DosX
16c54e093a Update read 2025-05-04 17:14:26 +03:00
DosX
8d698127b0 Update MinGW.4.sg 2025-05-04 17:13:08 +03:00
DosX
1c723f1a74 Script formatted 2025-05-04 17:02:28 +03:00
Benjamin Funke
aac95b0021 cleanup some of my scripts 2025-05-03 08:44:57 +02:00
horsicq
6691b007a2 Update file(s): 2025-05-02 2025-05-02 19:42:08 +02:00
DosX
57113065f8 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-05-02 17:31:16 +03:00
DosX
5f44625cbe Update AutorunProEnterpriseII.1.sg 2025-05-02 17:31:13 +03:00
Kaens
50f0fe7ce4 Update read
- more constants are declared as such
 - the ZX Spectrum characters fixed up
 - findGaps bugfixed
2025-05-02 10:44:33 +02:00
Hors
010c061078
Merge pull request #273 from BJNFNE/format
implement new signatures
2025-05-02 09:05:02 +02:00
Hors
76fcea44a2
Merge pull request #274 from merces/master
MinGW signature fix and improvements
2025-05-02 09:03:48 +02:00
merces
5055762f32 MinGW signature fix improvements 2025-05-01 23:15:42 -03:00
horsicq
0d4f95de6a Update file(s): 2025-05-01 2025-05-01 23:50:56 +02:00
horsicq
9420983400 Update file(s): 2025-05-01 2025-05-01 23:45:02 +02:00
horsicq
a60835a38e Update file(s): 2025-05-01 2025-05-01 23:31:56 +02:00
horsicq
afab8810d0 Update file(s): 2025-05-01 2025-05-01 23:20:19 +02:00
horsicq
5ab9bf2329 Update file(s): 2025-05-01 2025-05-01 19:37:47 +02:00
horsicq
4d4f189136 Update file(s): 2025-05-01 2025-05-01 19:08:14 +02:00
horsicq
0d8bc5b0d1 Add new file(s): 2025-04-30 2025-04-30 23:42:59 +02:00
horsicq
d5ff2ab0c8 Update file(s): 2025-04-30 2025-04-30 23:42:58 +02:00
horsicq
a1a7ee57e8 Add new file(s): 2025-04-29 2025-04-29 23:57:54 +02:00
horsicq
29b122c909 Update file(s): 2025-04-29 2025-04-29 23:57:52 +02:00
Kae
d5bf2b8e6b
Update bin.XEX.1.sg
description moved to sName, commentary tidied up
2025-04-29 17:15:28 +02:00
Kae
e2ef247d06
Update bin.XBE.1.sg
description moved to sName, commentary tidied up
2025-04-29 17:14:28 +02:00
Kae
1cfcf32b4a
Update bin.MDS.1.sg
Tightened a little
2025-04-29 16:45:15 +02:00
DosX
083f8edc2b Update javascript-obfuscator.2.sg 2025-04-28 16:38:42 +03:00
DosX
0bdcd3979f Update text.plaintext.3.sg 2025-04-28 16:13:00 +03:00
DosX
f62f395fd0 +javascript-obfuscator 2025-04-28 13:50:40 +03:00
DosX
458a89efa9 Update __MiniExtensionsHeuristic_By_DosX.7.sg 2025-04-28 13:50:24 +03:00
Benjamin Funke
2b5fe7db0d implement new signatures 2025-04-27 18:44:22 +02:00
DosX
85c936d95f Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-04-27 15:28:12 +03:00
DosX
d6245424de Update __GenericHeuristicAnalysis_By_DosX.7.sg 2025-04-27 15:28:08 +03:00
DosX
f973dd7caf
Merge pull request #272 from BJNFNE/formats
implement new signatures
2025-04-27 13:55:04 +03:00
Benjamin Funke
da7c51654d implement new signatures 2025-04-27 10:42:20 +02:00
horsicq
d35fa9aa77 Update file(s): 2025-04-27 2025-04-27 02:41:59 +02:00
horsicq
4ef59c3219 Update file(s): 2025-04-27 2025-04-27 00:11:22 +02:00
DosX
cfcbcadf19 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-04-21 14:56:25 +03:00
DosX
aa74822f98 Update AutorunProEnterpriseII.1.sg 2025-04-21 14:56:24 +03:00
Kaens
e5f190cf20 Update bin.PalmFile.1.sg
An attempt to tighten the detection.
Also, it now starts with a check to ensure it's not a .S98 — too many FPs 👽
2025-04-16 22:34:42 +02:00
horsicq
04f12d2354 Add new file(s): 2025-04-16 2025-04-16 19:06:51 +02:00
horsicq
60c0db2817 Update file(s): 2025-04-16 2025-04-16 19:06:50 +02:00
horsicq
551ad6095e Merge branch 'master' of github.com:horsicq/Detect-It-Easy 2025-04-15 20:48:14 +02:00
DosX
2eaf124bf3
Merge pull request #270 from BJNFNE/gameformats
add more signatures
2025-04-15 20:52:39 +03:00
horsicq
f0aa027c29 Update file(s): 2025-04-15 2025-04-15 19:22:10 +02:00
Benjamin Funke
3846e960c0 add more signatures 2025-04-15 18:05:19 +02:00
DosX
936e541659 LDC review 2025-04-14 18:55:52 +03:00
DosX
c98ac2a5f7 - 2025-04-14 18:55:37 +03:00
DosX
b9caa5d339 Code review 2025-04-14 00:31:53 +03:00
DosX
68770dae23 Update LCL.5.sg 2025-04-14 00:18:38 +03:00
DosX
e0f080554b Update _debug 2025-04-14 00:17:08 +03:00
DosX
0ab6f655df Update _init 2025-04-14 00:14:14 +03:00
DosX
4cbd5b08f4 New .NET libraries 2025-04-09 22:03:53 +03:00
DosX
8e69deb10d First the name is written, then the format information 2025-04-09 20:59:04 +03:00
DosX
6e7cb935fd Update __MiniExtensionsHeuristic_By_DosX.7.sg 2025-04-09 20:52:00 +03:00
DosX
260cb0b123 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-04-09 20:50:38 +03:00
DosX
c6284622a3 Update __GenericHeuristicAnalysis_By_DosX.7.sg 2025-04-09 20:50:36 +03:00
DosX
b64a4c3ca4
Merge pull request #269 from BJNFNE/newformats
implement JAM script
2025-04-09 08:27:18 +03:00
Benjamin Funke
280576603a implement JAM script 2025-04-09 07:25:39 +02:00
horsicq
33f0544ab7 Update file(s): 2025-04-09 2025-04-09 06:50:51 +02:00
Kaens
3515c86b63 Update image.TGA.1.sg
- even more sanity checks, one fixed; modernised return result()
2025-04-07 16:38:17 +02:00
Kaens
16499cb9f5 Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-04-07 15:19:32 +02:00
Kaens
585c000901 Update image.PCX.1.sg
- PCX now doesn't have a potentially undeclared variable;
 - it's rewritten with shorthand;
 - more suspicion-based checks;
 - I finally tested a non-RLE PCX, it's all good :D
2025-04-07 15:19:29 +02:00
DosX
6a0abe9dd9
Merge pull request #268 from BJNFNE/formats
implement W3D script
2025-04-07 12:41:14 +03:00
Benjamin Funke
08a2936d16 implement W3D script 2025-04-07 09:31:46 +02:00
DosX
01318c084f
Merge pull request #267 from BJNFNE/detection
add more signatures
2025-04-06 20:14:19 +03:00
Benjamin Funke
123a9326a6 Heur update & New rules added 2025-04-06 19:13:51 +02:00
DosX
58651ed30c
Merge pull request #266 from BJNFNE/improvements
remove comments
2025-04-05 21:57:14 +03:00
Benjamin Funke
1b0794be23 remove comments 2025-04-04 17:57:18 +02:00
DosX
30534bfeea
Merge pull request #265 from BJNFNE/formats
implement new signatures
2025-04-04 14:29:02 +03:00
Benjamin Funke
1d0672a1ec
remove irrelevant comments 2025-04-04 07:56:57 +02:00
DosX
3f9624429b PDB detection fix 2025-04-04 00:26:43 +03:00
DosX
8a06bc15d6 New DB caching engine (beta!) 2025-04-01 14:49:38 +03:00
DosX
4312ace55d Merge branch 'master' of https://github.com/horsicq/Detect-It-Easy 2025-04-01 14:25:43 +03:00
DosX
0494019654 Update __GenericHeuristicAnalysis_By_DosX.7.sg 2025-04-01 14:25:41 +03:00
horsicq
6a09071199 Update file(s): 2025-04-01 2025-04-01 02:43:09 +02:00
Kaens
386a8c4187 *db/read *db/chunkparsers
read:
 - ATASCII and a couple of its options added (gods I should stop it with the hacking in of things)
 - the more narrow side trianglies I used to be using for some reason are now proper side trianglies. I hate that Github is showing some of these characters on blue square background, they've been around since long before unicode existed...

chunkparsers:
 - Atari binary detection can now start from a user-specified offset. Obvious stuff...
2025-03-31 19:04:07 +02:00
Benjamin Funke
874e240010 add more heuristic formats 2025-03-31 13:47:29 +02:00
Benjamin Funke
d6d120d5ad implement BIK script 2025-03-31 10:43:18 +02:00
DosX
ff878d8be3 No comments 2025-03-30 23:11:55 +03:00
DosX
33e06967cf
Merge pull request #264 from BJNFNE/3ds
implement new signatures
2025-03-30 23:09:43 +03:00
Benjamin Funke
f969325afc add heuristic 3DS formats 2025-03-30 17:41:31 +02:00
Benjamin Funke
29473c471d add ICN script 2025-03-30 17:09:34 +02:00
Benjamin Funke
47a14f6843 add VTF script 2025-03-30 14:41:55 +02:00
Benjamin Funke
98944f66f4 add BTF script 2025-03-30 14:40:34 +02:00
Benjamin Funke
59b7636a73 add SHBIN script 2025-03-30 11:32:38 +02:00
Benjamin Funke
1915ee5409 add BCSAR script 2025-03-30 11:28:32 +02:00
Benjamin Funke
449fc63a4e add BCSTM script 2025-03-30 11:24:52 +02:00
horsicq
22535227ef Add new file(s): 2025-03-30 2025-03-30 01:02:26 +01:00
horsicq
a0f9cf41f5 Add new file(s): 2025-03-29 2025-03-29 03:17:11 +01:00
DosX
8180781955
Merge pull request #263 from BJNFNE/signature
add new signatures
2025-03-28 22:35:57 +03:00
Benjamin Funke
8a6a3bc7ab add more formats to heuristic script 2025-03-28 16:15:55 +01:00
Benjamin Funke
c1f8f840b9 add CKP script 2025-03-28 15:47:53 +01:00
Benjamin Funke
caf0c288b9 add EDP script 2025-03-28 15:47:53 +01:00
Kaens
02ba4c0e70 *db/read +db/chunkparsers
db/read:
 - since File.readBytes is temporarily down, there's now a replacement for it in there;
 - all affected files also modified

db/chunkparsers:
 - I'm now collecting the chunked file structure parsers into this one cute file. They're supposed to quickly go through some common blocks, gathering the types, data offsets, data sizes (or whatever else would be necessary otherwise) and guessing the correct expected file size and reporting it too
2025-03-28 15:19:54 +01:00
horsicq
7dfe3c4ee8 Update file(s): 2025-03-28 2025-03-28 02:58:59 +01:00
DosX
56e42861bb Update PROTECT.2.sg 2025-03-28 00:15:47 +03:00
DosX
fb90f590ac Update Astral-PE.2.sg 2025-03-27 23:03:23 +03:00
DosX
d197376ac5 Create Astral-PE.2.sg 2025-03-26 22:44:10 +03:00
DosX
674debdeb1
Merge pull request #262 from BJNFNE/formats
add new formats
2025-03-26 22:32:10 +03:00
DosX
1e632ac508 Delete AssemblyInvoke.2.sg 2025-03-26 18:39:53 +03:00
Benjamin Funke
feabdf52a0 add FSH script 2025-03-26 13:39:29 +01:00
DosX
1713908c3e Update Rust.4.sg 2025-03-26 13:37:17 +03:00
Benjamin Funke
8d6685abaf add PAT script 2025-03-26 08:48:54 +01:00
DosX
109a7a3757
Merge pull request #261 from BJNFNE/tw99
add FFN format
2025-03-26 10:09:28 +03:00
Benjamin Funke
3816e6e44c add FFN format 2025-03-26 07:58:50 +01:00
Hors
452ad24715
Update README.md 2025-03-25 15:45:24 +01:00
Hors
275108b8d6
Update README.md 2025-03-25 15:44:26 +01:00
Hors
704fc6f45a
Update create_beta.yml 2025-03-25 15:01:16 +01:00
Hors
955f22ebf2
Update create_beta.yml 2025-03-25 11:10:39 +01:00
Hors
4943442bf5
Update create_beta.yml 2025-03-25 11:08:36 +01:00
Hors
c86f288420
Update create_beta.yml 2025-03-25 10:55:26 +01:00
Hors
09f0107799
Update create_beta.yml 2025-03-25 10:51:44 +01:00
6389 changed files with 280549 additions and 54917 deletions

View file

@ -8,11 +8,6 @@ on:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
env:
SRC_PATH: ${{ github.workspace }}/src
SRC_PATH_WIN: ${{ github.workspace }}\src
RELEASE_PATH: ${{ github.workspace }}/src/release
# the jobs are based on these notes:
# https://github.com/horsicq/Detect-It-Easy/blob/master/docs/BUILD.md
jobs:
@ -20,27 +15,21 @@ jobs:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
path: ${{ env.SRC_PATH }}
# Clone Detect-It-Easy repository
- name: Clone Detect-It-Easy
run: |
git clone --recursive https://github.com/horsicq/DIE-engine die_source
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install qtbase5-dev qtscript5-dev qttools5-dev-tools libqt5svg5-dev qtchooser qt5-qmake build-essential -y
- name: Build
working-directory: ${{ env.SRC_PATH }}
run: |
cd die_source
bash -x build_dpkg.sh
- name: Upload Release as Artifact
if: github.event_name != 'release'
uses: actions/upload-artifact@v4
with:
name: ubuntu24-artifact
path: |
${{ env.RELEASE_PATH }}/*.deb
- name: Upload Release as Download
if: github.event_name == 'release'
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
@ -50,258 +39,5 @@ jobs:
draft: false
prerelease: true
files: |
${{ env.RELEASE_PATH }}/*.deb
${{ github.workspace }}/die_source/release/*.deb
build-ubuntu-24-arm:
runs-on: ubuntu-24.04-arm
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
path: ${{ env.SRC_PATH }}
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install qtbase5-dev qtscript5-dev qttools5-dev-tools libqt5svg5-dev qtchooser qt5-qmake build-essential -y
- name: Build
working-directory: ${{ env.SRC_PATH }}
run: |
bash -x build_dpkg.sh
- name: Upload Release as Artifact
if: github.event_name != 'release'
uses: actions/upload-artifact@v4
with:
name: ubuntu24-arm-artifact
path: |
${{ env.RELEASE_PATH }}/*.deb
- name: Upload Release as Download
if: github.event_name == 'release'
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
with:
tag_name: Beta
release_name: Beta
draft: false
prerelease: true
files: |
${{ env.RELEASE_PATH }}/*.deb
build-ubuntu-22:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
path: ${{ env.SRC_PATH }}
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install qtbase5-dev qtscript5-dev qttools5-dev-tools libqt5svg5-dev qtchooser qt5-qmake build-essential -y
- name: Build
working-directory: ${{ env.SRC_PATH }}
run: |
bash -x build_dpkg.sh
- name: Upload Release as Artifact
if: github.event_name != 'release'
uses: actions/upload-artifact@v4
with:
name: ubuntu22-artifact
path: |
${{ env.RELEASE_PATH }}/*.deb
- name: Upload Release as Download
if: github.event_name == 'release'
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
with:
tag_name: Beta
release_name: Beta
draft: false
prerelease: true
files: |
${{ env.RELEASE_PATH }}/*.deb
build-ubuntu-20:
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
path: ${{ env.SRC_PATH }}
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install qtbase5-dev qtscript5-dev qttools5-dev-tools libqt5svg5-dev qt5-default build-essential -y
- name: Build
working-directory: ${{ env.SRC_PATH }}
run: |
bash -x build_dpkg.sh
- name: Upload Release as Artifact
if: github.event_name != 'release'
uses: actions/upload-artifact@v4
with:
name: ubuntu20-artifact
path: |
${{ env.RELEASE_PATH }}/*.deb
- name: Upload Release as Download
if: github.event_name == 'release'
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
with:
tag_name: Beta
release_name: Beta
draft: false
prerelease: true
files: |
${{ env.RELEASE_PATH }}/*.deb
build-windows-32:
runs-on: windows-2019
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
path: ${{ env.SRC_PATH }}
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v2
with:
msbuild-architecture: x86
vs-version: '[16.0,17.0)'
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
version: '5.15.2'
host: 'windows'
target: 'desktop'
arch: 'win32_msvc2019'
dir: ${{ github.workspace }}
modules: qtscript
- name: Build
shell: cmd
working-directory: ${{ env.SRC_PATH }}
run: |
set VSVARS_PATH="C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars32.bat"
set QMAKE_PATH="${{ github.workspace }}\Qt\5.15.2\msvc2019\bin\qmake.exe"
set SEVENZIP_PATH="C:\Program Files\7-Zip\7z.exe"
set INNOSETUP_PATH="C:\Program Files (x86)\Inno Setup 6\ISCC.exe"
set X_BUILD_NAME=die
set X_BUILD_PREFIX=win32
set X_SOURCE_PATH=${{ env.SRC_PATH_WIN }}
for /f "delims=" %%x in ('type "%X_SOURCE_PATH%\release_version.txt"') do set X_RELEASE_VERSION=%%x
echo on
call "%X_SOURCE_PATH%\build_win_generic_check.cmd"
dir "%X_SOURCE_PATH%\release\*.zip" >nul 2>&1
if %ERRORLEVEL% neq 0 (
echo "ZIP file does not exist"
exit /b 1
)
- name: Upload Release as Artifact
if: github.event_name != 'release'
uses: actions/upload-artifact@v4
with:
name: windows32-artifact
path: |
${{ env.RELEASE_PATH }}/*.zip
- name: Upload Release as Download
if: github.event_name == 'release'
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
with:
tag_name: Beta
release_name: Beta
draft: false
prerelease: true
files: |
${{ env.RELEASE_PATH }}/*.zip
build-windows-64:
runs-on: windows-2019
steps:
- uses: actions/checkout@v4
with:
submodules: 'recursive'
path: ${{ env.SRC_PATH }}
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v2
with:
msbuild-architecture: x64
vs-version: '[16.0,17.0)'
- name: Install Qt
uses: jurplel/install-qt-action@v4
with:
version: '5.15.2'
host: 'windows'
target: 'desktop'
arch: 'win64_msvc2019_64'
dir: ${{ github.workspace }}
modules: qtscript
- name: Build
shell: cmd
working-directory: ${{ env.SRC_PATH }}
run: |
set VSVARS_PATH="C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvars64.bat"
set QMAKE_PATH="${{ github.workspace }}\Qt\5.15.2\msvc2019_64\bin\qmake.exe"
set SEVENZIP_PATH="C:\Program Files\7-Zip\7z.exe"
set INNOSETUP_PATH="C:\Program Files (x86)\Inno Setup 6\ISCC.exe"
set X_BUILD_NAME=die
set X_BUILD_PREFIX=win64
set X_SOURCE_PATH=${{ env.SRC_PATH_WIN }}
for /f "delims=" %%x in ('type "%X_SOURCE_PATH%\release_version.txt"') do set X_RELEASE_VERSION=%%x
echo on
call "%X_SOURCE_PATH%\build_win_generic_check.cmd"
dir "%X_SOURCE_PATH%\release\*.zip" >nul 2>&1
if %ERRORLEVEL% neq 0 (
echo "ZIP file does not exist"
exit /b 1
)
- name: Upload Release as Artifact
if: github.event_name != 'release'
uses: actions/upload-artifact@v4
with:
name: windows64-artifact
path: |
${{ env.RELEASE_PATH }}/*.zip
- name: Upload Release as Download
if: github.event_name == 'release'
uses: softprops/action-gh-release@v2
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
with:
tag_name: Beta
release_name: Beta
draft: false
prerelease: true
files: |
${{ env.RELEASE_PATH }}/*.zip
# build-osx:
# runs-on: macos-latest
# steps:
# - uses: actions/checkout@v4
# with:
# submodules: 'recursive'
# path: ${{ env.SRC_PATH }}
# - name: Install Qt
# uses: jurplel/install-qt-action@v4
# with:
# version: '5.15.2'
# host: 'mac'
# target: 'desktop'
# arch: 'clang_64'
# # I make it match what build_mac.sh expects. Although I could also use Qt5_DIR
# #dir: ${{ env.HOME }}
# dir: /Users/runner
# modules: qtscript
# - name: Build
# working-directory: ${{ env.SRC_PATH }}
# run: |
# bash -x build_mac.sh

75
.github/workflows/db-release.yml vendored Executable file
View file

@ -0,0 +1,75 @@
name: DB Release
on:
push:
branches: ["master"]
workflow_dispatch:
jobs:
release:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Clone Detect-It-Easy
run: |
git clone https://github.com/horsicq/Detect-It-Easy DIE
- name: Release db
if: ${{ hashFiles('DIE/db/info.ini') != '' }}
run: |
cd DIE
zip -r ../db.zip db
cd ..
- name: Read db/info.ini
if: ${{ hashFiles('DIE/db/info.ini') != '' }}
id: db_info
run: |
DB_INFO=$(cat DIE/db/info.ini)
echo "DB_INFO<<EOF" >> $GITHUB_OUTPUT
echo "$DB_INFO" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Update db release
if: ${{ hashFiles('DIE/db/info.ini') != '' }}
uses: softprops/action-gh-release@v3
with:
files: db.zip
name: "db"
tag_name: db
body: ${{ steps.db_info.outputs.DB_INFO }}
draft: false
prerelease: true
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
- name: Create db_extra.zip
if: ${{ hashFiles('DIE/db_extra/info.ini') != '' }}
run: |
cd DIE
zip -r ../db_extra.zip db_extra
cd ..
- name: Read db_extra/info.ini
if: ${{ hashFiles('DIE/db_extra/info.ini') != '' }}
id: db_extra_info
run: |
DB_EXTRA_INFO=$(cat DIE/db_extra/info.ini)
echo "DB_EXTRA_INFO<<EOF" >> $GITHUB_OUTPUT
echo "$DB_EXTRA_INFO" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Update db_extra release
if: ${{ hashFiles('DIE/db_extra/info.ini') != '' }}
uses: softprops/action-gh-release@v3
with:
files: db_extra.zip
name: "db_extra"
tag_name: db_extra
body: ${{ steps.db_extra_info.outputs.DB_EXTRA_INFO }}
draft: false
prerelease: true
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}

88
.github/workflows/format-js.yml vendored Normal file
View file

@ -0,0 +1,88 @@
name: Format JavaScript Files
on:
push:
paths:
- 'db/**'
- 'db_custom/**'
- 'db_extra/**'
branches:
- master
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
format:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
token: ${{ secrets. RELEASE_TOKEN }}
- name: Configure git to preserve line endings
run: |
git config --local core.autocrlf false
git config --local core.eol lf
- name: Format JavaScript files in db directories
run: |
find db db_custom db_extra -type f \
! -path '*/.vscode/*' \
! -path '*/_icons/*' \
! -name '*.txt' \
! -name '*.md' \
! -name '*.png' \
! -name '*.ico' \
! -name '*.svg' \
-print0 2>/dev/null | while IFS= read -r -d '' file; do
# Skip files with beautify ignore comment (with or without spaces)
if grep -qE 'beautify ignore:\s*start' "$file" 2>/dev/null; then
echo "Skipping (beautify ignore): $file"
continue
fi
# Check if file contains JavaScript-like syntax
if head -c 1000 "$file" 2>/dev/null | grep -qE '(function|var |if\s*\(|for\s*\(|return |includeScript)'; then
echo "Formatting: $file"
# Save original file for comparison
cp "$file" "$file.orig"
# Remove trailing whitespace only (preserve everything else)
perl -pi -e 's/[ \t]+$//' "$file"
# Convert tabs to 4 spaces
perl -pi -e 's/\t/ /g' "$file"
# If file is unchanged, restore original to avoid any byte differences
if cmp -s "$file" "$file.orig"; then
mv "$file.orig" "$file"
else
rm "$file.orig"
fi
fi
done
- name: Check for changes
id: check_changes
run: |
if git diff --quiet; then
echo "has_changes=false" >> $GITHUB_OUTPUT
else
echo "has_changes=true" >> $GITHUB_OUTPUT
fi
- name: Commit and push changes
if: steps.check_changes.outputs.has_changes == 'true'
run: |
git config --local user.email "github-actions[bot]@users.noreply.github.com"
git config --local user.name "github-actions[bot]"
git add -A
git commit -m "style: auto-format JavaScript files in db directories"
git push

View file

@ -1,83 +1,110 @@
# This is a basic workflow to help you get started with Actions
name: CI
# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the "main" branch
push:
branches: [ "master" ]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v4
# Set git to use CRLF line endings
- name: Configure git CRLF
run: |
git config --global core.autocrlf true
# Clone Detect-It-Easy repository
- name: Clone Detect-It-Easy
run: |
git clone https://github.com/horsicq/Detect-It-Easy DIE
# Create zip archives
- name: Create zip archives
run: |
cd DIE
zip -r ../db.zip db
zip -r ../db_extra.zip db_extra
cd ..
ls -la *.zip # Verify the zip files were created
# Calculate MD5 checksums
- name: Calculate MD5 checksums
id: md5
run: |
DB_MD5=$(md5sum db.zip | awk '{print $1}')
DB_EXTRA_MD5=$(md5sum db_extra.zip | awk '{print $1}')
echo "DB_MD5=$DB_MD5" >> $GITHUB_OUTPUT
echo "DB_EXTRA_MD5=$DB_EXTRA_MD5" >> $GITHUB_OUTPUT
# Get the current date for the update message
- name: Get current date
id: date
run: echo "DATE=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
# Update the "Current database" pre-release
- name: Update Database Release
uses: softprops/action-gh-release@v1
with:
files: |
db.zip
db_extra.zip
name: "Current database"
tag_name: current-database
body: |
# Detect-It-Easy Database Files
Last updated: ${{ steps.date.outputs.DATE }}
This pre-release contains the latest database files from Detect-It-Easy:
- db.zip: Contains main database files
- db_extra.zip: Contains extra database files
### MD5 Checksums
- db.zip: `${{ steps.md5.outputs.DB_MD5 }}`
- db_extra.zip: `${{ steps.md5.outputs.DB_EXTRA_MD5 }}`
draft: false
prerelease: true
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}
# This is a basic workflow to help you get started with Actions
name: CI
# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the "main" branch
push:
branches: ["master"]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
# The type of runner that the job will run on
runs-on: ubuntu-latest
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.13"
# Set git to use CRLF line endings
- name: Configure git CRLF
run: |
git config --global core.autocrlf true
# Clone Detect-It-Easy repository
- name: Clone Detect-It-Easy
run: |
git clone https://github.com/horsicq/Detect-It-Easy DIE
# Create zip archives
- name: Create zip archives
run: |
cd DIE
zip -r ../db.zip db
zip -r ../db_extra.zip db_extra
cd ..
ls -la *.zip # Verify the zip files were created
# Calculate MD5 checksums
- name: Calculate MD5 checksums
id: md5
run: |
DB_MD5=$(md5sum db.zip | awk '{print $1}')
DB_EXTRA_MD5=$(md5sum db_extra.zip | awk '{print $1}')
echo "DB_MD5=$DB_MD5" >> $GITHUB_OUTPUT
echo "DB_EXTRA_MD5=$DB_EXTRA_MD5" >> $GITHUB_OUTPUT
echo "$DB_MD5" >> db.zip.md5
echo "$DB_EXTRA_MD5" >> db_extra.zip.md5
- name: Generate DB Stats
run: |
cd DIE
cd autotools/dbupdater
python --version
python task.py '../../db' > '../../../db_stat.txt'
python task.py '../../db_extra' > '../../../db_extra_stat.txt'
# Get the current date for the update message
- name: Get current date
id: date
run: echo "DATE=$(date +'%Y-%m-%d')" >> $GITHUB_OUTPUT
# Read database stats
- name: Read database stats
id: dbstats
run: |
DB_STATS=$(cat db_stat.txt)
DB_EXTRA_STATS=$(cat db_extra_stat.txt)
echo "DB_STATS<<EOF" >> $GITHUB_OUTPUT
echo "$DB_STATS" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
echo "DB_EXTRA_STATS<<EOF" >> $GITHUB_OUTPUT
echo "$DB_EXTRA_STATS" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
# Update the "Current database" pre-release
- name: Update Database Release
uses: softprops/action-gh-release@v3
with:
files: |
db.zip
db.zip.md5
db_extra.zip
db_extra.zip.md5
name: "Current database"
tag_name: current-database
body: |
- db.zip: `${{ steps.md5.outputs.DB_MD5 }}`
- db_extra.zip: `${{ steps.md5.outputs.DB_EXTRA_MD5 }}`
Last updated: ${{ steps.date.outputs.DATE }}
This pre-release contains the latest database files from Detect-It-Easy:
- db.zip: Contains main database files
${{ steps.dbstats.outputs.DB_STATS }}
- db_extra.zip: Contains extra database files
${{ steps.dbstats.outputs.DB_EXTRA_STATS }}
draft: false
prerelease: true
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_TOKEN }}

4
.gitignore vendored
View file

@ -1 +1,5 @@
DIE-engine
.idea
.compiler_cache
..*
*.die-db

11
.prettierrc Normal file
View file

@ -0,0 +1,11 @@
{
"tabWidth": 4,
"useTabs": false,
"semi": true,
"singleQuote": false,
"printWidth": 80,
"trailingComma": "es5",
"bracketSpacing": true,
"arrowParens": "always",
"endOfLine": "auto"
}

45
CONTRIBUTING.md Normal file
View file

@ -0,0 +1,45 @@
# Contributing to Detect-It-Easy
Welcome in contributing to Detect-It-Easy!
## Ask Questions
Curiosity is key to driving the project forward. If you have questions or ideas for improvement, don't hesitate to reach out. You can start a discussion by [opening a new issue](https://github.com/horsicq/Detect-It-Easy/issues/new).
## How to Report Issues
To report bugs and errors, please [open a new issue](https://github.com/horsicq/Detect-It-Easy/issues/new) on GitHub. Include detailed steps to reproduce the bug, along with any relevant stack traces, error messages, or affected files.
## Feature Requests
If you have ideas for new features or enhancements, feel free to [open a new issue](https://github.com/horsicq/Detect-It-Easy/issues/new) to discuss them. Your input is valuable in shaping the future of the project.
## Coding Standards and Formatting Rules
To maintain code quality and consistency across the project, please adhere to the following guidelines when contributing code:
- **Language and Style**: The project primarily uses DiE-JS. Follow the existing code style.
- **Formatting**: Use consistent indentation (4 spaces, no tabs).
- **Commits**: Write descriptive commit messages. Use the imperative mood (e.g., "Fix bug in file parser" instead of "Fixed bug").
- **Testing**: Include unit tests for new features or bug fixes where applicable. Ensure they are compilable!
## Guidelines for Translations or Code Contributions
We welcome contributions to translations and code to make Detect-It-Easy accessible to a global audience:
- **Translations**: If you'd like to add or update translations, fork the XTranslation repository and work on the relevant language files (typically in the `dicts/` directory). Ensure translations are accurate and culturally appropriate. Test them in the application to verify context. Use poedit for translating languages!
- **Process**: Submit changes via a pull request (see below).
- **Quality**: Proofread your contributions for grammar and clarity. Maintain consistency with the existing tone and style.
## How to Submit Pull Requests
1. Fork the repository on GitHub.
2. Create a new branch for your changes (e.g., `feature/new-detection-rule` or `fix/bug-123`).
3. Make your changes, ensuring they follow the coding standards and guidelines above.
4. Test your changes thoroughly.
5. Commit your changes with a clear, descriptive message.
6. Push your branch to your fork and [open a pull request](https://github.com/horsicq/Detect-It-Easy/compare) against the main branch.
7. In the pull request description, explain what changes you made and why. Reference any related issues.
8. Be responsive to feedback from maintainers and make requested revisions.
Pull requests will be reviewed, and once approved, merged into the project. Thank you for helping improve Detect-It-Easy!

View file

@ -1,11 +1,13 @@
FROM debian:bookworm-slim
FROM ubuntu:24.04
RUN apt update -qq && apt upgrade -y && apt install -y wget tar libglib2.0-0 && \
wget https://github.com/horsicq/DIE-engine/releases/download/3.01/die_lin64_portable_3.01.tar.gz && \
tar -xzf die_lin64_portable_3.01.tar.gz
# Newest version of DIE, check https://github.com/horsicq/DIE-engine/releases .
ARG DIE_VERSION=3.22
RUN apt update -qq && apt upgrade -y && apt install -y wget && \
wget https://github.com/horsicq/DIE-engine/releases/download/Beta/die_${DIE_VERSION}_Ubuntu_24.04_amd64.deb && \
apt install -y ./die_${DIE_VERSION}_Ubuntu_24.04_amd64.deb && \
rm die_${DIE_VERSION}_Ubuntu_24.04_amd64.deb && rm -rf /usr/lib/die/db
# db update
RUN rm -rf /die_lin64_portable/base/db
COPY ./db /die_lin64_portable/base/db
COPY ./db /usr/lib/die/db
ENTRYPOINT ["/die_lin64_portable/diec.sh"]
ENTRYPOINT ["/usr/bin/diec"]

View file

@ -1,6 +1,6 @@
MIT License
Copyright (c) 2012-2025 hors<horsicq@gmail.com>
Copyright (c) 2012-2026 hors<horsicq@gmail.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

147
README.md
View file

@ -1,81 +1,90 @@
# 🔍 Detect It Easy (DiE)
![](docs/logo_text.png)
[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NF3FBD3KHMXDN)
[![GitHub tag (latest SemVer)](https://img.shields.io/github/tag/horsicq/DIE-engine.svg)](http://ntinfo.biz)
[![GitHub All Releases](https://img.shields.io/github/downloads/horsicq/DIE-engine/total.svg)](http://ntinfo.biz)
[![gitlocalized ](https://gitlocalize.com/repo/4736/whole_project/badge.svg)](https://github.com/horsicq/XTranslation)
[![gitlocalized](https://gitlocalize.com/repo/4736/whole_project/badge.svg)](https://github.com/horsicq/XTranslation)
**Detect It Easy (DiE)** is a powerful tool for file type identification, popular among **malware analysts**, **cybersecurity experts**, and **reverse engineers** worldwide. Supporting both **signature-based** and **heuristic analysis**, DiE enables efficient file inspections across a broad range of platforms, including **Windows, Linux, and MacOS**. Its adaptable, script-driven detection architecture makes it one of the most versatile tools in the field, with a comprehensive list of supported OS images.
## 🚀 Getting Started
## 🚀 Getting started
- **[💎 Download release](https://github.com/horsicq/DIE-engine/releases)**
- **[🧪 Download dev/beta](https://github.com/horsicq/Detect-It-Easy/releases/tag/Beta)**
- **[🚀 DIE API Library (for Developers)](https://github.com/horsicq/die_library)**
- [📋 Changelog](https://github.com/horsicq/Detect-It-Easy/blob/master/changelog.txt)
- [💬 Contribute to Translations](https://github.com/horsicq/XTranslation)
- **[💎 Download release/beta](https://github.com/horsicq/DIE-engine/releases)**
- **[🧪 DiE API Library (for Developers)](https://github.com/horsicq/die_library)**
- [📋 Changelog](https://github.com/horsicq/Detect-It-Easy/blob/master/changelog.txt)
- [💬 Contribute to Translations](https://github.com/horsicq/XTranslation)
![Screenshot](docs/1.png)
## 💡 Why Use Detect It Easy?
## 💡 Why use Detect It Easy?
Detect It Easys **flexible signature system** and **scripting capabilities** make it an essential tool for **malware analysis** and **digital forensics**. With traditional static analyzers often limited in scope and prone to false positives, DiEs customizable design enables precise integration of new detection logic, ensuring reliable results across diverse file types.
![Screenshot](docs/2.png)
### Key Advantages:
### Key advantages:
- **Flexible Signature Management**: Easily create, modify, and optimize signatures.
- **Cross-Platform Support**: Runs on Windows, Linux, and MacOS.
- **Minimal False Positives**: Combined signature and heuristic analysis ensures high detection accuracy.
- **Flexible Signature Management**: Easily create, modify, and optimize detection scripts (rules).
- **Cross-Platform Support**: Runs on Windows, Linux, and MacOS.
- **Minimal False Positives**: Combined signature and heuristic analysis ensures high detection accuracy.
## 📄 Supported File Types
## 📄 Supported file types
Detect It Easy supports a wide range of executable and archive types, including:
- **PE** (Portable Executable format for Windows)
- **ELF** (Executable and Linkable Format for Linux)
- **APK** (Android Application Package)
- **IPA** (iOS Application Package)
- **JAR** (Java Archive)
- **ZIP** (Compressed archives)
- **DEX** (Dalvik Executable for Android)
- **MS-DOS** (MS-DOS executable files)
- **COM** (Simple executable format for DOS)
- **LE/LX** (Linear Executable for OS/2)
- **MACH** (Mach-O files for MacOS)
- **NPM** (JavaScript packages)
- **Amiga** (Executable format for Amiga computers)
- **Binary** (Other unclassified files)
- **PE** (Portable Executable format for Windows)
- **ELF** (Executable and Linkable Format for Linux)
- **APK** (Android Application Package)
- **IPA** (iOS Application Package)
- **JAR** (Java Archive)
- **ZIP** (Compressed archives)
- **ISO9660** (Optical media format)
- **DEX** (Dalvik Executable for Android)
- **MS-DOS** (MS-DOS executable files)
- **COM** (Simple executable format for DOS)
- **LE/LX** (Linear Executable for OS/2)
- **MACH** (Mach-O files for MacOS)
- **NPM** (JavaScript packages)
- **Amiga** (Executable format for Amiga computers)
- **Binary** (Other unclassified files)
And that's not all... The list is expanding as the tool is updated
Unknown formats undergo heuristic analysis, providing identification for both known and unrecognized files.
## 🔑 Key Features
## 🔑 Key features
- **Flexible Signature Management**: Define or modify detection signatures.
- **Scripted Detection**: Use a JavaScript-like scripting language for custom detection algorithms.
- **Cross-Platform Compatibility**: Available for Windows, Linux, and MacOS.
- **Reduced False Positives**: Combines signature and heuristic scanning for accuracy.
- **Flexible Signature Management**: Define or modify detection rules.
- **Scripted Detection**: Use a JavaScript-like scripting language (DiE-JS ES5 runtime) for custom detection algorithms.
- **Cross-Platform Compatibility**: Available for Windows, Linux, and MacOS.
- **Reduced False Positives**: Combines signature and heuristic scanning for accuracy.
## 📥 Installation
### 📦 Install via Package Managers
### 📦 Install via package managers
- **Windows**: [Chocolatey](https://community.chocolatey.org/packages/die)
- **Linux**:
- **Parrot OS**: Package name `detect-it-easy`
- **Arch Linux**: AUR package [detect-it-easy-git](https://aur.archlinux.org/packages/detect-it-easy-git/)
- **openSUSE**: [OBS](https://build.opensuse.org/package/show/home:mnhauke/detect-it-easy)
- **REMnux**: Malware analysis distribution
- **Windows**:
- [Chocolatey](https://community.chocolatey.org/packages/die)
- [Microsoft Store](https://apps.microsoft.com/detail/9nq58d7ghb2x)
- **Linux**:
- **Parrot OS**: Package name `detect-it-easy`
- **Arch Linux**: AUR package [detect-it-easy-git](https://aur.archlinux.org/packages/detect-it-easy-git/)
- **openSUSE**: [OBS](https://build.opensuse.org/package/show/home:mnhauke/detect-it-easy)
- **REMnux**: Malware analysis distribution
[![Packaging status](https://repology.org/badge/vertical-allrepos/detect-it-easy.svg)](https://repology.org/project/detect-it-easy/versions)
> [!NOTE]
> Use **Detect It Easy** bot via **Telegram** to quickly check files: [**@detectiteasy_bot**](https://t.me/detectiteasy_bot)
### ⚙️ Build from Source
### ⚙️ Build from source
See the [BUILD.md](docs/BUILD.md) for detailed instructions.
### 🐳 Docker Installation
### 🐳 Docker installation
Run DiE in a Docker container:
@ -87,28 +96,56 @@ docker build . -t horsicq:diec
## 🖥️ Usage
Detect It Easy offers three versions:
**Detect It Easy** offers three versions:
- **die** - Graphical interface.
- **diec** - Command-line version for batch processing.
- **diel** - Lightweight GUI version.
- **die** - Graphical interface.
- **diec** - Command-line version for batch processing.
- **diel** - Lightweight GUI version. (scanner only)
For detailed usage, refer to the [RUN.md](docs/RUN.md).
### 🔎 Example Use Cases
### 🔎 Example use cases
- **Malware Analysis**: Identify file types, packers, or protections.
- **Security Audits**: Determine executable file types and potential security risks.
- **Software Forensics**: Inspect software components and validate compliance.
- 🦠 **Malware Analysis**: Identify file types, packers, or protections. Heuristic engine detects multiple malware and file virus families.
- 🛡 **Security Audits**: Determine executable potential security risks.
- 🔎 **Software Forensics**: Inspect software components and validate compliance.
## 🏆 Special Thanks
## 💬 Our community
Thanks to all contributors!
👋 **Hello! / Привет!** Welcome to the Detect It Easy community!
Have questions, ideas, or just want to chat? Here's where to find us:
- **GitHub Discussions**: Start a conversation in [Discussions](https://github.com/horsicq/Detect-It-Easy/discussions)
- **GitHub Issues**: Report bugs or request features via [Issues](https://github.com/horsicq/Detect-It-Easy/issues)
## 🏆 Special thanks
- ⭐️ **Thanks to [DosX](https://github.com/DosX-dev)**
- ⭐️ Thanks to [PELock](https://www.pelock.com)
## 🤝 Thanks to all contributors
<a href="https://github.com/horsicq/Detect-It-Easy/graphs/contributors">
<img src="https://contrib.rocks/image?repo=horsicq/Detect-It-Easy" />
<img src="https://readme-contribs.as93.net/contributors/horsicq/Detect-It-Easy?textColor=737373&perRow=9&shape=squircle&isResponsive=true" />
</a>
Thanks to [PELock Software Protection & Reverse Engineering](https://www.pelock.com)
---
![Mascot](mascots/logo.png)
![Mascot](docs/logo2.png)
<!-- Dinosaur -->
<!--
. - ~ ~ ~ - .
.. _ .-~ ~-.
//| \ `..~ `.
|| | } } / \ \
(\ \\ \~^..' | } \
\`.-~ o / } | / \
(__ | / | / `.
`- - ~ ~ -._| /_ - ~ ~ ^| /- _ `.
| / | / ~-. ~- _
|_____| |_____| ~ - . _ _~_-_
(Grr-r-r!)
-->

View file

@ -1,109 +0,0 @@
[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=NF3FBD3KHMXDN)
[![GitHub tag (latest SemVer)](https://img.shields.io/github/tag/horsicq/DIE-engine.svg)](http://ntinfo.biz)
[![GitHub All Releases](https://img.shields.io/github/downloads/horsicq/DIE-engine/total.svg)](http://ntinfo.biz)
[![gitlocalized ](https://gitlocalize.com/repo/4736/whole_project/badge.svg)](https://github.com/horsicq/XTranslation)
[![OS Linux](https://img.shields.io/badge/os-linux-brightgreen)](https://github.com/horsicq/DIE-engine/releases)
[![OS Windows](https://img.shields.io/badge/os-windows-brightgreen)](https://github.com/horsicq/DIE-engine/releases)
[![OS MacOS](https://img.shields.io/badge/os-macos-brightgreen)](https://github.com/horsicq/DIE-engine/releases)
# Detect It Easy
> * ### [DOWNLOAD **RELEASE**](https://github.com/horsicq/DIE-engine/releases)
> * ### [DOWNLOAD **DEV**/**BETA**](https://github.com/horsicq/Detect-It-Easy/releases/tag/Beta)
> * #### [DIE API Library (for developers)](https://github.com/horsicq/die_library)
- Changelog: https://github.com/horsicq/Detect-It-Easy/blob/master/changelog.txt
You can help with translation: https://github.com/horsicq/XTranslation
![alt text](https://github.com/horsicq/Detect-It-Easy/blob/master/docs/1.png "1")
![alt text](https://github.com/horsicq/Detect-It-Easy/blob/master/docs/2.png "2")
![alt text](https://github.com/horsicq/Detect-It-Easy/blob/master/docs/3.png "3")
![alt text](https://github.com/horsicq/Detect-It-Easy/blob/master/docs/4.png "4")
![alt text](https://github.com/horsicq/Detect-It-Easy/blob/master/docs/5.png "5")
**Detect It Easy**, or abbreviated "DIE" is a program for determining types of files.
DIE is a cross-platform application, apart from Windows version there are also
available versions for Linux and Mac OS.
Many programs of the kind (PEID, PE tools) allow to use third-party signatures.
Unfortunately, those signatures scan only bytes by the pre-set mask, and it is
not possible to specify additional parameters. As the result, false triggering
often occur. More complicated algorithms are usually strictly set in the program
itself. Hence, to add a new complex detect one needs to recompile the entire
project. No one, except the authors themselves, can change the algorithm of
a detect. As time passes, such programs lose relevance without the constant support.
**Detect It Easy** has totally open architecture of signatures. You can easily
add your own algorithms of detects or modify those that already exist. This
is achieved by using scripts. The script language is very similar to JavaScript
and any person, who understands the basics of programming, will understand easily
how it works. Possibly, someone may decide the scripts are working very slow.
Indeed, scripts run slower than compiled code, but, thanks to the good optimization
of Script Engine, this doesn't cause any special inconvenience. The possibilities
of open architecture compensate these limitations.
DIE exists in three versions. Basic version ("die"), Lite version ("diel") and
console version ("diec"). All the three use the same signatures, which are located
in the folder "db". If you open this folder, nested sub-folders will be found
("Binary", "PE" and others). The names of sub-folders correspond to the types of files.
First, DIE determines the type of file, and then sequentially loads all the signatures,
which lie in the corresponding folder. Currently the program defines the following types:
- MSDOS executable files MS-DOS
- PE executable files Windows
- ELF executable files Linux
- MACH executable files Mac OS
- Binary all other files
# Installing
### Using installation packages
- Windows: [die](https://community.chocolatey.org/packages/die) on Chocolatey (Thanks [**chtof**](https://github.com/chtof) and [**Rob Reynolds**](https://github.com/ferventcoder))
- Parrot OS: Package name **detect-it-easy** (Thanks [**Nong Hoang Tu**](https://github.com/dmknght))
- Arch Linux: Aur package [detect-it-easy-git](https://aur.archlinux.org/packages/detect-it-easy-git/) (Thanks [**Arnaud Dovi**](https://github.com/class101))
- [REMnux](https://remnux.org): (Thanks [**REMnux team**](https://twitter.com/REMnux/status/1401935989266919426))
- openSUSE: [detect-it-easy](https://build.opensuse.org/package/show/home:mnhauke/detect-it-easy) (Thanks Martin Hauke)
### Build from source
Build instructions can be found in [BUILD.md](docs/BUILD.md).
### Docker install
You can also run DIE with [Docker](https://www.docker.com/community-edition)! Of course, this requires that you have git and Docker installed.
```bash
git clone --recursive https://github.com/horsicq/Detect-It-Easy
cd Detect-It-Easy/
docker build . -t horsicq:diec
```
# Usage
### detect-it-easy has 3 variants
- `die` GUI version
- `diec` console version
- `diel` GUI lite version
Detailed usage instructions can be found in [RUN.md](docs/RUN.md).
# Telegram Bot
* ### [@detectiteasy_bot](https://t.me/detectiteasy_bot)
# Thanks to all the people who already contributed!
<a href="https://github.com/horsicq/Detect-It-Easy/graphs/contributors">
<img src="https://contrib.rocks/image?repo=horsicq/Detect-It-Easy" />
</a>
## Special Thanks
- [PELock Software Protection & Reverse Engineering](https://www.pelock.com)
![alt text](https://github.com/horsicq/Detect-It-Easy/blob/master/mascots/logo.png "Mascot")

View file

@ -0,0 +1,22 @@
Copyright (c) 2015 Chris Talkington.
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

View file

@ -0,0 +1,22 @@
Copyright (c) 2012-2014 Chris Talkington, contributors.
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

View file

@ -0,0 +1,19 @@
Copyright (c) 2010-2018 Caolan McMahon
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View file

@ -0,0 +1,21 @@
(MIT)
Copyright (c) 2013 Julian Gruber &lt;julian@juliangruber.com&gt;
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2014 Jameson Little
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View file

@ -0,0 +1,13 @@
The MIT License (MIT)
=====================
Copyright (c) 2013-2019 bl contributors
----------------------------------
*bl contributors listed at <https://github.com/rvagg/bl#contributors>*
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View file

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2013 Julian Gruber <julian@juliangruber.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View file

@ -0,0 +1,19 @@
The MIT License
Copyright (c) 2013 Brian J. Brennan
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the
Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View file

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) Feross Aboukhadijeh, and other contributors.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View file

@ -0,0 +1,22 @@
Copyright (c) 2014 Chris Talkington, contributors.
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

View file

@ -0,0 +1,18 @@
This software is released under the MIT license:
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View file

@ -0,0 +1,19 @@
Copyright Node.js contributors. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.

View file

@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "{}"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright (C) 2014-present SheetJS LLC
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View file

@ -0,0 +1,22 @@
Copyright (c) 2014 Chris Talkington, contributors.
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

View file

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2014 Mathias Buus
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View file

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2018 Mathias Buus
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View file

@ -0,0 +1,43 @@
The ISC License
Copyright (c) Isaac Z. Schlueter and Contributors
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
----
This library bundles a version of the `fs.realpath` and `fs.realpathSync`
methods from Node.js v0.10 under the terms of the Node.js MIT license.
Node's license follows, also included at the header of `old.js` which contains
the licensed code:
Copyright Joyent, Inc. and other Node contributors.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.

View file

@ -0,0 +1,21 @@
The ISC License
Copyright (c) Isaac Z. Schlueter and Contributors
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
## Glob Logo
Glob's logo created by Tanya Brassie <http://tanyabrassie.com/>, licensed
under a Creative Commons Attribution-ShareAlike 4.0 International License
https://creativecommons.org/licenses/by-sa/4.0/

View file

@ -0,0 +1,15 @@
The ISC License
Copyright (c) 2011-2022 Isaac Z. Schlueter, Ben Noordhuis, and Contributors
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

View file

@ -0,0 +1,11 @@
Copyright 2008 Fair Oaks Labs, Inc.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View file

@ -0,0 +1,15 @@
The ISC License
Copyright (c) Isaac Z. Schlueter
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

View file

@ -0,0 +1,16 @@
The ISC License
Copyright (c) Isaac Z. Schlueter
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.

View file

@ -0,0 +1,23 @@
Copyright (c) 2013 J. Pommerening, contributors.
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

View file

@ -0,0 +1,47 @@
Copyright jQuery Foundation and other contributors <https://jquery.org/>
Based on Underscore.js, copyright Jeremy Ashkenas,
DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
This software consists of voluntary contributions made by many
individuals. For exact contribution history, see the revision history
available at https://github.com/lodash/lodash
The following license applies to all parts of this software except as
documented below:
====
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
====
Copyright and related rights for sample code are waived via CC0. Sample
code is defined as all source code displayed within the prose of the
documentation.
CC0: http://creativecommons.org/publicdomain/zero/1.0/
====
Files located in the node_modules and vendor directories are externally
maintained libraries used by this software which have their own
licenses; we recommend you read them, as their terms may differ from the
terms above.

View file

@ -0,0 +1,47 @@
Copyright jQuery Foundation and other contributors <https://jquery.org/>
Based on Underscore.js, copyright Jeremy Ashkenas,
DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
This software consists of voluntary contributions made by many
individuals. For exact contribution history, see the revision history
available at https://github.com/lodash/lodash
The following license applies to all parts of this software except as
documented below:
====
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
====
Copyright and related rights for sample code are waived via CC0. Sample
code is defined as all source code displayed within the prose of the
documentation.
CC0: http://creativecommons.org/publicdomain/zero/1.0/
====
Files located in the node_modules and vendor directories are externally
maintained libraries used by this software which have their own
licenses; we recommend you read them, as their terms may differ from the
terms above.

View file

@ -0,0 +1,47 @@
Copyright jQuery Foundation and other contributors <https://jquery.org/>
Based on Underscore.js, copyright Jeremy Ashkenas,
DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
This software consists of voluntary contributions made by many
individuals. For exact contribution history, see the revision history
available at https://github.com/lodash/lodash
The following license applies to all parts of this software except as
documented below:
====
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
====
Copyright and related rights for sample code are waived via CC0. Sample
code is defined as all source code displayed within the prose of the
documentation.
CC0: http://creativecommons.org/publicdomain/zero/1.0/
====
Files located in the node_modules and vendor directories are externally
maintained libraries used by this software which have their own
licenses; we recommend you read them, as their terms may differ from the
terms above.

View file

@ -0,0 +1,47 @@
Copyright jQuery Foundation and other contributors <https://jquery.org/>
Based on Underscore.js, copyright Jeremy Ashkenas,
DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
This software consists of voluntary contributions made by many
individuals. For exact contribution history, see the revision history
available at https://github.com/lodash/lodash
The following license applies to all parts of this software except as
documented below:
====
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
====
Copyright and related rights for sample code are waived via CC0. Sample
code is defined as all source code displayed within the prose of the
documentation.
CC0: http://creativecommons.org/publicdomain/zero/1.0/
====
Files located in the node_modules and vendor directories are externally
maintained libraries used by this software which have their own
licenses; we recommend you read them, as their terms may differ from the
terms above.

View file

@ -0,0 +1,47 @@
Copyright jQuery Foundation and other contributors <https://jquery.org/>
Based on Underscore.js, copyright Jeremy Ashkenas,
DocumentCloud and Investigative Reporters & Editors <http://underscorejs.org/>
This software consists of voluntary contributions made by many
individuals. For exact contribution history, see the revision history
available at https://github.com/lodash/lodash
The following license applies to all parts of this software except as
documented below:
====
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
====
Copyright and related rights for sample code are waived via CC0. Sample
code is defined as all source code displayed within the prose of the
documentation.
CC0: http://creativecommons.org/publicdomain/zero/1.0/
====
Files located in the node_modules and vendor directories are externally
maintained libraries used by this software which have their own
licenses; we recommend you read them, as their terms may differ from the
terms above.

View file

@ -0,0 +1,15 @@
The ISC License
Copyright (c) 2011-2023 Isaac Z. Schlueter and Contributors
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

View file

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2014-2018, Jon Schlinkert.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View file

@ -0,0 +1,15 @@
The ISC License
Copyright (c) Isaac Z. Schlueter and Contributors
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

View file

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View file

@ -0,0 +1,19 @@
# Copyright (c) 2015 Calvin Metcalf
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
**THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.**

View file

@ -0,0 +1,47 @@
Node.js is licensed for use as follows:
"""
Copyright Node.js contributors. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
"""
This license applies to parts of Node.js originating from the
https://github.com/joyent/node repository:
"""
Copyright Joyent, Inc. and other Node contributors. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
"""

View file

@ -0,0 +1,201 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2020 Yann Armelin
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View file

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) Feross Aboukhadijeh
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View file

@ -0,0 +1,48 @@
Node.js is licensed for use as follows:
"""
Copyright Node.js contributors. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
"""
This license applies to parts of Node.js originating from the
https://github.com/joyent/node repository:
"""
Copyright Joyent, Inc. and other Node contributors. All rights reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to
deal in the Software without restriction, including without limitation the
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
sell copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
"""

View file

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2014 Mathias Buus
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View file

@ -0,0 +1,24 @@
(The MIT License)
Copyright (c) 2014 Nathan Rajlich <nathan@tootallnate.net>
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

View file

@ -0,0 +1,15 @@
The ISC License
Copyright (c) Isaac Z. Schlueter and Contributors
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

View file

@ -0,0 +1,22 @@
Copyright (c) 2014 Chris Talkington, contributors.
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation
files (the "Software"), to deal in the Software without
restriction, including without limitation the rights to use,
copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following
conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

16
autotools/dbcompiler/node_modules/.bin/crc32 generated vendored Normal file
View file

@ -0,0 +1,16 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../crc-32/bin/crc32.njs" "$@"
else
exec node "$basedir/../crc-32/bin/crc32.njs" "$@"
fi

17
autotools/dbcompiler/node_modules/.bin/crc32.cmd generated vendored Normal file
View file

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\crc-32\bin\crc32.njs" %*

28
autotools/dbcompiler/node_modules/.bin/crc32.ps1 generated vendored Normal file
View file

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../crc-32/bin/crc32.njs" $args
} else {
& "$basedir/node$exe" "$basedir/../crc-32/bin/crc32.njs" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../crc-32/bin/crc32.njs" $args
} else {
& "node$exe" "$basedir/../crc-32/bin/crc32.njs" $args
}
$ret=$LASTEXITCODE
}
exit $ret

16
autotools/dbcompiler/node_modules/.bin/uglifyjs generated vendored Normal file
View file

@ -0,0 +1,16 @@
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*|*MINGW*|*MSYS*)
if command -v cygpath > /dev/null 2>&1; then
basedir=`cygpath -w "$basedir"`
fi
;;
esac
if [ -x "$basedir/node" ]; then
exec "$basedir/node" "$basedir/../uglify-js/bin/uglifyjs" "$@"
else
exec node "$basedir/../uglify-js/bin/uglifyjs" "$@"
fi

17
autotools/dbcompiler/node_modules/.bin/uglifyjs.cmd generated vendored Normal file
View file

@ -0,0 +1,17 @@
@ECHO off
GOTO start
:find_dp0
SET dp0=%~dp0
EXIT /b
:start
SETLOCAL
CALL :find_dp0
IF EXIST "%dp0%\node.exe" (
SET "_prog=%dp0%\node.exe"
) ELSE (
SET "_prog=node"
SET PATHEXT=%PATHEXT:;.JS;=;%
)
endLocal & goto #_undefined_# 2>NUL || title %COMSPEC% & "%_prog%" "%dp0%\..\uglify-js\bin\uglifyjs" %*

28
autotools/dbcompiler/node_modules/.bin/uglifyjs.ps1 generated vendored Normal file
View file

@ -0,0 +1,28 @@
#!/usr/bin/env pwsh
$basedir=Split-Path $MyInvocation.MyCommand.Definition -Parent
$exe=""
if ($PSVersionTable.PSVersion -lt "6.0" -or $IsWindows) {
# Fix case when both the Windows and Linux builds of Node
# are installed in the same directory
$exe=".exe"
}
$ret=0
if (Test-Path "$basedir/node$exe") {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "$basedir/node$exe" "$basedir/../uglify-js/bin/uglifyjs" $args
} else {
& "$basedir/node$exe" "$basedir/../uglify-js/bin/uglifyjs" $args
}
$ret=$LASTEXITCODE
} else {
# Support pipeline input
if ($MyInvocation.ExpectingInput) {
$input | & "node$exe" "$basedir/../uglify-js/bin/uglifyjs" $args
} else {
& "node$exe" "$basedir/../uglify-js/bin/uglifyjs" $args
}
$ret=$LASTEXITCODE
}
exit $ret

519
autotools/dbcompiler/node_modules/.package-lock.json generated vendored Normal file
View file

@ -0,0 +1,519 @@
{
"name": "dbcompiler",
"version": "1.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"node_modules/archiver": {
"version": "5.3.2",
"resolved": "https://registry.npmjs.org/archiver/-/archiver-5.3.2.tgz",
"integrity": "sha512-+25nxyyznAXF7Nef3y0EbBeqmGZgeN/BxHX29Rs39djAfaFalmQ89SE6CWyDCHzGL0yt/ycBtNOmGTW0FyGWNw==",
"dependencies": {
"archiver-utils": "^2.1.0",
"async": "^3.2.4",
"buffer-crc32": "^0.2.1",
"readable-stream": "^3.6.0",
"readdir-glob": "^1.1.2",
"tar-stream": "^2.2.0",
"zip-stream": "^4.1.0"
},
"engines": {
"node": ">= 10"
}
},
"node_modules/archiver-utils": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-2.1.0.tgz",
"integrity": "sha512-bEL/yUb/fNNiNTuUz979Z0Yg5L+LzLxGJz8x79lYmR54fmTIb6ob/hNQgkQnIUDWIFjZVQwl9Xs356I6BAMHfw==",
"dependencies": {
"glob": "^7.1.4",
"graceful-fs": "^4.2.0",
"lazystream": "^1.0.0",
"lodash.defaults": "^4.2.0",
"lodash.difference": "^4.5.0",
"lodash.flatten": "^4.4.0",
"lodash.isplainobject": "^4.0.6",
"lodash.union": "^4.6.0",
"normalize-path": "^3.0.0",
"readable-stream": "^2.0.0"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/archiver-utils/node_modules/readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"node_modules/archiver-utils/node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"node_modules/archiver-utils/node_modules/string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dependencies": {
"safe-buffer": "~5.1.0"
}
},
"node_modules/async": {
"version": "3.2.6",
"resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
"integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA=="
},
"node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw=="
},
"node_modules/base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
"integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
]
},
"node_modules/bl": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
"dependencies": {
"buffer": "^5.5.0",
"inherits": "^2.0.4",
"readable-stream": "^3.4.0"
}
},
"node_modules/brace-expansion": {
"version": "1.1.14",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz",
"integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"node_modules/buffer": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
"integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
],
"dependencies": {
"base64-js": "^1.3.1",
"ieee754": "^1.1.13"
}
},
"node_modules/buffer-crc32": {
"version": "0.2.13",
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
"integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
"engines": {
"node": "*"
}
},
"node_modules/compress-commons": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-4.1.2.tgz",
"integrity": "sha512-D3uMHtGc/fcO1Gt1/L7i1e33VOvD4A9hfQLP+6ewd+BvG/gQ84Yh4oftEhAdjSMgBgwGL+jsppT7JYNpo6MHHg==",
"dependencies": {
"buffer-crc32": "^0.2.13",
"crc32-stream": "^4.0.2",
"normalize-path": "^3.0.0",
"readable-stream": "^3.6.0"
},
"engines": {
"node": ">= 10"
}
},
"node_modules/concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg=="
},
"node_modules/core-util-is": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
"integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ=="
},
"node_modules/crc-32": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz",
"integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==",
"bin": {
"crc32": "bin/crc32.njs"
},
"engines": {
"node": ">=0.8"
}
},
"node_modules/crc32-stream": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-4.0.3.tgz",
"integrity": "sha512-NT7w2JVU7DFroFdYkeq8cywxrgjPHWkdX1wjpRQXPX5Asews3tA+Ght6lddQO5Mkumffp3X7GEqku3epj2toIw==",
"dependencies": {
"crc-32": "^1.2.0",
"readable-stream": "^3.4.0"
},
"engines": {
"node": ">= 10"
}
},
"node_modules/end-of-stream": {
"version": "1.4.5",
"resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz",
"integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==",
"dependencies": {
"once": "^1.4.0"
}
},
"node_modules/fs-constants": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
"integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
},
"node_modules/fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw=="
},
"node_modules/glob": {
"version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
"integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
"deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
"dependencies": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.1.1",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
},
"engines": {
"node": "*"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
"integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
},
"node_modules/ieee754": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
"integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
]
},
"node_modules/inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
"deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
"dependencies": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"node_modules/inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"node_modules/isarray": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
"integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ=="
},
"node_modules/lazystream": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz",
"integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==",
"dependencies": {
"readable-stream": "^2.0.5"
},
"engines": {
"node": ">= 0.6.3"
}
},
"node_modules/lazystream/node_modules/readable-stream": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
"integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"node_modules/lazystream/node_modules/safe-buffer": {
"version": "5.1.2",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
"integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
},
"node_modules/lazystream/node_modules/string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
"integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
"dependencies": {
"safe-buffer": "~5.1.0"
}
},
"node_modules/lodash.defaults": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz",
"integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ=="
},
"node_modules/lodash.difference": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz",
"integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA=="
},
"node_modules/lodash.flatten": {
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz",
"integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g=="
},
"node_modules/lodash.isplainobject": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
"integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA=="
},
"node_modules/lodash.union": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz",
"integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw=="
},
"node_modules/minimatch": {
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
"integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dependencies": {
"brace-expansion": "^1.1.7"
},
"engines": {
"node": "*"
}
},
"node_modules/normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/once": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
"dependencies": {
"wrappy": "1"
}
},
"node_modules/path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
"integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/process-nextick-args": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
"integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
},
"node_modules/readable-stream": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/readdir-glob": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz",
"integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==",
"dependencies": {
"minimatch": "^5.1.0"
}
},
"node_modules/readdir-glob/node_modules/brace-expansion": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz",
"integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==",
"dependencies": {
"balanced-match": "^1.0.0"
}
},
"node_modules/readdir-glob/node_modules/minimatch": {
"version": "5.1.9",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz",
"integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==",
"dependencies": {
"brace-expansion": "^2.0.1"
},
"engines": {
"node": ">=10"
}
},
"node_modules/safe-buffer": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
"funding": [
{
"type": "github",
"url": "https://github.com/sponsors/feross"
},
{
"type": "patreon",
"url": "https://www.patreon.com/feross"
},
{
"type": "consulting",
"url": "https://feross.org/support"
}
]
},
"node_modules/string_decoder": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
"integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
"dependencies": {
"safe-buffer": "~5.2.0"
}
},
"node_modules/tar-stream": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
"integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
"dependencies": {
"bl": "^4.0.3",
"end-of-stream": "^1.4.1",
"fs-constants": "^1.0.0",
"inherits": "^2.0.3",
"readable-stream": "^3.1.1"
},
"engines": {
"node": ">=6"
}
},
"node_modules/uglify-js": {
"version": "3.19.3",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz",
"integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==",
"bin": {
"uglifyjs": "bin/uglifyjs"
},
"engines": {
"node": ">=0.8.0"
}
},
"node_modules/util-deprecate": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="
},
"node_modules/wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"node_modules/zip-stream": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-4.1.1.tgz",
"integrity": "sha512-9qv4rlDiopXg4E69k+vMHjNN63YFMe9sZMrdlvKnCjlCRWeCBswPPMPUfx+ipsAWq1LXHe70RcbaHdJJpS6hyQ==",
"dependencies": {
"archiver-utils": "^3.0.4",
"compress-commons": "^4.1.2",
"readable-stream": "^3.6.0"
},
"engines": {
"node": ">= 10"
}
},
"node_modules/zip-stream/node_modules/archiver-utils": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-3.0.4.tgz",
"integrity": "sha512-KVgf4XQVrTjhyWmx6cte4RxonPLR9onExufI1jhvw/MQ4BB6IsZD5gT8Lq+u/+pRkWna/6JoHpiQioaqFP5Rzw==",
"dependencies": {
"glob": "^7.2.3",
"graceful-fs": "^4.2.0",
"lazystream": "^1.0.0",
"lodash.defaults": "^4.2.0",
"lodash.difference": "^4.5.0",
"lodash.flatten": "^4.4.0",
"lodash.isplainobject": "^4.0.6",
"lodash.union": "^4.6.0",
"normalize-path": "^3.0.0",
"readable-stream": "^3.6.0"
},
"engines": {
"node": ">= 10"
}
}
}
}

View file

@ -0,0 +1,209 @@
/**
* archiver-utils
*
* Copyright (c) 2012-2014 Chris Talkington, contributors.
* Licensed under the MIT license.
* https://github.com/archiverjs/node-archiver/blob/master/LICENSE-MIT
*/
var fs = require('graceful-fs');
var path = require('path');
var flatten = require('lodash.flatten');
var difference = require('lodash.difference');
var union = require('lodash.union');
var isPlainObject = require('lodash.isplainobject');
var glob = require('glob');
var file = module.exports = {};
var pathSeparatorRe = /[\/\\]/g;
// Process specified wildcard glob patterns or filenames against a
// callback, excluding and uniquing files in the result set.
var processPatterns = function(patterns, fn) {
// Filepaths to return.
var result = [];
// Iterate over flattened patterns array.
flatten(patterns).forEach(function(pattern) {
// If the first character is ! it should be omitted
var exclusion = pattern.indexOf('!') === 0;
// If the pattern is an exclusion, remove the !
if (exclusion) { pattern = pattern.slice(1); }
// Find all matching files for this pattern.
var matches = fn(pattern);
if (exclusion) {
// If an exclusion, remove matching files.
result = difference(result, matches);
} else {
// Otherwise add matching files.
result = union(result, matches);
}
});
return result;
};
// True if the file path exists.
file.exists = function() {
var filepath = path.join.apply(path, arguments);
return fs.existsSync(filepath);
};
// Return an array of all file paths that match the given wildcard patterns.
file.expand = function(...args) {
// If the first argument is an options object, save those options to pass
// into the File.prototype.glob.sync method.
var options = isPlainObject(args[0]) ? args.shift() : {};
// Use the first argument if it's an Array, otherwise convert the arguments
// object to an array and use that.
var patterns = Array.isArray(args[0]) ? args[0] : args;
// Return empty set if there are no patterns or filepaths.
if (patterns.length === 0) { return []; }
// Return all matching filepaths.
var matches = processPatterns(patterns, function(pattern) {
// Find all matching files for this pattern.
return glob.sync(pattern, options);
});
// Filter result set?
if (options.filter) {
matches = matches.filter(function(filepath) {
filepath = path.join(options.cwd || '', filepath);
try {
if (typeof options.filter === 'function') {
return options.filter(filepath);
} else {
// If the file is of the right type and exists, this should work.
return fs.statSync(filepath)[options.filter]();
}
} catch(e) {
// Otherwise, it's probably not the right type.
return false;
}
});
}
return matches;
};
// Build a multi task "files" object dynamically.
file.expandMapping = function(patterns, destBase, options) {
options = Object.assign({
rename: function(destBase, destPath) {
return path.join(destBase || '', destPath);
}
}, options);
var files = [];
var fileByDest = {};
// Find all files matching pattern, using passed-in options.
file.expand(options, patterns).forEach(function(src) {
var destPath = src;
// Flatten?
if (options.flatten) {
destPath = path.basename(destPath);
}
// Change the extension?
if (options.ext) {
destPath = destPath.replace(/(\.[^\/]*)?$/, options.ext);
}
// Generate destination filename.
var dest = options.rename(destBase, destPath, options);
// Prepend cwd to src path if necessary.
if (options.cwd) { src = path.join(options.cwd, src); }
// Normalize filepaths to be unix-style.
dest = dest.replace(pathSeparatorRe, '/');
src = src.replace(pathSeparatorRe, '/');
// Map correct src path to dest path.
if (fileByDest[dest]) {
// If dest already exists, push this src onto that dest's src array.
fileByDest[dest].src.push(src);
} else {
// Otherwise create a new src-dest file mapping object.
files.push({
src: [src],
dest: dest,
});
// And store a reference for later use.
fileByDest[dest] = files[files.length - 1];
}
});
return files;
};
// reusing bits of grunt's multi-task source normalization
file.normalizeFilesArray = function(data) {
var files = [];
data.forEach(function(obj) {
var prop;
if ('src' in obj || 'dest' in obj) {
files.push(obj);
}
});
if (files.length === 0) {
return [];
}
files = _(files).chain().forEach(function(obj) {
if (!('src' in obj) || !obj.src) { return; }
// Normalize .src properties to flattened array.
if (Array.isArray(obj.src)) {
obj.src = flatten(obj.src);
} else {
obj.src = [obj.src];
}
}).map(function(obj) {
// Build options object, removing unwanted properties.
var expandOptions = Object.assign({}, obj);
delete expandOptions.src;
delete expandOptions.dest;
// Expand file mappings.
if (obj.expand) {
return file.expandMapping(obj.src, obj.dest, expandOptions).map(function(mapObj) {
// Copy obj properties to result.
var result = Object.assign({}, obj);
// Make a clone of the orig obj available.
result.orig = Object.assign({}, obj);
// Set .src and .dest, processing both as templates.
result.src = mapObj.src;
result.dest = mapObj.dest;
// Remove unwanted properties.
['expand', 'cwd', 'flatten', 'rename', 'ext'].forEach(function(prop) {
delete result[prop];
});
return result;
});
}
// Copy obj properties to result, adding an .orig property.
var result = Object.assign({}, obj);
// Make a clone of the orig obj available.
result.orig = Object.assign({}, obj);
if ('src' in result) {
// Expose an expand-on-demand getter method as .src.
Object.defineProperty(result, 'src', {
enumerable: true,
get: function fn() {
var src;
if (!('result' in fn)) {
src = obj.src;
// If src is an array, flatten it. Otherwise, make it into an array.
src = Array.isArray(src) ? flatten(src) : [src];
// Expand src files, memoizing result.
fn.result = file.expand(expandOptions, src);
}
return fn.result;
}
});
}
if ('dest' in result) {
result.dest = obj.dest;
}
return result;
}).flatten().value();
return files;
};

View file

@ -0,0 +1,156 @@
/**
* archiver-utils
*
* Copyright (c) 2015 Chris Talkington.
* Licensed under the MIT license.
* https://github.com/archiverjs/archiver-utils/blob/master/LICENSE
*/
var fs = require('graceful-fs');
var path = require('path');
var nutil = require('util');
var lazystream = require('lazystream');
var normalizePath = require('normalize-path');
var defaults = require('lodash.defaults');
var Stream = require('stream').Stream;
var PassThrough = require('readable-stream').PassThrough;
var utils = module.exports = {};
utils.file = require('./file.js');
function assertPath(path) {
if (typeof path !== 'string') {
throw new TypeError('Path must be a string. Received ' + nutils.inspect(path));
}
}
utils.collectStream = function(source, callback) {
var collection = [];
var size = 0;
source.on('error', callback);
source.on('data', function(chunk) {
collection.push(chunk);
size += chunk.length;
});
source.on('end', function() {
var buf = new Buffer(size);
var offset = 0;
collection.forEach(function(data) {
data.copy(buf, offset);
offset += data.length;
});
callback(null, buf);
});
};
utils.dateify = function(dateish) {
dateish = dateish || new Date();
if (dateish instanceof Date) {
dateish = dateish;
} else if (typeof dateish === 'string') {
dateish = new Date(dateish);
} else {
dateish = new Date();
}
return dateish;
};
// this is slightly different from lodash version
utils.defaults = function(object, source, guard) {
var args = arguments;
args[0] = args[0] || {};
return defaults(...args);
};
utils.isStream = function(source) {
return source instanceof Stream;
};
utils.lazyReadStream = function(filepath) {
return new lazystream.Readable(function() {
return fs.createReadStream(filepath);
});
};
utils.normalizeInputSource = function(source) {
if (source === null) {
return new Buffer(0);
} else if (typeof source === 'string') {
return new Buffer(source);
} else if (utils.isStream(source) && !source._readableState) {
var normalized = new PassThrough();
source.pipe(normalized);
return normalized;
}
return source;
};
utils.sanitizePath = function(filepath) {
return normalizePath(filepath, false).replace(/^\w+:/, '').replace(/^(\.\.\/|\/)+/, '');
};
utils.trailingSlashIt = function(str) {
return str.slice(-1) !== '/' ? str + '/' : str;
};
utils.unixifyPath = function(filepath) {
return normalizePath(filepath, false).replace(/^\w+:/, '');
};
utils.walkdir = function(dirpath, base, callback) {
var results = [];
if (typeof base === 'function') {
callback = base;
base = dirpath;
}
fs.readdir(dirpath, function(err, list) {
var i = 0;
var file;
var filepath;
if (err) {
return callback(err);
}
(function next() {
file = list[i++];
if (!file) {
return callback(null, results);
}
filepath = path.join(dirpath, file);
fs.stat(filepath, function(err, stats) {
results.push({
path: filepath,
relative: path.relative(base, filepath).replace(/\\/g, '/'),
stats: stats
});
if (stats && stats.isDirectory()) {
utils.walkdir(filepath, base, function(err, res) {
res.forEach(function(dirEntry) {
results.push(dirEntry);
});
next();
});
} else {
next();
}
});
})();
});
};

View file

@ -0,0 +1 @@
module.exports = require('./lib/_stream_duplex.js');

View file

@ -0,0 +1 @@
module.exports = require('./readable').Duplex

View file

@ -0,0 +1,131 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
// a duplex stream is just a stream that is both readable and writable.
// Since JS doesn't have multiple prototypal inheritance, this class
// prototypally inherits from Readable, and then parasitically from
// Writable.
'use strict';
/*<replacement>*/
var pna = require('process-nextick-args');
/*</replacement>*/
/*<replacement>*/
var objectKeys = Object.keys || function (obj) {
var keys = [];
for (var key in obj) {
keys.push(key);
}return keys;
};
/*</replacement>*/
module.exports = Duplex;
/*<replacement>*/
var util = Object.create(require('core-util-is'));
util.inherits = require('inherits');
/*</replacement>*/
var Readable = require('./_stream_readable');
var Writable = require('./_stream_writable');
util.inherits(Duplex, Readable);
{
// avoid scope creep, the keys array can then be collected
var keys = objectKeys(Writable.prototype);
for (var v = 0; v < keys.length; v++) {
var method = keys[v];
if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
}
}
function Duplex(options) {
if (!(this instanceof Duplex)) return new Duplex(options);
Readable.call(this, options);
Writable.call(this, options);
if (options && options.readable === false) this.readable = false;
if (options && options.writable === false) this.writable = false;
this.allowHalfOpen = true;
if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
this.once('end', onend);
}
Object.defineProperty(Duplex.prototype, 'writableHighWaterMark', {
// making it explicit this property is not enumerable
// because otherwise some prototype manipulation in
// userland will fail
enumerable: false,
get: function () {
return this._writableState.highWaterMark;
}
});
// the no-half-open enforcer
function onend() {
// if we allow half-open state, or if the writable side ended,
// then we're ok.
if (this.allowHalfOpen || this._writableState.ended) return;
// no more data can be written.
// But allow more writes to happen in this tick.
pna.nextTick(onEndNT, this);
}
function onEndNT(self) {
self.end();
}
Object.defineProperty(Duplex.prototype, 'destroyed', {
get: function () {
if (this._readableState === undefined || this._writableState === undefined) {
return false;
}
return this._readableState.destroyed && this._writableState.destroyed;
},
set: function (value) {
// we ignore the value if the stream
// has not been initialized yet
if (this._readableState === undefined || this._writableState === undefined) {
return;
}
// backward compatibility, the user is explicitly
// managing destroyed
this._readableState.destroyed = value;
this._writableState.destroyed = value;
}
});
Duplex.prototype._destroy = function (err, cb) {
this.push(null);
this.end();
pna.nextTick(cb, err);
};

View file

@ -0,0 +1,47 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
// a passthrough stream.
// basically just the most minimal sort of Transform stream.
// Every written chunk gets output as-is.
'use strict';
module.exports = PassThrough;
var Transform = require('./_stream_transform');
/*<replacement>*/
var util = Object.create(require('core-util-is'));
util.inherits = require('inherits');
/*</replacement>*/
util.inherits(PassThrough, Transform);
function PassThrough(options) {
if (!(this instanceof PassThrough)) return new PassThrough(options);
Transform.call(this, options);
}
PassThrough.prototype._transform = function (chunk, encoding, cb) {
cb(null, chunk);
};

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,214 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
// a transform stream is a readable/writable stream where you do
// something with the data. Sometimes it's called a "filter",
// but that's not a great name for it, since that implies a thing where
// some bits pass through, and others are simply ignored. (That would
// be a valid example of a transform, of course.)
//
// While the output is causally related to the input, it's not a
// necessarily symmetric or synchronous transformation. For example,
// a zlib stream might take multiple plain-text writes(), and then
// emit a single compressed chunk some time in the future.
//
// Here's how this works:
//
// The Transform stream has all the aspects of the readable and writable
// stream classes. When you write(chunk), that calls _write(chunk,cb)
// internally, and returns false if there's a lot of pending writes
// buffered up. When you call read(), that calls _read(n) until
// there's enough pending readable data buffered up.
//
// In a transform stream, the written data is placed in a buffer. When
// _read(n) is called, it transforms the queued up data, calling the
// buffered _write cb's as it consumes chunks. If consuming a single
// written chunk would result in multiple output chunks, then the first
// outputted bit calls the readcb, and subsequent chunks just go into
// the read buffer, and will cause it to emit 'readable' if necessary.
//
// This way, back-pressure is actually determined by the reading side,
// since _read has to be called to start processing a new chunk. However,
// a pathological inflate type of transform can cause excessive buffering
// here. For example, imagine a stream where every byte of input is
// interpreted as an integer from 0-255, and then results in that many
// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
// 1kb of data being output. In this case, you could write a very small
// amount of input, and end up with a very large amount of output. In
// such a pathological inflating mechanism, there'd be no way to tell
// the system to stop doing the transform. A single 4MB write could
// cause the system to run out of memory.
//
// However, even in such a pathological case, only a single written chunk
// would be consumed, and then the rest would wait (un-transformed) until
// the results of the previous transformed chunk were consumed.
'use strict';
module.exports = Transform;
var Duplex = require('./_stream_duplex');
/*<replacement>*/
var util = Object.create(require('core-util-is'));
util.inherits = require('inherits');
/*</replacement>*/
util.inherits(Transform, Duplex);
function afterTransform(er, data) {
var ts = this._transformState;
ts.transforming = false;
var cb = ts.writecb;
if (!cb) {
return this.emit('error', new Error('write callback called multiple times'));
}
ts.writechunk = null;
ts.writecb = null;
if (data != null) // single equals check for both `null` and `undefined`
this.push(data);
cb(er);
var rs = this._readableState;
rs.reading = false;
if (rs.needReadable || rs.length < rs.highWaterMark) {
this._read(rs.highWaterMark);
}
}
function Transform(options) {
if (!(this instanceof Transform)) return new Transform(options);
Duplex.call(this, options);
this._transformState = {
afterTransform: afterTransform.bind(this),
needTransform: false,
transforming: false,
writecb: null,
writechunk: null,
writeencoding: null
};
// start out asking for a readable event once data is transformed.
this._readableState.needReadable = true;
// we have implemented the _read method, and done the other things
// that Readable wants before the first _read call, so unset the
// sync guard flag.
this._readableState.sync = false;
if (options) {
if (typeof options.transform === 'function') this._transform = options.transform;
if (typeof options.flush === 'function') this._flush = options.flush;
}
// When the writable side finishes, then flush out anything remaining.
this.on('prefinish', prefinish);
}
function prefinish() {
var _this = this;
if (typeof this._flush === 'function') {
this._flush(function (er, data) {
done(_this, er, data);
});
} else {
done(this, null, null);
}
}
Transform.prototype.push = function (chunk, encoding) {
this._transformState.needTransform = false;
return Duplex.prototype.push.call(this, chunk, encoding);
};
// This is the part where you do stuff!
// override this function in implementation classes.
// 'chunk' is an input chunk.
//
// Call `push(newChunk)` to pass along transformed output
// to the readable side. You may call 'push' zero or more times.
//
// Call `cb(err)` when you are done with this chunk. If you pass
// an error, then that'll put the hurt on the whole operation. If you
// never call cb(), then you'll never get another chunk.
Transform.prototype._transform = function (chunk, encoding, cb) {
throw new Error('_transform() is not implemented');
};
Transform.prototype._write = function (chunk, encoding, cb) {
var ts = this._transformState;
ts.writecb = cb;
ts.writechunk = chunk;
ts.writeencoding = encoding;
if (!ts.transforming) {
var rs = this._readableState;
if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
}
};
// Doesn't matter what the args are here.
// _transform does all the work.
// That we got here means that the readable side wants more data.
Transform.prototype._read = function (n) {
var ts = this._transformState;
if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
ts.transforming = true;
this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
} else {
// mark that we need a transform, so that any data that comes in
// will get processed, now that we've asked for it.
ts.needTransform = true;
}
};
Transform.prototype._destroy = function (err, cb) {
var _this2 = this;
Duplex.prototype._destroy.call(this, err, function (err2) {
cb(err2);
_this2.emit('close');
});
};
function done(stream, er, data) {
if (er) return stream.emit('error', er);
if (data != null) // single equals check for both `null` and `undefined`
stream.push(data);
// if there's nothing in the write buffer, then that means
// that nothing more will ever be provided
if (stream._writableState.length) throw new Error('Calling transform done when ws.length != 0');
if (stream._transformState.transforming) throw new Error('Calling transform done when still transforming');
return stream.push(null);
}

View file

@ -0,0 +1,685 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
// A bit simpler than readable streams.
// Implement an async ._write(chunk, encoding, cb), and it'll handle all
// the drain event emission and buffering.
'use strict';
/*<replacement>*/
var pna = require('process-nextick-args');
/*</replacement>*/
module.exports = Writable;
/* <replacement> */
function WriteReq(chunk, encoding, cb) {
this.chunk = chunk;
this.encoding = encoding;
this.callback = cb;
this.next = null;
}
// It seems a linked list but it is not
// there will be only 2 of these for each stream
function CorkedRequest(state) {
var _this = this;
this.next = null;
this.entry = null;
this.finish = function () {
onCorkedFinish(_this, state);
};
}
/* </replacement> */
/*<replacement>*/
var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : pna.nextTick;
/*</replacement>*/
/*<replacement>*/
var Duplex;
/*</replacement>*/
Writable.WritableState = WritableState;
/*<replacement>*/
var util = Object.create(require('core-util-is'));
util.inherits = require('inherits');
/*</replacement>*/
/*<replacement>*/
var internalUtil = {
deprecate: require('util-deprecate')
};
/*</replacement>*/
/*<replacement>*/
var Stream = require('./internal/streams/stream');
/*</replacement>*/
/*<replacement>*/
var Buffer = require('safe-buffer').Buffer;
var OurUint8Array = (typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};
function _uint8ArrayToBuffer(chunk) {
return Buffer.from(chunk);
}
function _isUint8Array(obj) {
return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;
}
/*</replacement>*/
var destroyImpl = require('./internal/streams/destroy');
util.inherits(Writable, Stream);
function nop() {}
function WritableState(options, stream) {
Duplex = Duplex || require('./_stream_duplex');
options = options || {};
// Duplex streams are both readable and writable, but share
// the same options object.
// However, some cases require setting options to different
// values for the readable and the writable sides of the duplex stream.
// These options can be provided separately as readableXXX and writableXXX.
var isDuplex = stream instanceof Duplex;
// object stream flag to indicate whether or not this stream
// contains buffers or objects.
this.objectMode = !!options.objectMode;
if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
// the point at which write() starts returning false
// Note: 0 is a valid value, means that we always return false if
// the entire buffer is not flushed immediately on write()
var hwm = options.highWaterMark;
var writableHwm = options.writableHighWaterMark;
var defaultHwm = this.objectMode ? 16 : 16 * 1024;
if (hwm || hwm === 0) this.highWaterMark = hwm;else if (isDuplex && (writableHwm || writableHwm === 0)) this.highWaterMark = writableHwm;else this.highWaterMark = defaultHwm;
// cast to ints.
this.highWaterMark = Math.floor(this.highWaterMark);
// if _final has been called
this.finalCalled = false;
// drain event flag.
this.needDrain = false;
// at the start of calling end()
this.ending = false;
// when end() has been called, and returned
this.ended = false;
// when 'finish' is emitted
this.finished = false;
// has it been destroyed
this.destroyed = false;
// should we decode strings into buffers before passing to _write?
// this is here so that some node-core streams can optimize string
// handling at a lower level.
var noDecode = options.decodeStrings === false;
this.decodeStrings = !noDecode;
// Crypto is kind of old and crusty. Historically, its default string
// encoding is 'binary' so we have to make this configurable.
// Everything else in the universe uses 'utf8', though.
this.defaultEncoding = options.defaultEncoding || 'utf8';
// not an actual buffer we keep track of, but a measurement
// of how much we're waiting to get pushed to some underlying
// socket or file.
this.length = 0;
// a flag to see when we're in the middle of a write.
this.writing = false;
// when true all writes will be buffered until .uncork() call
this.corked = 0;
// a flag to be able to tell if the onwrite cb is called immediately,
// or on a later tick. We set this to true at first, because any
// actions that shouldn't happen until "later" should generally also
// not happen before the first write call.
this.sync = true;
// a flag to know if we're processing previously buffered items, which
// may call the _write() callback in the same tick, so that we don't
// end up in an overlapped onwrite situation.
this.bufferProcessing = false;
// the callback that's passed to _write(chunk,cb)
this.onwrite = function (er) {
onwrite(stream, er);
};
// the callback that the user supplies to write(chunk,encoding,cb)
this.writecb = null;
// the amount that is being written when _write is called.
this.writelen = 0;
this.bufferedRequest = null;
this.lastBufferedRequest = null;
// number of pending user-supplied write callbacks
// this must be 0 before 'finish' can be emitted
this.pendingcb = 0;
// emit prefinish if the only thing we're waiting for is _write cbs
// This is relevant for synchronous Transform streams
this.prefinished = false;
// True if the error was already emitted and should not be thrown again
this.errorEmitted = false;
// count buffered requests
this.bufferedRequestCount = 0;
// allocate the first CorkedRequest, there is always
// one allocated and free to use, and we maintain at most two
this.corkedRequestsFree = new CorkedRequest(this);
}
WritableState.prototype.getBuffer = function getBuffer() {
var current = this.bufferedRequest;
var out = [];
while (current) {
out.push(current);
current = current.next;
}
return out;
};
(function () {
try {
Object.defineProperty(WritableState.prototype, 'buffer', {
get: internalUtil.deprecate(function () {
return this.getBuffer();
}, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')
});
} catch (_) {}
})();
// Test _writableState for inheritance to account for Duplex streams,
// whose prototype chain only points to Readable.
var realHasInstance;
if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
realHasInstance = Function.prototype[Symbol.hasInstance];
Object.defineProperty(Writable, Symbol.hasInstance, {
value: function (object) {
if (realHasInstance.call(this, object)) return true;
if (this !== Writable) return false;
return object && object._writableState instanceof WritableState;
}
});
} else {
realHasInstance = function (object) {
return object instanceof this;
};
}
function Writable(options) {
Duplex = Duplex || require('./_stream_duplex');
// Writable ctor is applied to Duplexes, too.
// `realHasInstance` is necessary because using plain `instanceof`
// would return false, as no `_writableState` property is attached.
// Trying to use the custom `instanceof` for Writable here will also break the
// Node.js LazyTransform implementation, which has a non-trivial getter for
// `_writableState` that would lead to infinite recursion.
if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
return new Writable(options);
}
this._writableState = new WritableState(options, this);
// legacy.
this.writable = true;
if (options) {
if (typeof options.write === 'function') this._write = options.write;
if (typeof options.writev === 'function') this._writev = options.writev;
if (typeof options.destroy === 'function') this._destroy = options.destroy;
if (typeof options.final === 'function') this._final = options.final;
}
Stream.call(this);
}
// Otherwise people can pipe Writable streams, which is just wrong.
Writable.prototype.pipe = function () {
this.emit('error', new Error('Cannot pipe, not readable'));
};
function writeAfterEnd(stream, cb) {
var er = new Error('write after end');
// TODO: defer error events consistently everywhere, not just the cb
stream.emit('error', er);
pna.nextTick(cb, er);
}
// Checks that a user-supplied chunk is valid, especially for the particular
// mode the stream is in. Currently this means that `null` is never accepted
// and undefined/non-string values are only allowed in object mode.
function validChunk(stream, state, chunk, cb) {
var valid = true;
var er = false;
if (chunk === null) {
er = new TypeError('May not write null values to stream');
} else if (typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
er = new TypeError('Invalid non-string/buffer chunk');
}
if (er) {
stream.emit('error', er);
pna.nextTick(cb, er);
valid = false;
}
return valid;
}
Writable.prototype.write = function (chunk, encoding, cb) {
var state = this._writableState;
var ret = false;
var isBuf = !state.objectMode && _isUint8Array(chunk);
if (isBuf && !Buffer.isBuffer(chunk)) {
chunk = _uint8ArrayToBuffer(chunk);
}
if (typeof encoding === 'function') {
cb = encoding;
encoding = null;
}
if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
if (typeof cb !== 'function') cb = nop;
if (state.ended) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {
state.pendingcb++;
ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);
}
return ret;
};
Writable.prototype.cork = function () {
var state = this._writableState;
state.corked++;
};
Writable.prototype.uncork = function () {
var state = this._writableState;
if (state.corked) {
state.corked--;
if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
}
};
Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
// node::ParseEncoding() requires lower case.
if (typeof encoding === 'string') encoding = encoding.toLowerCase();
if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
this._writableState.defaultEncoding = encoding;
return this;
};
function decodeChunk(state, chunk, encoding) {
if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
chunk = Buffer.from(chunk, encoding);
}
return chunk;
}
Object.defineProperty(Writable.prototype, 'writableHighWaterMark', {
// making it explicit this property is not enumerable
// because otherwise some prototype manipulation in
// userland will fail
enumerable: false,
get: function () {
return this._writableState.highWaterMark;
}
});
// if we're already writing something, then just put this
// in the queue, and wait our turn. Otherwise, call _write
// If we return false, then we need a drain event, so set that flag.
function writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {
if (!isBuf) {
var newChunk = decodeChunk(state, chunk, encoding);
if (chunk !== newChunk) {
isBuf = true;
encoding = 'buffer';
chunk = newChunk;
}
}
var len = state.objectMode ? 1 : chunk.length;
state.length += len;
var ret = state.length < state.highWaterMark;
// we must ensure that previous needDrain will not be reset to false.
if (!ret) state.needDrain = true;
if (state.writing || state.corked) {
var last = state.lastBufferedRequest;
state.lastBufferedRequest = {
chunk: chunk,
encoding: encoding,
isBuf: isBuf,
callback: cb,
next: null
};
if (last) {
last.next = state.lastBufferedRequest;
} else {
state.bufferedRequest = state.lastBufferedRequest;
}
state.bufferedRequestCount += 1;
} else {
doWrite(stream, state, false, len, chunk, encoding, cb);
}
return ret;
}
function doWrite(stream, state, writev, len, chunk, encoding, cb) {
state.writelen = len;
state.writecb = cb;
state.writing = true;
state.sync = true;
if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
state.sync = false;
}
function onwriteError(stream, state, sync, er, cb) {
--state.pendingcb;
if (sync) {
// defer the callback if we are being called synchronously
// to avoid piling up things on the stack
pna.nextTick(cb, er);
// this can emit finish, and it will always happen
// after error
pna.nextTick(finishMaybe, stream, state);
stream._writableState.errorEmitted = true;
stream.emit('error', er);
} else {
// the caller expect this to happen before if
// it is async
cb(er);
stream._writableState.errorEmitted = true;
stream.emit('error', er);
// this can emit finish, but finish must
// always follow error
finishMaybe(stream, state);
}
}
function onwriteStateUpdate(state) {
state.writing = false;
state.writecb = null;
state.length -= state.writelen;
state.writelen = 0;
}
function onwrite(stream, er) {
var state = stream._writableState;
var sync = state.sync;
var cb = state.writecb;
onwriteStateUpdate(state);
if (er) onwriteError(stream, state, sync, er, cb);else {
// Check if we're actually ready to finish, but don't emit yet
var finished = needFinish(state);
if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
clearBuffer(stream, state);
}
if (sync) {
/*<replacement>*/
asyncWrite(afterWrite, stream, state, finished, cb);
/*</replacement>*/
} else {
afterWrite(stream, state, finished, cb);
}
}
}
function afterWrite(stream, state, finished, cb) {
if (!finished) onwriteDrain(stream, state);
state.pendingcb--;
cb();
finishMaybe(stream, state);
}
// Must force callback to be called on nextTick, so that we don't
// emit 'drain' before the write() consumer gets the 'false' return
// value, and has a chance to attach a 'drain' listener.
function onwriteDrain(stream, state) {
if (state.length === 0 && state.needDrain) {
state.needDrain = false;
stream.emit('drain');
}
}
// if there's something in the buffer waiting, then process it
function clearBuffer(stream, state) {
state.bufferProcessing = true;
var entry = state.bufferedRequest;
if (stream._writev && entry && entry.next) {
// Fast case, write everything using _writev()
var l = state.bufferedRequestCount;
var buffer = new Array(l);
var holder = state.corkedRequestsFree;
holder.entry = entry;
var count = 0;
var allBuffers = true;
while (entry) {
buffer[count] = entry;
if (!entry.isBuf) allBuffers = false;
entry = entry.next;
count += 1;
}
buffer.allBuffers = allBuffers;
doWrite(stream, state, true, state.length, buffer, '', holder.finish);
// doWrite is almost always async, defer these to save a bit of time
// as the hot path ends with doWrite
state.pendingcb++;
state.lastBufferedRequest = null;
if (holder.next) {
state.corkedRequestsFree = holder.next;
holder.next = null;
} else {
state.corkedRequestsFree = new CorkedRequest(state);
}
state.bufferedRequestCount = 0;
} else {
// Slow case, write chunks one-by-one
while (entry) {
var chunk = entry.chunk;
var encoding = entry.encoding;
var cb = entry.callback;
var len = state.objectMode ? 1 : chunk.length;
doWrite(stream, state, false, len, chunk, encoding, cb);
entry = entry.next;
state.bufferedRequestCount--;
// if we didn't call the onwrite immediately, then
// it means that we need to wait until it does.
// also, that means that the chunk and cb are currently
// being processed, so move the buffer counter past them.
if (state.writing) {
break;
}
}
if (entry === null) state.lastBufferedRequest = null;
}
state.bufferedRequest = entry;
state.bufferProcessing = false;
}
Writable.prototype._write = function (chunk, encoding, cb) {
cb(new Error('_write() is not implemented'));
};
Writable.prototype._writev = null;
Writable.prototype.end = function (chunk, encoding, cb) {
var state = this._writableState;
if (typeof chunk === 'function') {
cb = chunk;
chunk = null;
encoding = null;
} else if (typeof encoding === 'function') {
cb = encoding;
encoding = null;
}
if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
// .end() fully uncorks
if (state.corked) {
state.corked = 1;
this.uncork();
}
// ignore unnecessary end() calls.
if (!state.ending) endWritable(this, state, cb);
};
function needFinish(state) {
return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
}
function callFinal(stream, state) {
stream._final(function (err) {
state.pendingcb--;
if (err) {
stream.emit('error', err);
}
state.prefinished = true;
stream.emit('prefinish');
finishMaybe(stream, state);
});
}
function prefinish(stream, state) {
if (!state.prefinished && !state.finalCalled) {
if (typeof stream._final === 'function') {
state.pendingcb++;
state.finalCalled = true;
pna.nextTick(callFinal, stream, state);
} else {
state.prefinished = true;
stream.emit('prefinish');
}
}
}
function finishMaybe(stream, state) {
var need = needFinish(state);
if (need) {
prefinish(stream, state);
if (state.pendingcb === 0) {
state.finished = true;
stream.emit('finish');
}
}
return need;
}
function endWritable(stream, state, cb) {
state.ending = true;
finishMaybe(stream, state);
if (cb) {
if (state.finished) pna.nextTick(cb);else stream.once('finish', cb);
}
state.ended = true;
stream.writable = false;
}
function onCorkedFinish(corkReq, state, err) {
var entry = corkReq.entry;
corkReq.entry = null;
while (entry) {
var cb = entry.callback;
state.pendingcb--;
cb(err);
entry = entry.next;
}
// reuse the free corkReq.
state.corkedRequestsFree.next = corkReq;
}
Object.defineProperty(Writable.prototype, 'destroyed', {
get: function () {
if (this._writableState === undefined) {
return false;
}
return this._writableState.destroyed;
},
set: function (value) {
// we ignore the value if the stream
// has not been initialized yet
if (!this._writableState) {
return;
}
// backward compatibility, the user is explicitly
// managing destroyed
this._writableState.destroyed = value;
}
});
Writable.prototype.destroy = destroyImpl.destroy;
Writable.prototype._undestroy = destroyImpl.undestroy;
Writable.prototype._destroy = function (err, cb) {
this.end();
cb(err);
};

View file

@ -0,0 +1,78 @@
'use strict';
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var Buffer = require('safe-buffer').Buffer;
var util = require('util');
function copyBuffer(src, target, offset) {
src.copy(target, offset);
}
module.exports = function () {
function BufferList() {
_classCallCheck(this, BufferList);
this.head = null;
this.tail = null;
this.length = 0;
}
BufferList.prototype.push = function push(v) {
var entry = { data: v, next: null };
if (this.length > 0) this.tail.next = entry;else this.head = entry;
this.tail = entry;
++this.length;
};
BufferList.prototype.unshift = function unshift(v) {
var entry = { data: v, next: this.head };
if (this.length === 0) this.tail = entry;
this.head = entry;
++this.length;
};
BufferList.prototype.shift = function shift() {
if (this.length === 0) return;
var ret = this.head.data;
if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
--this.length;
return ret;
};
BufferList.prototype.clear = function clear() {
this.head = this.tail = null;
this.length = 0;
};
BufferList.prototype.join = function join(s) {
if (this.length === 0) return '';
var p = this.head;
var ret = '' + p.data;
while (p = p.next) {
ret += s + p.data;
}return ret;
};
BufferList.prototype.concat = function concat(n) {
if (this.length === 0) return Buffer.alloc(0);
var ret = Buffer.allocUnsafe(n >>> 0);
var p = this.head;
var i = 0;
while (p) {
copyBuffer(p.data, ret, i);
i += p.data.length;
p = p.next;
}
return ret;
};
return BufferList;
}();
if (util && util.inspect && util.inspect.custom) {
module.exports.prototype[util.inspect.custom] = function () {
var obj = util.inspect({ length: this.length });
return this.constructor.name + ' ' + obj;
};
}

View file

@ -0,0 +1,84 @@
'use strict';
/*<replacement>*/
var pna = require('process-nextick-args');
/*</replacement>*/
// undocumented cb() API, needed for core, not for public API
function destroy(err, cb) {
var _this = this;
var readableDestroyed = this._readableState && this._readableState.destroyed;
var writableDestroyed = this._writableState && this._writableState.destroyed;
if (readableDestroyed || writableDestroyed) {
if (cb) {
cb(err);
} else if (err) {
if (!this._writableState) {
pna.nextTick(emitErrorNT, this, err);
} else if (!this._writableState.errorEmitted) {
this._writableState.errorEmitted = true;
pna.nextTick(emitErrorNT, this, err);
}
}
return this;
}
// we set destroyed to true before firing error callbacks in order
// to make it re-entrance safe in case destroy() is called within callbacks
if (this._readableState) {
this._readableState.destroyed = true;
}
// if this is a duplex stream mark the writable part as destroyed as well
if (this._writableState) {
this._writableState.destroyed = true;
}
this._destroy(err || null, function (err) {
if (!cb && err) {
if (!_this._writableState) {
pna.nextTick(emitErrorNT, _this, err);
} else if (!_this._writableState.errorEmitted) {
_this._writableState.errorEmitted = true;
pna.nextTick(emitErrorNT, _this, err);
}
} else if (cb) {
cb(err);
}
});
return this;
}
function undestroy() {
if (this._readableState) {
this._readableState.destroyed = false;
this._readableState.reading = false;
this._readableState.ended = false;
this._readableState.endEmitted = false;
}
if (this._writableState) {
this._writableState.destroyed = false;
this._writableState.ended = false;
this._writableState.ending = false;
this._writableState.finalCalled = false;
this._writableState.prefinished = false;
this._writableState.finished = false;
this._writableState.errorEmitted = false;
}
}
function emitErrorNT(self, err) {
self.emit('error', err);
}
module.exports = {
destroy: destroy,
undestroy: undestroy
};

View file

@ -0,0 +1 @@
module.exports = require('events').EventEmitter;

View file

@ -0,0 +1 @@
module.exports = require('stream');

View file

@ -0,0 +1,52 @@
{
"name": "readable-stream",
"version": "2.3.8",
"description": "Streams3, a user-land copy of the stream library from Node.js",
"main": "readable.js",
"dependencies": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
},
"devDependencies": {
"assert": "^1.4.0",
"babel-polyfill": "^6.9.1",
"buffer": "^4.9.0",
"lolex": "^2.3.2",
"nyc": "^6.4.0",
"tap": "^0.7.0",
"tape": "^4.8.0"
},
"scripts": {
"test": "tap test/parallel/*.js test/ours/*.js && node test/verify-dependencies.js",
"ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js",
"cover": "nyc npm test",
"report": "nyc report --reporter=lcov"
},
"repository": {
"type": "git",
"url": "git://github.com/nodejs/readable-stream"
},
"keywords": [
"readable",
"stream",
"pipe"
],
"browser": {
"util": false,
"./readable.js": "./readable-browser.js",
"./writable.js": "./writable-browser.js",
"./duplex.js": "./duplex-browser.js",
"./lib/internal/streams/stream.js": "./lib/internal/streams/stream-browser.js"
},
"nyc": {
"include": [
"lib/**.js"
]
},
"license": "MIT"
}

View file

@ -0,0 +1 @@
module.exports = require('./readable').PassThrough

View file

@ -0,0 +1,7 @@
exports = module.exports = require('./lib/_stream_readable.js');
exports.Stream = exports;
exports.Readable = exports;
exports.Writable = require('./lib/_stream_writable.js');
exports.Duplex = require('./lib/_stream_duplex.js');
exports.Transform = require('./lib/_stream_transform.js');
exports.PassThrough = require('./lib/_stream_passthrough.js');

View file

@ -0,0 +1,19 @@
var Stream = require('stream');
if (process.env.READABLE_STREAM === 'disable' && Stream) {
module.exports = Stream;
exports = module.exports = Stream.Readable;
exports.Readable = Stream.Readable;
exports.Writable = Stream.Writable;
exports.Duplex = Stream.Duplex;
exports.Transform = Stream.Transform;
exports.PassThrough = Stream.PassThrough;
exports.Stream = Stream;
} else {
exports = module.exports = require('./lib/_stream_readable.js');
exports.Stream = Stream || exports;
exports.Readable = exports;
exports.Writable = require('./lib/_stream_writable.js');
exports.Duplex = require('./lib/_stream_duplex.js');
exports.Transform = require('./lib/_stream_transform.js');
exports.PassThrough = require('./lib/_stream_passthrough.js');
}

View file

@ -0,0 +1 @@
module.exports = require('./readable').Transform

View file

@ -0,0 +1 @@
module.exports = require('./lib/_stream_writable.js');

View file

@ -0,0 +1,8 @@
var Stream = require("stream")
var Writable = require("./lib/_stream_writable.js")
if (process.env.READABLE_STREAM === 'disable') {
module.exports = Stream && Stream.Writable || Writable
} else {
module.exports = Writable
}

View file

@ -0,0 +1,187 @@
declare module "safe-buffer" {
export class Buffer {
length: number
write(string: string, offset?: number, length?: number, encoding?: string): number;
toString(encoding?: string, start?: number, end?: number): string;
toJSON(): { type: 'Buffer', data: any[] };
equals(otherBuffer: Buffer): boolean;
compare(otherBuffer: Buffer, targetStart?: number, targetEnd?: number, sourceStart?: number, sourceEnd?: number): number;
copy(targetBuffer: Buffer, targetStart?: number, sourceStart?: number, sourceEnd?: number): number;
slice(start?: number, end?: number): Buffer;
writeUIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
writeUIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
writeIntLE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
writeIntBE(value: number, offset: number, byteLength: number, noAssert?: boolean): number;
readUIntLE(offset: number, byteLength: number, noAssert?: boolean): number;
readUIntBE(offset: number, byteLength: number, noAssert?: boolean): number;
readIntLE(offset: number, byteLength: number, noAssert?: boolean): number;
readIntBE(offset: number, byteLength: number, noAssert?: boolean): number;
readUInt8(offset: number, noAssert?: boolean): number;
readUInt16LE(offset: number, noAssert?: boolean): number;
readUInt16BE(offset: number, noAssert?: boolean): number;
readUInt32LE(offset: number, noAssert?: boolean): number;
readUInt32BE(offset: number, noAssert?: boolean): number;
readInt8(offset: number, noAssert?: boolean): number;
readInt16LE(offset: number, noAssert?: boolean): number;
readInt16BE(offset: number, noAssert?: boolean): number;
readInt32LE(offset: number, noAssert?: boolean): number;
readInt32BE(offset: number, noAssert?: boolean): number;
readFloatLE(offset: number, noAssert?: boolean): number;
readFloatBE(offset: number, noAssert?: boolean): number;
readDoubleLE(offset: number, noAssert?: boolean): number;
readDoubleBE(offset: number, noAssert?: boolean): number;
swap16(): Buffer;
swap32(): Buffer;
swap64(): Buffer;
writeUInt8(value: number, offset: number, noAssert?: boolean): number;
writeUInt16LE(value: number, offset: number, noAssert?: boolean): number;
writeUInt16BE(value: number, offset: number, noAssert?: boolean): number;
writeUInt32LE(value: number, offset: number, noAssert?: boolean): number;
writeUInt32BE(value: number, offset: number, noAssert?: boolean): number;
writeInt8(value: number, offset: number, noAssert?: boolean): number;
writeInt16LE(value: number, offset: number, noAssert?: boolean): number;
writeInt16BE(value: number, offset: number, noAssert?: boolean): number;
writeInt32LE(value: number, offset: number, noAssert?: boolean): number;
writeInt32BE(value: number, offset: number, noAssert?: boolean): number;
writeFloatLE(value: number, offset: number, noAssert?: boolean): number;
writeFloatBE(value: number, offset: number, noAssert?: boolean): number;
writeDoubleLE(value: number, offset: number, noAssert?: boolean): number;
writeDoubleBE(value: number, offset: number, noAssert?: boolean): number;
fill(value: any, offset?: number, end?: number): this;
indexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number;
lastIndexOf(value: string | number | Buffer, byteOffset?: number, encoding?: string): number;
includes(value: string | number | Buffer, byteOffset?: number, encoding?: string): boolean;
/**
* Allocates a new buffer containing the given {str}.
*
* @param str String to store in buffer.
* @param encoding encoding to use, optional. Default is 'utf8'
*/
constructor (str: string, encoding?: string);
/**
* Allocates a new buffer of {size} octets.
*
* @param size count of octets to allocate.
*/
constructor (size: number);
/**
* Allocates a new buffer containing the given {array} of octets.
*
* @param array The octets to store.
*/
constructor (array: Uint8Array);
/**
* Produces a Buffer backed by the same allocated memory as
* the given {ArrayBuffer}.
*
*
* @param arrayBuffer The ArrayBuffer with which to share memory.
*/
constructor (arrayBuffer: ArrayBuffer);
/**
* Allocates a new buffer containing the given {array} of octets.
*
* @param array The octets to store.
*/
constructor (array: any[]);
/**
* Copies the passed {buffer} data onto a new {Buffer} instance.
*
* @param buffer The buffer to copy.
*/
constructor (buffer: Buffer);
prototype: Buffer;
/**
* Allocates a new Buffer using an {array} of octets.
*
* @param array
*/
static from(array: any[]): Buffer;
/**
* When passed a reference to the .buffer property of a TypedArray instance,
* the newly created Buffer will share the same allocated memory as the TypedArray.
* The optional {byteOffset} and {length} arguments specify a memory range
* within the {arrayBuffer} that will be shared by the Buffer.
*
* @param arrayBuffer The .buffer property of a TypedArray or a new ArrayBuffer()
* @param byteOffset
* @param length
*/
static from(arrayBuffer: ArrayBuffer, byteOffset?: number, length?: number): Buffer;
/**
* Copies the passed {buffer} data onto a new Buffer instance.
*
* @param buffer
*/
static from(buffer: Buffer): Buffer;
/**
* Creates a new Buffer containing the given JavaScript string {str}.
* If provided, the {encoding} parameter identifies the character encoding.
* If not provided, {encoding} defaults to 'utf8'.
*
* @param str
*/
static from(str: string, encoding?: string): Buffer;
/**
* Returns true if {obj} is a Buffer
*
* @param obj object to test.
*/
static isBuffer(obj: any): obj is Buffer;
/**
* Returns true if {encoding} is a valid encoding argument.
* Valid string encodings in Node 0.12: 'ascii'|'utf8'|'utf16le'|'ucs2'(alias of 'utf16le')|'base64'|'binary'(deprecated)|'hex'
*
* @param encoding string to test.
*/
static isEncoding(encoding: string): boolean;
/**
* Gives the actual byte length of a string. encoding defaults to 'utf8'.
* This is not the same as String.prototype.length since that returns the number of characters in a string.
*
* @param string string to test.
* @param encoding encoding used to evaluate (defaults to 'utf8')
*/
static byteLength(string: string, encoding?: string): number;
/**
* Returns a buffer which is the result of concatenating all the buffers in the list together.
*
* If the list has no items, or if the totalLength is 0, then it returns a zero-length buffer.
* If the list has exactly one item, then the first item of the list is returned.
* If the list has more than one item, then a new Buffer is created.
*
* @param list An array of Buffer objects to concatenate
* @param totalLength Total length of the buffers when concatenated.
* If totalLength is not provided, it is read from the buffers in the list. However, this adds an additional loop to the function, so it is faster to provide the length explicitly.
*/
static concat(list: Buffer[], totalLength?: number): Buffer;
/**
* The same as buf1.compare(buf2).
*/
static compare(buf1: Buffer, buf2: Buffer): number;
/**
* Allocates a new buffer of {size} octets.
*
* @param size count of octets to allocate.
* @param fill if specified, buffer will be initialized by calling buf.fill(fill).
* If parameter is omitted, buffer will be filled with zeros.
* @param encoding encoding used for call to buf.fill while initalizing
*/
static alloc(size: number, fill?: string | Buffer | number, encoding?: string): Buffer;
/**
* Allocates a new buffer of {size} octets, leaving memory not initialized, so the contents
* of the newly created Buffer are unknown and may contain sensitive data.
*
* @param size count of octets to allocate
*/
static allocUnsafe(size: number): Buffer;
/**
* Allocates a new non-pooled buffer of {size} octets, leaving memory not initialized, so the contents
* of the newly created Buffer are unknown and may contain sensitive data.
*
* @param size count of octets to allocate
*/
static allocUnsafeSlow(size: number): Buffer;
}
}

View file

@ -0,0 +1,62 @@
/* eslint-disable node/no-deprecated-api */
var buffer = require('buffer')
var Buffer = buffer.Buffer
// alternative to using Object.keys for old browsers
function copyProps (src, dst) {
for (var key in src) {
dst[key] = src[key]
}
}
if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
module.exports = buffer
} else {
// Copy properties from require('buffer')
copyProps(buffer, exports)
exports.Buffer = SafeBuffer
}
function SafeBuffer (arg, encodingOrOffset, length) {
return Buffer(arg, encodingOrOffset, length)
}
// Copy static methods from Buffer
copyProps(Buffer, SafeBuffer)
SafeBuffer.from = function (arg, encodingOrOffset, length) {
if (typeof arg === 'number') {
throw new TypeError('Argument must not be a number')
}
return Buffer(arg, encodingOrOffset, length)
}
SafeBuffer.alloc = function (size, fill, encoding) {
if (typeof size !== 'number') {
throw new TypeError('Argument must be a number')
}
var buf = Buffer(size)
if (fill !== undefined) {
if (typeof encoding === 'string') {
buf.fill(fill, encoding)
} else {
buf.fill(fill)
}
} else {
buf.fill(0)
}
return buf
}
SafeBuffer.allocUnsafe = function (size) {
if (typeof size !== 'number') {
throw new TypeError('Argument must be a number')
}
return Buffer(size)
}
SafeBuffer.allocUnsafeSlow = function (size) {
if (typeof size !== 'number') {
throw new TypeError('Argument must be a number')
}
return buffer.SlowBuffer(size)
}

View file

@ -0,0 +1,37 @@
{
"name": "safe-buffer",
"description": "Safer Node.js Buffer API",
"version": "5.1.2",
"author": {
"name": "Feross Aboukhadijeh",
"email": "feross@feross.org",
"url": "http://feross.org"
},
"bugs": {
"url": "https://github.com/feross/safe-buffer/issues"
},
"devDependencies": {
"standard": "*",
"tape": "^4.0.0"
},
"homepage": "https://github.com/feross/safe-buffer",
"keywords": [
"buffer",
"buffer allocate",
"node security",
"safe",
"safe-buffer",
"security",
"uninitialized"
],
"license": "MIT",
"main": "index.js",
"types": "index.d.ts",
"repository": {
"type": "git",
"url": "git://github.com/feross/safe-buffer.git"
},
"scripts": {
"test": "standard && tape test/*.js"
}
}

View file

@ -0,0 +1,296 @@
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
'use strict';
/*<replacement>*/
var Buffer = require('safe-buffer').Buffer;
/*</replacement>*/
var isEncoding = Buffer.isEncoding || function (encoding) {
encoding = '' + encoding;
switch (encoding && encoding.toLowerCase()) {
case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':
return true;
default:
return false;
}
};
function _normalizeEncoding(enc) {
if (!enc) return 'utf8';
var retried;
while (true) {
switch (enc) {
case 'utf8':
case 'utf-8':
return 'utf8';
case 'ucs2':
case 'ucs-2':
case 'utf16le':
case 'utf-16le':
return 'utf16le';
case 'latin1':
case 'binary':
return 'latin1';
case 'base64':
case 'ascii':
case 'hex':
return enc;
default:
if (retried) return; // undefined
enc = ('' + enc).toLowerCase();
retried = true;
}
}
};
// Do not cache `Buffer.isEncoding` when checking encoding names as some
// modules monkey-patch it to support additional encodings
function normalizeEncoding(enc) {
var nenc = _normalizeEncoding(enc);
if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);
return nenc || enc;
}
// StringDecoder provides an interface for efficiently splitting a series of
// buffers into a series of JS strings without breaking apart multi-byte
// characters.
exports.StringDecoder = StringDecoder;
function StringDecoder(encoding) {
this.encoding = normalizeEncoding(encoding);
var nb;
switch (this.encoding) {
case 'utf16le':
this.text = utf16Text;
this.end = utf16End;
nb = 4;
break;
case 'utf8':
this.fillLast = utf8FillLast;
nb = 4;
break;
case 'base64':
this.text = base64Text;
this.end = base64End;
nb = 3;
break;
default:
this.write = simpleWrite;
this.end = simpleEnd;
return;
}
this.lastNeed = 0;
this.lastTotal = 0;
this.lastChar = Buffer.allocUnsafe(nb);
}
StringDecoder.prototype.write = function (buf) {
if (buf.length === 0) return '';
var r;
var i;
if (this.lastNeed) {
r = this.fillLast(buf);
if (r === undefined) return '';
i = this.lastNeed;
this.lastNeed = 0;
} else {
i = 0;
}
if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);
return r || '';
};
StringDecoder.prototype.end = utf8End;
// Returns only complete characters in a Buffer
StringDecoder.prototype.text = utf8Text;
// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer
StringDecoder.prototype.fillLast = function (buf) {
if (this.lastNeed <= buf.length) {
buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);
return this.lastChar.toString(this.encoding, 0, this.lastTotal);
}
buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);
this.lastNeed -= buf.length;
};
// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a
// continuation byte. If an invalid byte is detected, -2 is returned.
function utf8CheckByte(byte) {
if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;
return byte >> 6 === 0x02 ? -1 : -2;
}
// Checks at most 3 bytes at the end of a Buffer in order to detect an
// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)
// needed to complete the UTF-8 character (if applicable) are returned.
function utf8CheckIncomplete(self, buf, i) {
var j = buf.length - 1;
if (j < i) return 0;
var nb = utf8CheckByte(buf[j]);
if (nb >= 0) {
if (nb > 0) self.lastNeed = nb - 1;
return nb;
}
if (--j < i || nb === -2) return 0;
nb = utf8CheckByte(buf[j]);
if (nb >= 0) {
if (nb > 0) self.lastNeed = nb - 2;
return nb;
}
if (--j < i || nb === -2) return 0;
nb = utf8CheckByte(buf[j]);
if (nb >= 0) {
if (nb > 0) {
if (nb === 2) nb = 0;else self.lastNeed = nb - 3;
}
return nb;
}
return 0;
}
// Validates as many continuation bytes for a multi-byte UTF-8 character as
// needed or are available. If we see a non-continuation byte where we expect
// one, we "replace" the validated continuation bytes we've seen so far with
// a single UTF-8 replacement character ('\ufffd'), to match v8's UTF-8 decoding
// behavior. The continuation byte check is included three times in the case
// where all of the continuation bytes for a character exist in the same buffer.
// It is also done this way as a slight performance increase instead of using a
// loop.
function utf8CheckExtraBytes(self, buf, p) {
if ((buf[0] & 0xC0) !== 0x80) {
self.lastNeed = 0;
return '\ufffd';
}
if (self.lastNeed > 1 && buf.length > 1) {
if ((buf[1] & 0xC0) !== 0x80) {
self.lastNeed = 1;
return '\ufffd';
}
if (self.lastNeed > 2 && buf.length > 2) {
if ((buf[2] & 0xC0) !== 0x80) {
self.lastNeed = 2;
return '\ufffd';
}
}
}
}
// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.
function utf8FillLast(buf) {
var p = this.lastTotal - this.lastNeed;
var r = utf8CheckExtraBytes(this, buf, p);
if (r !== undefined) return r;
if (this.lastNeed <= buf.length) {
buf.copy(this.lastChar, p, 0, this.lastNeed);
return this.lastChar.toString(this.encoding, 0, this.lastTotal);
}
buf.copy(this.lastChar, p, 0, buf.length);
this.lastNeed -= buf.length;
}
// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a
// partial character, the character's bytes are buffered until the required
// number of bytes are available.
function utf8Text(buf, i) {
var total = utf8CheckIncomplete(this, buf, i);
if (!this.lastNeed) return buf.toString('utf8', i);
this.lastTotal = total;
var end = buf.length - (total - this.lastNeed);
buf.copy(this.lastChar, 0, end);
return buf.toString('utf8', i, end);
}
// For UTF-8, a replacement character is added when ending on a partial
// character.
function utf8End(buf) {
var r = buf && buf.length ? this.write(buf) : '';
if (this.lastNeed) return r + '\ufffd';
return r;
}
// UTF-16LE typically needs two bytes per character, but even if we have an even
// number of bytes available, we need to check if we end on a leading/high
// surrogate. In that case, we need to wait for the next two bytes in order to
// decode the last character properly.
function utf16Text(buf, i) {
if ((buf.length - i) % 2 === 0) {
var r = buf.toString('utf16le', i);
if (r) {
var c = r.charCodeAt(r.length - 1);
if (c >= 0xD800 && c <= 0xDBFF) {
this.lastNeed = 2;
this.lastTotal = 4;
this.lastChar[0] = buf[buf.length - 2];
this.lastChar[1] = buf[buf.length - 1];
return r.slice(0, -1);
}
}
return r;
}
this.lastNeed = 1;
this.lastTotal = 2;
this.lastChar[0] = buf[buf.length - 1];
return buf.toString('utf16le', i, buf.length - 1);
}
// For UTF-16LE we do not explicitly append special replacement characters if we
// end on a partial character, we simply let v8 handle that.
function utf16End(buf) {
var r = buf && buf.length ? this.write(buf) : '';
if (this.lastNeed) {
var end = this.lastTotal - this.lastNeed;
return r + this.lastChar.toString('utf16le', 0, end);
}
return r;
}
function base64Text(buf, i) {
var n = (buf.length - i) % 3;
if (n === 0) return buf.toString('base64', i);
this.lastNeed = 3 - n;
this.lastTotal = 3;
if (n === 1) {
this.lastChar[0] = buf[buf.length - 1];
} else {
this.lastChar[0] = buf[buf.length - 2];
this.lastChar[1] = buf[buf.length - 1];
}
return buf.toString('base64', i, buf.length - n);
}
function base64End(buf) {
var r = buf && buf.length ? this.write(buf) : '';
if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);
return r;
}
// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)
function simpleWrite(buf) {
return buf.toString(this.encoding);
}
function simpleEnd(buf) {
return buf && buf.length ? this.write(buf) : '';
}

View file

@ -0,0 +1,31 @@
{
"name": "string_decoder",
"version": "1.1.1",
"description": "The string_decoder module from Node core",
"main": "lib/string_decoder.js",
"dependencies": {
"safe-buffer": "~5.1.0"
},
"devDependencies": {
"babel-polyfill": "^6.23.0",
"core-util-is": "^1.0.2",
"inherits": "^2.0.3",
"tap": "~0.4.8"
},
"scripts": {
"test": "tap test/parallel/*.js && node test/verify-dependencies",
"ci": "tap test/parallel/*.js test/ours/*.js --tap | tee test.tap && node test/verify-dependencies.js"
},
"repository": {
"type": "git",
"url": "git://github.com/nodejs/string_decoder.git"
},
"homepage": "https://github.com/nodejs/string_decoder",
"keywords": [
"string",
"decoder",
"browser",
"browserify"
],
"license": "MIT"
}

View file

@ -0,0 +1,54 @@
{
"name": "archiver-utils",
"version": "2.1.0",
"license": "MIT",
"description": "utility functions for archiver",
"homepage": "https://github.com/archiverjs/archiver-utils#readme",
"author": {
"name": "Chris Talkington",
"url": "http://christalkington.com/"
},
"repository": {
"type": "git",
"url": "https://github.com/archiverjs/archiver-utils.git"
},
"bugs": {
"url": "https://github.com/archiverjs/archiver-utils/issues"
},
"keywords": [
"archiver",
"utils"
],
"main": "index.js",
"files": [
"index.js",
"file.js"
],
"engines": {
"node": ">= 6"
},
"scripts": {
"test": "mocha --reporter dot"
},
"dependencies": {
"glob": "^7.1.4",
"graceful-fs": "^4.2.0",
"lazystream": "^1.0.0",
"lodash.defaults": "^4.2.0",
"lodash.difference": "^4.5.0",
"lodash.flatten": "^4.4.0",
"lodash.isplainobject": "^4.0.6",
"lodash.union": "^4.6.0",
"normalize-path": "^3.0.0",
"readable-stream": "^2.0.0"
},
"devDependencies": {
"chai": "^4.2.0",
"mkdirp": "^0.5.0",
"mocha": "^5.0.0",
"rimraf": "^2.6.3"
},
"publishConfig": {
"registry": "https://registry.npmjs.org/"
}
}

84
autotools/dbcompiler/node_modules/archiver/index.js generated vendored Normal file
View file

@ -0,0 +1,84 @@
/**
* Archiver Vending
*
* @ignore
* @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE}
* @copyright (c) 2012-2014 Chris Talkington, contributors.
*/
var Archiver = require('./lib/core');
var formats = {};
/**
* Dispenses a new Archiver instance.
*
* @constructor
* @param {String} format The archive format to use.
* @param {Object} options See [Archiver]{@link Archiver}
* @return {Archiver}
*/
var vending = function(format, options) {
return vending.create(format, options);
};
/**
* Creates a new Archiver instance.
*
* @param {String} format The archive format to use.
* @param {Object} options See [Archiver]{@link Archiver}
* @return {Archiver}
*/
vending.create = function(format, options) {
if (formats[format]) {
var instance = new Archiver(format, options);
instance.setFormat(format);
instance.setModule(new formats[format](options));
return instance;
} else {
throw new Error('create(' + format + '): format not registered');
}
};
/**
* Registers a format for use with archiver.
*
* @param {String} format The name of the format.
* @param {Function} module The function for archiver to interact with.
* @return void
*/
vending.registerFormat = function(format, module) {
if (formats[format]) {
throw new Error('register(' + format + '): format already registered');
}
if (typeof module !== 'function') {
throw new Error('register(' + format + '): format module invalid');
}
if (typeof module.prototype.append !== 'function' || typeof module.prototype.finalize !== 'function') {
throw new Error('register(' + format + '): format module missing methods');
}
formats[format] = module;
};
/**
* Check if the format is already registered.
*
* @param {String} format the name of the format.
* @return boolean
*/
vending.isRegisteredFormat = function (format) {
if (formats[format]) {
return true;
}
return false;
};
vending.registerFormat('zip', require('./lib/plugins/zip'));
vending.registerFormat('tar', require('./lib/plugins/tar'));
vending.registerFormat('json', require('./lib/plugins/json'));
module.exports = vending;

974
autotools/dbcompiler/node_modules/archiver/lib/core.js generated vendored Normal file
View file

@ -0,0 +1,974 @@
/**
* Archiver Core
*
* @ignore
* @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE}
* @copyright (c) 2012-2014 Chris Talkington, contributors.
*/
var fs = require('fs');
var glob = require('readdir-glob');
var async = require('async');
var path = require('path');
var util = require('archiver-utils');
var inherits = require('util').inherits;
var ArchiverError = require('./error');
var Transform = require('readable-stream').Transform;
var win32 = process.platform === 'win32';
/**
* @constructor
* @param {String} format The archive format to use.
* @param {(CoreOptions|TransformOptions)} options See also {@link ZipOptions} and {@link TarOptions}.
*/
var Archiver = function(format, options) {
if (!(this instanceof Archiver)) {
return new Archiver(format, options);
}
if (typeof format !== 'string') {
options = format;
format = 'zip';
}
options = this.options = util.defaults(options, {
highWaterMark: 1024 * 1024,
statConcurrency: 4
});
Transform.call(this, options);
this._format = false;
this._module = false;
this._pending = 0;
this._pointer = 0;
this._entriesCount = 0;
this._entriesProcessedCount = 0;
this._fsEntriesTotalBytes = 0;
this._fsEntriesProcessedBytes = 0;
this._queue = async.queue(this._onQueueTask.bind(this), 1);
this._queue.drain(this._onQueueDrain.bind(this));
this._statQueue = async.queue(this._onStatQueueTask.bind(this), options.statConcurrency);
this._statQueue.drain(this._onQueueDrain.bind(this));
this._state = {
aborted: false,
finalize: false,
finalizing: false,
finalized: false,
modulePiped: false
};
this._streams = [];
};
inherits(Archiver, Transform);
/**
* Internal logic for `abort`.
*
* @private
* @return void
*/
Archiver.prototype._abort = function() {
this._state.aborted = true;
this._queue.kill();
this._statQueue.kill();
if (this._queue.idle()) {
this._shutdown();
}
};
/**
* Internal helper for appending files.
*
* @private
* @param {String} filepath The source filepath.
* @param {EntryData} data The entry data.
* @return void
*/
Archiver.prototype._append = function(filepath, data) {
data = data || {};
var task = {
source: null,
filepath: filepath
};
if (!data.name) {
data.name = filepath;
}
data.sourcePath = filepath;
task.data = data;
this._entriesCount++;
if (data.stats && data.stats instanceof fs.Stats) {
task = this._updateQueueTaskWithStats(task, data.stats);
if (task) {
if (data.stats.size) {
this._fsEntriesTotalBytes += data.stats.size;
}
this._queue.push(task);
}
} else {
this._statQueue.push(task);
}
};
/**
* Internal logic for `finalize`.
*
* @private
* @return void
*/
Archiver.prototype._finalize = function() {
if (this._state.finalizing || this._state.finalized || this._state.aborted) {
return;
}
this._state.finalizing = true;
this._moduleFinalize();
this._state.finalizing = false;
this._state.finalized = true;
};
/**
* Checks the various state variables to determine if we can `finalize`.
*
* @private
* @return {Boolean}
*/
Archiver.prototype._maybeFinalize = function() {
if (this._state.finalizing || this._state.finalized || this._state.aborted) {
return false;
}
if (this._state.finalize && this._pending === 0 && this._queue.idle() && this._statQueue.idle()) {
this._finalize();
return true;
}
return false;
};
/**
* Appends an entry to the module.
*
* @private
* @fires Archiver#entry
* @param {(Buffer|Stream)} source
* @param {EntryData} data
* @param {Function} callback
* @return void
*/
Archiver.prototype._moduleAppend = function(source, data, callback) {
if (this._state.aborted) {
callback();
return;
}
this._module.append(source, data, function(err) {
this._task = null;
if (this._state.aborted) {
this._shutdown();
return;
}
if (err) {
this.emit('error', err);
setImmediate(callback);
return;
}
/**
* Fires when the entry's input has been processed and appended to the archive.
*
* @event Archiver#entry
* @type {EntryData}
*/
this.emit('entry', data);
this._entriesProcessedCount++;
if (data.stats && data.stats.size) {
this._fsEntriesProcessedBytes += data.stats.size;
}
/**
* @event Archiver#progress
* @type {ProgressData}
*/
this.emit('progress', {
entries: {
total: this._entriesCount,
processed: this._entriesProcessedCount
},
fs: {
totalBytes: this._fsEntriesTotalBytes,
processedBytes: this._fsEntriesProcessedBytes
}
});
setImmediate(callback);
}.bind(this));
};
/**
* Finalizes the module.
*
* @private
* @return void
*/
Archiver.prototype._moduleFinalize = function() {
if (typeof this._module.finalize === 'function') {
this._module.finalize();
} else if (typeof this._module.end === 'function') {
this._module.end();
} else {
this.emit('error', new ArchiverError('NOENDMETHOD'));
}
};
/**
* Pipes the module to our internal stream with error bubbling.
*
* @private
* @return void
*/
Archiver.prototype._modulePipe = function() {
this._module.on('error', this._onModuleError.bind(this));
this._module.pipe(this);
this._state.modulePiped = true;
};
/**
* Determines if the current module supports a defined feature.
*
* @private
* @param {String} key
* @return {Boolean}
*/
Archiver.prototype._moduleSupports = function(key) {
if (!this._module.supports || !this._module.supports[key]) {
return false;
}
return this._module.supports[key];
};
/**
* Unpipes the module from our internal stream.
*
* @private
* @return void
*/
Archiver.prototype._moduleUnpipe = function() {
this._module.unpipe(this);
this._state.modulePiped = false;
};
/**
* Normalizes entry data with fallbacks for key properties.
*
* @private
* @param {Object} data
* @param {fs.Stats} stats
* @return {Object}
*/
Archiver.prototype._normalizeEntryData = function(data, stats) {
data = util.defaults(data, {
type: 'file',
name: null,
date: null,
mode: null,
prefix: null,
sourcePath: null,
stats: false
});
if (stats && data.stats === false) {
data.stats = stats;
}
var isDir = data.type === 'directory';
if (data.name) {
if (typeof data.prefix === 'string' && '' !== data.prefix) {
data.name = data.prefix + '/' + data.name;
data.prefix = null;
}
data.name = util.sanitizePath(data.name);
if (data.type !== 'symlink' && data.name.slice(-1) === '/') {
isDir = true;
data.type = 'directory';
} else if (isDir) {
data.name += '/';
}
}
// 511 === 0777; 493 === 0755; 438 === 0666; 420 === 0644
if (typeof data.mode === 'number') {
if (win32) {
data.mode &= 511;
} else {
data.mode &= 4095
}
} else if (data.stats && data.mode === null) {
if (win32) {
data.mode = data.stats.mode & 511;
} else {
data.mode = data.stats.mode & 4095;
}
// stat isn't reliable on windows; force 0755 for dir
if (win32 && isDir) {
data.mode = 493;
}
} else if (data.mode === null) {
data.mode = isDir ? 493 : 420;
}
if (data.stats && data.date === null) {
data.date = data.stats.mtime;
} else {
data.date = util.dateify(data.date);
}
return data;
};
/**
* Error listener that re-emits error on to our internal stream.
*
* @private
* @param {Error} err
* @return void
*/
Archiver.prototype._onModuleError = function(err) {
/**
* @event Archiver#error
* @type {ErrorData}
*/
this.emit('error', err);
};
/**
* Checks the various state variables after queue has drained to determine if
* we need to `finalize`.
*
* @private
* @return void
*/
Archiver.prototype._onQueueDrain = function() {
if (this._state.finalizing || this._state.finalized || this._state.aborted) {
return;
}
if (this._state.finalize && this._pending === 0 && this._queue.idle() && this._statQueue.idle()) {
this._finalize();
}
};
/**
* Appends each queue task to the module.
*
* @private
* @param {Object} task
* @param {Function} callback
* @return void
*/
Archiver.prototype._onQueueTask = function(task, callback) {
var fullCallback = () => {
if(task.data.callback) {
task.data.callback();
}
callback();
}
if (this._state.finalizing || this._state.finalized || this._state.aborted) {
fullCallback();
return;
}
this._task = task;
this._moduleAppend(task.source, task.data, fullCallback);
};
/**
* Performs a file stat and reinjects the task back into the queue.
*
* @private
* @param {Object} task
* @param {Function} callback
* @return void
*/
Archiver.prototype._onStatQueueTask = function(task, callback) {
if (this._state.finalizing || this._state.finalized || this._state.aborted) {
callback();
return;
}
fs.lstat(task.filepath, function(err, stats) {
if (this._state.aborted) {
setImmediate(callback);
return;
}
if (err) {
this._entriesCount--;
/**
* @event Archiver#warning
* @type {ErrorData}
*/
this.emit('warning', err);
setImmediate(callback);
return;
}
task = this._updateQueueTaskWithStats(task, stats);
if (task) {
if (stats.size) {
this._fsEntriesTotalBytes += stats.size;
}
this._queue.push(task);
}
setImmediate(callback);
}.bind(this));
};
/**
* Unpipes the module and ends our internal stream.
*
* @private
* @return void
*/
Archiver.prototype._shutdown = function() {
this._moduleUnpipe();
this.end();
};
/**
* Tracks the bytes emitted by our internal stream.
*
* @private
* @param {Buffer} chunk
* @param {String} encoding
* @param {Function} callback
* @return void
*/
Archiver.prototype._transform = function(chunk, encoding, callback) {
if (chunk) {
this._pointer += chunk.length;
}
callback(null, chunk);
};
/**
* Updates and normalizes a queue task using stats data.
*
* @private
* @param {Object} task
* @param {fs.Stats} stats
* @return {Object}
*/
Archiver.prototype._updateQueueTaskWithStats = function(task, stats) {
if (stats.isFile()) {
task.data.type = 'file';
task.data.sourceType = 'stream';
task.source = util.lazyReadStream(task.filepath);
} else if (stats.isDirectory() && this._moduleSupports('directory')) {
task.data.name = util.trailingSlashIt(task.data.name);
task.data.type = 'directory';
task.data.sourcePath = util.trailingSlashIt(task.filepath);
task.data.sourceType = 'buffer';
task.source = Buffer.concat([]);
} else if (stats.isSymbolicLink() && this._moduleSupports('symlink')) {
var linkPath = fs.readlinkSync(task.filepath);
var dirName = path.dirname(task.filepath);
task.data.type = 'symlink';
task.data.linkname = path.relative(dirName, path.resolve(dirName, linkPath));
task.data.sourceType = 'buffer';
task.source = Buffer.concat([]);
} else {
if (stats.isDirectory()) {
this.emit('warning', new ArchiverError('DIRECTORYNOTSUPPORTED', task.data));
} else if (stats.isSymbolicLink()) {
this.emit('warning', new ArchiverError('SYMLINKNOTSUPPORTED', task.data));
} else {
this.emit('warning', new ArchiverError('ENTRYNOTSUPPORTED', task.data));
}
return null;
}
task.data = this._normalizeEntryData(task.data, stats);
return task;
};
/**
* Aborts the archiving process, taking a best-effort approach, by:
*
* - removing any pending queue tasks
* - allowing any active queue workers to finish
* - detaching internal module pipes
* - ending both sides of the Transform stream
*
* It will NOT drain any remaining sources.
*
* @return {this}
*/
Archiver.prototype.abort = function() {
if (this._state.aborted || this._state.finalized) {
return this;
}
this._abort();
return this;
};
/**
* Appends an input source (text string, buffer, or stream) to the instance.
*
* When the instance has received, processed, and emitted the input, the `entry`
* event is fired.
*
* @fires Archiver#entry
* @param {(Buffer|Stream|String)} source The input source.
* @param {EntryData} data See also {@link ZipEntryData} and {@link TarEntryData}.
* @return {this}
*/
Archiver.prototype.append = function(source, data) {
if (this._state.finalize || this._state.aborted) {
this.emit('error', new ArchiverError('QUEUECLOSED'));
return this;
}
data = this._normalizeEntryData(data);
if (typeof data.name !== 'string' || data.name.length === 0) {
this.emit('error', new ArchiverError('ENTRYNAMEREQUIRED'));
return this;
}
if (data.type === 'directory' && !this._moduleSupports('directory')) {
this.emit('error', new ArchiverError('DIRECTORYNOTSUPPORTED', { name: data.name }));
return this;
}
source = util.normalizeInputSource(source);
if (Buffer.isBuffer(source)) {
data.sourceType = 'buffer';
} else if (util.isStream(source)) {
data.sourceType = 'stream';
} else {
this.emit('error', new ArchiverError('INPUTSTEAMBUFFERREQUIRED', { name: data.name }));
return this;
}
this._entriesCount++;
this._queue.push({
data: data,
source: source
});
return this;
};
/**
* Appends a directory and its files, recursively, given its dirpath.
*
* @param {String} dirpath The source directory path.
* @param {String} destpath The destination path within the archive.
* @param {(EntryData|Function)} data See also [ZipEntryData]{@link ZipEntryData} and
* [TarEntryData]{@link TarEntryData}.
* @return {this}
*/
Archiver.prototype.directory = function(dirpath, destpath, data) {
if (this._state.finalize || this._state.aborted) {
this.emit('error', new ArchiverError('QUEUECLOSED'));
return this;
}
if (typeof dirpath !== 'string' || dirpath.length === 0) {
this.emit('error', new ArchiverError('DIRECTORYDIRPATHREQUIRED'));
return this;
}
this._pending++;
if (destpath === false) {
destpath = '';
} else if (typeof destpath !== 'string'){
destpath = dirpath;
}
var dataFunction = false;
if (typeof data === 'function') {
dataFunction = data;
data = {};
} else if (typeof data !== 'object') {
data = {};
}
var globOptions = {
stat: true,
dot: true
};
function onGlobEnd() {
this._pending--;
this._maybeFinalize();
}
function onGlobError(err) {
this.emit('error', err);
}
function onGlobMatch(match){
globber.pause();
var ignoreMatch = false;
var entryData = Object.assign({}, data);
entryData.name = match.relative;
entryData.prefix = destpath;
entryData.stats = match.stat;
entryData.callback = globber.resume.bind(globber);
try {
if (dataFunction) {
entryData = dataFunction(entryData);
if (entryData === false) {
ignoreMatch = true;
} else if (typeof entryData !== 'object') {
throw new ArchiverError('DIRECTORYFUNCTIONINVALIDDATA', { dirpath: dirpath });
}
}
} catch(e) {
this.emit('error', e);
return;
}
if (ignoreMatch) {
globber.resume();
return;
}
this._append(match.absolute, entryData);
}
var globber = glob(dirpath, globOptions);
globber.on('error', onGlobError.bind(this));
globber.on('match', onGlobMatch.bind(this));
globber.on('end', onGlobEnd.bind(this));
return this;
};
/**
* Appends a file given its filepath using a
* [lazystream]{@link https://github.com/jpommerening/node-lazystream} wrapper to
* prevent issues with open file limits.
*
* When the instance has received, processed, and emitted the file, the `entry`
* event is fired.
*
* @param {String} filepath The source filepath.
* @param {EntryData} data See also [ZipEntryData]{@link ZipEntryData} and
* [TarEntryData]{@link TarEntryData}.
* @return {this}
*/
Archiver.prototype.file = function(filepath, data) {
if (this._state.finalize || this._state.aborted) {
this.emit('error', new ArchiverError('QUEUECLOSED'));
return this;
}
if (typeof filepath !== 'string' || filepath.length === 0) {
this.emit('error', new ArchiverError('FILEFILEPATHREQUIRED'));
return this;
}
this._append(filepath, data);
return this;
};
/**
* Appends multiple files that match a glob pattern.
*
* @param {String} pattern The [glob pattern]{@link https://github.com/isaacs/minimatch} to match.
* @param {Object} options See [node-readdir-glob]{@link https://github.com/yqnn/node-readdir-glob#options}.
* @param {EntryData} data See also [ZipEntryData]{@link ZipEntryData} and
* [TarEntryData]{@link TarEntryData}.
* @return {this}
*/
Archiver.prototype.glob = function(pattern, options, data) {
this._pending++;
options = util.defaults(options, {
stat: true,
pattern: pattern
});
function onGlobEnd() {
this._pending--;
this._maybeFinalize();
}
function onGlobError(err) {
this.emit('error', err);
}
function onGlobMatch(match){
globber.pause();
var entryData = Object.assign({}, data);
entryData.callback = globber.resume.bind(globber);
entryData.stats = match.stat;
entryData.name = match.relative;
this._append(match.absolute, entryData);
}
var globber = glob(options.cwd || '.', options);
globber.on('error', onGlobError.bind(this));
globber.on('match', onGlobMatch.bind(this));
globber.on('end', onGlobEnd.bind(this));
return this;
};
/**
* Finalizes the instance and prevents further appending to the archive
* structure (queue will continue til drained).
*
* The `end`, `close` or `finish` events on the destination stream may fire
* right after calling this method so you should set listeners beforehand to
* properly detect stream completion.
*
* @return {Promise}
*/
Archiver.prototype.finalize = function() {
if (this._state.aborted) {
var abortedError = new ArchiverError('ABORTED');
this.emit('error', abortedError);
return Promise.reject(abortedError);
}
if (this._state.finalize) {
var finalizingError = new ArchiverError('FINALIZING');
this.emit('error', finalizingError);
return Promise.reject(finalizingError);
}
this._state.finalize = true;
if (this._pending === 0 && this._queue.idle() && this._statQueue.idle()) {
this._finalize();
}
var self = this;
return new Promise(function(resolve, reject) {
var errored;
self._module.on('end', function() {
if (!errored) {
resolve();
}
})
self._module.on('error', function(err) {
errored = true;
reject(err);
})
})
};
/**
* Sets the module format name used for archiving.
*
* @param {String} format The name of the format.
* @return {this}
*/
Archiver.prototype.setFormat = function(format) {
if (this._format) {
this.emit('error', new ArchiverError('FORMATSET'));
return this;
}
this._format = format;
return this;
};
/**
* Sets the module used for archiving.
*
* @param {Function} module The function for archiver to interact with.
* @return {this}
*/
Archiver.prototype.setModule = function(module) {
if (this._state.aborted) {
this.emit('error', new ArchiverError('ABORTED'));
return this;
}
if (this._state.module) {
this.emit('error', new ArchiverError('MODULESET'));
return this;
}
this._module = module;
this._modulePipe();
return this;
};
/**
* Appends a symlink to the instance.
*
* This does NOT interact with filesystem and is used for programmatically creating symlinks.
*
* @param {String} filepath The symlink path (within archive).
* @param {String} target The target path (within archive).
* @param {Number} mode Sets the entry permissions.
* @return {this}
*/
Archiver.prototype.symlink = function(filepath, target, mode) {
if (this._state.finalize || this._state.aborted) {
this.emit('error', new ArchiverError('QUEUECLOSED'));
return this;
}
if (typeof filepath !== 'string' || filepath.length === 0) {
this.emit('error', new ArchiverError('SYMLINKFILEPATHREQUIRED'));
return this;
}
if (typeof target !== 'string' || target.length === 0) {
this.emit('error', new ArchiverError('SYMLINKTARGETREQUIRED', { filepath: filepath }));
return this;
}
if (!this._moduleSupports('symlink')) {
this.emit('error', new ArchiverError('SYMLINKNOTSUPPORTED', { filepath: filepath }));
return this;
}
var data = {};
data.type = 'symlink';
data.name = filepath.replace(/\\/g, '/');
data.linkname = target.replace(/\\/g, '/');
data.sourceType = 'buffer';
if (typeof mode === "number") {
data.mode = mode;
}
this._entriesCount++;
this._queue.push({
data: data,
source: Buffer.concat([])
});
return this;
};
/**
* Returns the current length (in bytes) that has been emitted.
*
* @return {Number}
*/
Archiver.prototype.pointer = function() {
return this._pointer;
};
/**
* Middleware-like helper that has yet to be fully implemented.
*
* @private
* @param {Function} plugin
* @return {this}
*/
Archiver.prototype.use = function(plugin) {
this._streams.push(plugin);
return this;
};
module.exports = Archiver;
/**
* @typedef {Object} CoreOptions
* @global
* @property {Number} [statConcurrency=4] Sets the number of workers used to
* process the internal fs stat queue.
*/
/**
* @typedef {Object} TransformOptions
* @property {Boolean} [allowHalfOpen=true] If set to false, then the stream
* will automatically end the readable side when the writable side ends and vice
* versa.
* @property {Boolean} [readableObjectMode=false] Sets objectMode for readable
* side of the stream. Has no effect if objectMode is true.
* @property {Boolean} [writableObjectMode=false] Sets objectMode for writable
* side of the stream. Has no effect if objectMode is true.
* @property {Boolean} [decodeStrings=true] Whether or not to decode strings
* into Buffers before passing them to _write(). `Writable`
* @property {String} [encoding=NULL] If specified, then buffers will be decoded
* to strings using the specified encoding. `Readable`
* @property {Number} [highWaterMark=16kb] The maximum number of bytes to store
* in the internal buffer before ceasing to read from the underlying resource.
* `Readable` `Writable`
* @property {Boolean} [objectMode=false] Whether this stream should behave as a
* stream of objects. Meaning that stream.read(n) returns a single value instead
* of a Buffer of size n. `Readable` `Writable`
*/
/**
* @typedef {Object} EntryData
* @property {String} name Sets the entry name including internal path.
* @property {(String|Date)} [date=NOW()] Sets the entry date.
* @property {Number} [mode=D:0755/F:0644] Sets the entry permissions.
* @property {String} [prefix] Sets a path prefix for the entry name. Useful
* when working with methods like `directory` or `glob`.
* @property {fs.Stats} [stats] Sets the fs stat data for this entry allowing
* for reduction of fs stat calls when stat data is already known.
*/
/**
* @typedef {Object} ErrorData
* @property {String} message The message of the error.
* @property {String} code The error code assigned to this error.
* @property {String} data Additional data provided for reporting or debugging (where available).
*/
/**
* @typedef {Object} ProgressData
* @property {Object} entries
* @property {Number} entries.total Number of entries that have been appended.
* @property {Number} entries.processed Number of entries that have been processed.
* @property {Object} fs
* @property {Number} fs.totalBytes Number of bytes that have been appended. Calculated asynchronously and might not be accurate: it growth while entries are added. (based on fs.Stats)
* @property {Number} fs.processedBytes Number of bytes that have been processed. (based on fs.Stats)
*/

View file

@ -0,0 +1,40 @@
/**
* Archiver Core
*
* @ignore
* @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE}
* @copyright (c) 2012-2014 Chris Talkington, contributors.
*/
var util = require('util');
const ERROR_CODES = {
'ABORTED': 'archive was aborted',
'DIRECTORYDIRPATHREQUIRED': 'diretory dirpath argument must be a non-empty string value',
'DIRECTORYFUNCTIONINVALIDDATA': 'invalid data returned by directory custom data function',
'ENTRYNAMEREQUIRED': 'entry name must be a non-empty string value',
'FILEFILEPATHREQUIRED': 'file filepath argument must be a non-empty string value',
'FINALIZING': 'archive already finalizing',
'QUEUECLOSED': 'queue closed',
'NOENDMETHOD': 'no suitable finalize/end method defined by module',
'DIRECTORYNOTSUPPORTED': 'support for directory entries not defined by module',
'FORMATSET': 'archive format already set',
'INPUTSTEAMBUFFERREQUIRED': 'input source must be valid Stream or Buffer instance',
'MODULESET': 'module already set',
'SYMLINKNOTSUPPORTED': 'support for symlink entries not defined by module',
'SYMLINKFILEPATHREQUIRED': 'symlink filepath argument must be a non-empty string value',
'SYMLINKTARGETREQUIRED': 'symlink target argument must be a non-empty string value',
'ENTRYNOTSUPPORTED': 'entry not supported'
};
function ArchiverError(code, data) {
Error.captureStackTrace(this, this.constructor);
//this.name = this.constructor.name;
this.message = ERROR_CODES[code] || code;
this.code = code;
this.data = data;
}
util.inherits(ArchiverError, Error);
exports = module.exports = ArchiverError;

View file

@ -0,0 +1,110 @@
/**
* JSON Format Plugin
*
* @module plugins/json
* @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE}
* @copyright (c) 2012-2014 Chris Talkington, contributors.
*/
var inherits = require('util').inherits;
var Transform = require('readable-stream').Transform;
var crc32 = require('buffer-crc32');
var util = require('archiver-utils');
/**
* @constructor
* @param {(JsonOptions|TransformOptions)} options
*/
var Json = function(options) {
if (!(this instanceof Json)) {
return new Json(options);
}
options = this.options = util.defaults(options, {});
Transform.call(this, options);
this.supports = {
directory: true,
symlink: true
};
this.files = [];
};
inherits(Json, Transform);
/**
* [_transform description]
*
* @private
* @param {Buffer} chunk
* @param {String} encoding
* @param {Function} callback
* @return void
*/
Json.prototype._transform = function(chunk, encoding, callback) {
callback(null, chunk);
};
/**
* [_writeStringified description]
*
* @private
* @return void
*/
Json.prototype._writeStringified = function() {
var fileString = JSON.stringify(this.files);
this.write(fileString);
};
/**
* [append description]
*
* @param {(Buffer|Stream)} source
* @param {EntryData} data
* @param {Function} callback
* @return void
*/
Json.prototype.append = function(source, data, callback) {
var self = this;
data.crc32 = 0;
function onend(err, sourceBuffer) {
if (err) {
callback(err);
return;
}
data.size = sourceBuffer.length || 0;
data.crc32 = crc32.unsigned(sourceBuffer);
self.files.push(data);
callback(null, data);
}
if (data.sourceType === 'buffer') {
onend(null, source);
} else if (data.sourceType === 'stream') {
util.collectStream(source, onend);
}
};
/**
* [finalize description]
*
* @return void
*/
Json.prototype.finalize = function() {
this._writeStringified();
this.end();
};
module.exports = Json;
/**
* @typedef {Object} JsonOptions
* @global
*/

View file

@ -0,0 +1,167 @@
/**
* TAR Format Plugin
*
* @module plugins/tar
* @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE}
* @copyright (c) 2012-2014 Chris Talkington, contributors.
*/
var zlib = require('zlib');
var engine = require('tar-stream');
var util = require('archiver-utils');
/**
* @constructor
* @param {TarOptions} options
*/
var Tar = function(options) {
if (!(this instanceof Tar)) {
return new Tar(options);
}
options = this.options = util.defaults(options, {
gzip: false
});
if (typeof options.gzipOptions !== 'object') {
options.gzipOptions = {};
}
this.supports = {
directory: true,
symlink: true
};
this.engine = engine.pack(options);
this.compressor = false;
if (options.gzip) {
this.compressor = zlib.createGzip(options.gzipOptions);
this.compressor.on('error', this._onCompressorError.bind(this));
}
};
/**
* [_onCompressorError description]
*
* @private
* @param {Error} err
* @return void
*/
Tar.prototype._onCompressorError = function(err) {
this.engine.emit('error', err);
};
/**
* [append description]
*
* @param {(Buffer|Stream)} source
* @param {TarEntryData} data
* @param {Function} callback
* @return void
*/
Tar.prototype.append = function(source, data, callback) {
var self = this;
data.mtime = data.date;
function append(err, sourceBuffer) {
if (err) {
callback(err);
return;
}
self.engine.entry(data, sourceBuffer, function(err) {
callback(err, data);
});
}
if (data.sourceType === 'buffer') {
append(null, source);
} else if (data.sourceType === 'stream' && data.stats) {
data.size = data.stats.size;
var entry = self.engine.entry(data, function(err) {
callback(err, data);
});
source.pipe(entry);
} else if (data.sourceType === 'stream') {
util.collectStream(source, append);
}
};
/**
* [finalize description]
*
* @return void
*/
Tar.prototype.finalize = function() {
this.engine.finalize();
};
/**
* [on description]
*
* @return this.engine
*/
Tar.prototype.on = function() {
return this.engine.on.apply(this.engine, arguments);
};
/**
* [pipe description]
*
* @param {String} destination
* @param {Object} options
* @return this.engine
*/
Tar.prototype.pipe = function(destination, options) {
if (this.compressor) {
return this.engine.pipe.apply(this.engine, [this.compressor]).pipe(destination, options);
} else {
return this.engine.pipe.apply(this.engine, arguments);
}
};
/**
* [unpipe description]
*
* @return this.engine
*/
Tar.prototype.unpipe = function() {
if (this.compressor) {
return this.compressor.unpipe.apply(this.compressor, arguments);
} else {
return this.engine.unpipe.apply(this.engine, arguments);
}
};
module.exports = Tar;
/**
* @typedef {Object} TarOptions
* @global
* @property {Boolean} [gzip=false] Compress the tar archive using gzip.
* @property {Object} [gzipOptions] Passed to [zlib]{@link https://nodejs.org/api/zlib.html#zlib_class_options}
* to control compression.
* @property {*} [*] See [tar-stream]{@link https://github.com/mafintosh/tar-stream} documentation for additional properties.
*/
/**
* @typedef {Object} TarEntryData
* @global
* @property {String} name Sets the entry name including internal path.
* @property {(String|Date)} [date=NOW()] Sets the entry date.
* @property {Number} [mode=D:0755/F:0644] Sets the entry permissions.
* @property {String} [prefix] Sets a path prefix for the entry name. Useful
* when working with methods like `directory` or `glob`.
* @property {fs.Stats} [stats] Sets the fs stat data for this entry allowing
* for reduction of fs stat calls when stat data is already known.
*/
/**
* TarStream Module
* @external TarStream
* @see {@link https://github.com/mafintosh/tar-stream}
*/

View file

@ -0,0 +1,120 @@
/**
* ZIP Format Plugin
*
* @module plugins/zip
* @license [MIT]{@link https://github.com/archiverjs/node-archiver/blob/master/LICENSE}
* @copyright (c) 2012-2014 Chris Talkington, contributors.
*/
var engine = require('zip-stream');
var util = require('archiver-utils');
/**
* @constructor
* @param {ZipOptions} [options]
* @param {String} [options.comment] Sets the zip archive comment.
* @param {Boolean} [options.forceLocalTime=false] Forces the archive to contain local file times instead of UTC.
* @param {Boolean} [options.forceZip64=false] Forces the archive to contain ZIP64 headers.
* @param {Boolean} [options.namePrependSlash=false] Prepends a forward slash to archive file paths.
* @param {Boolean} [options.store=false] Sets the compression method to STORE.
* @param {Object} [options.zlib] Passed to [zlib]{@link https://nodejs.org/api/zlib.html#zlib_class_options}
*/
var Zip = function(options) {
if (!(this instanceof Zip)) {
return new Zip(options);
}
options = this.options = util.defaults(options, {
comment: '',
forceUTC: false,
namePrependSlash: false,
store: false
});
this.supports = {
directory: true,
symlink: true
};
this.engine = new engine(options);
};
/**
* @param {(Buffer|Stream)} source
* @param {ZipEntryData} data
* @param {String} data.name Sets the entry name including internal path.
* @param {(String|Date)} [data.date=NOW()] Sets the entry date.
* @param {Number} [data.mode=D:0755/F:0644] Sets the entry permissions.
* @param {String} [data.prefix] Sets a path prefix for the entry name. Useful
* when working with methods like `directory` or `glob`.
* @param {fs.Stats} [data.stats] Sets the fs stat data for this entry allowing
* for reduction of fs stat calls when stat data is already known.
* @param {Boolean} [data.store=ZipOptions.store] Sets the compression method to STORE.
* @param {Function} callback
* @return void
*/
Zip.prototype.append = function(source, data, callback) {
this.engine.entry(source, data, callback);
};
/**
* @return void
*/
Zip.prototype.finalize = function() {
this.engine.finalize();
};
/**
* @return this.engine
*/
Zip.prototype.on = function() {
return this.engine.on.apply(this.engine, arguments);
};
/**
* @return this.engine
*/
Zip.prototype.pipe = function() {
return this.engine.pipe.apply(this.engine, arguments);
};
/**
* @return this.engine
*/
Zip.prototype.unpipe = function() {
return this.engine.unpipe.apply(this.engine, arguments);
};
module.exports = Zip;
/**
* @typedef {Object} ZipOptions
* @global
* @property {String} [comment] Sets the zip archive comment.
* @property {Boolean} [forceLocalTime=false] Forces the archive to contain local file times instead of UTC.
* @property {Boolean} [forceZip64=false] Forces the archive to contain ZIP64 headers.
* @prpperty {Boolean} [namePrependSlash=false] Prepends a forward slash to archive file paths.
* @property {Boolean} [store=false] Sets the compression method to STORE.
* @property {Object} [zlib] Passed to [zlib]{@link https://nodejs.org/api/zlib.html#zlib_class_options}
* to control compression.
* @property {*} [*] See [zip-stream]{@link https://archiverjs.com/zip-stream/ZipStream.html} documentation for current list of properties.
*/
/**
* @typedef {Object} ZipEntryData
* @global
* @property {String} name Sets the entry name including internal path.
* @property {(String|Date)} [date=NOW()] Sets the entry date.
* @property {Number} [mode=D:0755/F:0644] Sets the entry permissions.
* @property {Boolean} [namePrependSlash=ZipOptions.namePrependSlash] Prepends a forward slash to archive file paths.
* @property {String} [prefix] Sets a path prefix for the entry name. Useful
* when working with methods like `directory` or `glob`.
* @property {fs.Stats} [stats] Sets the fs stat data for this entry allowing
* for reduction of fs stat calls when stat data is already known.
* @property {Boolean} [store=ZipOptions.store] Sets the compression method to STORE.
*/
/**
* ZipStream Module
* @external ZipStream
* @see {@link https://www.archiverjs.com/zip-stream/ZipStream.html}
*/

View file

@ -0,0 +1,60 @@
{
"name": "archiver",
"version": "5.3.2",
"description": "a streaming interface for archive generation",
"homepage": "https://github.com/archiverjs/node-archiver",
"author": {
"name": "Chris Talkington",
"url": "http://christalkington.com/"
},
"repository": {
"type": "git",
"url": "https://github.com/archiverjs/node-archiver.git"
},
"bugs": {
"url": "https://github.com/archiverjs/node-archiver/issues"
},
"license": "MIT",
"main": "index.js",
"files": [
"index.js",
"lib"
],
"engines": {
"node": ">= 10"
},
"scripts": {
"test": "mocha --reporter dot",
"bench": "node benchmark/simple/pack-zip.js"
},
"dependencies": {
"archiver-utils": "^2.1.0",
"async": "^3.2.4",
"buffer-crc32": "^0.2.1",
"readable-stream": "^3.6.0",
"readdir-glob": "^1.1.2",
"tar-stream": "^2.2.0",
"zip-stream": "^4.1.0"
},
"devDependencies": {
"archiver-jsdoc-theme": "^1.1.3",
"chai": "^4.3.7",
"jsdoc": "^3.6.4",
"mkdirp": "^2.1.5",
"mocha": "^9.0.2",
"rimraf": "^4.3.1",
"stream-bench": "^0.1.2",
"tar": "^6.1.13",
"yauzl": "^2.9.0"
},
"keywords": [
"archive",
"archiver",
"stream",
"zip",
"tar"
],
"publishConfig": {
"registry": "https://registry.npmjs.org/"
}
}

119
autotools/dbcompiler/node_modules/async/all.js generated vendored Normal file
View file

@ -0,0 +1,119 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createTester = require('./internal/createTester.js');
var _createTester2 = _interopRequireDefault(_createTester);
var _eachOf = require('./eachOf.js');
var _eachOf2 = _interopRequireDefault(_eachOf);
var _awaitify = require('./internal/awaitify.js');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Returns `true` if every element in `coll` satisfies an async test. If any
* iteratee call returns `false`, the main `callback` is immediately called.
*
* @name every
* @static
* @memberOf module:Collections
* @method
* @alias all
* @category Collection
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - An async truth test to apply to each item
* in the collection in parallel.
* The iteratee must complete with a boolean result value.
* Invoked with (item, callback).
* @param {Function} [callback] - A callback which is called after all the
* `iteratee` functions have finished. Result will be either `true` or `false`
* depending on the values of the async tests. Invoked with (err, result).
* @returns {Promise} a promise, if no callback provided
* @example
*
* // dir1 is a directory that contains file1.txt, file2.txt
* // dir2 is a directory that contains file3.txt, file4.txt
* // dir3 is a directory that contains file5.txt
* // dir4 does not exist
*
* const fileList = ['dir1/file1.txt','dir2/file3.txt','dir3/file5.txt'];
* const withMissingFileList = ['file1.txt','file2.txt','file4.txt'];
*
* // asynchronous function that checks if a file exists
* function fileExists(file, callback) {
* fs.access(file, fs.constants.F_OK, (err) => {
* callback(null, !err);
* });
* }
*
* // Using callbacks
* async.every(fileList, fileExists, function(err, result) {
* console.log(result);
* // true
* // result is true since every file exists
* });
*
* async.every(withMissingFileList, fileExists, function(err, result) {
* console.log(result);
* // false
* // result is false since NOT every file exists
* });
*
* // Using Promises
* async.every(fileList, fileExists)
* .then( result => {
* console.log(result);
* // true
* // result is true since every file exists
* }).catch( err => {
* console.log(err);
* });
*
* async.every(withMissingFileList, fileExists)
* .then( result => {
* console.log(result);
* // false
* // result is false since NOT every file exists
* }).catch( err => {
* console.log(err);
* });
*
* // Using async/await
* async () => {
* try {
* let result = await async.every(fileList, fileExists);
* console.log(result);
* // true
* // result is true since every file exists
* }
* catch (err) {
* console.log(err);
* }
* }
*
* async () => {
* try {
* let result = await async.every(withMissingFileList, fileExists);
* console.log(result);
* // false
* // result is false since NOT every file exists
* }
* catch (err) {
* console.log(err);
* }
* }
*
*/
function every(coll, iteratee, callback) {
return (0, _createTester2.default)(bool => !bool, res => !res)(_eachOf2.default, coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(every, 3);
module.exports = exports.default;

46
autotools/dbcompiler/node_modules/async/allLimit.js generated vendored Normal file
View file

@ -0,0 +1,46 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createTester = require('./internal/createTester.js');
var _createTester2 = _interopRequireDefault(_createTester);
var _eachOfLimit = require('./internal/eachOfLimit.js');
var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);
var _awaitify = require('./internal/awaitify.js');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* The same as [`every`]{@link module:Collections.every} but runs a maximum of `limit` async operations at a time.
*
* @name everyLimit
* @static
* @memberOf module:Collections
* @method
* @see [async.every]{@link module:Collections.every}
* @alias allLimit
* @category Collection
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.
* @param {AsyncFunction} iteratee - An async truth test to apply to each item
* in the collection in parallel.
* The iteratee must complete with a boolean result value.
* Invoked with (item, callback).
* @param {Function} [callback] - A callback which is called after all the
* `iteratee` functions have finished. Result will be either `true` or `false`
* depending on the values of the async tests. Invoked with (err, result).
* @returns {Promise} a promise, if no callback provided
*/
function everyLimit(coll, limit, iteratee, callback) {
return (0, _createTester2.default)(bool => !bool, res => !res)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(everyLimit, 4);
module.exports = exports.default;

45
autotools/dbcompiler/node_modules/async/allSeries.js generated vendored Normal file
View file

@ -0,0 +1,45 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createTester = require('./internal/createTester.js');
var _createTester2 = _interopRequireDefault(_createTester);
var _eachOfSeries = require('./eachOfSeries.js');
var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries);
var _awaitify = require('./internal/awaitify.js');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* The same as [`every`]{@link module:Collections.every} but runs only a single async operation at a time.
*
* @name everySeries
* @static
* @memberOf module:Collections
* @method
* @see [async.every]{@link module:Collections.every}
* @alias allSeries
* @category Collection
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - An async truth test to apply to each item
* in the collection in series.
* The iteratee must complete with a boolean result value.
* Invoked with (item, callback).
* @param {Function} [callback] - A callback which is called after all the
* `iteratee` functions have finished. Result will be either `true` or `false`
* depending on the values of the async tests. Invoked with (err, result).
* @returns {Promise} a promise, if no callback provided
*/
function everySeries(coll, iteratee, callback) {
return (0, _createTester2.default)(bool => !bool, res => !res)(_eachOfSeries2.default, coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(everySeries, 3);
module.exports = exports.default;

122
autotools/dbcompiler/node_modules/async/any.js generated vendored Normal file
View file

@ -0,0 +1,122 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createTester = require('./internal/createTester.js');
var _createTester2 = _interopRequireDefault(_createTester);
var _eachOf = require('./eachOf.js');
var _eachOf2 = _interopRequireDefault(_eachOf);
var _awaitify = require('./internal/awaitify.js');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Returns `true` if at least one element in the `coll` satisfies an async test.
* If any iteratee call returns `true`, the main `callback` is immediately
* called.
*
* @name some
* @static
* @memberOf module:Collections
* @method
* @alias any
* @category Collection
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - An async truth test to apply to each item
* in the collections in parallel.
* The iteratee should complete with a boolean `result` value.
* Invoked with (item, callback).
* @param {Function} [callback] - A callback which is called as soon as any
* iteratee returns `true`, or after all the iteratee functions have finished.
* Result will be either `true` or `false` depending on the values of the async
* tests. Invoked with (err, result).
* @returns {Promise} a promise, if no callback provided
* @example
*
* // dir1 is a directory that contains file1.txt, file2.txt
* // dir2 is a directory that contains file3.txt, file4.txt
* // dir3 is a directory that contains file5.txt
* // dir4 does not exist
*
* // asynchronous function that checks if a file exists
* function fileExists(file, callback) {
* fs.access(file, fs.constants.F_OK, (err) => {
* callback(null, !err);
* });
* }
*
* // Using callbacks
* async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists,
* function(err, result) {
* console.log(result);
* // true
* // result is true since some file in the list exists
* }
*);
*
* async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists,
* function(err, result) {
* console.log(result);
* // false
* // result is false since none of the files exists
* }
*);
*
* // Using Promises
* async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists)
* .then( result => {
* console.log(result);
* // true
* // result is true since some file in the list exists
* }).catch( err => {
* console.log(err);
* });
*
* async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists)
* .then( result => {
* console.log(result);
* // false
* // result is false since none of the files exists
* }).catch( err => {
* console.log(err);
* });
*
* // Using async/await
* async () => {
* try {
* let result = await async.some(['dir1/missing.txt','dir2/missing.txt','dir3/file5.txt'], fileExists);
* console.log(result);
* // true
* // result is true since some file in the list exists
* }
* catch (err) {
* console.log(err);
* }
* }
*
* async () => {
* try {
* let result = await async.some(['dir1/missing.txt','dir2/missing.txt','dir4/missing.txt'], fileExists);
* console.log(result);
* // false
* // result is false since none of the files exists
* }
* catch (err) {
* console.log(err);
* }
* }
*
*/
function some(coll, iteratee, callback) {
return (0, _createTester2.default)(Boolean, res => res)(_eachOf2.default, coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(some, 3);
module.exports = exports.default;

47
autotools/dbcompiler/node_modules/async/anyLimit.js generated vendored Normal file
View file

@ -0,0 +1,47 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createTester = require('./internal/createTester.js');
var _createTester2 = _interopRequireDefault(_createTester);
var _eachOfLimit = require('./internal/eachOfLimit.js');
var _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);
var _awaitify = require('./internal/awaitify.js');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* The same as [`some`]{@link module:Collections.some} but runs a maximum of `limit` async operations at a time.
*
* @name someLimit
* @static
* @memberOf module:Collections
* @method
* @see [async.some]{@link module:Collections.some}
* @alias anyLimit
* @category Collection
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {number} limit - The maximum number of async operations at a time.
* @param {AsyncFunction} iteratee - An async truth test to apply to each item
* in the collections in parallel.
* The iteratee should complete with a boolean `result` value.
* Invoked with (item, callback).
* @param {Function} [callback] - A callback which is called as soon as any
* iteratee returns `true`, or after all the iteratee functions have finished.
* Result will be either `true` or `false` depending on the values of the async
* tests. Invoked with (err, result).
* @returns {Promise} a promise, if no callback provided
*/
function someLimit(coll, limit, iteratee, callback) {
return (0, _createTester2.default)(Boolean, res => res)((0, _eachOfLimit2.default)(limit), coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(someLimit, 4);
module.exports = exports.default;

46
autotools/dbcompiler/node_modules/async/anySeries.js generated vendored Normal file
View file

@ -0,0 +1,46 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _createTester = require('./internal/createTester.js');
var _createTester2 = _interopRequireDefault(_createTester);
var _eachOfSeries = require('./eachOfSeries.js');
var _eachOfSeries2 = _interopRequireDefault(_eachOfSeries);
var _awaitify = require('./internal/awaitify.js');
var _awaitify2 = _interopRequireDefault(_awaitify);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* The same as [`some`]{@link module:Collections.some} but runs only a single async operation at a time.
*
* @name someSeries
* @static
* @memberOf module:Collections
* @method
* @see [async.some]{@link module:Collections.some}
* @alias anySeries
* @category Collection
* @param {Array|Iterable|AsyncIterable|Object} coll - A collection to iterate over.
* @param {AsyncFunction} iteratee - An async truth test to apply to each item
* in the collections in series.
* The iteratee should complete with a boolean `result` value.
* Invoked with (item, callback).
* @param {Function} [callback] - A callback which is called as soon as any
* iteratee returns `true`, or after all the iteratee functions have finished.
* Result will be either `true` or `false` depending on the values of the async
* tests. Invoked with (err, result).
* @returns {Promise} a promise, if no callback provided
*/
function someSeries(coll, iteratee, callback) {
return (0, _createTester2.default)(Boolean, res => res)(_eachOfSeries2.default, coll, iteratee, callback);
}
exports.default = (0, _awaitify2.default)(someSeries, 3);
module.exports = exports.default;

11
autotools/dbcompiler/node_modules/async/apply.js generated vendored Normal file
View file

@ -0,0 +1,11 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function (fn, ...args) {
return (...callArgs) => fn(...args, ...callArgs);
};
module.exports = exports.default;

57
autotools/dbcompiler/node_modules/async/applyEach.js generated vendored Normal file
View file

@ -0,0 +1,57 @@
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _applyEach = require('./internal/applyEach.js');
var _applyEach2 = _interopRequireDefault(_applyEach);
var _map = require('./map.js');
var _map2 = _interopRequireDefault(_map);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Applies the provided arguments to each function in the array, calling
* `callback` after all functions have completed. If you only provide the first
* argument, `fns`, then it will return a function which lets you pass in the
* arguments as if it were a single function call. If more arguments are
* provided, `callback` is required while `args` is still optional. The results
* for each of the applied async functions are passed to the final callback
* as an array.
*
* @name applyEach
* @static
* @memberOf module:ControlFlow
* @method
* @category Control Flow
* @param {Array|Iterable|AsyncIterable|Object} fns - A collection of {@link AsyncFunction}s
* to all call with the same arguments
* @param {...*} [args] - any number of separate arguments to pass to the
* function.
* @param {Function} [callback] - the final argument should be the callback,
* called when all functions have completed processing.
* @returns {AsyncFunction} - Returns a function that takes no args other than
* an optional callback, that is the result of applying the `args` to each
* of the functions.
* @example
*
* const appliedFn = async.applyEach([enableSearch, updateSchema], 'bucket')
*
* appliedFn((err, results) => {
* // results[0] is the results for `enableSearch`
* // results[1] is the results for `updateSchema`
* });
*
* // partial application example:
* async.each(
* buckets,
* async (bucket) => async.applyEach([enableSearch, updateSchema], bucket)(),
* callback
* );
*/
exports.default = (0, _applyEach2.default)(_map2.default);
module.exports = exports.default;

Some files were not shown because too many files have changed in this diff Show more