die-python 0.1.0__cp38-cp38-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- db/ACE +45 -0
- db/APK/PackageName.1.sg +15 -0
- db/APK/SingleJar.3.sg +10 -0
- db/APK/_APK.0.sg +15 -0
- db/APK/_init +4 -0
- db/Archive/_init +4 -0
- db/Binary/Amiga loadable.1.sg +16 -0
- db/Binary/Empty.1.sg +11 -0
- db/Binary/Img.UDIF.1.sg +15 -0
- db/Binary/RIFF.1.sg +19 -0
- db/Binary/U-Boot.1.sg +321 -0
- db/Binary/Universal Binary.1.sg +17 -0
- db/Binary/Video.FLV.1.sg +16 -0
- db/Binary/_init +5 -0
- db/Binary/archive.7z.1.sg +14 -0
- db/Binary/archive.ACE.1.sg +9 -0
- db/Binary/archive.AR.1.sg +84 -0
- db/Binary/archive.ARC.1.sg +18 -0
- db/Binary/archive.ARJ.1.sg +8 -0
- db/Binary/archive.ASAR.sg +13 -0
- db/Binary/archive.BZip.1.sg +20 -0
- db/Binary/archive.Cab.1.sg +25 -0
- db/Binary/archive.DEFLATE.1.sg +245 -0
- db/Binary/archive.DotBundle.sg +9 -0
- db/Binary/archive.LRZ.1.sg +57 -0
- db/Binary/archive.LZ4.1.sg +42 -0
- db/Binary/archive.LZOP.1.sg +14 -0
- db/Binary/archive.MS Compound.1.sg +24 -0
- db/Binary/archive.PEA.1.sg +65 -0
- db/Binary/archive.RAR.1.sg +8 -0
- db/Binary/archive.Unity.1.sg +73 -0
- db/Binary/archive.ZIP.1.sg +9 -0
- db/Binary/archive.ZLIB.1.sg +13 -0
- db/Binary/archive.ZPAQ.1.sg +16 -0
- db/Binary/archive.btoa.1.sg +14 -0
- db/Binary/archives.1.sg +298 -0
- db/Binary/archives.ancient.sg +721 -0
- db/Binary/audio.1.sg +8380 -0
- db/Binary/audio.AU.1.sg +118 -0
- db/Binary/audio.FSB.1.sg +105 -0
- db/Binary/audio.VOC.1.sg +140 -0
- db/Binary/audio.WAV.1.sg +806 -0
- db/Binary/audio.mp3.2.sg +189 -0
- db/Binary/backup images.1.sg +27 -0
- db/Binary/bin.AAALogo.1.sg +16 -0
- db/Binary/bin.Atari ST.1.sg +12 -0
- db/Binary/bin.Borland TDS.sg +14 -0
- db/Binary/bin.GuitarPro.1.sg +26 -0
- db/Binary/bin.IDA.1.sg +78 -0
- db/Binary/bin.ISO 9660.1.sg +13 -0
- db/Binary/bin.JMDL.1.sg +36 -0
- db/Binary/bin.JSC.1.sg +87 -0
- db/Binary/bin.Java.1.sg +141 -0
- db/Binary/bin.LUA.1.sg +47 -0
- db/Binary/bin.NVA.1.sg +15 -0
- db/Binary/bin.PDB.1.sg +16 -0
- db/Binary/bin.PEFF.1.sg +11 -0
- db/Binary/bin.Python.1.sg +627 -0
- db/Binary/bin.SWF.1.sg +26 -0
- db/Binary/cad.DWG.1.sg +62 -0
- db/Binary/cert.WinAuth.1.sg +13 -0
- db/Binary/database.SQLite.1.sg +45 -0
- db/Binary/databases.1.sg +16 -0
- db/Binary/doc.CHM.1.sg +18 -0
- db/Binary/doc.DJVU.1.sg +112 -0
- db/Binary/doc.HLP.1.sg +11 -0
- db/Binary/doc.PDF.1.sg +16 -0
- db/Binary/doc.RTF.1.sg +12 -0
- db/Binary/donut.1.sg +49 -0
- db/Binary/font.ADOBE.1.sg +35 -0
- db/Binary/font.BMF.1.sg +63 -0
- db/Binary/format.MS-DBG.1.sg +19 -0
- db/Binary/format.MS-VHD.1.sg +61 -0
- db/Binary/format.MS-WIM.1.sg +43 -0
- db/Binary/format.MS-XNA.1.sg +80 -0
- db/Binary/format.UE.1.sg +36 -0
- db/Binary/format.VDI.1.sg +40 -0
- db/Binary/formats.1.sg +90 -0
- db/Binary/graphics.1.sg +37 -0
- db/Binary/image.ANI.1.sg +26 -0
- db/Binary/image.BMP.1.sg +48 -0
- db/Binary/image.CUR.1.sg +55 -0
- db/Binary/image.DDS.1.sg +26 -0
- db/Binary/image.EPS.1.sg +26 -0
- db/Binary/image.GIF.1.sg +97 -0
- db/Binary/image.ICO.1.sg +57 -0
- db/Binary/image.JNG.1.sg +34 -0
- db/Binary/image.JPEG.1.sg +45 -0
- db/Binary/image.JPEG.DQT.4.sg +13 -0
- db/Binary/image.JPEG.Tools.3.sg +53 -0
- db/Binary/image.JPEG.camera.2.sg +16 -0
- db/Binary/image.JPEG.comment.4.sg +16 -0
- db/Binary/image.KTX.1.sg +36 -0
- db/Binary/image.LBM.1.sg +69 -0
- db/Binary/image.MNG.1.sg +19 -0
- db/Binary/image.PCX.1.sg +57 -0
- db/Binary/image.PNG.1.sg +165 -0
- db/Binary/image.PSD.1.sg +63 -0
- db/Binary/image.PVR.1.sg +29 -0
- db/Binary/image.QOI.1.sg +36 -0
- db/Binary/image.TGA.1.sg +134 -0
- db/Binary/image.TIFF.1.sg +187 -0
- db/Binary/image.XAR.1.sg +31 -0
- db/Binary/img.VM.1.sg +13 -0
- db/Binary/overlays.6.sg +368 -0
- db/Binary/pe_to_shellcode.1.sg +107 -0
- db/Binary/rom.1.sg +579 -0
- db/Binary/srdi-monoxgas.1.sg +128 -0
- db/Binary/text.HTML.1.sg +14 -0
- db/Binary/text.Pascal.1.sg +18 -0
- db/Binary/text.Shell.1.sg +14 -0
- db/Binary/text.XML.1.sg +18 -0
- db/Binary/text.c.1.sg +35 -0
- db/Binary/text.pdb.1.sg +40 -0
- db/Binary/text.plaintext.3.sg +25 -0
- db/Binary/text.python.1.sg +16 -0
- db/Binary/text.script.2.sg +16 -0
- db/Binary/video.MP4.1.sg +15 -0
- db/Borland +19 -0
- db/COM/32-bit crypt.2.sg +13 -0
- db/COM/4kZIP.2.sg +13 -0
- db/COM/8086 Forth 83.4.sg +14 -0
- db/COM/A3E.1.sg +13 -0
- db/COM/ABK-Scrambler.2.sg +12 -0
- db/COM/ACE Scrambler.2.sg +34 -0
- db/COM/ACiDDRAW.1.sg +16 -0
- db/COM/ANS2ALL.1.sg +18 -0
- db/COM/ARF AV Inject.1.sg +14 -0
- db/COM/ASC2COM.1.sg +25 -0
- db/COM/ASIC-Basic.4.sg +21 -0
- db/COM/AVAST-Protect.2.sg +13 -0
- db/COM/AVPACK.2.sg +14 -0
- db/COM/AdFlt.2.sg +17 -0
- db/COM/Anti-Lamer Cryptor.2.sg +14 -0
- db/COM/Anti-hack encryption system.2.sg +13 -0
- db/COM/AutoCracker.1.sg +14 -0
- db/COM/BAT2EXEC.2.sg +18 -0
- db/COM/BIN-Lock.2.sg +14 -0
- db/COM/BatLite.4.sg +13 -0
- db/COM/Best Protection Kit-B.2.sg +16 -0
- db/COM/Borland C++.4.sg +17 -0
- db/COM/Budokan.1.sg +13 -0
- db/COM/C-crypt.2.sg +14 -0
- db/COM/CC#3.2.sg +13 -0
- db/COM/CC.2.sg +22 -0
- db/COM/CC286.2.sg +14 -0
- db/COM/CCC.2.sg +16 -0
- db/COM/CHECKPRG.2.sg +13 -0
- db/COM/CNT.2.sg +13 -0
- db/COM/COM Sccrambler.2.sg +14 -0
- db/COM/COM-Protect.2.sg +16 -0
- db/COM/COM-Protection.2.sg +13 -0
- db/COM/COM2TXT.1.sg +13 -0
- db/COM/COMCRYPT.2.sg +23 -0
- db/COM/COMPACK.2.sg +32 -0
- db/COM/COMPROTECT.2.sg +14 -0
- db/COM/COP.2.sg +14 -0
- db/COM/CPAV.1.sg +13 -0
- db/COM/CRX2COM.1.sg +12 -0
- db/COM/Character Intro Engine.1.sg +16 -0
- db/COM/Cheat packer.2.sg +13 -0
- db/COM/CodeLock.2.sg +14 -0
- db/COM/ComProt.2.sg +13 -0
- db/COM/ComProtector.2.sg +18 -0
- db/COM/Comlock.2.sg +17 -0
- db/COM/CrAcKeR.2.sg +14 -0
- db/COM/Crack2EXE.1.sg +14 -0
- db/COM/Crypt (Dismember).2.sg +16 -0
- db/COM/CryptCom.2.sg +18 -0
- db/COM/CryptGeneric.2.sg +12 -0
- db/COM/CyberWare Packer.2.sg +13 -0
- db/COM/DCFR.2.sg +13 -0
- db/COM/DIGPAK.1.sg +16 -0
- db/COM/DOC2COM.1.sg +13 -0
- db/COM/DOC2PAGE.1.sg +13 -0
- db/COM/DS-CRP.2.sg +16 -0
- db/COM/Datalight C.4.sg +17 -0
- db/COM/Deep Crypter.2.sg +14 -0
- db/COM/Deeper.2.sg +17 -0
- db/COM/Diet.2.sg +26 -0
- db/COM/Dn.COM Cruncher.2.sg +13 -0
- db/COM/E2C-Scrambler.2.sg +13 -0
- db/COM/E2C.1.sg +16 -0
- db/COM/E2C1.2.sg +13 -0
- db/COM/EPW.2.sg +14 -0
- db/COM/EXE2COM.1.sg +72 -0
- db/COM/EXETools EXE2COM.1.sg +16 -0
- db/COM/EXETools.2.sg +22 -0
- db/COM/Easy!-C.4.sg +13 -0
- db/COM/Entropy Coder.2.sg +13 -0
- db/COM/ExOM.2.sg +14 -0
- db/COM/FCRYPT.2.sg +14 -0
- db/COM/FIXCRK.1.sg +13 -0
- db/COM/Fig-FORTH.4.sg +13 -0
- db/COM/ForthCMP.2.sg +23 -0
- db/COM/ForthCMP.4.sg +18 -0
- db/COM/FromBAT.1.sg +18 -0
- db/COM/GOAT.2.sg +19 -0
- db/COM/GP-FORTH.4.sg +14 -0
- db/COM/Guardian Angel.2.sg +28 -0
- db/COM/HDKPROTC.2.sg +13 -0
- db/COM/HYPDOC.1.sg +13 -0
- db/COM/HackStop.2.sg +19 -0
- db/COM/ICE.1.sg +13 -0
- db/COM/IMMUN.1.sg +14 -0
- db/COM/Inbuild Encryption.2.sg +14 -0
- db/COM/IntroC0der.1.sg +13 -0
- db/COM/J0B cryptor.2.sg +13 -0
- db/COM/Keygen crypt.2.sg +14 -0
- db/COM/Khrome Crypt.2.sg +14 -0
- db/COM/LAME GG.2.sg +12 -0
- db/COM/LAMPROT.2.sg +13 -0
- db/COM/LGLZ.2.sg +14 -0
- db/COM/LHA.1.sg +16 -0
- db/COM/LHarc SFX.1.sg +16 -0
- db/COM/Lattice C.4.sg +32 -0
- db/COM/List.1.sg +21 -0
- db/COM/Lock-Master.2.sg +14 -0
- db/COM/MASK.2.sg +26 -0
- db/COM/MCLock.2.sg +13 -0
- db/COM/MESS.2.sg +13 -0
- db/COM/MICRO-C.4.sg +16 -0
- db/COM/MIDPAK.1.sg +13 -0
- db/COM/MINIFORTH.4.sg +14 -0
- db/COM/MSCC.2.sg +14 -0
- db/COM/MakeRead.1.sg +14 -0
- db/COM/Maveriks C0der.2.sg +16 -0
- db/COM/MegaShield.2.sg +14 -0
- db/COM/Microsoft C.4.sg +13 -0
- db/COM/Microsoft RTL.3.sg +16 -0
- db/COM/Microxor.2.sg +13 -0
- db/COM/MoonRock.2.sg +14 -0
- db/COM/NH.2.sg +13 -0
- db/COM/NetCode.1.sg +18 -0
- db/COM/NetRun.1.sg +13 -0
- db/COM/NoAV.2.sg +13 -0
- db/COM/Nodebug.2.sg +14 -0
- db/COM/ONLINE-HELP.1.sg +13 -0
- db/COM/OUTFORTH.4.sg +13 -0
- db/COM/PBFC.2.sg +14 -0
- db/COM/PC FORTH.4.sg +13 -0
- db/COM/PCOM.2.sg +14 -0
- db/COM/PCRYPT.2.sg +14 -0
- db/COM/PCVault-Protect.2.sg +13 -0
- db/COM/PKLITE.2.sg +29 -0
- db/COM/PKZip.1.sg +18 -0
- db/COM/PRO-PACK.2.sg +21 -0
- db/COM/PROTECT.2.sg +67 -0
- db/COM/PTP.2.sg +16 -0
- db/COM/PU-Cryptor.2.sg +25 -0
- db/COM/PassCOM.2.sg +13 -0
- db/COM/Phrozen Crew cryptor.2.sg +13 -0
- db/COM/ProtEXE.2.sg +14 -0
- db/COM/R-Crypt.2.sg +19 -0
- db/COM/RCC.2.sg +25 -0
- db/COM/RDT_Compressor2.2.sg +13 -0
- db/COM/RDT_ENC 3.2.sg +13 -0
- db/COM/RELETTER.1.sg +14 -0
- db/COM/RMCOBOL.4.sg +16 -0
- db/COM/RSCC.2.sg +65 -0
- db/COM/SCC.2.sg +13 -0
- db/COM/SCRAM.2.sg +14 -0
- db/COM/SCRE2B.2.sg +14 -0
- db/COM/SCRNCH.2.sg +22 -0
- db/COM/SDW.2.sg +34 -0
- db/COM/SHOW IT.1.sg +13 -0
- db/COM/SHOWV20.1.sg +18 -0
- db/COM/SHRINK.2.sg +14 -0
- db/COM/SP-FORTH.4.sg +18 -0
- db/COM/SPHINX C--.4.sg +24 -0
- db/COM/Scramb.2.sg +18 -0
- db/COM/Scrypt!.2.sg +18 -0
- db/COM/Scrypt.2.sg +14 -0
- db/COM/SelfCrypt.2.sg +13 -0
- db/COM/SelfProtect386.2.sg +12 -0
- db/COM/Shadow COM encryptor.2.sg +14 -0
- db/COM/Shadow.2.sg +14 -0
- db/COM/Six-2-Four.2.sg +18 -0
- db/COM/SnoopStop.2.sg +14 -0
- db/COM/SoftGuard.1.sg +13 -0
- db/COM/Steplock.2.sg +14 -0
- db/COM/Surpas-86.4.sg +14 -0
- db/COM/Sydex.2.sg +13 -0
- db/COM/TCEC.2.sg +14 -0
- db/COM/TCOM.4.sg +16 -0
- db/COM/TPACK.2.sg +18 -0
- db/COM/TPC Scramble.2.sg +12 -0
- db/COM/TXT2COM.1.sg +22 -0
- db/COM/TXTmaker.1.sg +14 -0
- db/COM/Text Header.1.sg +14 -0
- db/COM/The DRAW.1.sg +15 -0
- db/COM/Tiny Xor.2.sg +14 -0
- db/COM/Turbo C++.4.sg +13 -0
- db/COM/Turbo C.4.sg +27 -0
- db/COM/Turbo Pascal.4.sg +30 -0
- db/COM/TurboBAT.1.sg +21 -0
- db/COM/Txt2Exe.1.sg +14 -0
- db/COM/UNIFORTH.4.sg +13 -0
- db/COM/UPX.2.sg +22 -0
- db/COM/USCC.2.sg +14 -0
- db/COM/UnPackStop.2.sg +17 -0
- db/COM/UniCrypt.1.sg +14 -0
- db/COM/Unknown cryptors.2.sg +62 -0
- db/COM/VGA font loader.1.sg +13 -0
- db/COM/VSF&K protection.2.sg +13 -0
- db/COM/VSS.1.sg +13 -0
- db/COM/Vacsina.4.sg +12 -0
- db/COM/Venus.2.sg +12 -0
- db/COM/Vienna-C.4.sg +12 -0
- db/COM/Watcom C.4.sg +37 -0
- db/COM/WiZ Cryptor.2.sg +14 -0
- db/COM/XCK2COM.1.sg +12 -0
- db/COM/XE.2.sg +13 -0
- db/COM/XORCOPY.2.sg +14 -0
- db/COM/XPACK.2.sg +22 -0
- db/COM/XcomOR.2.sg +24 -0
- db/COM/XoReR.2.sg +26 -0
- db/COM/XorCom.2.sg +14 -0
- db/COM/Zbikowski C.4.sg +13 -0
- db/COM/Zortech C.4.sg +26 -0
- db/COM/_init +4 -0
- db/COM/aPACK.2.sg +22 -0
- db/COM/aPatch.2.sg +13 -0
- db/COM/acBBS protection.2.sg +13 -0
- db/COM/com RLE packer.2.sg +15 -0
- db/COM/com-crypt.2.sg +16 -0
- db/COM/cryptors.2.sg +214 -0
- db/COM/envelope.2.sg +13 -0
- db/COM/fds-cp.2.sg +13 -0
- db/COM/integrity checker.1.sg +13 -0
- db/COM/mCrypt.2.sg +14 -0
- db/COM/muSIMP-83.4.sg +14 -0
- db/COM/packers.2.sg +26 -0
- db/COM/patchers.1.sg +100 -0
- db/COM/protection.2.sg +13 -0
- db/COM/readme.com.1.sg +12 -0
- db/COM/simple ansi viewer.1.sg +12 -0
- db/COM/simple self-displayer.1.sg +12 -0
- db/COM/spirit.2.sg +22 -0
- db/COM/x3.2.sg +18 -0
- db/CurIcoBPP +14 -0
- db/DEX/_DEX.0.sg +15 -0
- db/DEX/_init +4 -0
- db/ELF/Borland Kylix.4.sg +18 -0
- db/ELF/Burneye.2.sg +12 -0
- db/ELF/DMD.4.sg +28 -0
- db/ELF/ELFCrypt.2.sg +12 -0
- db/ELF/Ezuri.1.sg +29 -0
- db/ELF/FASM.4.sg +22 -0
- db/ELF/Flexlm.4.sg +15 -0
- db/ELF/Free Pascal.4.sg +44 -0
- db/ELF/GLIBC.3.sg +49 -0
- db/ELF/Go.4.sg +125 -0
- db/ELF/HASP.1.sg +28 -0
- db/ELF/HP C++.4.sg +11 -0
- db/ELF/IBM AIX kernel loader.sg +17 -0
- db/ELF/Oracle Solaris Studio.4.sg +45 -0
- db/ELF/PyInstaller.2.sg +24 -0
- db/ELF/QT.3.sg +38 -0
- db/ELF/Rust.4.sg +23 -0
- db/ELF/SDL.3.sg +35 -0
- db/ELF/UPX.2.sg +57 -0
- db/ELF/VBCC.4.sg +19 -0
- db/ELF/Virbox.2.sg +16 -0
- db/ELF/Watcom.4.sg +14 -0
- db/ELF/Zig.4.sg +21 -0
- db/ELF/_ELF.0.sg +15 -0
- db/ELF/_init +4 -0
- db/ELF/gcc.4.sg +94 -0
- db/ELF/gdc.4.sg +12 -0
- db/ELF/ldc.4.sg +33 -0
- db/ELF/movfuscator.4.sg +18 -0
- db/FASM +9 -0
- db/FPC +11 -0
- db/IPA/_init +4 -0
- db/JAR/SingleJar.3.sg +13 -0
- db/JAR/_JAR.0.sg +15 -0
- db/JAR/_init +4 -0
- db/LE/UPX.1.sg +85 -0
- db/LE/Watcom C.4.sg +23 -0
- db/LE/_LE.0.sg +15 -0
- db/LE/_init +4 -0
- db/LX/_LX.0.sg +15 -0
- db/LX/_init +4 -0
- db/MACH/Carbon.3.sg +13 -0
- db/MACH/Cocoa.3.sg +11 -0
- db/MACH/Delphi.4.sg +20 -0
- db/MACH/QT.3.sg +18 -0
- db/MACH/UPX.2.sg +15 -0
- db/MACH/Virbox.2.sg +13 -0
- db/MACH/WebKit.3.sg +11 -0
- db/MACH/Zig.4.sg +21 -0
- db/MACH/_MACH.0.sg +15 -0
- db/MACH/_init +4 -0
- db/MACH/gcc.4.sg +34 -0
- db/MACH/java.3.sg +14 -0
- db/MFC +13 -0
- db/MSDOS/$pirit.2.sg +47 -0
- db/MSDOS/32stub.0a.sg +13 -0
- db/MSDOS/ABKprot.2.sg +12 -0
- db/MSDOS/ACE.6.sg +9 -0
- db/MSDOS/AEP.2.sg +12 -0
- db/MSDOS/AINEXE.2.sg +19 -0
- db/MSDOS/ALEC.2.sg +14 -0
- db/MSDOS/ANS2ALL.1.sg +14 -0
- db/MSDOS/ARC.1.sg +23 -0
- db/MSDOS/ARJ.1.sg +14 -0
- db/MSDOS/ASIC-Basic.4.sg +18 -0
- db/MSDOS/AVAST CRC-Check.2.sg +14 -0
- db/MSDOS/AVPACK.2.sg +16 -0
- db/MSDOS/Ada89.4.sg +13 -0
- db/MSDOS/Adys COM2EXE.1.sg +11 -0
- db/MSDOS/Adys Glue.2.sg +15 -0
- db/MSDOS/Aluwain.2.sg +12 -0
- db/MSDOS/Amisetup.1.sg +13 -0
- db/MSDOS/Anti-LAME.2.sg +13 -0
- db/MSDOS/Anti-hack encryption system.2.sg +13 -0
- db/MSDOS/Antilame.2.sg +14 -0
- db/MSDOS/ApBasic.4.sg +17 -0
- db/MSDOS/AutoHack.1.sg +12 -0
- db/MSDOS/Aztec C-86.4.sg +40 -0
- db/MSDOS/BAT2EXEC.4.sg +16 -0
- db/MSDOS/BSTAR_FORTH.4.sg +13 -0
- db/MSDOS/BatLite.4.sg +13 -0
- db/MSDOS/BetterBASIC.4.sg +13 -0
- db/MSDOS/Bitlok.2.sg +14 -0
- db/MSDOS/Black fist.2.sg +13 -0
- db/MSDOS/Blinker.0a.sg +25 -0
- db/MSDOS/Borland C.4.sg +88 -0
- db/MSDOS/Borland Pascal.4.sg +88 -0
- db/MSDOS/Borland RTM.0a.sg +33 -0
- db/MSDOS/Borland TDS.sg +14 -0
- db/MSDOS/Borland TLINK.5.sg +13 -0
- db/MSDOS/Bunny.2.sg +14 -0
- db/MSDOS/CC.2.sg +18 -0
- db/MSDOS/CEPexe.2.sg +12 -0
- db/MSDOS/CERBERUS.2.sg +12 -0
- db/MSDOS/CII-C.4.sg +17 -0
- db/MSDOS/COMCRYPT.2.sg +15 -0
- db/MSDOS/COMPACK.2.sg +15 -0
- db/MSDOS/COMPROTECT.2.sg +14 -0
- db/MSDOS/CONVOY.2.sg +17 -0
- db/MSDOS/CPAV.1.sg +13 -0
- db/MSDOS/CRYPACK.2.sg +12 -0
- db/MSDOS/CRYPTEXE.2.sg +19 -0
- db/MSDOS/CSCRYPT Pro.2.sg +14 -0
- db/MSDOS/CWSDPMI.0a.sg +22 -0
- db/MSDOS/CauseWay DOS Extender.0a.sg +16 -0
- db/MSDOS/ChSFX.1.sg +27 -0
- db/MSDOS/Ciphator.2.sg +12 -0
- db/MSDOS/Coderunner.1.sg +22 -0
- db/MSDOS/Codesafe.2.sg +13 -0
- db/MSDOS/ComProtector.2.sg +15 -0
- db/MSDOS/ComprEXE.2.sg +14 -0
- db/MSDOS/Compress-EXE.2.sg +14 -0
- db/MSDOS/Concurrent Small C.4.sg +15 -0
- db/MSDOS/Copy Protector.2.sg +15 -0
- db/MSDOS/CopyQM SFX.1.sg +16 -0
- db/MSDOS/Copylock PC.1.sg +13 -0
- db/MSDOS/CrAcKeR.2.sg +14 -0
- db/MSDOS/CrackStop.2.sg +16 -0
- db/MSDOS/Cruncher.2.sg +12 -0
- db/MSDOS/CryExe.2.sg +12 -0
- db/MSDOS/Crypt (Dismember).2.sg +25 -0
- db/MSDOS/Crypt (LightShow).2.sg +25 -0
- db/MSDOS/CryptCom.2.sg +14 -0
- db/MSDOS/CrypteXeC.2.sg +15 -0
- db/MSDOS/Cryptors.2.sg +59 -0
- db/MSDOS/DAEMON Protect.2.sg +12 -0
- db/MSDOS/DCREXE.2.sg +18 -0
- db/MSDOS/DIET.2.sg +33 -0
- db/MSDOS/DMC.2.sg +14 -0
- db/MSDOS/DOS32 loader.0a.sg +14 -0
- db/MSDOS/DOS32.0a.sg +22 -0
- db/MSDOS/DOS4G.0a.sg +19 -0
- db/MSDOS/DOSX16.0a.sg +27 -0
- db/MSDOS/DOS_16M.0a.sg +28 -0
- db/MSDOS/DOS_32A.0a.sg +22 -0
- db/MSDOS/DSHIELD.2.sg +11 -0
- db/MSDOS/Deeper.2.sg +17 -0
- db/MSDOS/DemoMaker.2.sg +14 -0
- db/MSDOS/DexEXE.2.sg +14 -0
- db/MSDOS/Digital Research C.4.sg +15 -0
- db/MSDOS/Disk eXPress.1.sg +14 -0
- db/MSDOS/E-PROT.2.sg +14 -0
- db/MSDOS/EEXE.2.sg +14 -0
- db/MSDOS/EMMXXXX0 check.0a.sg +12 -0
- db/MSDOS/EMX.0a.sg +16 -0
- db/MSDOS/EPW.2.sg +18 -0
- db/MSDOS/EXARJ.1.sg +13 -0
- db/MSDOS/EXE Manager.2.sg +14 -0
- db/MSDOS/EXE Packer.2.sg +15 -0
- db/MSDOS/EXE encryption.2.sg +13 -0
- db/MSDOS/EXE-Crypt.2.sg +13 -0
- db/MSDOS/EXE-Cryptor.2.sg +19 -0
- db/MSDOS/EXE-Protect.2.sg +13 -0
- db/MSDOS/EXE2COM.1.sg +22 -0
- db/MSDOS/EXECUTRIX.2.sg +13 -0
- db/MSDOS/EXEGUARD.2.sg +12 -0
- db/MSDOS/EXEHigh.2.sg +14 -0
- db/MSDOS/EXEPACK.2.sg +57 -0
- db/MSDOS/EXETools COM2EXE.1.sg +12 -0
- db/MSDOS/EXETools.2.sg +16 -0
- db/MSDOS/Easy!-C.4.sg +14 -0
- db/MSDOS/Eliashim's CodeTrack.1.sg +12 -0
- db/MSDOS/Encriptor.2.sg +12 -0
- db/MSDOS/Enkryptonator.2.sg +12 -0
- db/MSDOS/ExeCode.2.sg +18 -0
- db/MSDOS/ExeLITE.2.sg +15 -0
- db/MSDOS/ExeLock.2.sg +16 -0
- db/MSDOS/F-XLOCK.1.sg +13 -0
- db/MSDOS/FACRYPT.2.sg +12 -0
- db/MSDOS/FCP IV.2.sg +13 -0
- db/MSDOS/FSE.2.sg +61 -0
- db/MSDOS/File Shield.1.sg +14 -0
- db/MSDOS/Fitted Modula-2.4.sg +14 -0
- db/MSDOS/ForthInfo.4.sg +18 -0
- db/MSDOS/FromBAT.1.sg +13 -0
- db/MSDOS/GFX to EXE.1.sg +14 -0
- db/MSDOS/GOAT.1.sg +21 -0
- db/MSDOS/GRABBER.1.sg +26 -0
- db/MSDOS/GRASP.4.sg +20 -0
- db/MSDOS/GameWizard DOS Extender.0a.sg +12 -0
- db/MSDOS/Go32Stub.0a.sg +19 -0
- db/MSDOS/Graphic WorkShop.1.sg +14 -0
- db/MSDOS/Guardian Angel.2.sg +21 -0
- db/MSDOS/H+BEDV SelfCheck.1.sg +18 -0
- db/MSDOS/HACKSTOP.2.sg +77 -0
- db/MSDOS/HASP.2.sg +14 -0
- db/MSDOS/HEALTH.2.sg +12 -0
- db/MSDOS/Header Changer.2.sg +13 -0
- db/MSDOS/Hi-Tech C.4.sg +15 -0
- db/MSDOS/HyperLOCK 386.2.sg +14 -0
- db/MSDOS/IBM PC Pascal.4.sg +31 -0
- db/MSDOS/ICE.1.sg +13 -0
- db/MSDOS/IMMUN.1.sg +14 -0
- db/MSDOS/Inertia.2.sg +14 -0
- db/MSDOS/Ironthorn.2.sg +14 -0
- db/MSDOS/JAM.2.sg +12 -0
- db/MSDOS/JmCryptExe.2.sg +19 -0
- db/MSDOS/John Socha Library.3.sg +13 -0
- db/MSDOS/Joke.2.sg +13 -0
- db/MSDOS/KeyMaker.2.sg +14 -0
- db/MSDOS/Khrome Crypt.2.sg +12 -0
- db/MSDOS/Kvetch.2.sg +14 -0
- db/MSDOS/LE.0.sg +11 -0
- db/MSDOS/LGLZ.2.sg +14 -0
- db/MSDOS/LH.1.sg +11 -0
- db/MSDOS/LHA.1.sg +20 -0
- db/MSDOS/LHarc.1.sg +19 -0
- db/MSDOS/LOCK.2.sg +14 -0
- db/MSDOS/LSI_C.4.sg +14 -0
- db/MSDOS/LX.0.sg +11 -0
- db/MSDOS/LZEXE.2.sg +42 -0
- db/MSDOS/L_O_V_E_ FORTH.4.sg +18 -0
- db/MSDOS/Lahey Fortran.4.sg +14 -0
- db/MSDOS/LamerStop.2.sg +12 -0
- db/MSDOS/Lattice C.4.sg +87 -0
- db/MSDOS/LockTite+.2.sg +12 -0
- db/MSDOS/Logitech Modula-2.4.sg +14 -0
- db/MSDOS/MEGALITE.2.sg +12 -0
- db/MSDOS/MESS.2.sg +30 -0
- db/MSDOS/MSLite.1.sg +14 -0
- db/MSDOS/Maker.2.sg +14 -0
- db/MSDOS/Mandrake.2.sg +13 -0
- db/MSDOS/MegaBasic.4.sg +16 -0
- db/MSDOS/MegaBasic1.4.sg +30 -0
- db/MSDOS/Meridian Ada.4.sg +29 -0
- db/MSDOS/Meridian Pascal.4.sg +21 -0
- db/MSDOS/MetaWare High C.4.sg +30 -0
- db/MSDOS/MetaWare Professional Pascal.4.sg +24 -0
- db/MSDOS/Micro Focus Cobol.4.sg +19 -0
- db/MSDOS/Micro Focus DOS extender.0a.sg +13 -0
- db/MSDOS/Microsoft Basic.4.sg +23 -0
- db/MSDOS/Microsoft C Library.3.sg +20 -0
- db/MSDOS/Microsoft C.4.sg +57 -0
- db/MSDOS/Microsoft Fortran.4.sg +15 -0
- db/MSDOS/Microsoft Quick Basic.4.sg +35 -0
- db/MSDOS/Microsoft Quick Pascal.4.sg +16 -0
- db/MSDOS/Microsoft RTL (Clipper).3.sg +13 -0
- db/MSDOS/Microsoft RTL.3.sg +48 -0
- db/MSDOS/MultiLoop Protection.2.sg +13 -0
- db/MSDOS/MutaWWP.2.sg +14 -0
- db/MSDOS/Mutate.2.sg +21 -0
- db/MSDOS/NE.0.sg +11 -0
- db/MSDOS/NOCLIP.2.sg +14 -0
- db/MSDOS/NOTA.2.sg +14 -0
- db/MSDOS/NTShell.2.sg +14 -0
- db/MSDOS/Netware loader.1.sg +12 -0
- db/MSDOS/Nodebug.2.sg +14 -0
- db/MSDOS/Novex.2.sg +12 -0
- db/MSDOS/Oberon-M.4.sg +14 -0
- db/MSDOS/Optlink.2.sg +31 -0
- db/MSDOS/Overlay.2.sg +13 -0
- db/MSDOS/Oyster.1.sg +13 -0
- db/MSDOS/PACKWIN.2.sg +14 -0
- db/MSDOS/PC-Guard.2.sg +30 -0
- db/MSDOS/PCC.4.sg +28 -0
- db/MSDOS/PCOM.2.sg +14 -0
- db/MSDOS/PDC Prolog.4.sg +15 -0
- db/MSDOS/PGMPAK.2.sg +17 -0
- db/MSDOS/PGPROT.1.sg +12 -0
- db/MSDOS/PK sig.1.sg +12 -0
- db/MSDOS/PKEXE.2.sg +13 -0
- db/MSDOS/PKLITE.2.sg +59 -0
- db/MSDOS/PKSFX.1.sg +15 -0
- db/MSDOS/PKTINY.2.sg +14 -0
- db/MSDOS/PKZIP mini-sfx.1.sg +17 -0
- db/MSDOS/PKZIP-SFX.1.sg +13 -0
- db/MSDOS/PMODE.0a.sg +17 -0
- db/MSDOS/PMWLite.2.sg +14 -0
- db/MSDOS/PRO-PACK.2.sg +16 -0
- db/MSDOS/PRO32.0a.sg +14 -0
- db/MSDOS/PROPACK SFX.1.sg +13 -0
- db/MSDOS/PROTECT.2.sg +101 -0
- db/MSDOS/PVAC.2.sg +14 -0
- db/MSDOS/Pacific C.4.sg +23 -0
- db/MSDOS/Pack.2.sg +14 -0
- db/MSDOS/Packers.2.sg +17 -0
- db/MSDOS/Palladix.1.sg +12 -0
- db/MSDOS/Panda immunizer.1.sg +14 -0
- db/MSDOS/Pascal_MT+86.4.sg +20 -0
- db/MSDOS/PassEXE.2.sg +12 -0
- db/MSDOS/Patchers.1.sg +18 -0
- db/MSDOS/Phar Lap.0a.sg +31 -0
- db/MSDOS/Pksmart.2.sg +14 -0
- db/MSDOS/Power C.4.sg +16 -0
- db/MSDOS/ProtEXE.2.sg +58 -0
- db/MSDOS/Protector.2.sg +13 -0
- db/MSDOS/Quadru-Lock.2.sg +12 -0
- db/MSDOS/R-Crypt.2.sg +13 -0
- db/MSDOS/RAR.6.sg +9 -0
- db/MSDOS/REC small AV.1.sg +18 -0
- db/MSDOS/REC small.1.sg +26 -0
- db/MSDOS/REC.2.sg +22 -0
- db/MSDOS/RELETTER.1.sg +14 -0
- db/MSDOS/RERP.2.sg +13 -0
- db/MSDOS/RHC.2.sg +14 -0
- db/MSDOS/RJcrush.2.sg +12 -0
- db/MSDOS/RLE com-packer.2.sg +13 -0
- db/MSDOS/RM_FORTRAN.4.sg +14 -0
- db/MSDOS/ROSETINY.2.sg +15 -0
- db/MSDOS/RSX.0a.sg +12 -0
- db/MSDOS/RTLink VM Manager.0a.sg +12 -0
- db/MSDOS/RTPatch SFX.1.sg +13 -0
- db/MSDOS/Realia Cobol.4.sg +16 -0
- db/MSDOS/Realia SPITBOL.4.sg +14 -0
- db/MSDOS/Relpack.2.sg +14 -0
- db/MSDOS/SCRNCH.2.sg +14 -0
- db/MSDOS/SEA-AXE.2.sg +15 -0
- db/MSDOS/SFX.1.sg +14 -0
- db/MSDOS/SHOW IT.1.sg +14 -0
- db/MSDOS/SP-FORTH.4.sg +18 -0
- db/MSDOS/Scramb.2.sg +13 -0
- db/MSDOS/Secure.2.sg +37 -0
- db/MSDOS/Self UnStuffer.2.sg +16 -0
- db/MSDOS/SelfChk.2.sg +14 -0
- db/MSDOS/Shrink.2.sg +15 -0
- db/MSDOS/Shrinker.2.sg +14 -0
- db/MSDOS/SimplyWare.1.sg +22 -0
- db/MSDOS/Small C.4.sg +20 -0
- db/MSDOS/SnoopStop.2.sg +12 -0
- db/MSDOS/StonyBrook Pascal.4.sg +26 -0
- db/MSDOS/Stub-386.0a.sg +13 -0
- db/MSDOS/SuckStop.2.sg +27 -0
- db/MSDOS/Sydex SFX.1.sg +19 -0
- db/MSDOS/Symantec BASIC.4.sg +16 -0
- db/MSDOS/TCEC.2.sg +18 -0
- db/MSDOS/TMTSTUB.0a.sg +14 -0
- db/MSDOS/TSCRUNCH.2.sg +13 -0
- db/MSDOS/TTW.1.sg +17 -0
- db/MSDOS/TUCCRYP.2.sg +14 -0
- db/MSDOS/TXT2COM.1.sg +18 -0
- db/MSDOS/TXTmaker.1.sg +14 -0
- db/MSDOS/Tenth Planet.2.sg +13 -0
- db/MSDOS/TinyProg.2.sg +27 -0
- db/MSDOS/Tinyprot.2.sg +16 -0
- db/MSDOS/Topspeed C.4.sg +20 -0
- db/MSDOS/Topspeed Modula.4.sg +42 -0
- db/MSDOS/TraceLock.2.sg +13 -0
- db/MSDOS/Trap.2.sg +50 -0
- db/MSDOS/Turbo Basic.4.sg +18 -0
- db/MSDOS/Turbo Prolog.4.sg +16 -0
- db/MSDOS/TurboChainer.1.sg +13 -0
- db/MSDOS/Txt2Exe.1.sg +14 -0
- db/MSDOS/UCEXE.2.sg +22 -0
- db/MSDOS/UPX.2.sg +46 -0
- db/MSDOS/UR FORTH.4.sg +14 -0
- db/MSDOS/Un2pack.2.sg +14 -0
- db/MSDOS/UnPackStop.2.sg +33 -0
- db/MSDOS/UniVac.1.sg +14 -0
- db/MSDOS/Unknown cryptors.2.sg +54 -0
- db/MSDOS/Upper Deck Forth.4.sg +14 -0
- db/MSDOS/V-Load.1.sg +13 -0
- db/MSDOS/Visual Cobol.4.sg +16 -0
- db/MSDOS/WATCOM.4.sg +55 -0
- db/MSDOS/WDOSX.0a.sg +14 -0
- db/MSDOS/WDOSX32.0a.sg +12 -0
- db/MSDOS/WPFORTH.4.sg +14 -0
- db/MSDOS/WWPACK mutator.2.sg +53 -0
- db/MSDOS/WWPACK.2.sg +89 -0
- db/MSDOS/Whitesmiths C.4.sg +20 -0
- db/MSDOS/Window book.1.sg +21 -0
- db/MSDOS/Wizardy protection.1.sg +12 -0
- db/MSDOS/WordPerfect EXEPack.2.sg +12 -0
- db/MSDOS/XDOC.2.sg +13 -0
- db/MSDOS/XMLOD.0a.sg +16 -0
- db/MSDOS/XPACK.2.sg +37 -0
- db/MSDOS/Xtender.0a.sg +14 -0
- db/MSDOS/ZIPSCRUB.2.sg +14 -0
- db/MSDOS/ZOO.1.sg +14 -0
- db/MSDOS/Zbikowski C.4.sg +18 -0
- db/MSDOS/Zip.6.sg +9 -0
- db/MSDOS/Zortech(Symantec) C.4.sg +55 -0
- db/MSDOS/Zurenava DOS Extender.0a.sg +13 -0
- db/MSDOS/_MSDOS.0.sg +15 -0
- db/MSDOS/_init +54 -0
- db/MSDOS/aPACK.2.sg +60 -0
- db/MSDOS/aPatch.2.sg +13 -0
- db/MSDOS/anti-tracing add-on.1.sg +12 -0
- db/MSDOS/com2exe.2.sg +21 -0
- db/MSDOS/cramble.2.sg +12 -0
- db/MSDOS/deep-CRyPTer.2.sg +12 -0
- db/MSDOS/djgpp.4.sg +16 -0
- db/MSDOS/dos extender.0a.sg +16 -0
- db/MSDOS/dos extender1.0a.sg +13 -0
- db/MSDOS/dos extender2.0a.sg +16 -0
- db/MSDOS/iLUCRYPT.2.sg +18 -0
- db/MSDOS/immunizer.1.sg +13 -0
- db/MSDOS/mbp SHRINK.2.sg +13 -0
- db/MSDOS/muLISP-87.4.sg +20 -0
- db/MSDOS/nbuild.2.sg +12 -0
- db/MSDOS/overlays.6.sg +70 -0
- db/MSDOS/self-displayer.1.sg +13 -0
- db/MSDOS/virus.1.sg +13 -0
- db/NE/ARC SFX.1.sg +13 -0
- db/NE/Borland C++.1.sg +25 -0
- db/NE/Borland Pascal.1.sg +13 -0
- db/NE/MS RTL.0.sg +28 -0
- db/NE/PKZIP-SFX.1.sg +13 -0
- db/NE/Setup-Specialist.1.sg +16 -0
- db/NE/Sydex SFX.1.sg +13 -0
- db/NE/Watcom C.1.sg +34 -0
- db/NE/_NE.0.sg +15 -0
- db/NE/_init +4 -0
- db/NPM/JavaScript.5.sg +11 -0
- db/NPM/PackageName.1.sg +15 -0
- db/NPM/TypeScript.5.sg +11 -0
- db/NPM/_NPM.0.sg +16 -0
- db/NPM/_init +4 -0
- db/PE/12Ghosts Zip2.1.sg +17 -0
- db/PE/32Lite.2.sg +12 -0
- db/PE/3dcrypter.2.sg +12 -0
- db/PE/404crypter.1.sg +13 -0
- db/PE/7z.1.sg +43 -0
- db/PE/7z.4.sg +14 -0
- db/PE/7z.6.sg +21 -0
- db/PE/ABC Cryptor.2.sg +12 -0
- db/PE/ACCAStore.1.sg +19 -0
- db/PE/ACE.6.sg +9 -0
- db/PE/ACProtect.2.sg +30 -0
- db/PE/ADS Self Extractor.1.sg +18 -0
- db/PE/AHTeam EP Protector.2.sg +71 -0
- db/PE/AHpacker.2.sg +14 -0
- db/PE/ANDpakk.2.sg +21 -0
- db/PE/AOLSetup.1.sg +15 -0
- db/PE/AR Crypt Private.2.sg +11 -0
- db/PE/ARJSFX.1.sg +44 -0
- db/PE/ARM Protector.2.sg +21 -0
- db/PE/ARQ.1.sg +16 -0
- db/PE/ASDPack.2.sg +12 -0
- db/PE/ASM Guard.2.sg +27 -0
- db/PE/ASPR Stripper.2.sg +12 -0
- db/PE/ASPack.2.sg +95 -0
- db/PE/ASProtect.2.sg +54 -0
- db/PE/AT4RE Protector.2.sg +13 -0
- db/PE/AZProtect.2.sg +12 -0
- db/PE/Aase Crypter.2.sg +12 -0
- db/PE/Abbyy Lingvo.1.sg +15 -0
- db/PE/AcidCrypt.2.sg +13 -0
- db/PE/Acronis installer.1.sg +30 -0
- db/PE/Active Delivery.1.sg +16 -0
- db/PE/ActiveMark.2.sg +14 -0
- db/PE/Actual Installer.1.sg +18 -0
- db/PE/Adept Protector.2.sg +19 -0
- db/PE/Adobe Flash Player installer.1.sg +19 -0
- db/PE/Adobe FlashPlayer downloader.1.sg +17 -0
- db/PE/Adobe installers.1.sg +32 -0
- db/PE/Advanced BAT to EXE converter.2.sg +13 -0
- db/PE/Advanced installer.1.sg +30 -0
- db/PE/Adveractive.1.sg +14 -0
- db/PE/Aeco installer.1.sg +14 -0
- db/PE/Agile .NET.2.sg +11 -0
- db/PE/Alchemy Mindworks installer.1.sg +19 -0
- db/PE/Alex Protector.2.sg +15 -0
- db/PE/Alienyze.1.sg +14 -0
- db/PE/Alloy.2.sg +12 -0
- db/PE/AlmafuerteCrypter.1.sg +12 -0
- db/PE/Amber.2.sg +16 -0
- db/PE/Anskya Binder.2.sg +12 -0
- db/PE/Anskya NTPacker Generator.2.sg +11 -0
- db/PE/Anslym Crypter.2.sg +11 -0
- db/PE/AntiDote.2.sg +34 -0
- db/PE/Anticrack Software Protector.2.sg +15 -0
- db/PE/Apex-c.2.sg +12 -0
- db/PE/App Encryptor.2.sg +13 -0
- db/PE/Armadillo.2.sg +48 -0
- db/PE/AssemblyInvoke.2.sg +13 -0
- db/PE/Astrum.1.sg +21 -0
- db/PE/AtomPePacker.2.sg +15 -0
- db/PE/AutoHotKey.3.sg +20 -0
- db/PE/AutoIt.3.sg +20 -0
- db/PE/AutoPlay Media Studio.1.sg +26 -0
- db/PE/Autodesk Self-Extract.1.sg +14 -0
- db/PE/AutorunProEnterprise.1.sg +16 -0
- db/PE/AutorunProEnterpriseII.1.sg +19 -0
- db/PE/AverCryptor.2.sg +20 -0
- db/PE/Babel .NET.2.sg +17 -0
- db/PE/BasicCrypt1.1.sg +12 -0
- db/PE/Bat to exe.1.sg +19 -0
- db/PE/BattleshipCrypter.2.sg +11 -0
- db/PE/BeRo Tiny Pascal.4.sg +12 -0
- db/PE/BeRo.2.sg +37 -0
- db/PE/Berio.2.sg +15 -0
- db/PE/BitRock Installer.1.sg +16 -0
- db/PE/BitShape PE Crypt.2.sg +15 -0
- db/PE/Blade Joiner.1.sg +12 -0
- db/PE/BlindSpot.2.sg +12 -0
- db/PE/Blizzard PrePatch.1.sg +14 -0
- db/PE/BobPack.2.sg +12 -0
- db/PE/BopCrypt.2.sg +12 -0
- db/PE/Borland C++.4.sg +36 -0
- db/PE/Box Stub.1.sg +14 -0
- db/PE/Break Into Pattern.2.sg +12 -0
- db/PE/BulletProofSoft installer.1.sg +13 -0
- db/PE/ByfronTech.2.sg +67 -0
- db/PE/Bytessence Install Maker.1.sg +19 -0
- db/PE/CDS SS.2.sg +12 -0
- db/PE/CExe.2.sg +12 -0
- db/PE/CICompress.2.sg +12 -0
- db/PE/CSDD's installer.1.sg +17 -0
- db/PE/CUDA-Driver.4.sg +14 -0
- db/PE/CZ installer.1.sg +18 -0
- db/PE/Cab.1.sg +60 -0
- db/PE/Cab.6.sg +33 -0
- db/PE/Calibre_installer.1.sg +19 -0
- db/PE/Cameyo.2.sg +16 -0
- db/PE/Celesty File Binder.1.sg +18 -0
- db/PE/ChainskiCrypter.1.sg +11 -0
- db/PE/Chaos Software installer.1.sg +14 -0
- db/PE/Chilkat ZIP Self-Extractor.1.sg +14 -0
- db/PE/Chromium Embedded Framework.4.sg +14 -0
- db/PE/Chromium WebView.4.sg +14 -0
- db/PE/CipherWall.1.sg +20 -0
- db/PE/CliSecure.2.sg +21 -0
- db/PE/ClickTeam.1.sg +16 -0
- db/PE/Code Virtualizer.2.sg +12 -0
- db/PE/Code-Lock.2.sg +11 -0
- db/PE/CodeCrypt.2.sg +21 -0
- db/PE/CodeCrypter.2.sg +12 -0
- db/PE/CodeFusion Wizard.1.sg +14 -0
- db/PE/CodeSafe.2.sg +12 -0
- db/PE/CodeVeil.2.sg +20 -0
- db/PE/Codegear Installer.1.sg +14 -0
- db/PE/Codewall.2.sg +18 -0
- db/PE/CoffeeCup SFX.2.sg +14 -0
- db/PE/Confuser.2.sg +41 -0
- db/PE/CopyMinder.2.sg +11 -0
- db/PE/Costura.Fody.4.sg +13 -0
- db/PE/CreateInstall.1.sg +22 -0
- db/PE/Crinkler.2.sg +15 -0
- db/PE/Crunch.2.sg +25 -0
- db/PE/CrypKey Installer.1.sg +14 -0
- db/PE/CrypKey.2.sg +20 -0
- db/PE/CrypToCrack Pe Protector.2.sg +15 -0
- db/PE/Cryptect.1.sg +13 -0
- db/PE/Crypter.2.sg +12 -0
- db/PE/Cryptic.2.sg +12 -0
- db/PE/CryptoObfuscator.2.sg +17 -0
- db/PE/Cxfreeze.1.sg +25 -0
- db/PE/Cygwin32.4.sg +11 -0
- db/PE/DBPE.2.sg +25 -0
- db/PE/DCrypt Private.2.sg +12 -0
- db/PE/DECFortran.4.sg +22 -0
- db/PE/DEF.2.sg +12 -0
- db/PE/DJoin.1.sg +17 -0
- db/PE/DMD.4.sg +43 -0
- db/PE/DNGuard.2.sg +30 -0
- db/PE/DS.EZ-Logic.sg +12 -0
- db/PE/DS.Eutron SmartKey dongle.5.sg +25 -0
- db/PE/DS.Flexlm.4.sg +19 -0
- db/PE/DS.HASP dongle.5.sg +18 -0
- db/PE/DS.Hardlock dongle.5.sg +20 -0
- db/PE/DS.Key-Lok II dongle.5.sg +19 -0
- db/PE/DS.MARX Crypto-Box dongle.5.sg +26 -0
- db/PE/DS.Matrix Hardware Lock dongle.5.sg +16 -0
- db/PE/DS.NetHASP dongle.5.sg +15 -0
- db/PE/DS.Novex dongle.4.sg +14 -0
- db/PE/DS.RLM.4.sg +21 -0
- db/PE/DS.Rockey4 dongle.5.sg +20 -0
- db/PE/DS.SenseLock dongle.5.sg +17 -0
- db/PE/DS.Sentinel SuperPro dongle.5.sg +16 -0
- db/PE/DS.Sentinel SuperPro.2.sg +21 -0
- db/PE/DS.Sentinel dongle.5.sg +24 -0
- db/PE/DS.SoftLok dongle.5.sg +15 -0
- db/PE/DS.Unikey dongle.5.sg +26 -0
- db/PE/DS.WIBU Key dongle.5.sg +16 -0
- db/PE/DS.Wizzkey dongle.5.sg +14 -0
- db/PE/DYAMAR.2.sg +12 -0
- db/PE/DZA Patcher.2.sg +15 -0
- db/PE/Daemon Protect.2.sg +13 -0
- db/PE/DalKrypt.2.sg +12 -0
- db/PE/DataAnubis.1.sg +13 -0
- db/PE/DeepSea.2.sg +18 -0
- db/PE/DelZip SFX.2.sg +14 -0
- db/PE/Delphi.4.sg +270 -0
- db/PE/Denuvo protector.2.sg +14 -0
- db/PE/DeployMaster.1.sg +15 -0
- db/PE/DesktopX Installer.1.sg +18 -0
- db/PE/Dimd SFX.1.sg +15 -0
- db/PE/Ding Boys PE-lock Phantasm.2.sg +18 -0
- db/PE/DirTy CrYpt0r.2.sg +12 -0
- db/PE/Direct2D.4.sg +14 -0
- db/PE/Direct3D.4.sg +38 -0
- db/PE/DirectX.4.sg +14 -0
- db/PE/DockerDesktopInstaller.1.sg +20 -0
- db/PE/Dolphin VM.1.sg +18 -0
- db/PE/DotFix Nice Protect.2.sg +23 -0
- db/PE/Dotfuscator.2.sg +11 -0
- db/PE/DragonArmor.2.sg +12 -0
- db/PE/Duals eXe Encryptor.2.sg +19 -0
- db/PE/DxPack.2.sg +22 -0
- db/PE/ENIGMA.2.sg +111 -0
- db/PE/EP.2.sg +15 -0
- db/PE/EP.MPRESS.2.sg +37 -0
- db/PE/EP.MSC.4.sg +21 -0
- db/PE/EXE Password Protector.2.sg +12 -0
- db/PE/EXE32Pack.2.sg +12 -0
- db/PE/EXECrypt.2.sg +12 -0
- db/PE/EXECryptor.2.sg +99 -0
- db/PE/EXEFog.2.sg +22 -0
- db/PE/EXERefactor.2.sg +12 -0
- db/PE/Eazfuscator.2.sg +17 -0
- db/PE/ElecKey.2.sg +34 -0
- db/PE/ElectronApp.3.sg +22 -0
- db/PE/Embed PE.2.sg +22 -0
- db/PE/EncryptPE.2.sg +31 -0
- db/PE/Enigma Installer.1.sg +22 -0
- db/PE/Enigma Virtual Box.2.sg +17 -0
- db/PE/Envoy Packager.1.sg +15 -0
- db/PE/Escargot.2.sg +15 -0
- db/PE/Eschalon installer.1.sg +15 -0
- db/PE/ExE Pack.2.sg +23 -0
- db/PE/Excelsior Installer.1.sg +14 -0
- db/PE/Excelsior JET.4.sg +35 -0
- db/PE/Exe Guarder.2.sg +12 -0
- db/PE/Exe Locker.2.sg +12 -0
- db/PE/Exe Shield.2.sg +28 -0
- db/PE/ExeJoiner.1.sg +12 -0
- db/PE/ExeSafeguard.2.sg +12 -0
- db/PE/ExeSmasher.2.sg +11 -0
- db/PE/ExeSplitter.1.sg +24 -0
- db/PE/ExeStealth.2.sg +40 -0
- db/PE/FASM.4.sg +21 -0
- db/PE/FDM Installer.1.sg +18 -0
- db/PE/FISH .NET.2.sg +17 -0
- db/PE/FSG.2.sg +175 -0
- db/PE/FakeNinja.2.sg +16 -0
- db/PE/FileSplit Self-Merger.2.sg +13 -0
- db/PE/Fish PE.2.sg +22 -0
- db/PE/FishPE Shield.2.sg +21 -0
- db/PE/FixupPak.2.sg +12 -0
- db/PE/FlashBack Protector.2.sg +13 -0
- db/PE/FlashPlayer.1.sg +21 -0
- db/PE/Fly-Crypter.2.sg +15 -0
- db/PE/Fox Pro.3.sg +25 -0
- db/PE/Free Basic.4.sg +24 -0
- db/PE/Free Pascal.4.sg +53 -0
- db/PE/FreeCryptor.2.sg +22 -0
- db/PE/FreeJoiner.1.sg +45 -0
- db/PE/Fuck n Joy.2.sg +12 -0
- db/PE/Fusion.2.sg +12 -0
- db/PE/G!X Protector.2.sg +12 -0
- db/PE/GPInstall.1.sg +19 -0
- db/PE/GSplit.1.sg +20 -0
- db/PE/GZip.1.sg +20 -0
- db/PE/GameGuard.2.sg +12 -0
- db/PE/Gentee Installer.1.sg +34 -0
- db/PE/Ghost Installer.1.sg +16 -0
- db/PE/GkSetup.1.sg +18 -0
- db/PE/Go.4.sg +65 -0
- db/PE/Goats PE Mutilator.2.sg +12 -0
- db/PE/GoldSrc.3.sg +19 -0
- db/PE/Goliath.2.sg +15 -0
- db/PE/Gremlin patcher.1.sg +21 -0
- db/PE/GuardantStealth.2.sg +11 -0
- db/PE/HASP HL Protection.2.sg +34 -0
- db/PE/HASP.2.sg +22 -0
- db/PE/HTML executable.1.sg +18 -0
- db/PE/HackShield.2.sg +17 -0
- db/PE/Hamrick_Software_installer.1.sg +16 -0
- db/PE/Hide&Protect.2.sg +12 -0
- db/PE/HidePE.2.sg +255 -0
- db/PE/HyperTech Crackproof.2.sg +13 -0
- db/PE/I-D Media installer.1.sg +14 -0
- db/PE/ICrypt.2.sg +12 -0
- db/PE/ID Application Protector(NoNamePacker).2.sg +12 -0
- db/PE/IDM Installer.1.sg +15 -0
- db/PE/ILProtector.2.sg +19 -0
- db/PE/ILUCRYPT.2.sg +15 -0
- db/PE/IMPostor Pack.2.sg +12 -0
- db/PE/INCrypter.2.sg +12 -0
- db/PE/INFTool.1.sg +15 -0
- db/PE/INTENIUM.1.sg +13 -0
- db/PE/IProtect.2.sg +17 -0
- db/PE/Inno Setup Module.1.sg +97 -0
- db/PE/Inquartos Obfuscator.2.sg +12 -0
- db/PE/Instalit.1.sg +25 -0
- db/PE/Install Factory.1.sg +14 -0
- db/PE/Install4j installer.1.sg +16 -0
- db/PE/InstallAnywhere.1.sg +36 -0
- db/PE/InstallShield.1.sg +91 -0
- db/PE/InstallUs.1.sg +16 -0
- db/PE/Intel C.4.sg +13 -0
- db/PE/Intel IPP.sg +15 -0
- db/PE/IntelliProtector.2.sg +17 -0
- db/PE/InxObfuscator.2.sg +14 -0
- db/PE/JDPack.2.sg +15 -0
- db/PE/JScript.4.sg +14 -0
- db/PE/Jar2exe.1.sg +26 -0
- db/PE/KBys Packer.2.sg +21 -0
- db/PE/KCryptor.2.sg +13 -0
- db/PE/KGCrypt.2.sg +11 -0
- db/PE/KRZIP SFX.2.sg +15 -0
- db/PE/KoiVM.2.sg +22 -0
- db/PE/Konekt Protector.2.sg +12 -0
- db/PE/Krypton.2.sg +25 -0
- db/PE/Kryptonit.2.sg +16 -0
- db/PE/LARP.2.sg +13 -0
- db/PE/LCC-Win32.4.sg +14 -0
- db/PE/LCL.5.sg +17 -0
- db/PE/LDK .NET.2.sg +13 -0
- db/PE/LDK.2.sg +21 -0
- db/PE/Lahey Fortran 90.4.sg +19 -0
- db/PE/LameCrypt.2.sg +12 -0
- db/PE/Laserlok.2.sg +12 -0
- db/PE/LimeCrypter.2.sg +58 -0
- db/PE/Lua Runtime.4.sg +16 -0
- db/PE/LucasArts Update Installer.1.sg +14 -0
- db/PE/Lyme SFX.1.sg +15 -0
- db/PE/MEW.2.sg +23 -0
- db/PE/MP-ZipTool.1.sg +14 -0
- db/PE/MPQ.1.sg +15 -0
- db/PE/MPRESS.2.sg +20 -0
- db/PE/MSLRH.2.sg +117 -0
- db/PE/MZ-Crypt.2.sg +12 -0
- db/PE/MZ0oPE.2.sg +12 -0
- db/PE/MaskPE.2.sg +15 -0
- db/PE/Maxtocode.2.sg +21 -0
- db/PE/Metrowerks CodeWarrior.2.sg +26 -0
- db/PE/MicroJoiner.1.sg +21 -0
- db/PE/Microsoft .NET Runtime.4.sg +15 -0
- db/PE/Microsoft C Runtime.4.sg +16 -0
- db/PE/Microsoft Class Installer.1.sg +22 -0
- db/PE/Microsoft Compound-based installer.1.sg +14 -0
- db/PE/Microsoft Edge WebView.4.sg +14 -0
- db/PE/Microsoft Warbird.2.sg +15 -0
- db/PE/Microsoft dotNet installer.1.sg +15 -0
- db/PE/Microsoft.6.sg +1715 -0
- db/PE/Miktex Installer.1.sg +15 -0
- db/PE/MinGW.4.sg +65 -0
- db/PE/Minke.2.sg +12 -0
- db/PE/Mioplanet installer.1.sg +14 -0
- db/PE/MoleBox.2.sg +41 -0
- db/PE/Morphine.2.sg +12 -0
- db/PE/Morphnah.2.sg +20 -0
- db/PE/Morton installer.1.sg +21 -0
- db/PE/Multimedia Fusion Installer.1.sg +14 -0
- db/PE/Mystic Compressor.2.sg +15 -0
- db/PE/N-Code.2.sg +13 -0
- db/PE/N-Joiner.1.sg +12 -0
- db/PE/N-Joy.2.sg +25 -0
- db/PE/NOS Installer.1.sg +22 -0
- db/PE/NOS Packer.2.sg +13 -0
- db/PE/NTPacker.2.sg +12 -0
- db/PE/NTShell.2.sg +13 -0
- db/PE/NTkrnl Protector.2.sg +37 -0
- db/PE/NakedPacker.2.sg +13 -0
- db/PE/NanoZip.1.sg +16 -0
- db/PE/Native UD Packer.2.sg +12 -0
- db/PE/NativeCryptor by DosX.2.sg +13 -0
- db/PE/NecroVM.Virt.2.sg +44 -0
- db/PE/NeoLite.2.sg +38 -0
- db/PE/NetCompilersLibraries.4.sg +37 -0
- db/PE/NetReactor.2.sg +102 -0
- db/PE/NetShieldProtector.2.sg +55 -0
- db/PE/Newtonsoft.Json.4.sg +14 -0
- db/PE/Nim.4.sg +17 -0
- db/PE/Ningishzida.2.sg +12 -0
- db/PE/NoobyProtect.2.sg +11 -0
- db/PE/NoodleCrypt.2.sg +12 -0
- db/PE/North Star PE Shrinker.2.sg +12 -0
- db/PE/NsPacK.2.sg +40 -0
- db/PE/Nuitka.1.sg +25 -0
- db/PE/Nullsoft Scriptable Install System.1.sg +96 -0
- db/PE/O'Setup95.1.sg +15 -0
- db/PE/ORiEN.2.sg +19 -0
- db/PE/Obfuscar.2.sg +14 -0
- db/PE/Obfuscator .NET 2009.2.sg +16 -0
- db/PE/Obsidium.2.sg +114 -0
- db/PE/Open Source Code Crypter.2.sg +11 -0
- db/PE/OpenAL.4.sg +14 -0
- db/PE/OpenCL.4.sg +14 -0
- db/PE/OpenGL.4.sg +14 -0
- db/PE/OpenSSL.4.sg +14 -0
- db/PE/Oreans CodeVirtualizer.2.sg +14 -0
- db/PE/OxiJoiner.sg +16 -0
- db/PE/PACE.2.sg +17 -0
- db/PE/PACKWIN.2.sg +12 -0
- db/PE/PC Guard.2.sg +20 -0
- db/PE/PCInstall.1.sg +14 -0
- db/PE/PCShrink.2.sg +15 -0
- db/PE/PE Diminisher.2.sg +16 -0
- db/PE/PE Encrypt.2.sg +12 -0
- db/PE/PE Intro.2.sg +12 -0
- db/PE/PE Lock NT.2.sg +21 -0
- db/PE/PE Password.2.sg +12 -0
- db/PE/PE Protect.2.sg +15 -0
- db/PE/PE Quake.2.sg +13 -0
- db/PE/PE-Admin.2.sg +12 -0
- db/PE/PE-Armor.2.sg +21 -0
- db/PE/PE-Shield.2.sg +16 -0
- db/PE/PEBundle.2.sg +25 -0
- db/PE/PECRYPT32.2.sg +22 -0
- db/PE/PECompact.2.sg +167 -0
- db/PE/PELock.2.sg +21 -0
- db/PE/PENightMare.2.sg +15 -0
- db/PE/PESpin.2.sg +56 -0
- db/PE/PETetris.sg +11 -0
- db/PE/PEUnion.2.sg +122 -0
- db/PE/PEncrypt.2.sg +21 -0
- db/PE/PEnguinCrypt.2.sg +12 -0
- db/PE/PIMP.1.sg +14 -0
- db/PE/PKLITE.2.sg +15 -0
- db/PE/PKSFX.1.sg +14 -0
- db/PE/PMaker.1.sg +13 -0
- db/PE/PUNiSHER.2.sg +12 -0
- db/PE/Pack Master.2.sg +12 -0
- db/PE/PackageForTheWeb.1.sg +15 -0
- db/PE/Packanoid.2.sg +12 -0
- db/PE/Packman.2.sg +18 -0
- db/PE/Pantaray QSetup.1.sg +29 -0
- db/PE/Paquet Builder.1.sg +15 -0
- db/PE/Paquet.1.sg +16 -0
- db/PE/Patch.1.sg +20 -0
- db/PE/Pe Ninja.2.sg +12 -0
- db/PE/Pe123.2.sg +15 -0
- db/PE/PePack.2.sg +16 -0
- db/PE/PeX.2.sg +12 -0
- db/PE/Pelles C.4.sg +13 -0
- db/PE/Perl.3.sg +91 -0
- db/PE/PerlApp.1.sg +21 -0
- db/PE/Petite.2.sg +56 -0
- db/PE/Phoenix.2.sg +19 -0
- db/PE/Photo Compiler.2.sg +15 -0
- db/PE/PolyCrypt PE.2.sg +13 -0
- db/PE/PolyEnE.2.sg +12 -0
- db/PE/Power Screen Recorder.1.sg +16 -0
- db/PE/PowerBASIC.4.sg +13 -0
- db/PE/Private EXE Protector.2.sg +61 -0
- db/PE/Protection Plus.1.sg +13 -0
- db/PE/PureBasic.4.sg +33 -0
- db/PE/PwdProtect.2.sg +10 -0
- db/PE/Py2exe.1.sg +16 -0
- db/PE/PyInstaller.2.sg +71 -0
- db/PE/PyInstallerHider.1.sg +26 -0
- db/PE/Python.3.sg +21 -0
- db/PE/QT installer.1.sg +11 -0
- db/PE/QT.5.sg +35 -0
- db/PE/QrYPt0r.2.sg +13 -0
- db/PE/Quantum.1.sg +17 -0
- db/PE/QuickPack NT.2.sg +13 -0
- db/PE/RCryptor.2.sg +39 -0
- db/PE/RDG Tejon Crypter.2.sg +10 -0
- db/PE/REVProt.2.sg +13 -0
- db/PE/RJoiner.1.sg +17 -0
- db/PE/RLP.2.sg +12 -0
- db/PE/RLPack.2.sg +47 -0
- db/PE/RNsetup.1.sg +17 -0
- db/PE/RPP.1.sg +14 -0
- db/PE/RTPatch.1.sg +15 -0
- db/PE/ReNET-pack.2.sg +13 -0
- db/PE/ReactOS PE file.1.sg +15 -0
- db/PE/RealBasic.4.sg +24 -0
- db/PE/Resources.6.sg +19 -0
- db/PE/RosASM.4.sg +19 -0
- db/PE/Rust.4.sg +37 -0
- db/PE/SC Obfuscator.2.sg +12 -0
- db/PE/SCE installer.1.sg +18 -0
- db/PE/SDProtector.2.sg +18 -0
- db/PE/SFXRun.1.sg +14 -0
- db/PE/SLVc0deProtector.2.sg +21 -0
- db/PE/STATICSUP.1.sg +14 -0
- db/PE/STUD.2.sg +12 -0
- db/PE/SVK Protector.2.sg +22 -0
- db/PE/SZDD.1.sg +40 -0
- db/PE/Safedisc.2.sg +12 -0
- db/PE/Safenet RMS.2.sg +12 -0
- db/PE/Safengine Shielden.2.sg +36 -0
- db/PE/ScriptHookV.4.sg +14 -0
- db/PE/SecuPack.2.sg +13 -0
- db/PE/SecuROM.2.sg +22 -0
- db/PE/Secure Shade.2.sg +13 -0
- db/PE/SerGreen Appacker.2.sg +16 -0
- db/PE/Setup Factory.1.sg +43 -0
- db/PE/Setup-Specialist.1.sg +15 -0
- db/PE/SexCrypt.2.sg +12 -0
- db/PE/Sexe Crypter.2.sg +12 -0
- db/PE/SfxCA.1.sg +20 -0
- db/PE/Shrink Wrap.2.sg +12 -0
- db/PE/Shrinker.2.sg +27 -0
- db/PE/SimbiOZ.2.sg +19 -0
- db/PE/Simple Pack.2.sg +15 -0
- db/PE/Simple UPX Cryptor.2.sg +17 -0
- db/PE/SimplePackerByEronana.2.sg +14 -0
- db/PE/Sixxpack.2.sg +20 -0
- db/PE/Skater.2.sg +16 -0
- db/PE/Smart Assembly.2.sg +36 -0
- db/PE/Smart Install Maker.1.sg +17 -0
- db/PE/SmokesCrypt.2.sg +12 -0
- db/PE/Soft Defender.2.sg +20 -0
- db/PE/SoftProtect.2.sg +13 -0
- db/PE/SoftSentry.2.sg +16 -0
- db/PE/Softlocx.1.sg +13 -0
- db/PE/Software Compress.2.sg +15 -0
- db/PE/Sony Windows Installer.1.sg +16 -0
- db/PE/SpASM.4.sg +19 -0
- db/PE/Special EXE Password Protector.2.sg +12 -0
- db/PE/Spices .Net.2.sg +34 -0
- db/PE/Spoon Installer.1.sg +23 -0
- db/PE/Spoon Studio.2.sg +16 -0
- db/PE/Squeez SFX.1.sg +15 -0
- db/PE/Squirrel installer.1.sg +16 -0
- db/PE/Squishy.2.sg +10 -0
- db/PE/StarForce.2.sg +55 -0
- db/PE/Ste@lth PE.2.sg +16 -0
- db/PE/Steam.2.sg +16 -0
- db/PE/Steam.4.sg +14 -0
- db/PE/Stones PE Encryptor.2.sg +22 -0
- db/PE/Store Installer.1.sg +13 -0
- db/PE/SwiftView installer.1.sg +14 -0
- db/PE/Synactis In-The-Box Installer.1.sg +21 -0
- db/PE/TPP Pack.2.sg +12 -0
- db/PE/Tages.2.sg +12 -0
- db/PE/Tarma Installer.1.sg +29 -0
- db/PE/The Best Cryptor.2.sg +12 -0
- db/PE/TheArk.2.sg +10 -0
- db/PE/TheHypers protector.2.sg +11 -0
- db/PE/Themida.2.sg +86 -0
- db/PE/Thinstall.2.sg +89 -0
- db/PE/TrueCrypt-VeraCrypt installer.1.sg +14 -0
- db/PE/UFI_installer.1.sg +14 -0
- db/PE/UG2002 Cruncher.2.sg +12 -0
- db/PE/UPX Inliner.2.sg +12 -0
- db/PE/UPX Modifier.2.sg +12 -0
- db/PE/UPX Mutanter.2.sg +21 -0
- db/PE/UPX Protector.2.sg +12 -0
- db/PE/UPX lock.2.sg +12 -0
- db/PE/UPX scrambler.2.sg +20 -0
- db/PE/UPX shit.2.sg +21 -0
- db/PE/UPX-Patcher.6.sg +29 -0
- db/PE/UPX.2.sg +171 -0
- db/PE/UPXFreak.2.sg +12 -0
- db/PE/UPXcrypter.2.sg +11 -0
- db/PE/UPolyX.2.sg +30 -0
- db/PE/UltraPro.2.sg +18 -0
- db/PE/UnoPiX.2.sg +27 -0
- db/PE/VBox.2.sg +15 -0
- db/PE/VCasm-Protector.2.sg +21 -0
- db/PE/VMProtect.2.sg +287 -0
- db/PE/VMProtect_NET.2.sg +54 -0
- db/PE/VMWare.1.sg +41 -0
- db/PE/VPacker.2.sg +13 -0
- db/PE/VaySoft_PDF2EXE.2.sg +16 -0
- db/PE/VbsToExe.1.sg +29 -0
- db/PE/Virbox.2.sg +13 -0
- db/PE/Virtual Pascal.4.sg +14 -0
- db/PE/Vise.1.sg +16 -0
- db/PE/Visual Objects.4.sg +12 -0
- db/PE/Visual Prolog.4.sg +14 -0
- db/PE/VisualStudio_NET.6.sg +14 -0
- db/PE/Vulkan.4.sg +14 -0
- db/PE/WF.Guna.UI2.4.sg +15 -0
- db/PE/WF.Krypton.4.sg +14 -0
- db/PE/WF.MetroFramework.4.sg +14 -0
- db/PE/WF_WPF.MaterialSkin.4.sg +14 -0
- db/PE/WWPACK.2.sg +11 -0
- db/PE/Watcom.4.sg +35 -0
- db/PE/WiX Toolset installer.1.sg +20 -0
- db/PE/Wibu Codemeter.1.sg +30 -0
- db/PE/WinACE.1.sg +12 -0
- db/PE/WinIMP.1.sg +15 -0
- db/PE/WinImage.1.sg +15 -0
- db/PE/WinKript.2.sg +12 -0
- db/PE/WinPatch.1.sg +18 -0
- db/PE/WinRAR Installer.1.sg +28 -0
- db/PE/WinRAR.1.sg +18 -0
- db/PE/WinUpack.2.sg +61 -0
- db/PE/WinZip.1.sg +44 -0
- db/PE/Winamp Installer.1.sg +14 -0
- db/PE/Wind of Crypt.2.sg +12 -0
- db/PE/Windows Authenticode.7.sg +13 -0
- db/PE/Windows Installer.1.sg +22 -0
- db/PE/Wine.3.sg +12 -0
- db/PE/Wise Installer.1.sg +52 -0
- db/PE/XCR.2.sg +13 -0
- db/PE/XComp.2.sg +19 -0
- db/PE/XPACK.2.sg +17 -0
- db/PE/Xash.3.sg +18 -0
- db/PE/Xbase.4.sg +29 -0
- db/PE/Xenocode Postbuild.2.sg +12 -0
- db/PE/Xojo.3.sg +29 -0
- db/PE/Xoreax installer.1.sg +19 -0
- db/PE/Xtreamlok.2.sg +22 -0
- db/PE/Xtreme-Protector.2.sg +12 -0
- db/PE/Yano.2.sg +12 -0
- db/PE/Yodas Crypter.2.sg +35 -0
- db/PE/Yodas Protector.2.sg +15 -0
- db/PE/Yummy Game SoftwareShield.2.sg +17 -0
- db/PE/Zig.4.sg +20 -0
- db/PE/Zip SFX.2.sg +63 -0
- db/PE/ZipCentral SFX.1.sg +16 -0
- db/PE/Zprotect.2.sg +22 -0
- db/PE/Zydis.4.sg +14 -0
- db/PE/_BJFnt.2.sg +18 -0
- db/PE/_FixDetects.9.sg +24 -0
- db/PE/_NET Spider.2.sg +14 -0
- db/PE/_NETZ.2.sg +13 -0
- db/PE/_PE.0.sg +15 -0
- db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg +2582 -0
- db/PE/_denuvoComplete.2.sg +98 -0
- db/PE/_init +142 -0
- db/PE/_netshrink.2.sg +25 -0
- db/PE/aPack.2.sg +26 -0
- db/PE/arj.6.sg +9 -0
- db/PE/ass-crypter.2.sg +11 -0
- db/PE/avast Antivirus installer.1.sg +14 -0
- db/PE/bambam.2.sg +12 -0
- db/PE/bbfb.2.sg +22 -0
- db/PE/beria.2.sg +14 -0
- db/PE/curl.4.sg +14 -0
- db/PE/dUP.1.sg +19 -0
- db/PE/darkeye.1.sg +13 -0
- db/PE/de4dot.6.sg +20 -0
- db/PE/dePACK.2.sg +13 -0
- db/PE/distutils.1.sg +18 -0
- db/PE/eXPressor.2.sg +47 -0
- db/PE/ezip.2.sg +14 -0
- db/PE/gcc.4.sg +14 -0
- db/PE/hXOR packer.sg +12 -0
- db/PE/hmimys PE-Pack.2.sg +23 -0
- db/PE/hmimys Protect.2.sg +18 -0
- db/PE/iPB Protect.2.sg +12 -0
- db/PE/inPEct.1.sg +9 -0
- db/PE/java.3.sg +20 -0
- db/PE/keygens.1.sg +25 -0
- db/PE/kkrunchy.2.sg +19 -0
- db/PE/kkryptor.2.sg +13 -0
- db/PE/ldc.4.sg +12 -0
- db/PE/linker.6.sg +100 -0
- db/PE/mPack.2.sg +15 -0
- db/PE/mkfPack.2.sg +12 -0
- db/PE/muckis protector.2.sg +14 -0
- db/PE/nPack.2.sg +36 -0
- db/PE/obfus_h.5.sg +15 -0
- db/PE/obfusheader_h.5.sg +32 -0
- db/PE/rar.1.sg +16 -0
- db/PE/rar.6.sg +9 -0
- db/PE/scr2exe.2.sg +19 -0
- db/PE/simple_patch.1.sg +16 -0
- db/PE/sql-server.sg +14 -0
- db/PE/sqlite.4.sg +14 -0
- db/PE/sqx.1.sg +19 -0
- db/PE/tElock.2.sg +81 -0
- db/PE/tcc.4.sg +42 -0
- db/PE/virus-njrat-0.7d.7.sg +136 -0
- db/PE/wxWidgets.5.sg +27 -0
- db/PE/yzPack.2.sg +26 -0
- db/PE/zip.6.sg +9 -0
- db/PE/zlib.4.sg +14 -0
- db/QtFramework +16 -0
- db/RosASM +13 -0
- db/SpASM +8 -0
- db/ZIP/_init +4 -0
- db/_init +128 -0
- db/archive-file +36 -0
- db/arj +80 -0
- db/cab +46 -0
- db/duration +14 -0
- db/language +33 -0
- db/python +30 -0
- db/rar +62 -0
- db/read +423 -0
- db/result +27 -0
- db/result-general +32 -0
- db/result-minimal +27 -0
- db/shell-script +24 -0
- db/wxWidgets +12 -0
- db/zip-file +92 -0
- db/zlib +23 -0
- die/Qt6Concurrent.dll +0 -0
- die/Qt6Core.dll +0 -0
- die/Qt6Network.dll +0 -0
- die/Qt6Qml.dll +0 -0
- die/__init__.py +79 -0
- die/_die.cp38-win_amd64.pyd +0 -0
- die/db/db/ACE +45 -0
- die/db/db/APK/PackageName.1.sg +15 -0
- die/db/db/APK/SingleJar.3.sg +10 -0
- die/db/db/APK/_APK.0.sg +15 -0
- die/db/db/APK/_init +4 -0
- die/db/db/Archive/_init +4 -0
- die/db/db/Binary/Amiga loadable.1.sg +16 -0
- die/db/db/Binary/Empty.1.sg +11 -0
- die/db/db/Binary/Img.UDIF.1.sg +15 -0
- die/db/db/Binary/RIFF.1.sg +19 -0
- die/db/db/Binary/U-Boot.1.sg +321 -0
- die/db/db/Binary/Universal Binary.1.sg +17 -0
- die/db/db/Binary/Video.FLV.1.sg +16 -0
- die/db/db/Binary/_init +5 -0
- die/db/db/Binary/archive.7z.1.sg +14 -0
- die/db/db/Binary/archive.ACE.1.sg +9 -0
- die/db/db/Binary/archive.AR.1.sg +84 -0
- die/db/db/Binary/archive.ARC.1.sg +18 -0
- die/db/db/Binary/archive.ARJ.1.sg +8 -0
- die/db/db/Binary/archive.ASAR.sg +13 -0
- die/db/db/Binary/archive.BZip.1.sg +20 -0
- die/db/db/Binary/archive.Cab.1.sg +25 -0
- die/db/db/Binary/archive.DEFLATE.1.sg +245 -0
- die/db/db/Binary/archive.DotBundle.sg +9 -0
- die/db/db/Binary/archive.LRZ.1.sg +57 -0
- die/db/db/Binary/archive.LZ4.1.sg +42 -0
- die/db/db/Binary/archive.LZOP.1.sg +14 -0
- die/db/db/Binary/archive.MS Compound.1.sg +24 -0
- die/db/db/Binary/archive.PEA.1.sg +65 -0
- die/db/db/Binary/archive.RAR.1.sg +8 -0
- die/db/db/Binary/archive.Unity.1.sg +73 -0
- die/db/db/Binary/archive.ZIP.1.sg +9 -0
- die/db/db/Binary/archive.ZLIB.1.sg +13 -0
- die/db/db/Binary/archive.ZPAQ.1.sg +16 -0
- die/db/db/Binary/archive.btoa.1.sg +14 -0
- die/db/db/Binary/archives.1.sg +298 -0
- die/db/db/Binary/archives.ancient.sg +721 -0
- die/db/db/Binary/audio.1.sg +8380 -0
- die/db/db/Binary/audio.AU.1.sg +118 -0
- die/db/db/Binary/audio.FSB.1.sg +105 -0
- die/db/db/Binary/audio.VOC.1.sg +140 -0
- die/db/db/Binary/audio.WAV.1.sg +806 -0
- die/db/db/Binary/audio.mp3.2.sg +189 -0
- die/db/db/Binary/backup images.1.sg +27 -0
- die/db/db/Binary/bin.AAALogo.1.sg +16 -0
- die/db/db/Binary/bin.Atari ST.1.sg +12 -0
- die/db/db/Binary/bin.Borland TDS.sg +14 -0
- die/db/db/Binary/bin.GuitarPro.1.sg +26 -0
- die/db/db/Binary/bin.IDA.1.sg +78 -0
- die/db/db/Binary/bin.ISO 9660.1.sg +13 -0
- die/db/db/Binary/bin.JMDL.1.sg +36 -0
- die/db/db/Binary/bin.JSC.1.sg +87 -0
- die/db/db/Binary/bin.Java.1.sg +141 -0
- die/db/db/Binary/bin.LUA.1.sg +47 -0
- die/db/db/Binary/bin.NVA.1.sg +15 -0
- die/db/db/Binary/bin.PDB.1.sg +16 -0
- die/db/db/Binary/bin.PEFF.1.sg +11 -0
- die/db/db/Binary/bin.Python.1.sg +627 -0
- die/db/db/Binary/bin.SWF.1.sg +26 -0
- die/db/db/Binary/cad.DWG.1.sg +62 -0
- die/db/db/Binary/cert.WinAuth.1.sg +13 -0
- die/db/db/Binary/database.SQLite.1.sg +45 -0
- die/db/db/Binary/databases.1.sg +16 -0
- die/db/db/Binary/doc.CHM.1.sg +18 -0
- die/db/db/Binary/doc.DJVU.1.sg +112 -0
- die/db/db/Binary/doc.HLP.1.sg +11 -0
- die/db/db/Binary/doc.PDF.1.sg +16 -0
- die/db/db/Binary/doc.RTF.1.sg +12 -0
- die/db/db/Binary/donut.1.sg +49 -0
- die/db/db/Binary/font.ADOBE.1.sg +35 -0
- die/db/db/Binary/font.BMF.1.sg +63 -0
- die/db/db/Binary/format.MS-DBG.1.sg +19 -0
- die/db/db/Binary/format.MS-VHD.1.sg +61 -0
- die/db/db/Binary/format.MS-WIM.1.sg +43 -0
- die/db/db/Binary/format.MS-XNA.1.sg +80 -0
- die/db/db/Binary/format.UE.1.sg +36 -0
- die/db/db/Binary/format.VDI.1.sg +40 -0
- die/db/db/Binary/formats.1.sg +90 -0
- die/db/db/Binary/graphics.1.sg +37 -0
- die/db/db/Binary/image.ANI.1.sg +26 -0
- die/db/db/Binary/image.BMP.1.sg +48 -0
- die/db/db/Binary/image.CUR.1.sg +55 -0
- die/db/db/Binary/image.DDS.1.sg +26 -0
- die/db/db/Binary/image.EPS.1.sg +26 -0
- die/db/db/Binary/image.GIF.1.sg +97 -0
- die/db/db/Binary/image.ICO.1.sg +57 -0
- die/db/db/Binary/image.JNG.1.sg +34 -0
- die/db/db/Binary/image.JPEG.1.sg +45 -0
- die/db/db/Binary/image.JPEG.DQT.4.sg +13 -0
- die/db/db/Binary/image.JPEG.Tools.3.sg +53 -0
- die/db/db/Binary/image.JPEG.camera.2.sg +16 -0
- die/db/db/Binary/image.JPEG.comment.4.sg +16 -0
- die/db/db/Binary/image.KTX.1.sg +36 -0
- die/db/db/Binary/image.LBM.1.sg +69 -0
- die/db/db/Binary/image.MNG.1.sg +19 -0
- die/db/db/Binary/image.PCX.1.sg +57 -0
- die/db/db/Binary/image.PNG.1.sg +165 -0
- die/db/db/Binary/image.PSD.1.sg +63 -0
- die/db/db/Binary/image.PVR.1.sg +29 -0
- die/db/db/Binary/image.QOI.1.sg +36 -0
- die/db/db/Binary/image.TGA.1.sg +134 -0
- die/db/db/Binary/image.TIFF.1.sg +187 -0
- die/db/db/Binary/image.XAR.1.sg +31 -0
- die/db/db/Binary/img.VM.1.sg +13 -0
- die/db/db/Binary/overlays.6.sg +368 -0
- die/db/db/Binary/pe_to_shellcode.1.sg +107 -0
- die/db/db/Binary/rom.1.sg +579 -0
- die/db/db/Binary/srdi-monoxgas.1.sg +128 -0
- die/db/db/Binary/text.HTML.1.sg +14 -0
- die/db/db/Binary/text.Pascal.1.sg +18 -0
- die/db/db/Binary/text.Shell.1.sg +14 -0
- die/db/db/Binary/text.XML.1.sg +18 -0
- die/db/db/Binary/text.c.1.sg +35 -0
- die/db/db/Binary/text.pdb.1.sg +40 -0
- die/db/db/Binary/text.plaintext.3.sg +25 -0
- die/db/db/Binary/text.python.1.sg +16 -0
- die/db/db/Binary/text.script.2.sg +16 -0
- die/db/db/Binary/video.MP4.1.sg +15 -0
- die/db/db/Borland +19 -0
- die/db/db/COM/32-bit crypt.2.sg +13 -0
- die/db/db/COM/4kZIP.2.sg +13 -0
- die/db/db/COM/8086 Forth 83.4.sg +14 -0
- die/db/db/COM/A3E.1.sg +13 -0
- die/db/db/COM/ABK-Scrambler.2.sg +12 -0
- die/db/db/COM/ACE Scrambler.2.sg +34 -0
- die/db/db/COM/ACiDDRAW.1.sg +16 -0
- die/db/db/COM/ANS2ALL.1.sg +18 -0
- die/db/db/COM/ARF AV Inject.1.sg +14 -0
- die/db/db/COM/ASC2COM.1.sg +25 -0
- die/db/db/COM/ASIC-Basic.4.sg +21 -0
- die/db/db/COM/AVAST-Protect.2.sg +13 -0
- die/db/db/COM/AVPACK.2.sg +14 -0
- die/db/db/COM/AdFlt.2.sg +17 -0
- die/db/db/COM/Anti-Lamer Cryptor.2.sg +14 -0
- die/db/db/COM/Anti-hack encryption system.2.sg +13 -0
- die/db/db/COM/AutoCracker.1.sg +14 -0
- die/db/db/COM/BAT2EXEC.2.sg +18 -0
- die/db/db/COM/BIN-Lock.2.sg +14 -0
- die/db/db/COM/BatLite.4.sg +13 -0
- die/db/db/COM/Best Protection Kit-B.2.sg +16 -0
- die/db/db/COM/Borland C++.4.sg +17 -0
- die/db/db/COM/Budokan.1.sg +13 -0
- die/db/db/COM/C-crypt.2.sg +14 -0
- die/db/db/COM/CC#3.2.sg +13 -0
- die/db/db/COM/CC.2.sg +22 -0
- die/db/db/COM/CC286.2.sg +14 -0
- die/db/db/COM/CCC.2.sg +16 -0
- die/db/db/COM/CHECKPRG.2.sg +13 -0
- die/db/db/COM/CNT.2.sg +13 -0
- die/db/db/COM/COM Sccrambler.2.sg +14 -0
- die/db/db/COM/COM-Protect.2.sg +16 -0
- die/db/db/COM/COM-Protection.2.sg +13 -0
- die/db/db/COM/COM2TXT.1.sg +13 -0
- die/db/db/COM/COMCRYPT.2.sg +23 -0
- die/db/db/COM/COMPACK.2.sg +32 -0
- die/db/db/COM/COMPROTECT.2.sg +14 -0
- die/db/db/COM/COP.2.sg +14 -0
- die/db/db/COM/CPAV.1.sg +13 -0
- die/db/db/COM/CRX2COM.1.sg +12 -0
- die/db/db/COM/Character Intro Engine.1.sg +16 -0
- die/db/db/COM/Cheat packer.2.sg +13 -0
- die/db/db/COM/CodeLock.2.sg +14 -0
- die/db/db/COM/ComProt.2.sg +13 -0
- die/db/db/COM/ComProtector.2.sg +18 -0
- die/db/db/COM/Comlock.2.sg +17 -0
- die/db/db/COM/CrAcKeR.2.sg +14 -0
- die/db/db/COM/Crack2EXE.1.sg +14 -0
- die/db/db/COM/Crypt (Dismember).2.sg +16 -0
- die/db/db/COM/CryptCom.2.sg +18 -0
- die/db/db/COM/CryptGeneric.2.sg +12 -0
- die/db/db/COM/CyberWare Packer.2.sg +13 -0
- die/db/db/COM/DCFR.2.sg +13 -0
- die/db/db/COM/DIGPAK.1.sg +16 -0
- die/db/db/COM/DOC2COM.1.sg +13 -0
- die/db/db/COM/DOC2PAGE.1.sg +13 -0
- die/db/db/COM/DS-CRP.2.sg +16 -0
- die/db/db/COM/Datalight C.4.sg +17 -0
- die/db/db/COM/Deep Crypter.2.sg +14 -0
- die/db/db/COM/Deeper.2.sg +17 -0
- die/db/db/COM/Diet.2.sg +26 -0
- die/db/db/COM/Dn.COM Cruncher.2.sg +13 -0
- die/db/db/COM/E2C-Scrambler.2.sg +13 -0
- die/db/db/COM/E2C.1.sg +16 -0
- die/db/db/COM/E2C1.2.sg +13 -0
- die/db/db/COM/EPW.2.sg +14 -0
- die/db/db/COM/EXE2COM.1.sg +72 -0
- die/db/db/COM/EXETools EXE2COM.1.sg +16 -0
- die/db/db/COM/EXETools.2.sg +22 -0
- die/db/db/COM/Easy!-C.4.sg +13 -0
- die/db/db/COM/Entropy Coder.2.sg +13 -0
- die/db/db/COM/ExOM.2.sg +14 -0
- die/db/db/COM/FCRYPT.2.sg +14 -0
- die/db/db/COM/FIXCRK.1.sg +13 -0
- die/db/db/COM/Fig-FORTH.4.sg +13 -0
- die/db/db/COM/ForthCMP.2.sg +23 -0
- die/db/db/COM/ForthCMP.4.sg +18 -0
- die/db/db/COM/FromBAT.1.sg +18 -0
- die/db/db/COM/GOAT.2.sg +19 -0
- die/db/db/COM/GP-FORTH.4.sg +14 -0
- die/db/db/COM/Guardian Angel.2.sg +28 -0
- die/db/db/COM/HDKPROTC.2.sg +13 -0
- die/db/db/COM/HYPDOC.1.sg +13 -0
- die/db/db/COM/HackStop.2.sg +19 -0
- die/db/db/COM/ICE.1.sg +13 -0
- die/db/db/COM/IMMUN.1.sg +14 -0
- die/db/db/COM/Inbuild Encryption.2.sg +14 -0
- die/db/db/COM/IntroC0der.1.sg +13 -0
- die/db/db/COM/J0B cryptor.2.sg +13 -0
- die/db/db/COM/Keygen crypt.2.sg +14 -0
- die/db/db/COM/Khrome Crypt.2.sg +14 -0
- die/db/db/COM/LAME GG.2.sg +12 -0
- die/db/db/COM/LAMPROT.2.sg +13 -0
- die/db/db/COM/LGLZ.2.sg +14 -0
- die/db/db/COM/LHA.1.sg +16 -0
- die/db/db/COM/LHarc SFX.1.sg +16 -0
- die/db/db/COM/Lattice C.4.sg +32 -0
- die/db/db/COM/List.1.sg +21 -0
- die/db/db/COM/Lock-Master.2.sg +14 -0
- die/db/db/COM/MASK.2.sg +26 -0
- die/db/db/COM/MCLock.2.sg +13 -0
- die/db/db/COM/MESS.2.sg +13 -0
- die/db/db/COM/MICRO-C.4.sg +16 -0
- die/db/db/COM/MIDPAK.1.sg +13 -0
- die/db/db/COM/MINIFORTH.4.sg +14 -0
- die/db/db/COM/MSCC.2.sg +14 -0
- die/db/db/COM/MakeRead.1.sg +14 -0
- die/db/db/COM/Maveriks C0der.2.sg +16 -0
- die/db/db/COM/MegaShield.2.sg +14 -0
- die/db/db/COM/Microsoft C.4.sg +13 -0
- die/db/db/COM/Microsoft RTL.3.sg +16 -0
- die/db/db/COM/Microxor.2.sg +13 -0
- die/db/db/COM/MoonRock.2.sg +14 -0
- die/db/db/COM/NH.2.sg +13 -0
- die/db/db/COM/NetCode.1.sg +18 -0
- die/db/db/COM/NetRun.1.sg +13 -0
- die/db/db/COM/NoAV.2.sg +13 -0
- die/db/db/COM/Nodebug.2.sg +14 -0
- die/db/db/COM/ONLINE-HELP.1.sg +13 -0
- die/db/db/COM/OUTFORTH.4.sg +13 -0
- die/db/db/COM/PBFC.2.sg +14 -0
- die/db/db/COM/PC FORTH.4.sg +13 -0
- die/db/db/COM/PCOM.2.sg +14 -0
- die/db/db/COM/PCRYPT.2.sg +14 -0
- die/db/db/COM/PCVault-Protect.2.sg +13 -0
- die/db/db/COM/PKLITE.2.sg +29 -0
- die/db/db/COM/PKZip.1.sg +18 -0
- die/db/db/COM/PRO-PACK.2.sg +21 -0
- die/db/db/COM/PROTECT.2.sg +67 -0
- die/db/db/COM/PTP.2.sg +16 -0
- die/db/db/COM/PU-Cryptor.2.sg +25 -0
- die/db/db/COM/PassCOM.2.sg +13 -0
- die/db/db/COM/Phrozen Crew cryptor.2.sg +13 -0
- die/db/db/COM/ProtEXE.2.sg +14 -0
- die/db/db/COM/R-Crypt.2.sg +19 -0
- die/db/db/COM/RCC.2.sg +25 -0
- die/db/db/COM/RDT_Compressor2.2.sg +13 -0
- die/db/db/COM/RDT_ENC 3.2.sg +13 -0
- die/db/db/COM/RELETTER.1.sg +14 -0
- die/db/db/COM/RMCOBOL.4.sg +16 -0
- die/db/db/COM/RSCC.2.sg +65 -0
- die/db/db/COM/SCC.2.sg +13 -0
- die/db/db/COM/SCRAM.2.sg +14 -0
- die/db/db/COM/SCRE2B.2.sg +14 -0
- die/db/db/COM/SCRNCH.2.sg +22 -0
- die/db/db/COM/SDW.2.sg +34 -0
- die/db/db/COM/SHOW IT.1.sg +13 -0
- die/db/db/COM/SHOWV20.1.sg +18 -0
- die/db/db/COM/SHRINK.2.sg +14 -0
- die/db/db/COM/SP-FORTH.4.sg +18 -0
- die/db/db/COM/SPHINX C--.4.sg +24 -0
- die/db/db/COM/Scramb.2.sg +18 -0
- die/db/db/COM/Scrypt!.2.sg +18 -0
- die/db/db/COM/Scrypt.2.sg +14 -0
- die/db/db/COM/SelfCrypt.2.sg +13 -0
- die/db/db/COM/SelfProtect386.2.sg +12 -0
- die/db/db/COM/Shadow COM encryptor.2.sg +14 -0
- die/db/db/COM/Shadow.2.sg +14 -0
- die/db/db/COM/Six-2-Four.2.sg +18 -0
- die/db/db/COM/SnoopStop.2.sg +14 -0
- die/db/db/COM/SoftGuard.1.sg +13 -0
- die/db/db/COM/Steplock.2.sg +14 -0
- die/db/db/COM/Surpas-86.4.sg +14 -0
- die/db/db/COM/Sydex.2.sg +13 -0
- die/db/db/COM/TCEC.2.sg +14 -0
- die/db/db/COM/TCOM.4.sg +16 -0
- die/db/db/COM/TPACK.2.sg +18 -0
- die/db/db/COM/TPC Scramble.2.sg +12 -0
- die/db/db/COM/TXT2COM.1.sg +22 -0
- die/db/db/COM/TXTmaker.1.sg +14 -0
- die/db/db/COM/Text Header.1.sg +14 -0
- die/db/db/COM/The DRAW.1.sg +15 -0
- die/db/db/COM/Tiny Xor.2.sg +14 -0
- die/db/db/COM/Turbo C++.4.sg +13 -0
- die/db/db/COM/Turbo C.4.sg +27 -0
- die/db/db/COM/Turbo Pascal.4.sg +30 -0
- die/db/db/COM/TurboBAT.1.sg +21 -0
- die/db/db/COM/Txt2Exe.1.sg +14 -0
- die/db/db/COM/UNIFORTH.4.sg +13 -0
- die/db/db/COM/UPX.2.sg +22 -0
- die/db/db/COM/USCC.2.sg +14 -0
- die/db/db/COM/UnPackStop.2.sg +17 -0
- die/db/db/COM/UniCrypt.1.sg +14 -0
- die/db/db/COM/Unknown cryptors.2.sg +62 -0
- die/db/db/COM/VGA font loader.1.sg +13 -0
- die/db/db/COM/VSF&K protection.2.sg +13 -0
- die/db/db/COM/VSS.1.sg +13 -0
- die/db/db/COM/Vacsina.4.sg +12 -0
- die/db/db/COM/Venus.2.sg +12 -0
- die/db/db/COM/Vienna-C.4.sg +12 -0
- die/db/db/COM/Watcom C.4.sg +37 -0
- die/db/db/COM/WiZ Cryptor.2.sg +14 -0
- die/db/db/COM/XCK2COM.1.sg +12 -0
- die/db/db/COM/XE.2.sg +13 -0
- die/db/db/COM/XORCOPY.2.sg +14 -0
- die/db/db/COM/XPACK.2.sg +22 -0
- die/db/db/COM/XcomOR.2.sg +24 -0
- die/db/db/COM/XoReR.2.sg +26 -0
- die/db/db/COM/XorCom.2.sg +14 -0
- die/db/db/COM/Zbikowski C.4.sg +13 -0
- die/db/db/COM/Zortech C.4.sg +26 -0
- die/db/db/COM/_init +4 -0
- die/db/db/COM/aPACK.2.sg +22 -0
- die/db/db/COM/aPatch.2.sg +13 -0
- die/db/db/COM/acBBS protection.2.sg +13 -0
- die/db/db/COM/com RLE packer.2.sg +15 -0
- die/db/db/COM/com-crypt.2.sg +16 -0
- die/db/db/COM/cryptors.2.sg +214 -0
- die/db/db/COM/envelope.2.sg +13 -0
- die/db/db/COM/fds-cp.2.sg +13 -0
- die/db/db/COM/integrity checker.1.sg +13 -0
- die/db/db/COM/mCrypt.2.sg +14 -0
- die/db/db/COM/muSIMP-83.4.sg +14 -0
- die/db/db/COM/packers.2.sg +26 -0
- die/db/db/COM/patchers.1.sg +100 -0
- die/db/db/COM/protection.2.sg +13 -0
- die/db/db/COM/readme.com.1.sg +12 -0
- die/db/db/COM/simple ansi viewer.1.sg +12 -0
- die/db/db/COM/simple self-displayer.1.sg +12 -0
- die/db/db/COM/spirit.2.sg +22 -0
- die/db/db/COM/x3.2.sg +18 -0
- die/db/db/CurIcoBPP +14 -0
- die/db/db/DEX/_DEX.0.sg +15 -0
- die/db/db/DEX/_init +4 -0
- die/db/db/ELF/Borland Kylix.4.sg +18 -0
- die/db/db/ELF/Burneye.2.sg +12 -0
- die/db/db/ELF/DMD.4.sg +28 -0
- die/db/db/ELF/ELFCrypt.2.sg +12 -0
- die/db/db/ELF/Ezuri.1.sg +29 -0
- die/db/db/ELF/FASM.4.sg +22 -0
- die/db/db/ELF/Flexlm.4.sg +15 -0
- die/db/db/ELF/Free Pascal.4.sg +44 -0
- die/db/db/ELF/GLIBC.3.sg +49 -0
- die/db/db/ELF/Go.4.sg +125 -0
- die/db/db/ELF/HASP.1.sg +28 -0
- die/db/db/ELF/HP C++.4.sg +11 -0
- die/db/db/ELF/IBM AIX kernel loader.sg +17 -0
- die/db/db/ELF/Oracle Solaris Studio.4.sg +45 -0
- die/db/db/ELF/PyInstaller.2.sg +24 -0
- die/db/db/ELF/QT.3.sg +38 -0
- die/db/db/ELF/Rust.4.sg +23 -0
- die/db/db/ELF/SDL.3.sg +35 -0
- die/db/db/ELF/UPX.2.sg +57 -0
- die/db/db/ELF/VBCC.4.sg +19 -0
- die/db/db/ELF/Virbox.2.sg +16 -0
- die/db/db/ELF/Watcom.4.sg +14 -0
- die/db/db/ELF/Zig.4.sg +21 -0
- die/db/db/ELF/_ELF.0.sg +15 -0
- die/db/db/ELF/_init +4 -0
- die/db/db/ELF/gcc.4.sg +94 -0
- die/db/db/ELF/gdc.4.sg +12 -0
- die/db/db/ELF/ldc.4.sg +33 -0
- die/db/db/ELF/movfuscator.4.sg +18 -0
- die/db/db/FASM +9 -0
- die/db/db/FPC +11 -0
- die/db/db/IPA/_init +4 -0
- die/db/db/JAR/SingleJar.3.sg +13 -0
- die/db/db/JAR/_JAR.0.sg +15 -0
- die/db/db/JAR/_init +4 -0
- die/db/db/LE/UPX.1.sg +85 -0
- die/db/db/LE/Watcom C.4.sg +23 -0
- die/db/db/LE/_LE.0.sg +15 -0
- die/db/db/LE/_init +4 -0
- die/db/db/LX/_LX.0.sg +15 -0
- die/db/db/LX/_init +4 -0
- die/db/db/MACH/Carbon.3.sg +13 -0
- die/db/db/MACH/Cocoa.3.sg +11 -0
- die/db/db/MACH/Delphi.4.sg +20 -0
- die/db/db/MACH/QT.3.sg +18 -0
- die/db/db/MACH/UPX.2.sg +15 -0
- die/db/db/MACH/Virbox.2.sg +13 -0
- die/db/db/MACH/WebKit.3.sg +11 -0
- die/db/db/MACH/Zig.4.sg +21 -0
- die/db/db/MACH/_MACH.0.sg +15 -0
- die/db/db/MACH/_init +4 -0
- die/db/db/MACH/gcc.4.sg +34 -0
- die/db/db/MACH/java.3.sg +14 -0
- die/db/db/MFC +13 -0
- die/db/db/MSDOS/$pirit.2.sg +47 -0
- die/db/db/MSDOS/32stub.0a.sg +13 -0
- die/db/db/MSDOS/ABKprot.2.sg +12 -0
- die/db/db/MSDOS/ACE.6.sg +9 -0
- die/db/db/MSDOS/AEP.2.sg +12 -0
- die/db/db/MSDOS/AINEXE.2.sg +19 -0
- die/db/db/MSDOS/ALEC.2.sg +14 -0
- die/db/db/MSDOS/ANS2ALL.1.sg +14 -0
- die/db/db/MSDOS/ARC.1.sg +23 -0
- die/db/db/MSDOS/ARJ.1.sg +14 -0
- die/db/db/MSDOS/ASIC-Basic.4.sg +18 -0
- die/db/db/MSDOS/AVAST CRC-Check.2.sg +14 -0
- die/db/db/MSDOS/AVPACK.2.sg +16 -0
- die/db/db/MSDOS/Ada89.4.sg +13 -0
- die/db/db/MSDOS/Adys COM2EXE.1.sg +11 -0
- die/db/db/MSDOS/Adys Glue.2.sg +15 -0
- die/db/db/MSDOS/Aluwain.2.sg +12 -0
- die/db/db/MSDOS/Amisetup.1.sg +13 -0
- die/db/db/MSDOS/Anti-LAME.2.sg +13 -0
- die/db/db/MSDOS/Anti-hack encryption system.2.sg +13 -0
- die/db/db/MSDOS/Antilame.2.sg +14 -0
- die/db/db/MSDOS/ApBasic.4.sg +17 -0
- die/db/db/MSDOS/AutoHack.1.sg +12 -0
- die/db/db/MSDOS/Aztec C-86.4.sg +40 -0
- die/db/db/MSDOS/BAT2EXEC.4.sg +16 -0
- die/db/db/MSDOS/BSTAR_FORTH.4.sg +13 -0
- die/db/db/MSDOS/BatLite.4.sg +13 -0
- die/db/db/MSDOS/BetterBASIC.4.sg +13 -0
- die/db/db/MSDOS/Bitlok.2.sg +14 -0
- die/db/db/MSDOS/Black fist.2.sg +13 -0
- die/db/db/MSDOS/Blinker.0a.sg +25 -0
- die/db/db/MSDOS/Borland C.4.sg +88 -0
- die/db/db/MSDOS/Borland Pascal.4.sg +88 -0
- die/db/db/MSDOS/Borland RTM.0a.sg +33 -0
- die/db/db/MSDOS/Borland TDS.sg +14 -0
- die/db/db/MSDOS/Borland TLINK.5.sg +13 -0
- die/db/db/MSDOS/Bunny.2.sg +14 -0
- die/db/db/MSDOS/CC.2.sg +18 -0
- die/db/db/MSDOS/CEPexe.2.sg +12 -0
- die/db/db/MSDOS/CERBERUS.2.sg +12 -0
- die/db/db/MSDOS/CII-C.4.sg +17 -0
- die/db/db/MSDOS/COMCRYPT.2.sg +15 -0
- die/db/db/MSDOS/COMPACK.2.sg +15 -0
- die/db/db/MSDOS/COMPROTECT.2.sg +14 -0
- die/db/db/MSDOS/CONVOY.2.sg +17 -0
- die/db/db/MSDOS/CPAV.1.sg +13 -0
- die/db/db/MSDOS/CRYPACK.2.sg +12 -0
- die/db/db/MSDOS/CRYPTEXE.2.sg +19 -0
- die/db/db/MSDOS/CSCRYPT Pro.2.sg +14 -0
- die/db/db/MSDOS/CWSDPMI.0a.sg +22 -0
- die/db/db/MSDOS/CauseWay DOS Extender.0a.sg +16 -0
- die/db/db/MSDOS/ChSFX.1.sg +27 -0
- die/db/db/MSDOS/Ciphator.2.sg +12 -0
- die/db/db/MSDOS/Coderunner.1.sg +22 -0
- die/db/db/MSDOS/Codesafe.2.sg +13 -0
- die/db/db/MSDOS/ComProtector.2.sg +15 -0
- die/db/db/MSDOS/ComprEXE.2.sg +14 -0
- die/db/db/MSDOS/Compress-EXE.2.sg +14 -0
- die/db/db/MSDOS/Concurrent Small C.4.sg +15 -0
- die/db/db/MSDOS/Copy Protector.2.sg +15 -0
- die/db/db/MSDOS/CopyQM SFX.1.sg +16 -0
- die/db/db/MSDOS/Copylock PC.1.sg +13 -0
- die/db/db/MSDOS/CrAcKeR.2.sg +14 -0
- die/db/db/MSDOS/CrackStop.2.sg +16 -0
- die/db/db/MSDOS/Cruncher.2.sg +12 -0
- die/db/db/MSDOS/CryExe.2.sg +12 -0
- die/db/db/MSDOS/Crypt (Dismember).2.sg +25 -0
- die/db/db/MSDOS/Crypt (LightShow).2.sg +25 -0
- die/db/db/MSDOS/CryptCom.2.sg +14 -0
- die/db/db/MSDOS/CrypteXeC.2.sg +15 -0
- die/db/db/MSDOS/Cryptors.2.sg +59 -0
- die/db/db/MSDOS/DAEMON Protect.2.sg +12 -0
- die/db/db/MSDOS/DCREXE.2.sg +18 -0
- die/db/db/MSDOS/DIET.2.sg +33 -0
- die/db/db/MSDOS/DMC.2.sg +14 -0
- die/db/db/MSDOS/DOS32 loader.0a.sg +14 -0
- die/db/db/MSDOS/DOS32.0a.sg +22 -0
- die/db/db/MSDOS/DOS4G.0a.sg +19 -0
- die/db/db/MSDOS/DOSX16.0a.sg +27 -0
- die/db/db/MSDOS/DOS_16M.0a.sg +28 -0
- die/db/db/MSDOS/DOS_32A.0a.sg +22 -0
- die/db/db/MSDOS/DSHIELD.2.sg +11 -0
- die/db/db/MSDOS/Deeper.2.sg +17 -0
- die/db/db/MSDOS/DemoMaker.2.sg +14 -0
- die/db/db/MSDOS/DexEXE.2.sg +14 -0
- die/db/db/MSDOS/Digital Research C.4.sg +15 -0
- die/db/db/MSDOS/Disk eXPress.1.sg +14 -0
- die/db/db/MSDOS/E-PROT.2.sg +14 -0
- die/db/db/MSDOS/EEXE.2.sg +14 -0
- die/db/db/MSDOS/EMMXXXX0 check.0a.sg +12 -0
- die/db/db/MSDOS/EMX.0a.sg +16 -0
- die/db/db/MSDOS/EPW.2.sg +18 -0
- die/db/db/MSDOS/EXARJ.1.sg +13 -0
- die/db/db/MSDOS/EXE Manager.2.sg +14 -0
- die/db/db/MSDOS/EXE Packer.2.sg +15 -0
- die/db/db/MSDOS/EXE encryption.2.sg +13 -0
- die/db/db/MSDOS/EXE-Crypt.2.sg +13 -0
- die/db/db/MSDOS/EXE-Cryptor.2.sg +19 -0
- die/db/db/MSDOS/EXE-Protect.2.sg +13 -0
- die/db/db/MSDOS/EXE2COM.1.sg +22 -0
- die/db/db/MSDOS/EXECUTRIX.2.sg +13 -0
- die/db/db/MSDOS/EXEGUARD.2.sg +12 -0
- die/db/db/MSDOS/EXEHigh.2.sg +14 -0
- die/db/db/MSDOS/EXEPACK.2.sg +57 -0
- die/db/db/MSDOS/EXETools COM2EXE.1.sg +12 -0
- die/db/db/MSDOS/EXETools.2.sg +16 -0
- die/db/db/MSDOS/Easy!-C.4.sg +14 -0
- die/db/db/MSDOS/Eliashim's CodeTrack.1.sg +12 -0
- die/db/db/MSDOS/Encriptor.2.sg +12 -0
- die/db/db/MSDOS/Enkryptonator.2.sg +12 -0
- die/db/db/MSDOS/ExeCode.2.sg +18 -0
- die/db/db/MSDOS/ExeLITE.2.sg +15 -0
- die/db/db/MSDOS/ExeLock.2.sg +16 -0
- die/db/db/MSDOS/F-XLOCK.1.sg +13 -0
- die/db/db/MSDOS/FACRYPT.2.sg +12 -0
- die/db/db/MSDOS/FCP IV.2.sg +13 -0
- die/db/db/MSDOS/FSE.2.sg +61 -0
- die/db/db/MSDOS/File Shield.1.sg +14 -0
- die/db/db/MSDOS/Fitted Modula-2.4.sg +14 -0
- die/db/db/MSDOS/ForthInfo.4.sg +18 -0
- die/db/db/MSDOS/FromBAT.1.sg +13 -0
- die/db/db/MSDOS/GFX to EXE.1.sg +14 -0
- die/db/db/MSDOS/GOAT.1.sg +21 -0
- die/db/db/MSDOS/GRABBER.1.sg +26 -0
- die/db/db/MSDOS/GRASP.4.sg +20 -0
- die/db/db/MSDOS/GameWizard DOS Extender.0a.sg +12 -0
- die/db/db/MSDOS/Go32Stub.0a.sg +19 -0
- die/db/db/MSDOS/Graphic WorkShop.1.sg +14 -0
- die/db/db/MSDOS/Guardian Angel.2.sg +21 -0
- die/db/db/MSDOS/H+BEDV SelfCheck.1.sg +18 -0
- die/db/db/MSDOS/HACKSTOP.2.sg +77 -0
- die/db/db/MSDOS/HASP.2.sg +14 -0
- die/db/db/MSDOS/HEALTH.2.sg +12 -0
- die/db/db/MSDOS/Header Changer.2.sg +13 -0
- die/db/db/MSDOS/Hi-Tech C.4.sg +15 -0
- die/db/db/MSDOS/HyperLOCK 386.2.sg +14 -0
- die/db/db/MSDOS/IBM PC Pascal.4.sg +31 -0
- die/db/db/MSDOS/ICE.1.sg +13 -0
- die/db/db/MSDOS/IMMUN.1.sg +14 -0
- die/db/db/MSDOS/Inertia.2.sg +14 -0
- die/db/db/MSDOS/Ironthorn.2.sg +14 -0
- die/db/db/MSDOS/JAM.2.sg +12 -0
- die/db/db/MSDOS/JmCryptExe.2.sg +19 -0
- die/db/db/MSDOS/John Socha Library.3.sg +13 -0
- die/db/db/MSDOS/Joke.2.sg +13 -0
- die/db/db/MSDOS/KeyMaker.2.sg +14 -0
- die/db/db/MSDOS/Khrome Crypt.2.sg +12 -0
- die/db/db/MSDOS/Kvetch.2.sg +14 -0
- die/db/db/MSDOS/LE.0.sg +11 -0
- die/db/db/MSDOS/LGLZ.2.sg +14 -0
- die/db/db/MSDOS/LH.1.sg +11 -0
- die/db/db/MSDOS/LHA.1.sg +20 -0
- die/db/db/MSDOS/LHarc.1.sg +19 -0
- die/db/db/MSDOS/LOCK.2.sg +14 -0
- die/db/db/MSDOS/LSI_C.4.sg +14 -0
- die/db/db/MSDOS/LX.0.sg +11 -0
- die/db/db/MSDOS/LZEXE.2.sg +42 -0
- die/db/db/MSDOS/L_O_V_E_ FORTH.4.sg +18 -0
- die/db/db/MSDOS/Lahey Fortran.4.sg +14 -0
- die/db/db/MSDOS/LamerStop.2.sg +12 -0
- die/db/db/MSDOS/Lattice C.4.sg +87 -0
- die/db/db/MSDOS/LockTite+.2.sg +12 -0
- die/db/db/MSDOS/Logitech Modula-2.4.sg +14 -0
- die/db/db/MSDOS/MEGALITE.2.sg +12 -0
- die/db/db/MSDOS/MESS.2.sg +30 -0
- die/db/db/MSDOS/MSLite.1.sg +14 -0
- die/db/db/MSDOS/Maker.2.sg +14 -0
- die/db/db/MSDOS/Mandrake.2.sg +13 -0
- die/db/db/MSDOS/MegaBasic.4.sg +16 -0
- die/db/db/MSDOS/MegaBasic1.4.sg +30 -0
- die/db/db/MSDOS/Meridian Ada.4.sg +29 -0
- die/db/db/MSDOS/Meridian Pascal.4.sg +21 -0
- die/db/db/MSDOS/MetaWare High C.4.sg +30 -0
- die/db/db/MSDOS/MetaWare Professional Pascal.4.sg +24 -0
- die/db/db/MSDOS/Micro Focus Cobol.4.sg +19 -0
- die/db/db/MSDOS/Micro Focus DOS extender.0a.sg +13 -0
- die/db/db/MSDOS/Microsoft Basic.4.sg +23 -0
- die/db/db/MSDOS/Microsoft C Library.3.sg +20 -0
- die/db/db/MSDOS/Microsoft C.4.sg +57 -0
- die/db/db/MSDOS/Microsoft Fortran.4.sg +15 -0
- die/db/db/MSDOS/Microsoft Quick Basic.4.sg +35 -0
- die/db/db/MSDOS/Microsoft Quick Pascal.4.sg +16 -0
- die/db/db/MSDOS/Microsoft RTL (Clipper).3.sg +13 -0
- die/db/db/MSDOS/Microsoft RTL.3.sg +48 -0
- die/db/db/MSDOS/MultiLoop Protection.2.sg +13 -0
- die/db/db/MSDOS/MutaWWP.2.sg +14 -0
- die/db/db/MSDOS/Mutate.2.sg +21 -0
- die/db/db/MSDOS/NE.0.sg +11 -0
- die/db/db/MSDOS/NOCLIP.2.sg +14 -0
- die/db/db/MSDOS/NOTA.2.sg +14 -0
- die/db/db/MSDOS/NTShell.2.sg +14 -0
- die/db/db/MSDOS/Netware loader.1.sg +12 -0
- die/db/db/MSDOS/Nodebug.2.sg +14 -0
- die/db/db/MSDOS/Novex.2.sg +12 -0
- die/db/db/MSDOS/Oberon-M.4.sg +14 -0
- die/db/db/MSDOS/Optlink.2.sg +31 -0
- die/db/db/MSDOS/Overlay.2.sg +13 -0
- die/db/db/MSDOS/Oyster.1.sg +13 -0
- die/db/db/MSDOS/PACKWIN.2.sg +14 -0
- die/db/db/MSDOS/PC-Guard.2.sg +30 -0
- die/db/db/MSDOS/PCC.4.sg +28 -0
- die/db/db/MSDOS/PCOM.2.sg +14 -0
- die/db/db/MSDOS/PDC Prolog.4.sg +15 -0
- die/db/db/MSDOS/PGMPAK.2.sg +17 -0
- die/db/db/MSDOS/PGPROT.1.sg +12 -0
- die/db/db/MSDOS/PK sig.1.sg +12 -0
- die/db/db/MSDOS/PKEXE.2.sg +13 -0
- die/db/db/MSDOS/PKLITE.2.sg +59 -0
- die/db/db/MSDOS/PKSFX.1.sg +15 -0
- die/db/db/MSDOS/PKTINY.2.sg +14 -0
- die/db/db/MSDOS/PKZIP mini-sfx.1.sg +17 -0
- die/db/db/MSDOS/PKZIP-SFX.1.sg +13 -0
- die/db/db/MSDOS/PMODE.0a.sg +17 -0
- die/db/db/MSDOS/PMWLite.2.sg +14 -0
- die/db/db/MSDOS/PRO-PACK.2.sg +16 -0
- die/db/db/MSDOS/PRO32.0a.sg +14 -0
- die/db/db/MSDOS/PROPACK SFX.1.sg +13 -0
- die/db/db/MSDOS/PROTECT.2.sg +101 -0
- die/db/db/MSDOS/PVAC.2.sg +14 -0
- die/db/db/MSDOS/Pacific C.4.sg +23 -0
- die/db/db/MSDOS/Pack.2.sg +14 -0
- die/db/db/MSDOS/Packers.2.sg +17 -0
- die/db/db/MSDOS/Palladix.1.sg +12 -0
- die/db/db/MSDOS/Panda immunizer.1.sg +14 -0
- die/db/db/MSDOS/Pascal_MT+86.4.sg +20 -0
- die/db/db/MSDOS/PassEXE.2.sg +12 -0
- die/db/db/MSDOS/Patchers.1.sg +18 -0
- die/db/db/MSDOS/Phar Lap.0a.sg +31 -0
- die/db/db/MSDOS/Pksmart.2.sg +14 -0
- die/db/db/MSDOS/Power C.4.sg +16 -0
- die/db/db/MSDOS/ProtEXE.2.sg +58 -0
- die/db/db/MSDOS/Protector.2.sg +13 -0
- die/db/db/MSDOS/Quadru-Lock.2.sg +12 -0
- die/db/db/MSDOS/R-Crypt.2.sg +13 -0
- die/db/db/MSDOS/RAR.6.sg +9 -0
- die/db/db/MSDOS/REC small AV.1.sg +18 -0
- die/db/db/MSDOS/REC small.1.sg +26 -0
- die/db/db/MSDOS/REC.2.sg +22 -0
- die/db/db/MSDOS/RELETTER.1.sg +14 -0
- die/db/db/MSDOS/RERP.2.sg +13 -0
- die/db/db/MSDOS/RHC.2.sg +14 -0
- die/db/db/MSDOS/RJcrush.2.sg +12 -0
- die/db/db/MSDOS/RLE com-packer.2.sg +13 -0
- die/db/db/MSDOS/RM_FORTRAN.4.sg +14 -0
- die/db/db/MSDOS/ROSETINY.2.sg +15 -0
- die/db/db/MSDOS/RSX.0a.sg +12 -0
- die/db/db/MSDOS/RTLink VM Manager.0a.sg +12 -0
- die/db/db/MSDOS/RTPatch SFX.1.sg +13 -0
- die/db/db/MSDOS/Realia Cobol.4.sg +16 -0
- die/db/db/MSDOS/Realia SPITBOL.4.sg +14 -0
- die/db/db/MSDOS/Relpack.2.sg +14 -0
- die/db/db/MSDOS/SCRNCH.2.sg +14 -0
- die/db/db/MSDOS/SEA-AXE.2.sg +15 -0
- die/db/db/MSDOS/SFX.1.sg +14 -0
- die/db/db/MSDOS/SHOW IT.1.sg +14 -0
- die/db/db/MSDOS/SP-FORTH.4.sg +18 -0
- die/db/db/MSDOS/Scramb.2.sg +13 -0
- die/db/db/MSDOS/Secure.2.sg +37 -0
- die/db/db/MSDOS/Self UnStuffer.2.sg +16 -0
- die/db/db/MSDOS/SelfChk.2.sg +14 -0
- die/db/db/MSDOS/Shrink.2.sg +15 -0
- die/db/db/MSDOS/Shrinker.2.sg +14 -0
- die/db/db/MSDOS/SimplyWare.1.sg +22 -0
- die/db/db/MSDOS/Small C.4.sg +20 -0
- die/db/db/MSDOS/SnoopStop.2.sg +12 -0
- die/db/db/MSDOS/StonyBrook Pascal.4.sg +26 -0
- die/db/db/MSDOS/Stub-386.0a.sg +13 -0
- die/db/db/MSDOS/SuckStop.2.sg +27 -0
- die/db/db/MSDOS/Sydex SFX.1.sg +19 -0
- die/db/db/MSDOS/Symantec BASIC.4.sg +16 -0
- die/db/db/MSDOS/TCEC.2.sg +18 -0
- die/db/db/MSDOS/TMTSTUB.0a.sg +14 -0
- die/db/db/MSDOS/TSCRUNCH.2.sg +13 -0
- die/db/db/MSDOS/TTW.1.sg +17 -0
- die/db/db/MSDOS/TUCCRYP.2.sg +14 -0
- die/db/db/MSDOS/TXT2COM.1.sg +18 -0
- die/db/db/MSDOS/TXTmaker.1.sg +14 -0
- die/db/db/MSDOS/Tenth Planet.2.sg +13 -0
- die/db/db/MSDOS/TinyProg.2.sg +27 -0
- die/db/db/MSDOS/Tinyprot.2.sg +16 -0
- die/db/db/MSDOS/Topspeed C.4.sg +20 -0
- die/db/db/MSDOS/Topspeed Modula.4.sg +42 -0
- die/db/db/MSDOS/TraceLock.2.sg +13 -0
- die/db/db/MSDOS/Trap.2.sg +50 -0
- die/db/db/MSDOS/Turbo Basic.4.sg +18 -0
- die/db/db/MSDOS/Turbo Prolog.4.sg +16 -0
- die/db/db/MSDOS/TurboChainer.1.sg +13 -0
- die/db/db/MSDOS/Txt2Exe.1.sg +14 -0
- die/db/db/MSDOS/UCEXE.2.sg +22 -0
- die/db/db/MSDOS/UPX.2.sg +46 -0
- die/db/db/MSDOS/UR FORTH.4.sg +14 -0
- die/db/db/MSDOS/Un2pack.2.sg +14 -0
- die/db/db/MSDOS/UnPackStop.2.sg +33 -0
- die/db/db/MSDOS/UniVac.1.sg +14 -0
- die/db/db/MSDOS/Unknown cryptors.2.sg +54 -0
- die/db/db/MSDOS/Upper Deck Forth.4.sg +14 -0
- die/db/db/MSDOS/V-Load.1.sg +13 -0
- die/db/db/MSDOS/Visual Cobol.4.sg +16 -0
- die/db/db/MSDOS/WATCOM.4.sg +55 -0
- die/db/db/MSDOS/WDOSX.0a.sg +14 -0
- die/db/db/MSDOS/WDOSX32.0a.sg +12 -0
- die/db/db/MSDOS/WPFORTH.4.sg +14 -0
- die/db/db/MSDOS/WWPACK mutator.2.sg +53 -0
- die/db/db/MSDOS/WWPACK.2.sg +89 -0
- die/db/db/MSDOS/Whitesmiths C.4.sg +20 -0
- die/db/db/MSDOS/Window book.1.sg +21 -0
- die/db/db/MSDOS/Wizardy protection.1.sg +12 -0
- die/db/db/MSDOS/WordPerfect EXEPack.2.sg +12 -0
- die/db/db/MSDOS/XDOC.2.sg +13 -0
- die/db/db/MSDOS/XMLOD.0a.sg +16 -0
- die/db/db/MSDOS/XPACK.2.sg +37 -0
- die/db/db/MSDOS/Xtender.0a.sg +14 -0
- die/db/db/MSDOS/ZIPSCRUB.2.sg +14 -0
- die/db/db/MSDOS/ZOO.1.sg +14 -0
- die/db/db/MSDOS/Zbikowski C.4.sg +18 -0
- die/db/db/MSDOS/Zip.6.sg +9 -0
- die/db/db/MSDOS/Zortech(Symantec) C.4.sg +55 -0
- die/db/db/MSDOS/Zurenava DOS Extender.0a.sg +13 -0
- die/db/db/MSDOS/_MSDOS.0.sg +15 -0
- die/db/db/MSDOS/_init +54 -0
- die/db/db/MSDOS/aPACK.2.sg +60 -0
- die/db/db/MSDOS/aPatch.2.sg +13 -0
- die/db/db/MSDOS/anti-tracing add-on.1.sg +12 -0
- die/db/db/MSDOS/com2exe.2.sg +21 -0
- die/db/db/MSDOS/cramble.2.sg +12 -0
- die/db/db/MSDOS/deep-CRyPTer.2.sg +12 -0
- die/db/db/MSDOS/djgpp.4.sg +16 -0
- die/db/db/MSDOS/dos extender.0a.sg +16 -0
- die/db/db/MSDOS/dos extender1.0a.sg +13 -0
- die/db/db/MSDOS/dos extender2.0a.sg +16 -0
- die/db/db/MSDOS/iLUCRYPT.2.sg +18 -0
- die/db/db/MSDOS/immunizer.1.sg +13 -0
- die/db/db/MSDOS/mbp SHRINK.2.sg +13 -0
- die/db/db/MSDOS/muLISP-87.4.sg +20 -0
- die/db/db/MSDOS/nbuild.2.sg +12 -0
- die/db/db/MSDOS/overlays.6.sg +70 -0
- die/db/db/MSDOS/self-displayer.1.sg +13 -0
- die/db/db/MSDOS/virus.1.sg +13 -0
- die/db/db/NE/ARC SFX.1.sg +13 -0
- die/db/db/NE/Borland C++.1.sg +25 -0
- die/db/db/NE/Borland Pascal.1.sg +13 -0
- die/db/db/NE/MS RTL.0.sg +28 -0
- die/db/db/NE/PKZIP-SFX.1.sg +13 -0
- die/db/db/NE/Setup-Specialist.1.sg +16 -0
- die/db/db/NE/Sydex SFX.1.sg +13 -0
- die/db/db/NE/Watcom C.1.sg +34 -0
- die/db/db/NE/_NE.0.sg +15 -0
- die/db/db/NE/_init +4 -0
- die/db/db/NPM/JavaScript.5.sg +11 -0
- die/db/db/NPM/PackageName.1.sg +15 -0
- die/db/db/NPM/TypeScript.5.sg +11 -0
- die/db/db/NPM/_NPM.0.sg +16 -0
- die/db/db/NPM/_init +4 -0
- die/db/db/PE/12Ghosts Zip2.1.sg +17 -0
- die/db/db/PE/32Lite.2.sg +12 -0
- die/db/db/PE/3dcrypter.2.sg +12 -0
- die/db/db/PE/404crypter.1.sg +13 -0
- die/db/db/PE/7z.1.sg +43 -0
- die/db/db/PE/7z.4.sg +14 -0
- die/db/db/PE/7z.6.sg +21 -0
- die/db/db/PE/ABC Cryptor.2.sg +12 -0
- die/db/db/PE/ACCAStore.1.sg +19 -0
- die/db/db/PE/ACE.6.sg +9 -0
- die/db/db/PE/ACProtect.2.sg +30 -0
- die/db/db/PE/ADS Self Extractor.1.sg +18 -0
- die/db/db/PE/AHTeam EP Protector.2.sg +71 -0
- die/db/db/PE/AHpacker.2.sg +14 -0
- die/db/db/PE/ANDpakk.2.sg +21 -0
- die/db/db/PE/AOLSetup.1.sg +15 -0
- die/db/db/PE/AR Crypt Private.2.sg +11 -0
- die/db/db/PE/ARJSFX.1.sg +44 -0
- die/db/db/PE/ARM Protector.2.sg +21 -0
- die/db/db/PE/ARQ.1.sg +16 -0
- die/db/db/PE/ASDPack.2.sg +12 -0
- die/db/db/PE/ASM Guard.2.sg +27 -0
- die/db/db/PE/ASPR Stripper.2.sg +12 -0
- die/db/db/PE/ASPack.2.sg +95 -0
- die/db/db/PE/ASProtect.2.sg +54 -0
- die/db/db/PE/AT4RE Protector.2.sg +13 -0
- die/db/db/PE/AZProtect.2.sg +12 -0
- die/db/db/PE/Aase Crypter.2.sg +12 -0
- die/db/db/PE/Abbyy Lingvo.1.sg +15 -0
- die/db/db/PE/AcidCrypt.2.sg +13 -0
- die/db/db/PE/Acronis installer.1.sg +30 -0
- die/db/db/PE/Active Delivery.1.sg +16 -0
- die/db/db/PE/ActiveMark.2.sg +14 -0
- die/db/db/PE/Actual Installer.1.sg +18 -0
- die/db/db/PE/Adept Protector.2.sg +19 -0
- die/db/db/PE/Adobe Flash Player installer.1.sg +19 -0
- die/db/db/PE/Adobe FlashPlayer downloader.1.sg +17 -0
- die/db/db/PE/Adobe installers.1.sg +32 -0
- die/db/db/PE/Advanced BAT to EXE converter.2.sg +13 -0
- die/db/db/PE/Advanced installer.1.sg +30 -0
- die/db/db/PE/Adveractive.1.sg +14 -0
- die/db/db/PE/Aeco installer.1.sg +14 -0
- die/db/db/PE/Agile .NET.2.sg +11 -0
- die/db/db/PE/Alchemy Mindworks installer.1.sg +19 -0
- die/db/db/PE/Alex Protector.2.sg +15 -0
- die/db/db/PE/Alienyze.1.sg +14 -0
- die/db/db/PE/Alloy.2.sg +12 -0
- die/db/db/PE/AlmafuerteCrypter.1.sg +12 -0
- die/db/db/PE/Amber.2.sg +16 -0
- die/db/db/PE/Anskya Binder.2.sg +12 -0
- die/db/db/PE/Anskya NTPacker Generator.2.sg +11 -0
- die/db/db/PE/Anslym Crypter.2.sg +11 -0
- die/db/db/PE/AntiDote.2.sg +34 -0
- die/db/db/PE/Anticrack Software Protector.2.sg +15 -0
- die/db/db/PE/Apex-c.2.sg +12 -0
- die/db/db/PE/App Encryptor.2.sg +13 -0
- die/db/db/PE/Armadillo.2.sg +48 -0
- die/db/db/PE/AssemblyInvoke.2.sg +13 -0
- die/db/db/PE/Astrum.1.sg +21 -0
- die/db/db/PE/AtomPePacker.2.sg +15 -0
- die/db/db/PE/AutoHotKey.3.sg +20 -0
- die/db/db/PE/AutoIt.3.sg +20 -0
- die/db/db/PE/AutoPlay Media Studio.1.sg +26 -0
- die/db/db/PE/Autodesk Self-Extract.1.sg +14 -0
- die/db/db/PE/AutorunProEnterprise.1.sg +16 -0
- die/db/db/PE/AutorunProEnterpriseII.1.sg +19 -0
- die/db/db/PE/AverCryptor.2.sg +20 -0
- die/db/db/PE/Babel .NET.2.sg +17 -0
- die/db/db/PE/BasicCrypt1.1.sg +12 -0
- die/db/db/PE/Bat to exe.1.sg +19 -0
- die/db/db/PE/BattleshipCrypter.2.sg +11 -0
- die/db/db/PE/BeRo Tiny Pascal.4.sg +12 -0
- die/db/db/PE/BeRo.2.sg +37 -0
- die/db/db/PE/Berio.2.sg +15 -0
- die/db/db/PE/BitRock Installer.1.sg +16 -0
- die/db/db/PE/BitShape PE Crypt.2.sg +15 -0
- die/db/db/PE/Blade Joiner.1.sg +12 -0
- die/db/db/PE/BlindSpot.2.sg +12 -0
- die/db/db/PE/Blizzard PrePatch.1.sg +14 -0
- die/db/db/PE/BobPack.2.sg +12 -0
- die/db/db/PE/BopCrypt.2.sg +12 -0
- die/db/db/PE/Borland C++.4.sg +36 -0
- die/db/db/PE/Box Stub.1.sg +14 -0
- die/db/db/PE/Break Into Pattern.2.sg +12 -0
- die/db/db/PE/BulletProofSoft installer.1.sg +13 -0
- die/db/db/PE/ByfronTech.2.sg +67 -0
- die/db/db/PE/Bytessence Install Maker.1.sg +19 -0
- die/db/db/PE/CDS SS.2.sg +12 -0
- die/db/db/PE/CExe.2.sg +12 -0
- die/db/db/PE/CICompress.2.sg +12 -0
- die/db/db/PE/CSDD's installer.1.sg +17 -0
- die/db/db/PE/CUDA-Driver.4.sg +14 -0
- die/db/db/PE/CZ installer.1.sg +18 -0
- die/db/db/PE/Cab.1.sg +60 -0
- die/db/db/PE/Cab.6.sg +33 -0
- die/db/db/PE/Calibre_installer.1.sg +19 -0
- die/db/db/PE/Cameyo.2.sg +16 -0
- die/db/db/PE/Celesty File Binder.1.sg +18 -0
- die/db/db/PE/ChainskiCrypter.1.sg +11 -0
- die/db/db/PE/Chaos Software installer.1.sg +14 -0
- die/db/db/PE/Chilkat ZIP Self-Extractor.1.sg +14 -0
- die/db/db/PE/Chromium Embedded Framework.4.sg +14 -0
- die/db/db/PE/Chromium WebView.4.sg +14 -0
- die/db/db/PE/CipherWall.1.sg +20 -0
- die/db/db/PE/CliSecure.2.sg +21 -0
- die/db/db/PE/ClickTeam.1.sg +16 -0
- die/db/db/PE/Code Virtualizer.2.sg +12 -0
- die/db/db/PE/Code-Lock.2.sg +11 -0
- die/db/db/PE/CodeCrypt.2.sg +21 -0
- die/db/db/PE/CodeCrypter.2.sg +12 -0
- die/db/db/PE/CodeFusion Wizard.1.sg +14 -0
- die/db/db/PE/CodeSafe.2.sg +12 -0
- die/db/db/PE/CodeVeil.2.sg +20 -0
- die/db/db/PE/Codegear Installer.1.sg +14 -0
- die/db/db/PE/Codewall.2.sg +18 -0
- die/db/db/PE/CoffeeCup SFX.2.sg +14 -0
- die/db/db/PE/Confuser.2.sg +41 -0
- die/db/db/PE/CopyMinder.2.sg +11 -0
- die/db/db/PE/Costura.Fody.4.sg +13 -0
- die/db/db/PE/CreateInstall.1.sg +22 -0
- die/db/db/PE/Crinkler.2.sg +15 -0
- die/db/db/PE/Crunch.2.sg +25 -0
- die/db/db/PE/CrypKey Installer.1.sg +14 -0
- die/db/db/PE/CrypKey.2.sg +20 -0
- die/db/db/PE/CrypToCrack Pe Protector.2.sg +15 -0
- die/db/db/PE/Cryptect.1.sg +13 -0
- die/db/db/PE/Crypter.2.sg +12 -0
- die/db/db/PE/Cryptic.2.sg +12 -0
- die/db/db/PE/CryptoObfuscator.2.sg +17 -0
- die/db/db/PE/Cxfreeze.1.sg +25 -0
- die/db/db/PE/Cygwin32.4.sg +11 -0
- die/db/db/PE/DBPE.2.sg +25 -0
- die/db/db/PE/DCrypt Private.2.sg +12 -0
- die/db/db/PE/DECFortran.4.sg +22 -0
- die/db/db/PE/DEF.2.sg +12 -0
- die/db/db/PE/DJoin.1.sg +17 -0
- die/db/db/PE/DMD.4.sg +43 -0
- die/db/db/PE/DNGuard.2.sg +30 -0
- die/db/db/PE/DS.EZ-Logic.sg +12 -0
- die/db/db/PE/DS.Eutron SmartKey dongle.5.sg +25 -0
- die/db/db/PE/DS.Flexlm.4.sg +19 -0
- die/db/db/PE/DS.HASP dongle.5.sg +18 -0
- die/db/db/PE/DS.Hardlock dongle.5.sg +20 -0
- die/db/db/PE/DS.Key-Lok II dongle.5.sg +19 -0
- die/db/db/PE/DS.MARX Crypto-Box dongle.5.sg +26 -0
- die/db/db/PE/DS.Matrix Hardware Lock dongle.5.sg +16 -0
- die/db/db/PE/DS.NetHASP dongle.5.sg +15 -0
- die/db/db/PE/DS.Novex dongle.4.sg +14 -0
- die/db/db/PE/DS.RLM.4.sg +21 -0
- die/db/db/PE/DS.Rockey4 dongle.5.sg +20 -0
- die/db/db/PE/DS.SenseLock dongle.5.sg +17 -0
- die/db/db/PE/DS.Sentinel SuperPro dongle.5.sg +16 -0
- die/db/db/PE/DS.Sentinel SuperPro.2.sg +21 -0
- die/db/db/PE/DS.Sentinel dongle.5.sg +24 -0
- die/db/db/PE/DS.SoftLok dongle.5.sg +15 -0
- die/db/db/PE/DS.Unikey dongle.5.sg +26 -0
- die/db/db/PE/DS.WIBU Key dongle.5.sg +16 -0
- die/db/db/PE/DS.Wizzkey dongle.5.sg +14 -0
- die/db/db/PE/DYAMAR.2.sg +12 -0
- die/db/db/PE/DZA Patcher.2.sg +15 -0
- die/db/db/PE/Daemon Protect.2.sg +13 -0
- die/db/db/PE/DalKrypt.2.sg +12 -0
- die/db/db/PE/DataAnubis.1.sg +13 -0
- die/db/db/PE/DeepSea.2.sg +18 -0
- die/db/db/PE/DelZip SFX.2.sg +14 -0
- die/db/db/PE/Delphi.4.sg +270 -0
- die/db/db/PE/Denuvo protector.2.sg +14 -0
- die/db/db/PE/DeployMaster.1.sg +15 -0
- die/db/db/PE/DesktopX Installer.1.sg +18 -0
- die/db/db/PE/Dimd SFX.1.sg +15 -0
- die/db/db/PE/Ding Boys PE-lock Phantasm.2.sg +18 -0
- die/db/db/PE/DirTy CrYpt0r.2.sg +12 -0
- die/db/db/PE/Direct2D.4.sg +14 -0
- die/db/db/PE/Direct3D.4.sg +38 -0
- die/db/db/PE/DirectX.4.sg +14 -0
- die/db/db/PE/DockerDesktopInstaller.1.sg +20 -0
- die/db/db/PE/Dolphin VM.1.sg +18 -0
- die/db/db/PE/DotFix Nice Protect.2.sg +23 -0
- die/db/db/PE/Dotfuscator.2.sg +11 -0
- die/db/db/PE/DragonArmor.2.sg +12 -0
- die/db/db/PE/Duals eXe Encryptor.2.sg +19 -0
- die/db/db/PE/DxPack.2.sg +22 -0
- die/db/db/PE/ENIGMA.2.sg +111 -0
- die/db/db/PE/EP.2.sg +15 -0
- die/db/db/PE/EP.MPRESS.2.sg +37 -0
- die/db/db/PE/EP.MSC.4.sg +21 -0
- die/db/db/PE/EXE Password Protector.2.sg +12 -0
- die/db/db/PE/EXE32Pack.2.sg +12 -0
- die/db/db/PE/EXECrypt.2.sg +12 -0
- die/db/db/PE/EXECryptor.2.sg +99 -0
- die/db/db/PE/EXEFog.2.sg +22 -0
- die/db/db/PE/EXERefactor.2.sg +12 -0
- die/db/db/PE/Eazfuscator.2.sg +17 -0
- die/db/db/PE/ElecKey.2.sg +34 -0
- die/db/db/PE/ElectronApp.3.sg +22 -0
- die/db/db/PE/Embed PE.2.sg +22 -0
- die/db/db/PE/EncryptPE.2.sg +31 -0
- die/db/db/PE/Enigma Installer.1.sg +22 -0
- die/db/db/PE/Enigma Virtual Box.2.sg +17 -0
- die/db/db/PE/Envoy Packager.1.sg +15 -0
- die/db/db/PE/Escargot.2.sg +15 -0
- die/db/db/PE/Eschalon installer.1.sg +15 -0
- die/db/db/PE/ExE Pack.2.sg +23 -0
- die/db/db/PE/Excelsior Installer.1.sg +14 -0
- die/db/db/PE/Excelsior JET.4.sg +35 -0
- die/db/db/PE/Exe Guarder.2.sg +12 -0
- die/db/db/PE/Exe Locker.2.sg +12 -0
- die/db/db/PE/Exe Shield.2.sg +28 -0
- die/db/db/PE/ExeJoiner.1.sg +12 -0
- die/db/db/PE/ExeSafeguard.2.sg +12 -0
- die/db/db/PE/ExeSmasher.2.sg +11 -0
- die/db/db/PE/ExeSplitter.1.sg +24 -0
- die/db/db/PE/ExeStealth.2.sg +40 -0
- die/db/db/PE/FASM.4.sg +21 -0
- die/db/db/PE/FDM Installer.1.sg +18 -0
- die/db/db/PE/FISH .NET.2.sg +17 -0
- die/db/db/PE/FSG.2.sg +175 -0
- die/db/db/PE/FakeNinja.2.sg +16 -0
- die/db/db/PE/FileSplit Self-Merger.2.sg +13 -0
- die/db/db/PE/Fish PE.2.sg +22 -0
- die/db/db/PE/FishPE Shield.2.sg +21 -0
- die/db/db/PE/FixupPak.2.sg +12 -0
- die/db/db/PE/FlashBack Protector.2.sg +13 -0
- die/db/db/PE/FlashPlayer.1.sg +21 -0
- die/db/db/PE/Fly-Crypter.2.sg +15 -0
- die/db/db/PE/Fox Pro.3.sg +25 -0
- die/db/db/PE/Free Basic.4.sg +24 -0
- die/db/db/PE/Free Pascal.4.sg +53 -0
- die/db/db/PE/FreeCryptor.2.sg +22 -0
- die/db/db/PE/FreeJoiner.1.sg +45 -0
- die/db/db/PE/Fuck n Joy.2.sg +12 -0
- die/db/db/PE/Fusion.2.sg +12 -0
- die/db/db/PE/G!X Protector.2.sg +12 -0
- die/db/db/PE/GPInstall.1.sg +19 -0
- die/db/db/PE/GSplit.1.sg +20 -0
- die/db/db/PE/GZip.1.sg +20 -0
- die/db/db/PE/GameGuard.2.sg +12 -0
- die/db/db/PE/Gentee Installer.1.sg +34 -0
- die/db/db/PE/Ghost Installer.1.sg +16 -0
- die/db/db/PE/GkSetup.1.sg +18 -0
- die/db/db/PE/Go.4.sg +65 -0
- die/db/db/PE/Goats PE Mutilator.2.sg +12 -0
- die/db/db/PE/GoldSrc.3.sg +19 -0
- die/db/db/PE/Goliath.2.sg +15 -0
- die/db/db/PE/Gremlin patcher.1.sg +21 -0
- die/db/db/PE/GuardantStealth.2.sg +11 -0
- die/db/db/PE/HASP HL Protection.2.sg +34 -0
- die/db/db/PE/HASP.2.sg +22 -0
- die/db/db/PE/HTML executable.1.sg +18 -0
- die/db/db/PE/HackShield.2.sg +17 -0
- die/db/db/PE/Hamrick_Software_installer.1.sg +16 -0
- die/db/db/PE/Hide&Protect.2.sg +12 -0
- die/db/db/PE/HidePE.2.sg +255 -0
- die/db/db/PE/HyperTech Crackproof.2.sg +13 -0
- die/db/db/PE/I-D Media installer.1.sg +14 -0
- die/db/db/PE/ICrypt.2.sg +12 -0
- die/db/db/PE/ID Application Protector(NoNamePacker).2.sg +12 -0
- die/db/db/PE/IDM Installer.1.sg +15 -0
- die/db/db/PE/ILProtector.2.sg +19 -0
- die/db/db/PE/ILUCRYPT.2.sg +15 -0
- die/db/db/PE/IMPostor Pack.2.sg +12 -0
- die/db/db/PE/INCrypter.2.sg +12 -0
- die/db/db/PE/INFTool.1.sg +15 -0
- die/db/db/PE/INTENIUM.1.sg +13 -0
- die/db/db/PE/IProtect.2.sg +17 -0
- die/db/db/PE/Inno Setup Module.1.sg +97 -0
- die/db/db/PE/Inquartos Obfuscator.2.sg +12 -0
- die/db/db/PE/Instalit.1.sg +25 -0
- die/db/db/PE/Install Factory.1.sg +14 -0
- die/db/db/PE/Install4j installer.1.sg +16 -0
- die/db/db/PE/InstallAnywhere.1.sg +36 -0
- die/db/db/PE/InstallShield.1.sg +91 -0
- die/db/db/PE/InstallUs.1.sg +16 -0
- die/db/db/PE/Intel C.4.sg +13 -0
- die/db/db/PE/Intel IPP.sg +15 -0
- die/db/db/PE/IntelliProtector.2.sg +17 -0
- die/db/db/PE/InxObfuscator.2.sg +14 -0
- die/db/db/PE/JDPack.2.sg +15 -0
- die/db/db/PE/JScript.4.sg +14 -0
- die/db/db/PE/Jar2exe.1.sg +26 -0
- die/db/db/PE/KBys Packer.2.sg +21 -0
- die/db/db/PE/KCryptor.2.sg +13 -0
- die/db/db/PE/KGCrypt.2.sg +11 -0
- die/db/db/PE/KRZIP SFX.2.sg +15 -0
- die/db/db/PE/KoiVM.2.sg +22 -0
- die/db/db/PE/Konekt Protector.2.sg +12 -0
- die/db/db/PE/Krypton.2.sg +25 -0
- die/db/db/PE/Kryptonit.2.sg +16 -0
- die/db/db/PE/LARP.2.sg +13 -0
- die/db/db/PE/LCC-Win32.4.sg +14 -0
- die/db/db/PE/LCL.5.sg +17 -0
- die/db/db/PE/LDK .NET.2.sg +13 -0
- die/db/db/PE/LDK.2.sg +21 -0
- die/db/db/PE/Lahey Fortran 90.4.sg +19 -0
- die/db/db/PE/LameCrypt.2.sg +12 -0
- die/db/db/PE/Laserlok.2.sg +12 -0
- die/db/db/PE/LimeCrypter.2.sg +58 -0
- die/db/db/PE/Lua Runtime.4.sg +16 -0
- die/db/db/PE/LucasArts Update Installer.1.sg +14 -0
- die/db/db/PE/Lyme SFX.1.sg +15 -0
- die/db/db/PE/MEW.2.sg +23 -0
- die/db/db/PE/MP-ZipTool.1.sg +14 -0
- die/db/db/PE/MPQ.1.sg +15 -0
- die/db/db/PE/MPRESS.2.sg +20 -0
- die/db/db/PE/MSLRH.2.sg +117 -0
- die/db/db/PE/MZ-Crypt.2.sg +12 -0
- die/db/db/PE/MZ0oPE.2.sg +12 -0
- die/db/db/PE/MaskPE.2.sg +15 -0
- die/db/db/PE/Maxtocode.2.sg +21 -0
- die/db/db/PE/Metrowerks CodeWarrior.2.sg +26 -0
- die/db/db/PE/MicroJoiner.1.sg +21 -0
- die/db/db/PE/Microsoft .NET Runtime.4.sg +15 -0
- die/db/db/PE/Microsoft C Runtime.4.sg +16 -0
- die/db/db/PE/Microsoft Class Installer.1.sg +22 -0
- die/db/db/PE/Microsoft Compound-based installer.1.sg +14 -0
- die/db/db/PE/Microsoft Edge WebView.4.sg +14 -0
- die/db/db/PE/Microsoft Warbird.2.sg +15 -0
- die/db/db/PE/Microsoft dotNet installer.1.sg +15 -0
- die/db/db/PE/Microsoft.6.sg +1715 -0
- die/db/db/PE/Miktex Installer.1.sg +15 -0
- die/db/db/PE/MinGW.4.sg +65 -0
- die/db/db/PE/Minke.2.sg +12 -0
- die/db/db/PE/Mioplanet installer.1.sg +14 -0
- die/db/db/PE/MoleBox.2.sg +41 -0
- die/db/db/PE/Morphine.2.sg +12 -0
- die/db/db/PE/Morphnah.2.sg +20 -0
- die/db/db/PE/Morton installer.1.sg +21 -0
- die/db/db/PE/Multimedia Fusion Installer.1.sg +14 -0
- die/db/db/PE/Mystic Compressor.2.sg +15 -0
- die/db/db/PE/N-Code.2.sg +13 -0
- die/db/db/PE/N-Joiner.1.sg +12 -0
- die/db/db/PE/N-Joy.2.sg +25 -0
- die/db/db/PE/NOS Installer.1.sg +22 -0
- die/db/db/PE/NOS Packer.2.sg +13 -0
- die/db/db/PE/NTPacker.2.sg +12 -0
- die/db/db/PE/NTShell.2.sg +13 -0
- die/db/db/PE/NTkrnl Protector.2.sg +37 -0
- die/db/db/PE/NakedPacker.2.sg +13 -0
- die/db/db/PE/NanoZip.1.sg +16 -0
- die/db/db/PE/Native UD Packer.2.sg +12 -0
- die/db/db/PE/NativeCryptor by DosX.2.sg +13 -0
- die/db/db/PE/NecroVM.Virt.2.sg +44 -0
- die/db/db/PE/NeoLite.2.sg +38 -0
- die/db/db/PE/NetCompilersLibraries.4.sg +37 -0
- die/db/db/PE/NetReactor.2.sg +102 -0
- die/db/db/PE/NetShieldProtector.2.sg +55 -0
- die/db/db/PE/Newtonsoft.Json.4.sg +14 -0
- die/db/db/PE/Nim.4.sg +17 -0
- die/db/db/PE/Ningishzida.2.sg +12 -0
- die/db/db/PE/NoobyProtect.2.sg +11 -0
- die/db/db/PE/NoodleCrypt.2.sg +12 -0
- die/db/db/PE/North Star PE Shrinker.2.sg +12 -0
- die/db/db/PE/NsPacK.2.sg +40 -0
- die/db/db/PE/Nuitka.1.sg +25 -0
- die/db/db/PE/Nullsoft Scriptable Install System.1.sg +96 -0
- die/db/db/PE/O'Setup95.1.sg +15 -0
- die/db/db/PE/ORiEN.2.sg +19 -0
- die/db/db/PE/Obfuscar.2.sg +14 -0
- die/db/db/PE/Obfuscator .NET 2009.2.sg +16 -0
- die/db/db/PE/Obsidium.2.sg +114 -0
- die/db/db/PE/Open Source Code Crypter.2.sg +11 -0
- die/db/db/PE/OpenAL.4.sg +14 -0
- die/db/db/PE/OpenCL.4.sg +14 -0
- die/db/db/PE/OpenGL.4.sg +14 -0
- die/db/db/PE/OpenSSL.4.sg +14 -0
- die/db/db/PE/Oreans CodeVirtualizer.2.sg +14 -0
- die/db/db/PE/OxiJoiner.sg +16 -0
- die/db/db/PE/PACE.2.sg +17 -0
- die/db/db/PE/PACKWIN.2.sg +12 -0
- die/db/db/PE/PC Guard.2.sg +20 -0
- die/db/db/PE/PCInstall.1.sg +14 -0
- die/db/db/PE/PCShrink.2.sg +15 -0
- die/db/db/PE/PE Diminisher.2.sg +16 -0
- die/db/db/PE/PE Encrypt.2.sg +12 -0
- die/db/db/PE/PE Intro.2.sg +12 -0
- die/db/db/PE/PE Lock NT.2.sg +21 -0
- die/db/db/PE/PE Password.2.sg +12 -0
- die/db/db/PE/PE Protect.2.sg +15 -0
- die/db/db/PE/PE Quake.2.sg +13 -0
- die/db/db/PE/PE-Admin.2.sg +12 -0
- die/db/db/PE/PE-Armor.2.sg +21 -0
- die/db/db/PE/PE-Shield.2.sg +16 -0
- die/db/db/PE/PEBundle.2.sg +25 -0
- die/db/db/PE/PECRYPT32.2.sg +22 -0
- die/db/db/PE/PECompact.2.sg +167 -0
- die/db/db/PE/PELock.2.sg +21 -0
- die/db/db/PE/PENightMare.2.sg +15 -0
- die/db/db/PE/PESpin.2.sg +56 -0
- die/db/db/PE/PETetris.sg +11 -0
- die/db/db/PE/PEUnion.2.sg +122 -0
- die/db/db/PE/PEncrypt.2.sg +21 -0
- die/db/db/PE/PEnguinCrypt.2.sg +12 -0
- die/db/db/PE/PIMP.1.sg +14 -0
- die/db/db/PE/PKLITE.2.sg +15 -0
- die/db/db/PE/PKSFX.1.sg +14 -0
- die/db/db/PE/PMaker.1.sg +13 -0
- die/db/db/PE/PUNiSHER.2.sg +12 -0
- die/db/db/PE/Pack Master.2.sg +12 -0
- die/db/db/PE/PackageForTheWeb.1.sg +15 -0
- die/db/db/PE/Packanoid.2.sg +12 -0
- die/db/db/PE/Packman.2.sg +18 -0
- die/db/db/PE/Pantaray QSetup.1.sg +29 -0
- die/db/db/PE/Paquet Builder.1.sg +15 -0
- die/db/db/PE/Paquet.1.sg +16 -0
- die/db/db/PE/Patch.1.sg +20 -0
- die/db/db/PE/Pe Ninja.2.sg +12 -0
- die/db/db/PE/Pe123.2.sg +15 -0
- die/db/db/PE/PePack.2.sg +16 -0
- die/db/db/PE/PeX.2.sg +12 -0
- die/db/db/PE/Pelles C.4.sg +13 -0
- die/db/db/PE/Perl.3.sg +91 -0
- die/db/db/PE/PerlApp.1.sg +21 -0
- die/db/db/PE/Petite.2.sg +56 -0
- die/db/db/PE/Phoenix.2.sg +19 -0
- die/db/db/PE/Photo Compiler.2.sg +15 -0
- die/db/db/PE/PolyCrypt PE.2.sg +13 -0
- die/db/db/PE/PolyEnE.2.sg +12 -0
- die/db/db/PE/Power Screen Recorder.1.sg +16 -0
- die/db/db/PE/PowerBASIC.4.sg +13 -0
- die/db/db/PE/Private EXE Protector.2.sg +61 -0
- die/db/db/PE/Protection Plus.1.sg +13 -0
- die/db/db/PE/PureBasic.4.sg +33 -0
- die/db/db/PE/PwdProtect.2.sg +10 -0
- die/db/db/PE/Py2exe.1.sg +16 -0
- die/db/db/PE/PyInstaller.2.sg +71 -0
- die/db/db/PE/PyInstallerHider.1.sg +26 -0
- die/db/db/PE/Python.3.sg +21 -0
- die/db/db/PE/QT installer.1.sg +11 -0
- die/db/db/PE/QT.5.sg +35 -0
- die/db/db/PE/QrYPt0r.2.sg +13 -0
- die/db/db/PE/Quantum.1.sg +17 -0
- die/db/db/PE/QuickPack NT.2.sg +13 -0
- die/db/db/PE/RCryptor.2.sg +39 -0
- die/db/db/PE/RDG Tejon Crypter.2.sg +10 -0
- die/db/db/PE/REVProt.2.sg +13 -0
- die/db/db/PE/RJoiner.1.sg +17 -0
- die/db/db/PE/RLP.2.sg +12 -0
- die/db/db/PE/RLPack.2.sg +47 -0
- die/db/db/PE/RNsetup.1.sg +17 -0
- die/db/db/PE/RPP.1.sg +14 -0
- die/db/db/PE/RTPatch.1.sg +15 -0
- die/db/db/PE/ReNET-pack.2.sg +13 -0
- die/db/db/PE/ReactOS PE file.1.sg +15 -0
- die/db/db/PE/RealBasic.4.sg +24 -0
- die/db/db/PE/Resources.6.sg +19 -0
- die/db/db/PE/RosASM.4.sg +19 -0
- die/db/db/PE/Rust.4.sg +37 -0
- die/db/db/PE/SC Obfuscator.2.sg +12 -0
- die/db/db/PE/SCE installer.1.sg +18 -0
- die/db/db/PE/SDProtector.2.sg +18 -0
- die/db/db/PE/SFXRun.1.sg +14 -0
- die/db/db/PE/SLVc0deProtector.2.sg +21 -0
- die/db/db/PE/STATICSUP.1.sg +14 -0
- die/db/db/PE/STUD.2.sg +12 -0
- die/db/db/PE/SVK Protector.2.sg +22 -0
- die/db/db/PE/SZDD.1.sg +40 -0
- die/db/db/PE/Safedisc.2.sg +12 -0
- die/db/db/PE/Safenet RMS.2.sg +12 -0
- die/db/db/PE/Safengine Shielden.2.sg +36 -0
- die/db/db/PE/ScriptHookV.4.sg +14 -0
- die/db/db/PE/SecuPack.2.sg +13 -0
- die/db/db/PE/SecuROM.2.sg +22 -0
- die/db/db/PE/Secure Shade.2.sg +13 -0
- die/db/db/PE/SerGreen Appacker.2.sg +16 -0
- die/db/db/PE/Setup Factory.1.sg +43 -0
- die/db/db/PE/Setup-Specialist.1.sg +15 -0
- die/db/db/PE/SexCrypt.2.sg +12 -0
- die/db/db/PE/Sexe Crypter.2.sg +12 -0
- die/db/db/PE/SfxCA.1.sg +20 -0
- die/db/db/PE/Shrink Wrap.2.sg +12 -0
- die/db/db/PE/Shrinker.2.sg +27 -0
- die/db/db/PE/SimbiOZ.2.sg +19 -0
- die/db/db/PE/Simple Pack.2.sg +15 -0
- die/db/db/PE/Simple UPX Cryptor.2.sg +17 -0
- die/db/db/PE/SimplePackerByEronana.2.sg +14 -0
- die/db/db/PE/Sixxpack.2.sg +20 -0
- die/db/db/PE/Skater.2.sg +16 -0
- die/db/db/PE/Smart Assembly.2.sg +36 -0
- die/db/db/PE/Smart Install Maker.1.sg +17 -0
- die/db/db/PE/SmokesCrypt.2.sg +12 -0
- die/db/db/PE/Soft Defender.2.sg +20 -0
- die/db/db/PE/SoftProtect.2.sg +13 -0
- die/db/db/PE/SoftSentry.2.sg +16 -0
- die/db/db/PE/Softlocx.1.sg +13 -0
- die/db/db/PE/Software Compress.2.sg +15 -0
- die/db/db/PE/Sony Windows Installer.1.sg +16 -0
- die/db/db/PE/SpASM.4.sg +19 -0
- die/db/db/PE/Special EXE Password Protector.2.sg +12 -0
- die/db/db/PE/Spices .Net.2.sg +34 -0
- die/db/db/PE/Spoon Installer.1.sg +23 -0
- die/db/db/PE/Spoon Studio.2.sg +16 -0
- die/db/db/PE/Squeez SFX.1.sg +15 -0
- die/db/db/PE/Squirrel installer.1.sg +16 -0
- die/db/db/PE/Squishy.2.sg +10 -0
- die/db/db/PE/StarForce.2.sg +55 -0
- die/db/db/PE/Ste@lth PE.2.sg +16 -0
- die/db/db/PE/Steam.2.sg +16 -0
- die/db/db/PE/Steam.4.sg +14 -0
- die/db/db/PE/Stones PE Encryptor.2.sg +22 -0
- die/db/db/PE/Store Installer.1.sg +13 -0
- die/db/db/PE/SwiftView installer.1.sg +14 -0
- die/db/db/PE/Synactis In-The-Box Installer.1.sg +21 -0
- die/db/db/PE/TPP Pack.2.sg +12 -0
- die/db/db/PE/Tages.2.sg +12 -0
- die/db/db/PE/Tarma Installer.1.sg +29 -0
- die/db/db/PE/The Best Cryptor.2.sg +12 -0
- die/db/db/PE/TheArk.2.sg +10 -0
- die/db/db/PE/TheHypers protector.2.sg +11 -0
- die/db/db/PE/Themida.2.sg +86 -0
- die/db/db/PE/Thinstall.2.sg +89 -0
- die/db/db/PE/TrueCrypt-VeraCrypt installer.1.sg +14 -0
- die/db/db/PE/UFI_installer.1.sg +14 -0
- die/db/db/PE/UG2002 Cruncher.2.sg +12 -0
- die/db/db/PE/UPX Inliner.2.sg +12 -0
- die/db/db/PE/UPX Modifier.2.sg +12 -0
- die/db/db/PE/UPX Mutanter.2.sg +21 -0
- die/db/db/PE/UPX Protector.2.sg +12 -0
- die/db/db/PE/UPX lock.2.sg +12 -0
- die/db/db/PE/UPX scrambler.2.sg +20 -0
- die/db/db/PE/UPX shit.2.sg +21 -0
- die/db/db/PE/UPX-Patcher.6.sg +29 -0
- die/db/db/PE/UPX.2.sg +171 -0
- die/db/db/PE/UPXFreak.2.sg +12 -0
- die/db/db/PE/UPXcrypter.2.sg +11 -0
- die/db/db/PE/UPolyX.2.sg +30 -0
- die/db/db/PE/UltraPro.2.sg +18 -0
- die/db/db/PE/UnoPiX.2.sg +27 -0
- die/db/db/PE/VBox.2.sg +15 -0
- die/db/db/PE/VCasm-Protector.2.sg +21 -0
- die/db/db/PE/VMProtect.2.sg +287 -0
- die/db/db/PE/VMProtect_NET.2.sg +54 -0
- die/db/db/PE/VMWare.1.sg +41 -0
- die/db/db/PE/VPacker.2.sg +13 -0
- die/db/db/PE/VaySoft_PDF2EXE.2.sg +16 -0
- die/db/db/PE/VbsToExe.1.sg +29 -0
- die/db/db/PE/Virbox.2.sg +13 -0
- die/db/db/PE/Virtual Pascal.4.sg +14 -0
- die/db/db/PE/Vise.1.sg +16 -0
- die/db/db/PE/Visual Objects.4.sg +12 -0
- die/db/db/PE/Visual Prolog.4.sg +14 -0
- die/db/db/PE/VisualStudio_NET.6.sg +14 -0
- die/db/db/PE/Vulkan.4.sg +14 -0
- die/db/db/PE/WF.Guna.UI2.4.sg +15 -0
- die/db/db/PE/WF.Krypton.4.sg +14 -0
- die/db/db/PE/WF.MetroFramework.4.sg +14 -0
- die/db/db/PE/WF_WPF.MaterialSkin.4.sg +14 -0
- die/db/db/PE/WWPACK.2.sg +11 -0
- die/db/db/PE/Watcom.4.sg +35 -0
- die/db/db/PE/WiX Toolset installer.1.sg +20 -0
- die/db/db/PE/Wibu Codemeter.1.sg +30 -0
- die/db/db/PE/WinACE.1.sg +12 -0
- die/db/db/PE/WinIMP.1.sg +15 -0
- die/db/db/PE/WinImage.1.sg +15 -0
- die/db/db/PE/WinKript.2.sg +12 -0
- die/db/db/PE/WinPatch.1.sg +18 -0
- die/db/db/PE/WinRAR Installer.1.sg +28 -0
- die/db/db/PE/WinRAR.1.sg +18 -0
- die/db/db/PE/WinUpack.2.sg +61 -0
- die/db/db/PE/WinZip.1.sg +44 -0
- die/db/db/PE/Winamp Installer.1.sg +14 -0
- die/db/db/PE/Wind of Crypt.2.sg +12 -0
- die/db/db/PE/Windows Authenticode.7.sg +13 -0
- die/db/db/PE/Windows Installer.1.sg +22 -0
- die/db/db/PE/Wine.3.sg +12 -0
- die/db/db/PE/Wise Installer.1.sg +52 -0
- die/db/db/PE/XCR.2.sg +13 -0
- die/db/db/PE/XComp.2.sg +19 -0
- die/db/db/PE/XPACK.2.sg +17 -0
- die/db/db/PE/Xash.3.sg +18 -0
- die/db/db/PE/Xbase.4.sg +29 -0
- die/db/db/PE/Xenocode Postbuild.2.sg +12 -0
- die/db/db/PE/Xojo.3.sg +29 -0
- die/db/db/PE/Xoreax installer.1.sg +19 -0
- die/db/db/PE/Xtreamlok.2.sg +22 -0
- die/db/db/PE/Xtreme-Protector.2.sg +12 -0
- die/db/db/PE/Yano.2.sg +12 -0
- die/db/db/PE/Yodas Crypter.2.sg +35 -0
- die/db/db/PE/Yodas Protector.2.sg +15 -0
- die/db/db/PE/Yummy Game SoftwareShield.2.sg +17 -0
- die/db/db/PE/Zig.4.sg +20 -0
- die/db/db/PE/Zip SFX.2.sg +63 -0
- die/db/db/PE/ZipCentral SFX.1.sg +16 -0
- die/db/db/PE/Zprotect.2.sg +22 -0
- die/db/db/PE/Zydis.4.sg +14 -0
- die/db/db/PE/_BJFnt.2.sg +18 -0
- die/db/db/PE/_FixDetects.9.sg +24 -0
- die/db/db/PE/_NET Spider.2.sg +14 -0
- die/db/db/PE/_NETZ.2.sg +13 -0
- die/db/db/PE/_PE.0.sg +15 -0
- die/db/db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg +2582 -0
- die/db/db/PE/_denuvoComplete.2.sg +98 -0
- die/db/db/PE/_init +142 -0
- die/db/db/PE/_netshrink.2.sg +25 -0
- die/db/db/PE/aPack.2.sg +26 -0
- die/db/db/PE/arj.6.sg +9 -0
- die/db/db/PE/ass-crypter.2.sg +11 -0
- die/db/db/PE/avast Antivirus installer.1.sg +14 -0
- die/db/db/PE/bambam.2.sg +12 -0
- die/db/db/PE/bbfb.2.sg +22 -0
- die/db/db/PE/beria.2.sg +14 -0
- die/db/db/PE/curl.4.sg +14 -0
- die/db/db/PE/dUP.1.sg +19 -0
- die/db/db/PE/darkeye.1.sg +13 -0
- die/db/db/PE/de4dot.6.sg +20 -0
- die/db/db/PE/dePACK.2.sg +13 -0
- die/db/db/PE/distutils.1.sg +18 -0
- die/db/db/PE/eXPressor.2.sg +47 -0
- die/db/db/PE/ezip.2.sg +14 -0
- die/db/db/PE/gcc.4.sg +14 -0
- die/db/db/PE/hXOR packer.sg +12 -0
- die/db/db/PE/hmimys PE-Pack.2.sg +23 -0
- die/db/db/PE/hmimys Protect.2.sg +18 -0
- die/db/db/PE/iPB Protect.2.sg +12 -0
- die/db/db/PE/inPEct.1.sg +9 -0
- die/db/db/PE/java.3.sg +20 -0
- die/db/db/PE/keygens.1.sg +25 -0
- die/db/db/PE/kkrunchy.2.sg +19 -0
- die/db/db/PE/kkryptor.2.sg +13 -0
- die/db/db/PE/ldc.4.sg +12 -0
- die/db/db/PE/linker.6.sg +100 -0
- die/db/db/PE/mPack.2.sg +15 -0
- die/db/db/PE/mkfPack.2.sg +12 -0
- die/db/db/PE/muckis protector.2.sg +14 -0
- die/db/db/PE/nPack.2.sg +36 -0
- die/db/db/PE/obfus_h.5.sg +15 -0
- die/db/db/PE/obfusheader_h.5.sg +32 -0
- die/db/db/PE/rar.1.sg +16 -0
- die/db/db/PE/rar.6.sg +9 -0
- die/db/db/PE/scr2exe.2.sg +19 -0
- die/db/db/PE/simple_patch.1.sg +16 -0
- die/db/db/PE/sql-server.sg +14 -0
- die/db/db/PE/sqlite.4.sg +14 -0
- die/db/db/PE/sqx.1.sg +19 -0
- die/db/db/PE/tElock.2.sg +81 -0
- die/db/db/PE/tcc.4.sg +42 -0
- die/db/db/PE/virus-njrat-0.7d.7.sg +136 -0
- die/db/db/PE/wxWidgets.5.sg +27 -0
- die/db/db/PE/yzPack.2.sg +26 -0
- die/db/db/PE/zip.6.sg +9 -0
- die/db/db/PE/zlib.4.sg +14 -0
- die/db/db/QtFramework +16 -0
- die/db/db/RosASM +13 -0
- die/db/db/SpASM +8 -0
- die/db/db/ZIP/_init +4 -0
- die/db/db/_init +128 -0
- die/db/db/archive-file +36 -0
- die/db/db/arj +80 -0
- die/db/db/cab +46 -0
- die/db/db/duration +14 -0
- die/db/db/language +33 -0
- die/db/db/python +30 -0
- die/db/db/rar +62 -0
- die/db/db/read +423 -0
- die/db/db/result +27 -0
- die/db/db/result-general +32 -0
- die/db/db/result-minimal +27 -0
- die/db/db/shell-script +24 -0
- die/db/db/wxWidgets +12 -0
- die/db/db/zip-file +92 -0
- die/db/db/zlib +23 -0
- die/db/db_custom/PE/EP.MSVC.4.sg +148 -0
- die/db/db_custom/PE/example.sg +18 -0
- die/db/db_custom/where-is-structure-example.txt +1 -0
- die/die.lib +0 -0
- die.lib +0 -0
- die_python-0.1.0.dist-info/METADATA +327 -0
- die_python-0.1.0.dist-info/RECORD +2836 -0
- die_python-0.1.0.dist-info/WHEEL +5 -0
- die_python-0.1.0.dist-info/licenses/LICENSE +201 -0
- include/die.h +44 -0
|
@@ -0,0 +1,2582 @@
|
|
|
1
|
+
/*
|
|
2
|
+
██████╗ ███████╗███╗ ██╗███████╗██████╗ ██╗ ██████╗
|
|
3
|
+
██╔════╝ ██╔════╝████╗ ██║██╔════╝██╔══██╗██║██╔════╝
|
|
4
|
+
██║ ███╗█████╗ ██╔██╗ ██║█████╗ ██████╔╝██║██║
|
|
5
|
+
██║ ██║██╔══╝ ██║╚██╗██║██╔══╝ ██╔══██╗██║██║
|
|
6
|
+
╚██████╔╝███████╗██║ ╚████║███████╗██║ ██║██║╚██████╗
|
|
7
|
+
╚═════╝ ╚══════╝╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═════╝
|
|
8
|
+
██╗ ██╗ ██╗███████╗██╗ ██╗██████╗ ██╗███████╗████████╗██╗ ██████╗ ██╗
|
|
9
|
+
██╔╝ ██║ ██║██╔════╝██║ ██║██╔══██╗██║██╔════╝╚══██╔══╝██║██╔════╝ ╚██╗
|
|
10
|
+
██╔╝ ███████║█████╗ ██║ ██║██████╔╝██║███████╗ ██║ ██║██║ ╚██╗
|
|
11
|
+
╚██╗ ██╔══██║██╔══╝ ██║ ██║██╔══██╗██║╚════██║ ██║ ██║██║ ██╔╝
|
|
12
|
+
╚██╗ ██║ ██║███████╗╚██████╔╝██║ ██║██║███████║ ██║ ██║╚██████╗ ██╔╝
|
|
13
|
+
╚═╝ ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝╚══════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝
|
|
14
|
+
█████╗ ███╗ ██╗ █████╗ ██╗ ██╗ ██╗███████╗██╗███████╗
|
|
15
|
+
██╔══██╗████╗ ██║██╔══██╗██║ ╚██╗ ██╔╝██╔════╝██║██╔════╝
|
|
16
|
+
███████║██╔██╗ ██║███████║██║ ╚████╔╝ ███████╗██║███████╗
|
|
17
|
+
██╔══██║██║╚██╗██║██╔══██║██║ ╚██╔╝ ╚════██║██║╚════██║
|
|
18
|
+
██║ ██║██║ ╚████║██║ ██║███████╗██║ ███████║██║███████║
|
|
19
|
+
╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝╚══════╝╚═╝ ╚══════╝╚═╝╚══════╝
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
// DIE's signature file
|
|
23
|
+
|
|
24
|
+
// =================== [ ABOUT ] ===================
|
|
25
|
+
// This heuristic analysis will help identify
|
|
26
|
+
// presence of obfuscation the or wrapper
|
|
27
|
+
// tricks through advanced complex checks.
|
|
28
|
+
// Static emulation, signature analysis,
|
|
29
|
+
// smart checks and much more!
|
|
30
|
+
// ================================================
|
|
31
|
+
|
|
32
|
+
// ================== [ DONATE ] ==================
|
|
33
|
+
// Did you like my work? :D Thank you! But what
|
|
34
|
+
// about donation? I'll be very grateful <3
|
|
35
|
+
//
|
|
36
|
+
// * Bitcoin: 1DosXdevPgbaRKJkAJpvf2Jmjip8zC57he
|
|
37
|
+
// * Litecoin: LUCKY777ju5Ea2VmenRuvk75kRUzTfwrHw
|
|
38
|
+
// ================================================
|
|
39
|
+
|
|
40
|
+
// ================= [ CONTACTS ] =================
|
|
41
|
+
// Author: DosX
|
|
42
|
+
// E-Mail: collab@kay-software.ru
|
|
43
|
+
// GitHub: https://github.com/DosX-dev
|
|
44
|
+
// Telegram: @DosX_dev
|
|
45
|
+
// ================================================
|
|
46
|
+
// If I don't respond to email, message to Telegram
|
|
47
|
+
// ================================================
|
|
48
|
+
|
|
49
|
+
// For the script to work correctly, the following
|
|
50
|
+
// official Detect It Easy components are required:
|
|
51
|
+
// "FASM", "RosASM", "SpASM", "FPC", "PE\linker.6.sg",
|
|
52
|
+
// "Microsoft.6.sg", "language"
|
|
53
|
+
|
|
54
|
+
// Please do not read the code out loud unless you have exorcism skills
|
|
55
|
+
|
|
56
|
+
const logType = {
|
|
57
|
+
warning: -2,
|
|
58
|
+
about: -1,
|
|
59
|
+
nothing: 0,
|
|
60
|
+
any: 1,
|
|
61
|
+
net: 2
|
|
62
|
+
},
|
|
63
|
+
heurLabel = "HEUR";
|
|
64
|
+
|
|
65
|
+
var lastOffsetDetected = "0x00";
|
|
66
|
+
|
|
67
|
+
const detect = main;
|
|
68
|
+
|
|
69
|
+
function main() {
|
|
70
|
+
|
|
71
|
+
if (stubForWrongEnvironment()) return null; // 'PE' is undefined
|
|
72
|
+
if (stubForLegacyEngines()) return null; // old DIE version
|
|
73
|
+
|
|
74
|
+
if (PE.isHeuristicScan()) {
|
|
75
|
+
if (!PE.isVerbose()) {
|
|
76
|
+
log(logType.warning, "To get the full heuristic scan result use '--verbose'");
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
log(logType.about, "Generic Heuristic Analysis by DosX (@DosX_dev)");
|
|
80
|
+
|
|
81
|
+
log(logType.nothing, "Scanning has begun!");
|
|
82
|
+
|
|
83
|
+
if (PE.isNET()) {
|
|
84
|
+
scanForObfuscations_NET();
|
|
85
|
+
scanForAntiAnalysis_NET();
|
|
86
|
+
} else {
|
|
87
|
+
scanForObfuscations_Native();
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
scanForPackersAndCryptors_NET_and_Native();
|
|
91
|
+
|
|
92
|
+
if (PE.isVerbose()) {
|
|
93
|
+
scanForLanguages_NET_and_Native();
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// >> Happy end <<
|
|
97
|
+
log(logType.nothing, "Scan completed.");
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
// scanForMaciliousCode_NET_and_Native();
|
|
101
|
+
} else {
|
|
102
|
+
log(logType.warning, "Heuristic scan is disabled. Use '--heuristicscan' to enable");
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
function stubForLegacyEngines() {
|
|
107
|
+
if (typeof PE.isNetObjectPresent === 'undefined') {
|
|
108
|
+
_setResult("DIE-Message", ">>> Update DIE Engine to 3.10 and higher for using Heuristic-analyser by DosX <<<", String(), String());
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
function stubForWrongEnvironment() {
|
|
117
|
+
if (typeof PE === 'undefined') {
|
|
118
|
+
_setResult("DIE-Message", ">>> Wrong environment! 'PE' is undefined. Check DIE-engine for correct installation <<<");
|
|
119
|
+
}
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
function scanForObfuscations_NET() {
|
|
126
|
+
var options = String();
|
|
127
|
+
|
|
128
|
+
var isDetected = Boolean();
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
const isVbNet = isVbNetStandartLibraryPresent();
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
var isEntryPointModified = false;
|
|
137
|
+
|
|
138
|
+
const vbNetEntries = [
|
|
139
|
+
"Main",
|
|
140
|
+
"main",
|
|
141
|
+
"MAIN",
|
|
142
|
+
"MyApplication"
|
|
143
|
+
],
|
|
144
|
+
defaultEntries = [ // like MSIL, C#, C++ NET etc
|
|
145
|
+
"Main",
|
|
146
|
+
"<Main>$", // For programs with top-level operators (C#)
|
|
147
|
+
"mainCRTStartup" // C++ .NET
|
|
148
|
+
]
|
|
149
|
+
|
|
150
|
+
if (!PE.isDll()) {
|
|
151
|
+
if (isVbNet) {
|
|
152
|
+
if (isAllNetReferencesMissing(vbNetEntries)) {
|
|
153
|
+
isEntryPointModified = true;
|
|
154
|
+
}
|
|
155
|
+
} else if (isAllNetReferencesMissing(defaultEntries)) {
|
|
156
|
+
isEntryPointModified = true;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
if (isEntryPointModified) {
|
|
160
|
+
log(logType.net, "No 'Main' method found")
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
if (isEntryPointModified) options += "Modified EP";
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
var isStrangeEpPosition = false;
|
|
170
|
+
|
|
171
|
+
const netMetaHeaders = [
|
|
172
|
+
"~",
|
|
173
|
+
"Strings",
|
|
174
|
+
"US",
|
|
175
|
+
"GUID",
|
|
176
|
+
"Blob"
|
|
177
|
+
];
|
|
178
|
+
|
|
179
|
+
// Specify the default .NET section index
|
|
180
|
+
const defaultNetSection = 0;
|
|
181
|
+
|
|
182
|
+
// Check conditions for a strange entry point position (not for CLR apps)
|
|
183
|
+
if (!PE.isDll() && PE.getNumberOfSections() > 1 && !isClrNET()) {
|
|
184
|
+
// Iterate through .NET metadata headers
|
|
185
|
+
for (var s = 0; s < netMetaHeaders.length; s++) {
|
|
186
|
+
const headerName = netMetaHeaders[s];
|
|
187
|
+
|
|
188
|
+
// Check if the signature is not present in the default .NET section
|
|
189
|
+
if (!PE.isSignatureInSectionPresent(defaultNetSection, "00'#" + headerName + "'00")) {
|
|
190
|
+
isStrangeEpPosition = true;
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
if (isStrangeEpPosition) options += (options.length != 0 ? " + " : String()) + "Strange EP position";
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
var isNativeEntryPointModified = false;
|
|
202
|
+
|
|
203
|
+
if (!PE.isDll() && !isClrNET()) { // not for CLR apps
|
|
204
|
+
if (!PE.is64()) {
|
|
205
|
+
// FF2500????00: jmp dword ptr [ ... ]
|
|
206
|
+
const firstOpCode = getFirstEpAsmOpCode();
|
|
207
|
+
|
|
208
|
+
if (firstOpCode !== "JMP") {
|
|
209
|
+
if (PE.VAToOffset(PE.getAddressOfEntryPoint()) != -1) {
|
|
210
|
+
log(logType.net, "Very strange EP pattern: " + getEpAsmPattern(onlyOpCodes = true, numberOf = 4).split("|").join(" .. "));
|
|
211
|
+
} else {
|
|
212
|
+
log(logType.net, "No native entry point")
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
isNativeEntryPointModified = true;
|
|
216
|
+
}
|
|
217
|
+
} else { // AMD64
|
|
218
|
+
if (PE.VAToOffset(PE.getAddressOfEntryPoint()) != 0x00) {
|
|
219
|
+
isNativeEntryPointModified = true;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
if (isNativeEntryPointModified) options += (options.length != 0 ? " + " : String()) + "Modified native EP";
|
|
225
|
+
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
var isDosMessageModified = false;
|
|
230
|
+
|
|
231
|
+
// Check if the specified DOS message is not found in the DOS stub
|
|
232
|
+
if (PE.findSignature(PE.getDosStubOffset(), PE.getDosStubSize(), "'This program cannot be run in DOS mode.'") === -1) {
|
|
233
|
+
log(logType.net, "DOS-stub modified!");
|
|
234
|
+
isDosMessageModified = true;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
if (isDosMessageModified) options += (options.length != 0 ? " + " : String()) + "Modified DOS";
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
var strangeSections = false;
|
|
243
|
+
|
|
244
|
+
const badChars = '_-=+~!@#$%^&*()"№;%:?*():;,/\\|\'`<>.0123456789'; // Very very bad!
|
|
245
|
+
|
|
246
|
+
// Check conditions for strange sections
|
|
247
|
+
if (PE.getNumberOfSections() > (!isClrNET() ? 6 : 10) || !PE.isSectionNamePresent(".text")) { strangeSections = true; } else {
|
|
248
|
+
// Iterate through each section
|
|
249
|
+
for (var i = 0; i < PE.getNumberOfSections() && !strangeSections; i++) {
|
|
250
|
+
const sectionName = PE.getSectionName(i);
|
|
251
|
+
|
|
252
|
+
// Check if the first character is not "." and the length of name is less than 3
|
|
253
|
+
if (sectionName[0] !== "." && sectionName.length < 3) {
|
|
254
|
+
strangeSections = true;
|
|
255
|
+
break;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// Iterate through characters after "."
|
|
259
|
+
// Check if the character is in the badChars list
|
|
260
|
+
for (var d = 0; d < badChars.length && !strangeSections; d++) {
|
|
261
|
+
if (sectionName.substr(1, sectionName.length).indexOf(badChars[d]) !== -1) {
|
|
262
|
+
strangeSections = true;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
if (strangeSections) options += (options.length != 0 ? " + " : String()) + "Strange sections";
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
const opCodes = new NetOpCodes();
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
// A popular way to obfuscate numbers/booleans
|
|
279
|
+
var isIntConfusionPresent = false;
|
|
280
|
+
|
|
281
|
+
const intConfusionXorPattern = opCodes.ldc_i4 + opCodes.ldc_i4 + opCodes.xor + opCodes.ldc_i4;
|
|
282
|
+
|
|
283
|
+
if (validateNetByteCode(intConfusionXorPattern)) {
|
|
284
|
+
if (validateNetByteCode( // samples by: Inx Obfuscator
|
|
285
|
+
intConfusionXorPattern +
|
|
286
|
+
(opCodes.bne_un_s + opCodes.ldc_i4_2 + opCodes.stloc_0 + opCodes.sizeof + opCodes.add)
|
|
287
|
+
) ||
|
|
288
|
+
validateNetByteCode( // samples by: MindLated, NetShield
|
|
289
|
+
intConfusionXorPattern +
|
|
290
|
+
(opCodes.bne_un + opCodes.ldc_i4 + opCodes.stloc + opCodes.sizeof + opCodes.add)
|
|
291
|
+
) ||
|
|
292
|
+
validateNetByteCode( // samples by: VavilonProtect
|
|
293
|
+
intConfusionXorPattern +
|
|
294
|
+
(opCodes.bne_un + opCodes.ldc_i4_2 + opCodes.stloc_s + opCodes.sizeof + opCodes.add)
|
|
295
|
+
)
|
|
296
|
+
) {
|
|
297
|
+
log(logType.net, "Int confusion detected! Offset: " + lastOffsetDetected);
|
|
298
|
+
isIntConfusionPresent = true;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
if (isIntConfusionPresent) options += (options.length != 0 ? " + " : String()) + "Int confusion";
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
// Virtualization is a method of protection in which some code segments are rewritten into instructions inherent in the built-in virtual machine and executed by it
|
|
308
|
+
var isVirtualizationPresent = false;
|
|
309
|
+
|
|
310
|
+
if (
|
|
311
|
+
isAllNetReferencesPresent(
|
|
312
|
+
references = [
|
|
313
|
+
"System.Reflection", // System.Reflection.dll
|
|
314
|
+
"GetILGenerator", // MSIL: 'System.Reflection.Emit.DynamicMethod::GetILGenerator()'
|
|
315
|
+
"BeginInvoke",
|
|
316
|
+
"EndInvoke",
|
|
317
|
+
"OpCode" // MSIL: 'System.Reflection.Emit.OpCode'
|
|
318
|
+
]
|
|
319
|
+
) &&
|
|
320
|
+
(
|
|
321
|
+
PE.isNetObjectPresent("Ldarg_0") || // MSIL: 'System.Reflection.Emit.OpCodes.Ldarg_0'
|
|
322
|
+
PE.isNetObjectPresent("CreateDelegate") // MSIL: 'System.Delegate.CreateDelegate'
|
|
323
|
+
) && !isFrameworkComponent()
|
|
324
|
+
) {
|
|
325
|
+
isVirtualizationPresent = true;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
if (isVirtualizationPresent) options += (options.length != 0 ? " + " : String()) + "Virtualization";
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
// Hiding calls using delegate tricks
|
|
334
|
+
var callsEncrypt = false;
|
|
335
|
+
|
|
336
|
+
if (
|
|
337
|
+
isAllNetReferencesPresent(
|
|
338
|
+
references = [
|
|
339
|
+
"GetTypeFromHandle", // MSIL: 'System.Type::GetTypeFromHandle( ... )'
|
|
340
|
+
"BinaryReader", // MSIL: 'System.IO.BinaryReader'
|
|
341
|
+
"CreateDelegate", // MSIL: '[Delegate].CreateDelegate'
|
|
342
|
+
"MakeByRefType", // MSIL: 'System.Type::MakeByRefType()'
|
|
343
|
+
"DynamicMethod" // MSIL: 'System.Reflection.Emit.DynamicMethod'
|
|
344
|
+
]
|
|
345
|
+
) && !isFrameworkComponent()
|
|
346
|
+
) {
|
|
347
|
+
callsEncrypt = true;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
if (callsEncrypt) options += (options.length != 0 ? " + " : String()) + "Calls encrypt";
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
// https://learn.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.suppressildasmattribute
|
|
356
|
+
var isAntiIldasmPresent = false;
|
|
357
|
+
|
|
358
|
+
if (validateNetObject("SuppressIldasmAttribute")) {
|
|
359
|
+
isAntiIldasmPresent = true;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
if (isAntiIldasmPresent) options += (options.length != 0 ? " + " : String()) + "Anti-ILDASM";
|
|
363
|
+
|
|
364
|
+
|
|
365
|
+
|
|
366
|
+
|
|
367
|
+
// Anti de4dot via inheritance
|
|
368
|
+
var isAntiDe4dotPresent = false;
|
|
369
|
+
|
|
370
|
+
if (
|
|
371
|
+
validateSignature("'Form'******00'Form'******00'Form'******00") || // samples by: NetShield
|
|
372
|
+
validateNetObject("Form0") // samples by: MindLated
|
|
373
|
+
) {
|
|
374
|
+
isAntiDe4dotPresent = true;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
if (isAntiDe4dotPresent) options += (options.length != 0 ? " + " : String()) + "Anti-de4dot";
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
|
|
381
|
+
|
|
382
|
+
// An obfuscation method in which calli is used instead of regular calls
|
|
383
|
+
var isCalliInvokesPresent = false;
|
|
384
|
+
|
|
385
|
+
if (validateNetByteCode( // samples by: MindLated
|
|
386
|
+
opCodes.setStrict(opCodes.ldftn, "** ?? 00 0A") +
|
|
387
|
+
opCodes.setStrict(opCodes.calli, "** 00 00 11")
|
|
388
|
+
) ||
|
|
389
|
+
validateNetByteCode( // samples by: ArmDot, DarksProtector
|
|
390
|
+
opCodes.idelem_i +
|
|
391
|
+
opCodes.setStrict(opCodes.calli, "** 00 00 11")
|
|
392
|
+
)) {
|
|
393
|
+
log(logType.net, "Calli invokes detected! Offset: " + lastOffsetDetected);
|
|
394
|
+
isCalliInvokesPresent = true;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
if (isCalliInvokesPresent) options += (options.length != 0 ? " + " : String()) + "Calli invokes";
|
|
398
|
+
|
|
399
|
+
|
|
400
|
+
|
|
401
|
+
|
|
402
|
+
var isLdftnPointersPresent = false;
|
|
403
|
+
|
|
404
|
+
if (validateNetByteCode(
|
|
405
|
+
opCodes.nop + opCodes.setStrict(opCodes.ldftn, "** 00 00 06") + opCodes.stelem_i
|
|
406
|
+
) ||
|
|
407
|
+
validateNetByteCode(
|
|
408
|
+
opCodes.nop + opCodes.setStrict(opCodes.ldftn, "** 00 00 0A") + opCodes.stelem_i
|
|
409
|
+
) ||
|
|
410
|
+
validateNetByteCode( // samples by: Quantum (private)
|
|
411
|
+
opCodes.setStrict(opCodes.ldftn, "** 00 00 0A") +
|
|
412
|
+
opCodes.setStrict(opCodes.calli, "** 00 00 11")
|
|
413
|
+
)) {
|
|
414
|
+
log(logType.net, "Ldftn pointers method-obfuscation detected! Offset: " + lastOffsetDetected);
|
|
415
|
+
isLdftnPointersPresent = true;
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
if (isLdftnPointersPresent) options += (options.length != 0 ? " + " : String()) + "Ldftn pointers";
|
|
419
|
+
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
// Turns the code into spaghetti by splitting it into blocks that it executes depending on the situation
|
|
424
|
+
var isCtrlFlowPresent = false;
|
|
425
|
+
|
|
426
|
+
if (validateNetByteCode( // samples by: ConfuserEx
|
|
427
|
+
opCodes.nop + opCodes.ldloc_0 + opCodes.ldc_i4 + opCodes.mul + opCodes.ldc_i4 + opCodes.xor + opCodes.br_s +
|
|
428
|
+
opCodes.nop + opCodes.ldloc_0 + opCodes.ldc_i4 + opCodes.mul + opCodes.ldc_i4 + opCodes.xor + opCodes.br_s
|
|
429
|
+
) ||
|
|
430
|
+
validateNetByteCode( // samples by: ConfuserEx (neo mod)
|
|
431
|
+
opCodes.ldc_i4 + opCodes.ldc_i4 + opCodes.xor + opCodes.dup + opCodes.stloc_0 + opCodes.ldc_i4_3 + opCodes.rem_un + opCodes.switch__nobody
|
|
432
|
+
) ||
|
|
433
|
+
validateNetByteCode( // samples by: .NET Reactor (v6.9.8)
|
|
434
|
+
opCodes.setStrict(opCodes.ldc_i4, "00 00 00 00") + opCodes.br + opCodes.br + opCodes.ldloc
|
|
435
|
+
) ||
|
|
436
|
+
validateNetByteCode( // samples by: .NET Reactor
|
|
437
|
+
opCodes.ldsfld + opCodes.brfalse + opCodes.pop +
|
|
438
|
+
opCodes.setStrict(opCodes.ldc_i4, "01 00 00 00") + // MSIL: 'ldc.4 1'
|
|
439
|
+
opCodes.br + opCodes.nop
|
|
440
|
+
) ||
|
|
441
|
+
validateNetByteCode( // samples by: .NET Reactor
|
|
442
|
+
opCodes.setNullValue(opCodes.ldc_i4) +
|
|
443
|
+
opCodes.ldsfld + opCodes.brtrue + opCodes.pop + opCodes.ldc_i4 +
|
|
444
|
+
opCodes.br
|
|
445
|
+
) ||
|
|
446
|
+
validateNetByteCode( // samples by: .NET Reactor (legacy~~)
|
|
447
|
+
opCodes.stloc + opCodes.ldloc +
|
|
448
|
+
opCodes.setStrict(opCodes.switch__nobody, "** ** ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 00") +
|
|
449
|
+
opCodes.ldc_i4 + opCodes.br
|
|
450
|
+
) ||
|
|
451
|
+
validateNetByteCode( // samples by: MindLated, NetShield
|
|
452
|
+
opCodes.setNullValue(opCodes.ldc_i4) + // MSIL: 'ldc.i4 0'
|
|
453
|
+
opCodes.stloc + opCodes.br + opCodes.nop + opCodes.ldloc +
|
|
454
|
+
opCodes.setStrict(opCodes.ldc_i4, "01 00 00 00") + // MSIL: 'ldc.i4 1'
|
|
455
|
+
opCodes.ceq + opCodes.brfalse
|
|
456
|
+
) ||
|
|
457
|
+
validateNetByteCode( // samples by: Rose Obfuscator
|
|
458
|
+
opCodes.setNullValue(opCodes.ldc_i4) + // MSIL: 'ldc.i4'
|
|
459
|
+
opCodes.stloc + opCodes.br + opCodes.nop + opCodes.ldloc + opCodes.ldc_i4 + opCodes.ceq + opCodes.brfalse
|
|
460
|
+
) ||
|
|
461
|
+
validateNetByteCode( // samples by: Smart Assembly
|
|
462
|
+
opCodes.ldc_i4 + opCodes.br + opCodes.ldloc_s + opCodes.ldc_i4_s + opCodes.ldc_i4_0 + opCodes.stelem_i1 +
|
|
463
|
+
opCodes.ldc_i4 + opCodes.br
|
|
464
|
+
) ||
|
|
465
|
+
validateNetByteCode( // samples by: ConfuserEx (Beds mod)
|
|
466
|
+
opCodes.ldc_i4 + opCodes.ldc_i4 + opCodes._unknown + opCodes.ldc_i4 + opCodes._unknown + opCodes.stloc_0 + opCodes.nop + opCodes.ldloc_0 +
|
|
467
|
+
opCodes.ldc_i4 + opCodes.ldc_i4 + opCodes._unknown + opCodes.ldc_i4 + opCodes._unknown + opCodes.ceq + opCodes.brfalse_s
|
|
468
|
+
) ||
|
|
469
|
+
validateNetByteCode( // samples by: DotNetPatcher
|
|
470
|
+
opCodes.setStrict(opCodes.stloc_s, "05") + opCodes.nop + opCodes.ldloc_s + opCodes._unknown + opCodes.ceq + opCodes.brfalse_s + opCodes._unknown +
|
|
471
|
+
opCodes.setStrict(opCodes.stloc_s, "05") + opCodes.nop + opCodes.ldloc_s + opCodes._unknown + opCodes.ceq + opCodes.brfalse_s
|
|
472
|
+
) ||
|
|
473
|
+
validateNetByteCode( // samples by: VMProtect
|
|
474
|
+
opCodes.ldloc_0 + opCodes.setStrict(opCodes.ldc_i4, "?? ** ** **") + opCodes._unknown + opCodes.stloc_0 +
|
|
475
|
+
opCodes.ldloc_0 + opCodes.setStrict(opCodes.ldc_i4, "?? ** ** **") + opCodes.xor + opCodes.stloc_0
|
|
476
|
+
) ||
|
|
477
|
+
validateNetByteCode( // samples by: VMProtect
|
|
478
|
+
opCodes.setStrict(opCodes.ldc_i4, "?? ** ** **") + opCodes._unknown + opCodes.stloc_0 + opCodes.setStrict(opCodes.ldftn, "** ?? ?? ??")
|
|
479
|
+
)
|
|
480
|
+
) {
|
|
481
|
+
log(logType.net, "Control flow obfuscation detected! Offset: " + lastOffsetDetected);
|
|
482
|
+
isCtrlFlowPresent = true;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
if (isCtrlFlowPresent) options += (options.length != 0 ? " + " : String()) + "Ctrl flow";
|
|
486
|
+
|
|
487
|
+
|
|
488
|
+
const afterCtorOffset = PE.findSignature(PE.getDosStubOffset() + PE.getDosStubSize(), PE.getSize() - PE.getOverlaySize(), "'<Module>'00**") + 8;
|
|
489
|
+
|
|
490
|
+
|
|
491
|
+
// Indicates that the file uses short object names. Typically this indicates the presence of an obfuscation
|
|
492
|
+
// There are two ways to detect short names - find one-letter objects or just use signature mask at Ctor offset :D
|
|
493
|
+
|
|
494
|
+
var isShortNamesPresent = false;
|
|
495
|
+
|
|
496
|
+
|
|
497
|
+
if (PE.compare("00**00**00", afterCtorOffset) ||
|
|
498
|
+
PE.compare("00****00****00****00", afterCtorOffset) ||
|
|
499
|
+
PE.compare("00******00******00******00", afterCtorOffset) ||
|
|
500
|
+
PE.compare("00********00********00********00", afterCtorOffset) ||
|
|
501
|
+
PE.compare("00****00****00", afterCtorOffset) ||
|
|
502
|
+
PE.compare("00****00**00", afterCtorOffset) ||
|
|
503
|
+
PE.compare("00**00****00", afterCtorOffset)) {
|
|
504
|
+
log(logType.net, "Short names detected! (mask)");
|
|
505
|
+
isShortNamesPresent = true;
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
if (!isShortNamesPresent && PE.compare("00**00", afterCtorOffset)) { // second way :D
|
|
509
|
+
var shortNamesFound = 0;
|
|
510
|
+
|
|
511
|
+
const chars = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm";
|
|
512
|
+
for (var i = 1; i < chars.length && !isShortNamesPresent; i++) {
|
|
513
|
+
if (PE.isNetObjectPresent(chars[i])) {
|
|
514
|
+
shortNamesFound++;
|
|
515
|
+
log(logType.net, "Short name found: '" + chars[i] + "' (" + shortNamesFound + "/20)");
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
if (shortNamesFound === 20) {
|
|
519
|
+
isShortNamesPresent = true;
|
|
520
|
+
}
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
if (isShortNamesPresent) options += (options.length != 0 ? " + " : String()) + "Short names";
|
|
525
|
+
|
|
526
|
+
|
|
527
|
+
|
|
528
|
+
|
|
529
|
+
var badNamings = false;
|
|
530
|
+
|
|
531
|
+
var buffer = "";
|
|
532
|
+
|
|
533
|
+
// get next 0x12c bytes after <Module> .ctor
|
|
534
|
+
for (var i = 0; i < 0x12c; i++) {
|
|
535
|
+
var currentByte = PE.readByte(afterCtorOffset + i).toString(16);
|
|
536
|
+
|
|
537
|
+
if (currentByte === '0') currentByte += '0';
|
|
538
|
+
|
|
539
|
+
buffer += currentByte;
|
|
540
|
+
buffer += ' ';
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
var bufferString = String();
|
|
544
|
+
|
|
545
|
+
// 0x00 to [0x20, 0x20, 0x20]
|
|
546
|
+
const bufferArray = replaceAllInString(buffer, '00 ', '20 20 20 ').split(' ');
|
|
547
|
+
|
|
548
|
+
// buffer to a string
|
|
549
|
+
for (var i = 0; i < bufferArray.length; i++)
|
|
550
|
+
bufferString += String.fromCharCode(parseInt(bufferArray[i], 16));
|
|
551
|
+
|
|
552
|
+
|
|
553
|
+
const patternsToExplore = bufferString.split(" ");
|
|
554
|
+
|
|
555
|
+
var strangePatternsCounter = 0;
|
|
556
|
+
|
|
557
|
+
for (var i = 0; i < patternsToExplore.length && !badNamings; i++) {
|
|
558
|
+
|
|
559
|
+
const currentStringPattern = patternsToExplore[i];
|
|
560
|
+
|
|
561
|
+
if (currentStringPattern.indexOf("<") === -1 && currentStringPattern.match(/^(?=\d|[a-z])(?=.*[a-z]\d[a-z])(?=(?:.*\d){4,})/i))
|
|
562
|
+
strangePatternsCounter++;
|
|
563
|
+
|
|
564
|
+
if (strangePatternsCounter > 4)
|
|
565
|
+
badNamings = true;
|
|
566
|
+
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
if (badNamings) options += (options.length != 0 ? " + " : String()) + "Bad namings";
|
|
570
|
+
|
|
571
|
+
|
|
572
|
+
|
|
573
|
+
|
|
574
|
+
// AntiTamper protects the file from modification
|
|
575
|
+
var isAntiTamperPresent = false;
|
|
576
|
+
|
|
577
|
+
if (
|
|
578
|
+
validateNetUnicodeString(" is tampered.") || // samples by: .NET Reactor
|
|
579
|
+
validateNetUnicodeString("ping 127.0.0.1 > nul") || // samples by: ConfuserEx (Trinity, SkiDzEx like)
|
|
580
|
+
validateNetUnicodeString("/C ping 1.1.1.1 -n 1 -w 3000 > Nul & Del \"") || // samples by: MindLated
|
|
581
|
+
validateNetUnicodeString( // samples by: ConfuserEx
|
|
582
|
+
opCodes.ldloc_s + opCodes.ldc_i4_0 + opCodes.ldloc_s + opCodes.ldc_i4_0 + opCodes.ldelem_u4 + opCodes.ldloc_s + opCodes.ldc_i4_0 + opCodes.ldelem_u4 + opCodes._unknown + opCodes.stelem_i4 +
|
|
583
|
+
opCodes.ldloc_s + opCodes.ldc_i4_1 + opCodes.ldloc_s + opCodes.ldc_i4_1 + opCodes.ldelem_u4 + opCodes.ldloc_s + opCodes.ldc_i4_1 + opCodes.ldelem_u4 + opCodes._unknown + opCodes.stelem_i4 +
|
|
584
|
+
opCodes.ldloc_s + opCodes.ldc_i4_2 + opCodes.ldloc_s + opCodes.ldc_i4_2 + opCodes.ldelem_u4 + opCodes.ldloc_s + opCodes.ldc_i4_2 + opCodes.ldelem_u4 + opCodes._unknown + opCodes.stelem_i4 +
|
|
585
|
+
opCodes.ldloc_s + opCodes.ldc_i4_3 + opCodes.ldloc_s + opCodes.ldc_i4_3 + opCodes.ldelem_u4 + opCodes.ldloc_s + opCodes.ldc_i4_3 + opCodes.ldelem_u4 + opCodes._unknown + opCodes.stelem_i4 +
|
|
586
|
+
opCodes.ldloc_s + opCodes.ldc_i4_4 + opCodes.ldloc_s + opCodes.ldc_i4_4 + opCodes.ldelem_u4 + opCodes.ldloc_s + opCodes.ldc_i4_4 + opCodes.ldelem_u4 + opCodes._unknown + opCodes.stelem_i4
|
|
587
|
+
) ||
|
|
588
|
+
validateNetByteCode( // samples: ConfuserEx (Beds mod, private)
|
|
589
|
+
opCodes.ldloc_s + opCodes._unknown + opCodes.shr_un + opCodes.ldloc_s + opCodes.ldc_i4_s + opCodes.shl + opCodes.or + opCodes.stloc_s +
|
|
590
|
+
opCodes.ldloc_s + opCodes._unknown + opCodes.shr_un + opCodes.ldloc_s + opCodes.ldc_i4_s + opCodes.shl + opCodes.or + opCodes.stloc_s +
|
|
591
|
+
opCodes.ldloc_s + opCodes._unknown + opCodes.shr_un + opCodes.ldloc_s + opCodes.ldc_i4_s + opCodes.shl + opCodes.or + opCodes.stloc_s
|
|
592
|
+
)
|
|
593
|
+
) {
|
|
594
|
+
log(logType.net, "Anti-tamper detected!");
|
|
595
|
+
isAntiTamperPresent = true;
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
if (isAntiTamperPresent) options += (options.length != 0 ? " + " : String()) + "Anti-tamper";
|
|
599
|
+
|
|
600
|
+
|
|
601
|
+
|
|
602
|
+
|
|
603
|
+
// If in the assembly you can find a second object starting with “<Module>”, then this is a fakeee!
|
|
604
|
+
var isModuleCtorMultiple = false;
|
|
605
|
+
|
|
606
|
+
var currentCtorOffset = PE.findSignature(PE.getDosStubOffset() + PE.getDosStubSize(), PE.getSize() - PE.getOverlaySize(), "00'<Module>'00");
|
|
607
|
+
|
|
608
|
+
if (currentCtorOffset != -1) {
|
|
609
|
+
var secondCtorNameOffset = PE.findSignature(currentCtorOffset + 10, PE.getSize() - PE.getOverlaySize(), "'<Module>'");
|
|
610
|
+
|
|
611
|
+
if (secondCtorNameOffset != -1 && PE.readByte(secondCtorNameOffset + 8) != 0x00) {
|
|
612
|
+
log(logType.net, "Fake <Module> detected! Offset: 0x" + Number(secondCtorNameOffset).toString(16));
|
|
613
|
+
isModuleCtorMultiple = true;
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
|
|
617
|
+
if (isModuleCtorMultiple) options += (options.length != 0 ? " + " : String()) + "Fake .cctor name";
|
|
618
|
+
|
|
619
|
+
|
|
620
|
+
|
|
621
|
+
|
|
622
|
+
// Detects the use of unusual mathematical expressions that would be simplified by the compiler. For example, an expression like "912874 + 39188124^834"
|
|
623
|
+
var isMutationsPresent = false;
|
|
624
|
+
|
|
625
|
+
const mathOpCodes = [
|
|
626
|
+
opCodes.add, opCodes.sub,
|
|
627
|
+
opCodes.mul, opCodes.div,
|
|
628
|
+
opCodes.xor, opCodes.shr,
|
|
629
|
+
opCodes.shl, opCodes.or,
|
|
630
|
+
opCodes.not, opCodes.and
|
|
631
|
+
];
|
|
632
|
+
|
|
633
|
+
const mathTemplates = [ // %s = math opcode
|
|
634
|
+
opCodes.ldc_i4 + opCodes.ldc_i4 + "%s" + opCodes.stloc, // samples by: .NET Reactor
|
|
635
|
+
opCodes.ldc_i4 + opCodes.ldc_i4 + "%s" + opCodes.ldc_i4 + opCodes.add, // samples by: ConfuserEx (Beds mod)
|
|
636
|
+
opCodes.ldloc_1 + opCodes.ldc_i4 + opCodes.ldc_i4 + "%s" + opCodes.ldc_i4 + opCodes.ldc_i4, // samples by: SkiDzEX
|
|
637
|
+
opCodes.ldloc + opCodes.ldc_i4 + opCodes.ldc_i4 + opCodes.ldc_i4 + "%s" + opCodes.stelem_i1, // samples by: .NET Reactor
|
|
638
|
+
opCodes.ldc_i4 + opCodes.ldc_i4 + "%s" + opCodes.br_s // samples by: [Unknown protector, only samples]
|
|
639
|
+
];
|
|
640
|
+
|
|
641
|
+
for (var y = 0; y < mathTemplates.length && !isMutationsPresent; y++) {
|
|
642
|
+
const template = mathTemplates[y];
|
|
643
|
+
|
|
644
|
+
for (var e = 0; e < mathOpCodes.length && !isMutationsPresent; e++) {
|
|
645
|
+
|
|
646
|
+
if (e == 0 && !validateNetByteCode(template.replace("%s", opCodes._unknown))) break; // No math mutations
|
|
647
|
+
|
|
648
|
+
const pattern = template.replace("%s", mathOpCodes[e]);
|
|
649
|
+
|
|
650
|
+
if (validateNetByteCode(pattern)) {
|
|
651
|
+
log(logType.net, "Math mutations detected! Offset: " + lastOffsetDetected);
|
|
652
|
+
isMutationsPresent = true;
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
if (isMutationsPresent) options += (options.length != 0 ? " + " : String()) + "Math mutations";
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
|
|
661
|
+
|
|
662
|
+
// VB NET apps with resources only
|
|
663
|
+
|
|
664
|
+
var isStringsEncryptionPresent = false;
|
|
665
|
+
|
|
666
|
+
if (isVbNet) {
|
|
667
|
+
if (PE.isNetObjectPresent("Resources") && !validateGlobalUnicodeString(".Resources")) {
|
|
668
|
+
isStringsEncryptionPresent = true;
|
|
669
|
+
}
|
|
670
|
+
}
|
|
671
|
+
|
|
672
|
+
if (isStringsEncryptionPresent) options += (options.length != 0 ? " + " : String()) + "Strings encryption";
|
|
673
|
+
|
|
674
|
+
|
|
675
|
+
|
|
676
|
+
|
|
677
|
+
// A type of obfuscation of numbers in which they are inverted several times from positive to negative and vice versa...
|
|
678
|
+
var isMathInversionsPresent = false;
|
|
679
|
+
|
|
680
|
+
if (validateNetByteCode(opCodes.ldc_i4 + opCodes.not) && (
|
|
681
|
+
validateNetByteCode( // ~(-(~(-(~(-(~(-( num ))))))))
|
|
682
|
+
opCodes.ldc_i4 +
|
|
683
|
+
opCodes.not + opCodes.neg + opCodes.not + opCodes.neg +
|
|
684
|
+
opCodes.not + opCodes.neg + opCodes.not + opCodes.neg
|
|
685
|
+
) ||
|
|
686
|
+
validateNetByteCode( // ~(~(-(-(~(~( num ))))))
|
|
687
|
+
opCodes.ldc_i4 +
|
|
688
|
+
opCodes.not + opCodes.not + opCodes.neg + opCodes.neg +
|
|
689
|
+
opCodes.not + opCodes.not
|
|
690
|
+
) ||
|
|
691
|
+
validateNetByteCode( // ~(-(~(~(-(-( num ))))))
|
|
692
|
+
opCodes.ldc_i4 +
|
|
693
|
+
opCodes.not + opCodes.neg + opCodes.not + opCodes.not +
|
|
694
|
+
opCodes.neg + opCodes.neg
|
|
695
|
+
) ||
|
|
696
|
+
validateNetByteCode( // ~(-(~(-(~(~( num ))))))
|
|
697
|
+
opCodes.ldc_i4 +
|
|
698
|
+
opCodes.not + opCodes.neg + opCodes.not + opCodes.neg +
|
|
699
|
+
opCodes.not + opCodes.not
|
|
700
|
+
) ||
|
|
701
|
+
validateNetByteCode( // ~(-(~(-(~(-( num ))))))
|
|
702
|
+
opCodes.ldc_i4 +
|
|
703
|
+
opCodes.not + opCodes.neg + opCodes.not + opCodes.neg +
|
|
704
|
+
opCodes.not + opCodes.neg
|
|
705
|
+
)
|
|
706
|
+
)) {
|
|
707
|
+
log(logType.net, "Math inversions detected, offset " + lastOffsetDetected);
|
|
708
|
+
isMathInversionsPresent = true;
|
|
709
|
+
}
|
|
710
|
+
|
|
711
|
+
if (isMathInversionsPresent) options += (options.length != 0 ? " + " : String()) + "Math inversions";
|
|
712
|
+
|
|
713
|
+
|
|
714
|
+
|
|
715
|
+
|
|
716
|
+
// A technique that allows you to avoid code decompilation. dnSpy gives a parsing error when trying to open such a file
|
|
717
|
+
var invalidOpCodes = false;
|
|
718
|
+
|
|
719
|
+
if (
|
|
720
|
+
/* validateNetByteCode( // samples by: SugarGuard
|
|
721
|
+
opCodes.setStrict(opCodes.box, "?? 00 00 01") + opCodes.ret
|
|
722
|
+
) || */
|
|
723
|
+
validateNetByteCode( // samples by: ConfuserEx (Beds mod)
|
|
724
|
+
opCodes.setStrict(opCodes.calli, "FF FF FF FF") + opCodes.setStrict(opCodes.sizeof, "FF FF FF FF")
|
|
725
|
+
)
|
|
726
|
+
) {
|
|
727
|
+
log(logType, "Invalid OpCodes detected, offset " + lastOffsetDetected);
|
|
728
|
+
invalidOpCodes = true;
|
|
729
|
+
}
|
|
730
|
+
|
|
731
|
+
if (invalidOpCodes) options += (options.length != 0 ? " + " : String()) + "Invalid OpCodes";
|
|
732
|
+
|
|
733
|
+
|
|
734
|
+
|
|
735
|
+
|
|
736
|
+
const obfuscatorsAttributes = [
|
|
737
|
+
"Xenocode.Client.Attributes.AssemblyAttributes.ProcessedByXenocode",
|
|
738
|
+
"CryptoObfuscator.ProtectedWithCryptoObfuscatorAttribute",
|
|
739
|
+
"SecureTeam.Attributes.ObfuscatedByAgileDotNetAttribute",
|
|
740
|
+
"Xenocode.Client.Attributes.AssemblyAttributes",
|
|
741
|
+
"SmartAssembly.Attributes.PoweredByAttribute",
|
|
742
|
+
"ObfuscatedByAgileDotNetAttribute",
|
|
743
|
+
"NineRays.Obfuscator.Evaluation",
|
|
744
|
+
"ObfuscatedByCliSecureAttribute",
|
|
745
|
+
"BabelObfuscatorAttribute",
|
|
746
|
+
"AsStrongAsFuckAttribute",
|
|
747
|
+
"ProtectedByDotnetsafer",
|
|
748
|
+
"Macrobject.Obfuscator",
|
|
749
|
+
"DotfuscatorAttribute",
|
|
750
|
+
"CodeWallTrialVersion",
|
|
751
|
+
"ConfusedByAttribute",
|
|
752
|
+
"ObfuscatedByGoliath",
|
|
753
|
+
"NETSpider.Attribute",
|
|
754
|
+
"NineRays.Obfuscator",
|
|
755
|
+
"PoweredByAttribute", // Smart Assembly
|
|
756
|
+
"RustemSoft.Skater",
|
|
757
|
+
"BabelAttribute",
|
|
758
|
+
"MRuntime3.dll", // Maxtocode
|
|
759
|
+
"YanoAttribute",
|
|
760
|
+
"EMyPID_8234_",
|
|
761
|
+
"ZYXDNGuarder",
|
|
762
|
+
"SkiDzEX", // ConfuserEx based
|
|
763
|
+
"Sixxpack",
|
|
764
|
+
"____KILL", // CodeVeil
|
|
765
|
+
"Reactor", // Fake .NET Reactor
|
|
766
|
+
];
|
|
767
|
+
|
|
768
|
+
var isFakeSignaturesPresent = false;
|
|
769
|
+
|
|
770
|
+
var isWatermarkPresent = false;
|
|
771
|
+
|
|
772
|
+
var signaturesCounter = 0;
|
|
773
|
+
|
|
774
|
+
var obfuscatorAttributeFound = String();
|
|
775
|
+
|
|
776
|
+
// Iterate through obfuscators attributes
|
|
777
|
+
for (var t = 0; t < obfuscatorsAttributes.length && !isFakeSignaturesPresent; t++) {
|
|
778
|
+
|
|
779
|
+
if (validateNetObject(obfuscatorsAttributes[t])) {
|
|
780
|
+
obfuscatorAttributeFound = obfuscatorsAttributes[t];
|
|
781
|
+
signaturesCounter++;
|
|
782
|
+
}
|
|
783
|
+
|
|
784
|
+
// Check if the number of detected signatures exceeds 1
|
|
785
|
+
if (signaturesCounter > 1) {
|
|
786
|
+
|
|
787
|
+
// Set flag indicating the presence of fake signatures
|
|
788
|
+
isFakeSignaturesPresent = true;
|
|
789
|
+
}
|
|
790
|
+
}
|
|
791
|
+
|
|
792
|
+
if (isFakeSignaturesPresent) {
|
|
793
|
+
options += (options.length != 0 ? " + " : String()) + "Fake signatures";
|
|
794
|
+
} else {
|
|
795
|
+
// "Watermark" is only possible in the absence of fake signatures
|
|
796
|
+
|
|
797
|
+
if (signaturesCounter === 1) {
|
|
798
|
+
log(logType.nothing, "Watermark (Attribute) found: '" + obfuscatorAttributeFound + "'");
|
|
799
|
+
isWatermarkPresent = true;
|
|
800
|
+
}
|
|
801
|
+
|
|
802
|
+
if ((!isWatermarkPresent && (
|
|
803
|
+
validateSignature("'Obfuscated'") ||
|
|
804
|
+
validateSignature("'obfuscated'") ||
|
|
805
|
+
validateSignature("'ByAttribute'") ||
|
|
806
|
+
validateSignature("'ObfuscatorAttribute'") ||
|
|
807
|
+
validateNetObject("ObfuscationAttribute")
|
|
808
|
+
)) && !isFrameworkComponent()) // System.Reflection.ObfuscationAttribute
|
|
809
|
+
{
|
|
810
|
+
isWatermarkPresent = true;
|
|
811
|
+
}
|
|
812
|
+
}
|
|
813
|
+
|
|
814
|
+
if (isWatermarkPresent) options += (options.length != 0 ? " + " : String()) + "Watermark";
|
|
815
|
+
|
|
816
|
+
|
|
817
|
+
|
|
818
|
+
|
|
819
|
+
const protectorsLabelsToRemove = [ // Protectors with these names will be removed from results
|
|
820
|
+
"Xenocode Postbuild",
|
|
821
|
+
"Smart Assembly",
|
|
822
|
+
"Dotfuscator",
|
|
823
|
+
"Babel .NET",
|
|
824
|
+
"Agile .NET",
|
|
825
|
+
"Spices.Net",
|
|
826
|
+
"Maxtocode",
|
|
827
|
+
"FISH .NET",
|
|
828
|
+
"CliSecure",
|
|
829
|
+
"CodeWall",
|
|
830
|
+
"CodeVeil",
|
|
831
|
+
"Sixxpack",
|
|
832
|
+
"DNGuard",
|
|
833
|
+
"Goliath",
|
|
834
|
+
"Yano"
|
|
835
|
+
],
|
|
836
|
+
packersLabelsToRemove = [
|
|
837
|
+
"NsPack",
|
|
838
|
+
"ASPack"
|
|
839
|
+
],
|
|
840
|
+
protectionsLabelsToRemove = [
|
|
841
|
+
"Sentinel SuperPro dongle reference",
|
|
842
|
+
"Unikey/Activator dongle reference",
|
|
843
|
+
"Eutron SmartKey dongle reference",
|
|
844
|
+
"SenseLock dongle reference",
|
|
845
|
+
"Hardlock dongle reference",
|
|
846
|
+
"WIBU Key dongle reference",
|
|
847
|
+
"Wizzkey dongle reference",
|
|
848
|
+
"SoftLok dongle reference",
|
|
849
|
+
"NetHASP dongle reference"
|
|
850
|
+
];
|
|
851
|
+
|
|
852
|
+
// Волки делают АУФ 🐺☝️
|
|
853
|
+
|
|
854
|
+
if (isFakeSignaturesPresent) {
|
|
855
|
+
for (var d = 0; d < protectorsLabelsToRemove.length; d++) {
|
|
856
|
+
_removeResult("protector", protectorsLabelsToRemove[d]);
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
for (var d = 0; d < packersLabelsToRemove.length; d++) {
|
|
860
|
+
_removeResult("packer", packersLabelsToRemove[d]);
|
|
861
|
+
}
|
|
862
|
+
|
|
863
|
+
for (var d = 0; d < protectionsLabelsToRemove.length; d++) {
|
|
864
|
+
_removeResult("protection", protectionsLabelsToRemove[d]);
|
|
865
|
+
}
|
|
866
|
+
}
|
|
867
|
+
|
|
868
|
+
|
|
869
|
+
if (options.length != 0) isDetected = true;
|
|
870
|
+
|
|
871
|
+
|
|
872
|
+
|
|
873
|
+
|
|
874
|
+
if (isDetected) {
|
|
875
|
+
_setResult("~protection", "Obfuscation", String(), PE.isVerbose() ? options : String());
|
|
876
|
+
}
|
|
877
|
+
}
|
|
878
|
+
|
|
879
|
+
|
|
880
|
+
|
|
881
|
+
function scanForAntiAnalysis_NET() {
|
|
882
|
+
var options = String();
|
|
883
|
+
|
|
884
|
+
|
|
885
|
+
// Assumes the file can detect debugging protection
|
|
886
|
+
var isAntiDebugPresent = false;
|
|
887
|
+
|
|
888
|
+
const debuggerObject = "Debugger", // MSIL: 'System.Diagnostics.Debugger' from System.Diagnostics.dll
|
|
889
|
+
isAttached = "get_IsAttached", // MSIL: '*.Debugger::get_IsAttached()'
|
|
890
|
+
isLogging = "IsLogging" // MSIL: '*.Debugger::IsLogging()'
|
|
891
|
+
|
|
892
|
+
if (
|
|
893
|
+
(( // .NET Functions
|
|
894
|
+
validateNetObject(debuggerObject) || validateNetUnicodeString(debuggerObject) // Check for 'Debugger'
|
|
895
|
+
) && (
|
|
896
|
+
(validateNetObject(isAttached) || validateNetUnicodeString(isAttached)) || // Check for 'get_IsAttached' property
|
|
897
|
+
(validateNetObject(isLogging) || validateNetUnicodeString(isLogging)) // Check for 'IsLogging' function
|
|
898
|
+
) ||
|
|
899
|
+
( // Native (WinAPI) functions
|
|
900
|
+
validateNetObject("CheckRemoteDebuggerPresent") || validateNetObject("IsDebuggerPresent")
|
|
901
|
+
)) && !isFrameworkComponent()
|
|
902
|
+
) {
|
|
903
|
+
isAntiDebugPresent = true;
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
if (isAntiDebugPresent) options += (options.length != 0 ? " + " : String()) + "Anti-debug";
|
|
907
|
+
|
|
908
|
+
|
|
909
|
+
|
|
910
|
+
|
|
911
|
+
// A type of protection in which, after launching an application, it erases the headers and/or PE signature behind itself
|
|
912
|
+
var isAntiDumpPresent = false;
|
|
913
|
+
|
|
914
|
+
if (
|
|
915
|
+
validateNetObject("VirtualProtect") && ( // from 'kernel32.dll', WinAPI
|
|
916
|
+
// Need to check
|
|
917
|
+
isAllNetReferencesPresent( // samples by: ConfuserEx, SkiDzEX
|
|
918
|
+
references = [
|
|
919
|
+
"System.Runtime.InteropServices", // System.Runtime.InteropServices.dll
|
|
920
|
+
"Marshal", // MSIL: '*.Marshal::GetHINSTANCE( ... )'
|
|
921
|
+
"GetHINSTANCE", // MSIL: '*.Marshal::GetHINSTANCE( ... )'
|
|
922
|
+
"IntPtr", // MSIL: 'System.IntPtr'
|
|
923
|
+
"op_Explicit" // MSIL: 'System.IntPtr::op_Explicit'
|
|
924
|
+
]
|
|
925
|
+
) ||
|
|
926
|
+
isAllNetReferencesPresent( // samples by: Inx Obfuscator
|
|
927
|
+
references = [
|
|
928
|
+
"System.Diagnostics", // System.Diagnostics
|
|
929
|
+
"memcpy", // from 'msvcrt.dll', WinAPI
|
|
930
|
+
"IntPtr", // MSIL: 'System.IntPtr'
|
|
931
|
+
"get_MainModule", // MSIL: '*.Process::get_MainModule()'
|
|
932
|
+
"get_BaseAddress" // MSIL: '*.ProcessModule::get_BaseAddress()'
|
|
933
|
+
]
|
|
934
|
+
) ||
|
|
935
|
+
isAllNetReferencesPresent( // samples by: MindLated
|
|
936
|
+
references = [
|
|
937
|
+
"System.Runtime.InteropServices", // System.Runtime.InteropServices.dll
|
|
938
|
+
"Marshal", // MSIL: '*.Marshal::GetHINSTANCE( ... )'
|
|
939
|
+
"GetHINSTANCE", // MSIL: '*.Marshal::GetHINSTANCE( ... )'
|
|
940
|
+
"IntPtr", // MSIL: 'System.IntPtr'
|
|
941
|
+
"CopyBlock",
|
|
942
|
+
"InitBlock"
|
|
943
|
+
]
|
|
944
|
+
)
|
|
945
|
+
)
|
|
946
|
+
) {
|
|
947
|
+
isAntiDumpPresent = true;
|
|
948
|
+
}
|
|
949
|
+
|
|
950
|
+
if (isAntiDumpPresent) options += (options.length != 0 ? " + " : String()) + "Anti-dump";
|
|
951
|
+
|
|
952
|
+
|
|
953
|
+
|
|
954
|
+
|
|
955
|
+
const antiDnSpyTriggers = [
|
|
956
|
+
"dnspy",
|
|
957
|
+
"dnSpy",
|
|
958
|
+
"DNSPY"
|
|
959
|
+
];
|
|
960
|
+
|
|
961
|
+
var isAntiDnSpyPresent = false;
|
|
962
|
+
|
|
963
|
+
// Iterate through anti-DnSpy triggers
|
|
964
|
+
for (var l = 0; l < antiDnSpyTriggers.length && !isAntiDnSpyPresent; l++) {
|
|
965
|
+
const dnSpyName = antiDnSpyTriggers[l];
|
|
966
|
+
|
|
967
|
+
// Check if the signature for anti-DnSpy trigger is valid using Unicode signature mask or the original signature
|
|
968
|
+
if (
|
|
969
|
+
validateGlobalUnicodeString(dnSpyName) ||
|
|
970
|
+
validateSignature("'" + dnSpyName + "'")
|
|
971
|
+
) {
|
|
972
|
+
// Set flag indicating the presence of anti-DnSpy behavior
|
|
973
|
+
isAntiDnSpyPresent = true;
|
|
974
|
+
}
|
|
975
|
+
}
|
|
976
|
+
|
|
977
|
+
if (isAntiDnSpyPresent) options += (options.length != 0 ? " + " : String()) + "Anti-dnSpy";
|
|
978
|
+
|
|
979
|
+
|
|
980
|
+
|
|
981
|
+
|
|
982
|
+
const antiIlSpyTriggers = [
|
|
983
|
+
"ilspy",
|
|
984
|
+
"ilSpy",
|
|
985
|
+
"ILSpy",
|
|
986
|
+
"ILSPY"
|
|
987
|
+
];
|
|
988
|
+
|
|
989
|
+
var isAntiIlSpyPresent = false;
|
|
990
|
+
|
|
991
|
+
for (var l = 0; l < antiIlSpyTriggers.length && !isAntiIlSpyPresent; l++) {
|
|
992
|
+
const ilSpyName = antiIlSpyTriggers[l];
|
|
993
|
+
|
|
994
|
+
if (
|
|
995
|
+
validateGlobalUnicodeString(ilSpyName) ||
|
|
996
|
+
validateSignature("'" + ilSpyName + "'")
|
|
997
|
+
) {
|
|
998
|
+
isAntiIlSpyPresent = true;
|
|
999
|
+
}
|
|
1000
|
+
}
|
|
1001
|
+
|
|
1002
|
+
if (isAntiIlSpyPresent) options += (options.length != 0 ? " + " : String()) + "Anti-ILSpy";
|
|
1003
|
+
|
|
1004
|
+
|
|
1005
|
+
|
|
1006
|
+
|
|
1007
|
+
const sbieVariants = [
|
|
1008
|
+
"sbiedll.",
|
|
1009
|
+
"SbieDll.",
|
|
1010
|
+
"SBIEDLL."
|
|
1011
|
+
];
|
|
1012
|
+
|
|
1013
|
+
var isAntiSbiePresent = false;
|
|
1014
|
+
|
|
1015
|
+
// Check if the signature for 'GetModuleHandle' is present
|
|
1016
|
+
if (validateSignature("'GetModuleHandle'")) { // from 'kernel32.dll') {
|
|
1017
|
+
// Iterate through Sandboxie variants
|
|
1018
|
+
for (var l = 0; l < sbieVariants.length && !isAntiSbiePresent; l++) {
|
|
1019
|
+
const sbieLib = sbieVariants[l];
|
|
1020
|
+
|
|
1021
|
+
// Check if the signature for Sandboxie variant is valid using Unicode signature mask or the original signature
|
|
1022
|
+
if (
|
|
1023
|
+
validateGlobalUnicodeString(sbieLib) ||
|
|
1024
|
+
validateSignature("'" + sbieLib + "'")
|
|
1025
|
+
) {
|
|
1026
|
+
// Set flag indicating the presence of anti-Sandboxie behavior
|
|
1027
|
+
isAntiSbiePresent = true;
|
|
1028
|
+
}
|
|
1029
|
+
}
|
|
1030
|
+
}
|
|
1031
|
+
|
|
1032
|
+
if (isAntiSbiePresent) options += (options.length != 0 ? " + " : String()) + "Anti-SandBoxie";
|
|
1033
|
+
|
|
1034
|
+
|
|
1035
|
+
|
|
1036
|
+
|
|
1037
|
+
var isAntiVmPresent = false;
|
|
1038
|
+
|
|
1039
|
+
if (validateNetUnicodeString("vmware") || validateNetUnicodeString("VirtualBox")) {
|
|
1040
|
+
isAntiVmPresent = true;
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
if (isAntiVmPresent) options += (options.length != 0 ? " + " : String()) + "Anti-VM";
|
|
1044
|
+
|
|
1045
|
+
|
|
1046
|
+
|
|
1047
|
+
|
|
1048
|
+
if (options.length != 0) {
|
|
1049
|
+
_setResult("~protection", "Anti analysis", String(), PE.isVerbose() ? options : String());
|
|
1050
|
+
}
|
|
1051
|
+
}
|
|
1052
|
+
|
|
1053
|
+
|
|
1054
|
+
|
|
1055
|
+
// Determines whether the application is a C++ CLR
|
|
1056
|
+
|
|
1057
|
+
function isClrNET() {
|
|
1058
|
+
return PE.isNET() && PE.isLibraryPresent("KERNEL32.DLL");
|
|
1059
|
+
}
|
|
1060
|
+
|
|
1061
|
+
|
|
1062
|
+
|
|
1063
|
+
// .NET OpCodes for static emulations
|
|
1064
|
+
function NetOpCodes() {
|
|
1065
|
+
this.add = "58"; // MSIL: 'add'
|
|
1066
|
+
this.sub = "59"; // MSIL: 'sub'
|
|
1067
|
+
this.mul = "5A"; // MSIL: 'mul'
|
|
1068
|
+
this.and = "5F"; // MSIL: 'and'
|
|
1069
|
+
this.bne_un = "40????????"; // MSIL: 'bne.un'
|
|
1070
|
+
this.bne_un_s = "3309"; // MSIL: 'bne.un.s'
|
|
1071
|
+
this.br = "38????????"; // MSIL: 'br'
|
|
1072
|
+
this.br_s = "2B??"; // MSIL: 'br.s'
|
|
1073
|
+
this.brfalse = "39????????"; // MSIL: 'brfalse'
|
|
1074
|
+
this.brfalse_s = "2C??"; // MSIL: 'brfalse.s'
|
|
1075
|
+
this.brtrue = "3A????????"
|
|
1076
|
+
this.call = "28????????"; // MSIL: 'call'
|
|
1077
|
+
this.calli = "29????????"; // MSIL: 'calli'
|
|
1078
|
+
this.ceq = "FE01"; // MSIL: 'ceq'
|
|
1079
|
+
this.div = "5B"; // MSIL: 'div'
|
|
1080
|
+
this.dup = "25"; // MSIL: 'dup'
|
|
1081
|
+
this.idelem_i = "97"; // MSIL: 'idelem.i'
|
|
1082
|
+
this.ldc_i4 = "20????????"; // MSIL: 'ldc.i4'
|
|
1083
|
+
this.ldc_i4_0 = "16"; // MSIL: 'ldc.i4.0'
|
|
1084
|
+
this.ldc_i4_1 = "17"; // MSIL: 'ldc.i4.1'
|
|
1085
|
+
this.ldc_i4_2 = "18"; // MSIL: 'ldc.i4.2'
|
|
1086
|
+
this.ldc_i4_3 = "19"; // MSIL: 'ldc.i4.2'
|
|
1087
|
+
this.ldc_i4_4 = "1A"; // MSIL: 'ldc.i4.4'
|
|
1088
|
+
this.ldc_i4_s = "1F??"; // MSIL: 'ldc.i4.s'
|
|
1089
|
+
this.ldftn = "FE06????????"; // MSIL: 'ldftn'
|
|
1090
|
+
this.ldloc = "FE??????"; // MSIL: 'ldloc'
|
|
1091
|
+
this.ldloc_0 = "06"; // MSIL: 'ldloc.0'
|
|
1092
|
+
this.ldloc_1 = "07"; // MSIL: 'ldloc.1'
|
|
1093
|
+
this.ldloc_2 = "08"; // MSIL: 'ldloc.2'
|
|
1094
|
+
this.ldloc_3 = "09"; // MSIL: 'ldloc.3'
|
|
1095
|
+
this.ldloc_s = "11??"; // MSIL: 'ldloc.s'
|
|
1096
|
+
this.ldsfld = "7E????????"; // MSIL: 'ldsfld'
|
|
1097
|
+
this.ldstr = "72????????"; // MSIL: 'ldstr'
|
|
1098
|
+
this.ldelem_u4 = "95"; // MSIL: 'ldelem.u4'
|
|
1099
|
+
this.nop = "00"; // MSIL: 'nop'
|
|
1100
|
+
this.not = "66"; // MSIL: 'not'
|
|
1101
|
+
this.neg = "65"; // MSIL: 'neg'
|
|
1102
|
+
this.or = "60"; // MSIL: 'or'
|
|
1103
|
+
this.pop = "26"; // MSIL: 'pop'
|
|
1104
|
+
this.ret = "2A"; // MSIL: 'ret'
|
|
1105
|
+
this.rem_un = "5E"; // MSIL: 'rem.un'
|
|
1106
|
+
this.shl = "62"; // MSIL: 'shl'
|
|
1107
|
+
this.shr = "63"; // MSIL: 'shr'
|
|
1108
|
+
this.sizeof = "FE1C????????"; // MSIL: 'sizeof'
|
|
1109
|
+
this.stloc = "FE0E????"; // MSIL: 'stloc'
|
|
1110
|
+
this.stloc_0 = "0A"; // MSIL: 'stloc.0'
|
|
1111
|
+
this.stloc_1 = "0B"; // MSIL: 'stloc.1'
|
|
1112
|
+
this.stloc_2 = "0C"; // MSIL: 'stloc.2'
|
|
1113
|
+
this.stloc_3 = "0D"; // MSIL: 'stloc.3'
|
|
1114
|
+
this.stloc_s = "13??"; // MSIL: 'stloc.s'
|
|
1115
|
+
this.shr_un = "64"; // MSIL: 'shr.un'
|
|
1116
|
+
this.xor = "61"; // MSIL: 'xor'
|
|
1117
|
+
this.stelem_i = "9B"; // MSIL: 'stelem.i'
|
|
1118
|
+
this.stelem_i1 = "9C"; // MSIL: 'stelem.i1'
|
|
1119
|
+
this.stelem_i4 = "9E"; // MSIL: 'stelem.i4'
|
|
1120
|
+
this.box = "8C????????"; // MSIL: 'box'
|
|
1121
|
+
|
|
1122
|
+
this.switch__nobody = "45"; // MSIL: 'switch'
|
|
1123
|
+
this._unknown = "**"; // Unknown opcode
|
|
1124
|
+
this._any = "??"; // Any opcode
|
|
1125
|
+
|
|
1126
|
+
|
|
1127
|
+
|
|
1128
|
+
// setStrict sets the strict value of the opcode for substitution
|
|
1129
|
+
// btw I like what I do
|
|
1130
|
+
this.setStrict = function(opCodeMask, value) {
|
|
1131
|
+
// Remove spaces from opcode mask and value
|
|
1132
|
+
opCodeMask = removeSpaces(opCodeMask);
|
|
1133
|
+
value = removeSpaces(value);
|
|
1134
|
+
|
|
1135
|
+
// Find the index of the special pattern "??" in the opcode mask
|
|
1136
|
+
var indexOfSpecialPattern = opCodeMask.indexOf("??");
|
|
1137
|
+
|
|
1138
|
+
// Check if the opcode mask has a body (contains the special pattern "??")
|
|
1139
|
+
var isOpCodeMaskHasBody = indexOfSpecialPattern !== -1; // -1 if not found
|
|
1140
|
+
|
|
1141
|
+
// Extract the opcode in hexadecimal
|
|
1142
|
+
var opCodeInHex = isOpCodeMaskHasBody ? opCodeMask.substr(0x00, indexOfSpecialPattern) : opCodeMask;
|
|
1143
|
+
|
|
1144
|
+
// Check if the opcode mask has a body and the length of the body matches the length of the value
|
|
1145
|
+
if (isOpCodeMaskHasBody && opCodeMask.substr(opCodeInHex.length).length != value.length) {
|
|
1146
|
+
throw "The size of the input values does not match.";
|
|
1147
|
+
}
|
|
1148
|
+
|
|
1149
|
+
// Combine the opcode in hexadecimal with the value
|
|
1150
|
+
return opCodeInHex + value;
|
|
1151
|
+
}
|
|
1152
|
+
|
|
1153
|
+
// Sets the mask value to zero for the specified opcode
|
|
1154
|
+
this.setNullValue = function(opCodeMask) {
|
|
1155
|
+
|
|
1156
|
+
if (opCodeMask.indexOf("??") === -1) {
|
|
1157
|
+
throw "Instruction does not have a body to overwrite the value.";
|
|
1158
|
+
}
|
|
1159
|
+
|
|
1160
|
+
return replaceAllInString(opCodeMask, "??", "00");
|
|
1161
|
+
}
|
|
1162
|
+
|
|
1163
|
+
}
|
|
1164
|
+
|
|
1165
|
+
|
|
1166
|
+
function removeSpaces(inputString) {
|
|
1167
|
+
return inputString.split(" ").join("");
|
|
1168
|
+
}
|
|
1169
|
+
|
|
1170
|
+
|
|
1171
|
+
function replaceAllInString(inputString, search, replacement) {
|
|
1172
|
+
while (inputString.indexOf(search) !== -1) {
|
|
1173
|
+
inputString = inputString.replace(search, replacement)
|
|
1174
|
+
}
|
|
1175
|
+
|
|
1176
|
+
return inputString;
|
|
1177
|
+
}
|
|
1178
|
+
|
|
1179
|
+
|
|
1180
|
+
|
|
1181
|
+
// This feature was originally intended only for .NET, but
|
|
1182
|
+
// now partially works with Native files.
|
|
1183
|
+
|
|
1184
|
+
function scanForPackersAndCryptors_NET_and_Native() { // For .NET and Native apps
|
|
1185
|
+
var options = String();
|
|
1186
|
+
|
|
1187
|
+
var isDetected = Boolean(),
|
|
1188
|
+
isCryptor = Boolean();
|
|
1189
|
+
|
|
1190
|
+
|
|
1191
|
+
|
|
1192
|
+
|
|
1193
|
+
if (PE.isNET()) {
|
|
1194
|
+
|
|
1195
|
+
var isAssemblyInvokeFound = false;
|
|
1196
|
+
|
|
1197
|
+
if (isAllNetReferencesPresent( // TODO: update [!!!]
|
|
1198
|
+
references = [
|
|
1199
|
+
"System.Reflection", // System.Reflection.dll
|
|
1200
|
+
"get_EntryPoint", // MSIL: '*.Assembly::get_EntryPoint()'
|
|
1201
|
+
"Assembly", // MSIL: 'System.Reflection.Assembly' from System.Reflection.dll
|
|
1202
|
+
"Invoke", // MSIL: '*.MethodBase::Invoke(object, object[])'
|
|
1203
|
+
"Load" // MSIL: '*.Assembly::Load(uint8[])'
|
|
1204
|
+
]
|
|
1205
|
+
)) {
|
|
1206
|
+
isAssemblyInvokeFound = true;
|
|
1207
|
+
|
|
1208
|
+
options = "Assembly invoke";
|
|
1209
|
+
}
|
|
1210
|
+
|
|
1211
|
+
|
|
1212
|
+
|
|
1213
|
+
|
|
1214
|
+
// Check if any class from System.Security.Cryptography namespace is used (non-full name) - for cryptors
|
|
1215
|
+
if (findAndMark("System.Security.Cryptography", isFullName = false) != String()) {
|
|
1216
|
+
|
|
1217
|
+
// Specify cryptography classes to look for
|
|
1218
|
+
const cryptoClasses = [
|
|
1219
|
+
"TripleDESCryptoServiceProvider",
|
|
1220
|
+
"RSACryptoServiceProvider",
|
|
1221
|
+
"DSACryptoServiceProvider",
|
|
1222
|
+
"DESCryptoServiceProvider",
|
|
1223
|
+
"AesCryptoServiceProvider",
|
|
1224
|
+
"Rfc2898DeriveBytes",
|
|
1225
|
+
"SHA256Managed",
|
|
1226
|
+
"TripleDES",
|
|
1227
|
+
"Rijndael",
|
|
1228
|
+
"ECDsaCng",
|
|
1229
|
+
"AesAEAD",
|
|
1230
|
+
"Aes192Cbc",
|
|
1231
|
+
"Aes256Cbc",
|
|
1232
|
+
"Aes128Cbc",
|
|
1233
|
+
"AesManaged",
|
|
1234
|
+
"AesCng",
|
|
1235
|
+
"SHA256",
|
|
1236
|
+
"SHA512",
|
|
1237
|
+
"SHA1CryptoServiceProvider",
|
|
1238
|
+
"SHA512CryptoServiceProvider",
|
|
1239
|
+
"RC2CryptoServiceProvider",
|
|
1240
|
+
"SHA384CryptoServiceProvider",
|
|
1241
|
+
// "MD5CryptoServiceProvider",
|
|
1242
|
+
"SHA256CryptoServiceProvider",
|
|
1243
|
+
"RNGCryptoServiceProvider"
|
|
1244
|
+
];
|
|
1245
|
+
|
|
1246
|
+
// Iterate through cryptography classes
|
|
1247
|
+
for (var i = 0; i < cryptoClasses.length && !isCryptor; i++) {
|
|
1248
|
+
var cryptoClassSign = cryptoClasses[i],
|
|
1249
|
+
result = findAndMark(
|
|
1250
|
+
sign = cryptoClassSign,
|
|
1251
|
+
isFullName = true
|
|
1252
|
+
);
|
|
1253
|
+
|
|
1254
|
+
// Check if assembly invoke is found and the cryptography class is present
|
|
1255
|
+
if (isAssemblyInvokeFound && result.length != 0) {
|
|
1256
|
+
log(logType.net, "Crypto class present: " + cryptoClassSign);
|
|
1257
|
+
|
|
1258
|
+
isCryptor = true;
|
|
1259
|
+
|
|
1260
|
+
// Add the cryptography class to options
|
|
1261
|
+
options += (options.length != 0 ? " + " : String()) + cryptoClassSign;
|
|
1262
|
+
}
|
|
1263
|
+
}
|
|
1264
|
+
}
|
|
1265
|
+
|
|
1266
|
+
|
|
1267
|
+
|
|
1268
|
+
|
|
1269
|
+
// Check if any class from System.IO.Compression namespace is used (non-full name)
|
|
1270
|
+
if ((findAndMark("System.IO.Compression", isFullName = false).length != 0)) {
|
|
1271
|
+
|
|
1272
|
+
// Specify compression classes to look for
|
|
1273
|
+
const compressionClasses = [
|
|
1274
|
+
"DeflateStream",
|
|
1275
|
+
"GZipStream"
|
|
1276
|
+
];
|
|
1277
|
+
|
|
1278
|
+
// Iterate through compression classes
|
|
1279
|
+
for (var i = 0; i < compressionClasses.length; i++) {
|
|
1280
|
+
var compressionClassSign = compressionClasses[i],
|
|
1281
|
+
result = findAndMark(compressionClassSign, isFullName = true);
|
|
1282
|
+
|
|
1283
|
+
// Check if assembly invoke is found and the compression class is present
|
|
1284
|
+
if (isAssemblyInvokeFound && result.length != 0) {
|
|
1285
|
+
log(logType.net, "Compression class present: " + compressionClassSign);
|
|
1286
|
+
|
|
1287
|
+
// If it's a cryptor, add the compression class to options
|
|
1288
|
+
if (isCryptor) options += (options.length != 0 ? " + " : String()) + compressionClassSign;
|
|
1289
|
+
|
|
1290
|
+
// Break the loop if a match is found
|
|
1291
|
+
break;
|
|
1292
|
+
}
|
|
1293
|
+
}
|
|
1294
|
+
}
|
|
1295
|
+
}
|
|
1296
|
+
|
|
1297
|
+
|
|
1298
|
+
// Self-Extracting archives
|
|
1299
|
+
// TODO: Upgrade
|
|
1300
|
+
var isSfx = false;
|
|
1301
|
+
|
|
1302
|
+
if (!PE.isDll() && PE.isOverlayPresent()) {
|
|
1303
|
+
const overlayPatterns = [
|
|
1304
|
+
"'Rar!'", // samples by: WinRAR
|
|
1305
|
+
"'PK'03", // samples by: Zip SFX (by Intel)
|
|
1306
|
+
"';!@Install@!UTF-8!'", "'7z'BCAF271C", "efbbbf';!@Install@!UTF-8!'" // samples by: 7z
|
|
1307
|
+
]
|
|
1308
|
+
|
|
1309
|
+
for (var l = 0; l < overlayPatterns.length; l++) {
|
|
1310
|
+
if (PE.compareOverlay(overlayPatterns[l])) {
|
|
1311
|
+
log(logType.nothing, "SFX overlay pattern: " + overlayPatterns[l]);
|
|
1312
|
+
isSfx = true;
|
|
1313
|
+
}
|
|
1314
|
+
}
|
|
1315
|
+
|
|
1316
|
+
|
|
1317
|
+
if (!isSfx && !PE.isNET()) {
|
|
1318
|
+
const sfxEntries = [
|
|
1319
|
+
// "e8$$$$$$$$558bec83ec..a1........8365....8365....5357bf........3bc7bb........74..85c374..f7d0", // samples by: WinZip
|
|
1320
|
+
// "558bec6a..68........68........64a1........50648925........83....5356578965..ff15", // samples by: Zip SFX
|
|
1321
|
+
// "e8$$$$$$$$558bec83ec..8365....8365....a1........5657bf........be........3bc7", // samples by: WinRAR Installer
|
|
1322
|
+
// "e8$$$$$$$$8bff558bec83ec..a1........8365....8365....5357bf........bb", // samples by: Zip SFX
|
|
1323
|
+
// "558bec83c4..b8........e8........33c05568........64ff30648920e8", // samples by: Zip SFX
|
|
1324
|
+
"4883ec..e8$$$$$$$$48895c24..55488bec4883ec..488365....48bb................488b05........483bc375", // samples by: WinRAR Installer
|
|
1325
|
+
"83ec..5657ff15........8bf08d4424..50c74424..........ff15........8a068b3d........3c..75..56ffd7", // samples by: Zip SFX
|
|
1326
|
+
"e9$$$$$$$$558bec81ec........830d..........5356576a..33dbbf........68........895d..881d", // samples by: Microsoft Cabinet
|
|
1327
|
+
"558bec83ec..56ff15........8bf08a003c..75..84c074..803e..74..46803e..75..803e..75..46eb", // samples by: Zip SFX
|
|
1328
|
+
"6a..33c0505050ff15........50e8$$$$$$$$55b8........8bece8........53b9........5657be", // samples by: Zip SFX
|
|
1329
|
+
"6a..68........e8........66813d............75..a1........81b8................75..", // samples by: Microsoft Cabinet
|
|
1330
|
+
"558bec83ec..565733ffff15........8bf0897d..8d45..50ff15........8a063c..75..56ff15", // samples by: Zip SFX
|
|
1331
|
+
"51526a..2eff15........506a..6a..2eff15........50e8........502eff15........5a59c3", // samples by: WinIMP
|
|
1332
|
+
"558bec81ec........535657ff15........a3........ff15........a1........6625....3d", // samples by: Microsoft Cabinet
|
|
1333
|
+
"558becb8........e8........5356be........578d45..5633db5053ff15........85c00f84", // samples by: Zip SFX
|
|
1334
|
+
"a1........c1e0..a3........575133c0bf........b9........3bcf76..2bcffcf3aa595f", // samples by: WinRAR Installer
|
|
1335
|
+
"558bec83c4..5356e8$$$$$$$$e8........6a..e8........8905........e8........8905", // samples by: Zip SFX
|
|
1336
|
+
"ff15........b1..380874..b1..4080....74..380874..4080....75..80....74..4033", // samples by: WinZip
|
|
1337
|
+
"53ff15........b3..38..74..80c3..4033d28a083aca74..3acb74..408a083aca75", // samples by: WinZip
|
|
1338
|
+
"558bec83c4..535657e8........e8........33c05568........64ff30648920e8", // samples by: WinRAR
|
|
1339
|
+
"53ff15........b3..38..74..80c3..8a48..4033d23aca74..3acb74..8a48..40", // samples by: WinZip
|
|
1340
|
+
"e8$$$$$$$$53bb........e8........85c074..33d28a1083fa..75..40eb", // samples by: WinRAR
|
|
1341
|
+
"fffe2a002a002a006d0065007300730061006700650073002a002a002a00", // samples by: WinRAR Installer
|
|
1342
|
+
"e8$$$$$$$$558bec83c4..b8........53", // samples by: WinRAR Installer
|
|
1343
|
+
"8A48014033D23ACA740A3ACB74068A4801" // samples by: WinZip
|
|
1344
|
+
]
|
|
1345
|
+
|
|
1346
|
+
if (PE.isSectionNamePresent("_winzip_")) {
|
|
1347
|
+
isSfx = true;
|
|
1348
|
+
}
|
|
1349
|
+
|
|
1350
|
+
for (var k = 0; k < sfxEntries.length; k++) {
|
|
1351
|
+
if (PE.compareEP(sfxEntries[k])) {
|
|
1352
|
+
log(logType.nothing, "SFX entry pattern: " + sfxEntries[k]);
|
|
1353
|
+
|
|
1354
|
+
isSfx = true;
|
|
1355
|
+
}
|
|
1356
|
+
}
|
|
1357
|
+
}
|
|
1358
|
+
}
|
|
1359
|
+
|
|
1360
|
+
if (isSfx) options += (options.length != 0 ? " + " : String()) + "SFX";
|
|
1361
|
+
|
|
1362
|
+
|
|
1363
|
+
|
|
1364
|
+
|
|
1365
|
+
var entryLikePacker = false;
|
|
1366
|
+
|
|
1367
|
+
if (!PE.isDll()) {
|
|
1368
|
+
const entries = [
|
|
1369
|
+
"53565755488D35........488DBE", // samples by: UPX (x64)
|
|
1370
|
+
"B8........68........64", // samples by: Petite (x32)
|
|
1371
|
+
"60..................E8", // samples by: Anticrack Software (x32)
|
|
1372
|
+
"33C08BC068........68", // samples by: ExE Pack (x32)
|
|
1373
|
+
"74..E9........60E8", // samples by: PE-PACK
|
|
1374
|
+
"EB0668........C39C", // samples by: PECompact (x32)
|
|
1375
|
+
"93071F05....8ED0BC", // samples by: aPack (x32)
|
|
1376
|
+
"60BE........8DBE", // samples by: UPX (x32)
|
|
1377
|
+
"B8........6A..68", // samples by: Petite (x32)
|
|
1378
|
+
"BE........AD8BF8", // samples by: WinUPack (x32)
|
|
1379
|
+
"68........9C60E8", // samples by: XComp, XPACK (x32)
|
|
1380
|
+
"53558BE833DBEB60", // samples by: WWPack (x32)
|
|
1381
|
+
"BD........C745", // samples by: kkrunchy (x32)
|
|
1382
|
+
"57565351524150", // samples by: mpress (x64)
|
|
1383
|
+
"B8........5064", // samples by: PECompact (x32)
|
|
1384
|
+
"8CCBBA....03DA", // // samples by: aPack (x32)
|
|
1385
|
+
"B8........669C", // samples by: Petite, Themida (x32)
|
|
1386
|
+
"8CC0FA8ED0BC", // samples by: PACKWIN (x32)
|
|
1387
|
+
"B8........60", // samples by: Petite, Themida (x32)
|
|
1388
|
+
"8B44240456", // samples by: ASDPack (x32)
|
|
1389
|
+
"1E068CC88E", // samples by: aPack (x32)
|
|
1390
|
+
"1E068CCBBA", // samples by: aPack (x32)
|
|
1391
|
+
"EB..9C60E8", // samples by: PECompact (x32)
|
|
1392
|
+
"9C60E8CA", // samples by: Petite (x??)
|
|
1393
|
+
"60FCBED4", // samples by: ANDPakk (x32)
|
|
1394
|
+
"60EB..5D", // samples by: ASPack (x32)
|
|
1395
|
+
"60EB..E8", // samples by: G!X Protector
|
|
1396
|
+
"64FF35", // samples by: Petite (x32)
|
|
1397
|
+
"6033C0", // samples by: yzPack (x32)
|
|
1398
|
+
"669C60", // samples by: Petite (x??)
|
|
1399
|
+
"EB..60", // samples by: kkryptor, dePACK (x32)
|
|
1400
|
+
"60E8", // samples by: mpress, Packman, Pack Master, Yodas Crypter, DxPack, ASPack, MSLRH, tElock (x32)
|
|
1401
|
+
"6068" // samples by: BeRo, ExE Pack, AHPacker (x32)
|
|
1402
|
+
];
|
|
1403
|
+
|
|
1404
|
+
// Iterate through the entries to check against the entry point
|
|
1405
|
+
for (var e = 0; e < entries.length && !entryLikePacker; e++) {
|
|
1406
|
+
const entryToCheck = entries[e];
|
|
1407
|
+
|
|
1408
|
+
// If the entry point matches the current entry, set the flag to true and break the loop
|
|
1409
|
+
if (PE.compareEP(entryToCheck)) {
|
|
1410
|
+
log(logType.nothing, "EP like a packer: '" + entryToCheck + "'");
|
|
1411
|
+
|
|
1412
|
+
entryLikePacker = true;
|
|
1413
|
+
}
|
|
1414
|
+
}
|
|
1415
|
+
}
|
|
1416
|
+
|
|
1417
|
+
if (entryLikePacker) options += (options.length != 0 ? " + " : String()) + "EntryPoint";
|
|
1418
|
+
|
|
1419
|
+
|
|
1420
|
+
|
|
1421
|
+
|
|
1422
|
+
// Check if the entry point is in the last section
|
|
1423
|
+
var isLastSectionEP = false;
|
|
1424
|
+
|
|
1425
|
+
if (!PE.isDll()) {
|
|
1426
|
+
if (PE.getNumberOfSections() > 1) {
|
|
1427
|
+
// Get addresses of the last section and entry point
|
|
1428
|
+
|
|
1429
|
+
var lastSectionAddress = -1,
|
|
1430
|
+
entryPointAddress = -1;
|
|
1431
|
+
|
|
1432
|
+
|
|
1433
|
+
// Get last section with non -1 address
|
|
1434
|
+
for (var i = 1; lastSectionAddress == -1; i++) {
|
|
1435
|
+
lastSectionAddress = PE.OffsetToVA(PE.getSectionFileOffset(PE.getNumberOfSections() - i));
|
|
1436
|
+
}
|
|
1437
|
+
entryPointAddress = PE.getAddressOfEntryPoint();
|
|
1438
|
+
|
|
1439
|
+
|
|
1440
|
+
// Check if the entry point is greater than or equal to the last section address
|
|
1441
|
+
if (entryPointAddress >= lastSectionAddress) {
|
|
1442
|
+
isLastSectionEP = true;
|
|
1443
|
+
log(logType.nothing, "EP address (" + entryPointAddress + ") more than last section address (" + lastSectionAddress + ")");
|
|
1444
|
+
}
|
|
1445
|
+
}
|
|
1446
|
+
}
|
|
1447
|
+
|
|
1448
|
+
if (isLastSectionEP) options = "Last section EP";
|
|
1449
|
+
|
|
1450
|
+
|
|
1451
|
+
|
|
1452
|
+
|
|
1453
|
+
// Check for strange calls if entry point is in the last section
|
|
1454
|
+
var isStrangeCalls = false;
|
|
1455
|
+
|
|
1456
|
+
if (!PE.isDll()) {
|
|
1457
|
+
if (isLastSectionEP && getAsmOpCode(getAsmInstructionByIndex(1)) === "CALL") {
|
|
1458
|
+
log(logType.nothing, "Strange call to address: " + getAsmInstructionByIndex(1).split(" ")[1]);
|
|
1459
|
+
isStrangeCalls = true;
|
|
1460
|
+
}
|
|
1461
|
+
}
|
|
1462
|
+
|
|
1463
|
+
if (isStrangeCalls) options += (options.length != 0 ? " + " : String()) + "Strange call";
|
|
1464
|
+
|
|
1465
|
+
|
|
1466
|
+
|
|
1467
|
+
|
|
1468
|
+
var isImportsLikePacker = false;
|
|
1469
|
+
|
|
1470
|
+
// ["Name", "Version", ImportLibraryIndex, Hash]
|
|
1471
|
+
// If {ImportLibraryIndex} is -1, it means the hash has no index
|
|
1472
|
+
|
|
1473
|
+
var dbCollectionOfHashesDictionary = [
|
|
1474
|
+
// packers
|
|
1475
|
+
["UPX", "0.59-0.93", 0, 0xd4fdcab1],
|
|
1476
|
+
["UPX", "0.94-1.93", 0, 0x1d51299a],
|
|
1477
|
+
["UPX", "1.94-2.03", 0, 0xb3318086],
|
|
1478
|
+
["UPX", "1.94-2.03", 0, 0x3778aab9],
|
|
1479
|
+
["UPX", "2.90-3.XX", 0, 0xf375ee03],
|
|
1480
|
+
["UPX", "2.90-3.XX", 0, 0xf737d853],
|
|
1481
|
+
["UPX", "3.91+", 0, 0xf737d853],
|
|
1482
|
+
["UPX", "3.91+", -1, 0x82a048fc],
|
|
1483
|
+
["UPX", "3.91+", -1, 0x554a1748],
|
|
1484
|
+
["NSPACK", null, 0, 0xf375ee03],
|
|
1485
|
+
["ASPack", "1.XX-2.XX", 0, 0x1272f45b],
|
|
1486
|
+
["MKFPACK", null, 0, 0x42b3e7f9],
|
|
1487
|
+
["MPRESS", null, 0, 0x174efb84],
|
|
1488
|
+
["PACKMAN", "0.0.0.1", 0, 0x174efb84],
|
|
1489
|
+
["PACKMAN", "1.0", 0, 0x69076a83],
|
|
1490
|
+
["PECompact", "0.90-0.91", -1, 0xbea416d1],
|
|
1491
|
+
["PECompact", "0.92-0.94", -1, 0x93312c2e],
|
|
1492
|
+
["PECompact", "0.97-0.971b", -1, 0xe6aa8495],
|
|
1493
|
+
["PECompact", "0.975-1.10b3", -1, 0x29188619],
|
|
1494
|
+
["PECompact", "1.10b7-1.34", -1, 0xe4c11305],
|
|
1495
|
+
["PECompact", "1.30-1.40", 0, 0x9b3305ed],
|
|
1496
|
+
["PECompact", "1.40-1.84", 0, 0xcc5b2a3c],
|
|
1497
|
+
["PECompact", "2.40-3.XX", 0, 0x2652ce4f],
|
|
1498
|
+
["PECompact", "2.40-3.XX", -1, 0xdb8fbb75],
|
|
1499
|
+
["EXE32PACK", "1.3X-1.4X", 0, 0x174efb84],
|
|
1500
|
+
["tElock", "1.0", -1, 0x051946f7],
|
|
1501
|
+
["JDPACK", "2.00", 0, 0xc002db0e],
|
|
1502
|
+
["CRINKLER", null, 0, 0x0b0e1fbf],
|
|
1503
|
+
["WinUpack", null, -1, 0x29188619],
|
|
1504
|
+
["YodasCrypter", "1.X", -1, 0x1303a51b],
|
|
1505
|
+
["XComp", "0.97-0.98", -1, 0xea1e66e4],
|
|
1506
|
+
["XPack", "0.97-0.98", -1, 0x2ac44dd2],
|
|
1507
|
+
["kkrunchy", null, -1, 0x29188619],
|
|
1508
|
+
["ANDPakk2", "0.18", -1, 0x29188619],
|
|
1509
|
+
// protectors
|
|
1510
|
+
["ASProtect", "1.XX-2.XX", 0, 0x1272f45b],
|
|
1511
|
+
["SHRINKER", "3.2", 0, 0xb2a64858],
|
|
1512
|
+
["SHRINKER", "3.2", 0, 0x158af2d0],
|
|
1513
|
+
["SHRINKER", "3.2", 0, 0x49e8aa1f],
|
|
1514
|
+
["SHRINKER", "3.5", 0, 0xe9ea0851],
|
|
1515
|
+
["SHRINKER", "3.5", 0, 0x3344b95d],
|
|
1516
|
+
["SHRINKER", "3.5", 0, 0x586088f3],
|
|
1517
|
+
["Enigma", "1.00-3.60", 0, 0xc002db0e],
|
|
1518
|
+
["Enigma", "2.XX", 0, 0xdd92de10],
|
|
1519
|
+
["Enigma", "3.70+", 0, 0xd04c7a50],
|
|
1520
|
+
["PCGUARD", "5.04-5.05", 0, 0x5a169c7a],
|
|
1521
|
+
["PCGUARD", "5.04-5.05", 0, 0x0b0b2965],
|
|
1522
|
+
["eXPressor", "1.2", -1, 0x66b35c6e],
|
|
1523
|
+
["eXPressor", "1.2", -1, 0x32f4466c],
|
|
1524
|
+
["eXPressor", "1.3", -1, 0x921d0280],
|
|
1525
|
+
["eXPressor", "1.3", -1, 0xf51eba68],
|
|
1526
|
+
["eXPressor", "1.3", -1, 0xbc84ce09],
|
|
1527
|
+
["eXPressor", "1.4.5.X", 0, 0x427816ab],
|
|
1528
|
+
["eXPressor", "1.4.5.X", -1, 0x3c705cae],
|
|
1529
|
+
["eXPressor", "1.4.5.X", -1, 0x4d02e093],
|
|
1530
|
+
["eXPressor", "1.4.5.X", -1, 0x958a9ea2], // VB6
|
|
1531
|
+
["eXPressor", "1.5.0.X", -1, 0x7ababb5a],
|
|
1532
|
+
["eXPressor", "1.5.0.X", -1, 0x95ca15e4],
|
|
1533
|
+
["eXPressor", "1.5.0.X", -1, 0xbd41da20],
|
|
1534
|
+
["eXPressor", "1.6", -1, 0xca58fa0c],
|
|
1535
|
+
["eXPressor", "1.6.1", -1, 0x48ffd359],
|
|
1536
|
+
["VMProtect", "1.70", -1, 0x1ff3103f],
|
|
1537
|
+
// ["VMProtect", "1.70", -1, 0x0c16df2d],
|
|
1538
|
+
["VMProtect", "2.0.3-2.13", -1, 0x9d12b153],
|
|
1539
|
+
["VMProtect", "3.0.0", -1, 0x1e5500c1],
|
|
1540
|
+
["VMProtect", "3.0.9", -1, 0xc5fb6a4b],
|
|
1541
|
+
["VMProtect", "3.2.0-3.5.0", -1, 0x5caa99c7],
|
|
1542
|
+
["YodasProtector", "1.0b", -1, 0x1303a51b],
|
|
1543
|
+
["ASM Guard", "2.XX+", -1, 0xf1e0d63b],
|
|
1544
|
+
["Themida", "2.XX-3.XX", 0, 0x3ffccc8a],
|
|
1545
|
+
["Amber", null, -1, 0x97c72051],
|
|
1546
|
+
[".NET Reactor", null, 0, 0x96be8e26],
|
|
1547
|
+
[".NET Reactor", null, 1, 0xb4cda32f]
|
|
1548
|
+
];
|
|
1549
|
+
|
|
1550
|
+
const importValidatingResult = validateImportHashes(dbCollectionOfHashesDictionary);
|
|
1551
|
+
|
|
1552
|
+
var versionByImportsDetected;
|
|
1553
|
+
|
|
1554
|
+
if (importValidatingResult != null) {
|
|
1555
|
+
versionByImportsDetected = importValidatingResult[1];
|
|
1556
|
+
|
|
1557
|
+
log(logType.nothing, "Imports hash like " + importValidatingResult[0] + (versionByImportsDetected ? " (version " + versionByImportsDetected + ")" : String()) + " (" + importValidatingResult[3] + ")")
|
|
1558
|
+
isImportsLikePacker = true;
|
|
1559
|
+
}
|
|
1560
|
+
|
|
1561
|
+
// Clean up: release the dictionary
|
|
1562
|
+
dbCollectionOfHashesDictionary = undefined;
|
|
1563
|
+
|
|
1564
|
+
if (isImportsLikePacker) options += (options.length != 0 ? " + " : String()) + "Imports like " + importValidatingResult[0] + (versionByImportsDetected ? " (v" + importValidatingResult[1] + ")" : String());
|
|
1565
|
+
|
|
1566
|
+
|
|
1567
|
+
|
|
1568
|
+
|
|
1569
|
+
var isSectionNameLikePacker = false;
|
|
1570
|
+
|
|
1571
|
+
var dbCollectionOfSectionNamesDictionary = [
|
|
1572
|
+
["UPX", null, "UPX0"],
|
|
1573
|
+
["UPX", null, "UPX1"],
|
|
1574
|
+
["UPX", null, "UPX2"],
|
|
1575
|
+
["UPX", null, "UPX3"],
|
|
1576
|
+
["VMProtect", null, ".vmp"],
|
|
1577
|
+
["VMProtect", null, ".vmp0"],
|
|
1578
|
+
["VMProtect", null, ".vmp1"],
|
|
1579
|
+
["VMProtect", null, ".vmp2"],
|
|
1580
|
+
["VMProtect", null, ".vmp3"],
|
|
1581
|
+
["ASPack", "1.08-2.XX", ".adata"],
|
|
1582
|
+
["ASPack", "2.XX", ".aspack"],
|
|
1583
|
+
["Petite", null, ".petite"],
|
|
1584
|
+
["Petite", null, "petite"],
|
|
1585
|
+
["Enigma", null, ".enigma1"],
|
|
1586
|
+
["Enigma", null, ".enigma2"],
|
|
1587
|
+
[".NET Reactor", "2.XX", ".reacto"],
|
|
1588
|
+
["Themida", "3.X", ".imports"],
|
|
1589
|
+
["Themida", "3.X", ".themida"],
|
|
1590
|
+
["Themida", "3.X", ".winlice"],
|
|
1591
|
+
["Themida", "3.X", ".loadcon"],
|
|
1592
|
+
["ASM Guard", "2.XX", "ASMGUARD"],
|
|
1593
|
+
["ASM Guard", "2.XX", ".asmg"],
|
|
1594
|
+
["tElock", null, "UPX!"], // ???
|
|
1595
|
+
["YodasProtector", "1.0b", ".yP"],
|
|
1596
|
+
["YodasCrypter", "1.X", "yC"],
|
|
1597
|
+
["MPRESS", null, ".MPRESS1"],
|
|
1598
|
+
["MPRESS", null, ".MPRESS2"],
|
|
1599
|
+
["DxPack", "1.0", "coderpub"],
|
|
1600
|
+
["SafeNet", null, ".AKS1"],
|
|
1601
|
+
["SafeNet", null, ".AKS2"],
|
|
1602
|
+
["SafeNet", null, ".AKS3"],
|
|
1603
|
+
["Alienyze", null, ".alien"],
|
|
1604
|
+
["PECompact", null, "pec"],
|
|
1605
|
+
["PECompact", null, "pec1"],
|
|
1606
|
+
["RLP", null, ".rlp"],
|
|
1607
|
+
[".NET Reactor", null, ".reacto"],
|
|
1608
|
+
["StarForce", "4.X-5.X", ".ps4"],
|
|
1609
|
+
["StarForce", "3.X", ".sforce3"],
|
|
1610
|
+
["Safengine Shielden", null, ".sedat"],
|
|
1611
|
+
["VirtualizeProtect", null, "VProtect"],
|
|
1612
|
+
["Krypton", null, "YADO"],
|
|
1613
|
+
["NsPack", null, "nsp0"],
|
|
1614
|
+
["NsPack", null, "nsp1"],
|
|
1615
|
+
["nPack", null, ".nPack"],
|
|
1616
|
+
["JDPack", null, ".jdpack"],
|
|
1617
|
+
["SC Pack", null, ".scpack"],
|
|
1618
|
+
["Simple Pack", null, ".spack"],
|
|
1619
|
+
["Eronana", null, ".packer"],
|
|
1620
|
+
["PE-SHiELD", null, "PESHiELD"],
|
|
1621
|
+
["SVK Protector", null, "SVKP"],
|
|
1622
|
+
["obfus.h", null, ".obfh"],
|
|
1623
|
+
["Warbird", null, "?g_Encry"],
|
|
1624
|
+
["ACProtect", null, ".perplex"],
|
|
1625
|
+
["Software Compress", null, "SoftComp"],
|
|
1626
|
+
["RLPack", null, ".RLPack"],
|
|
1627
|
+
["CodeVirtualizer", null, ".vlizer"],
|
|
1628
|
+
["DYAMAR", "1.3.5", ".dyamarC"],
|
|
1629
|
+
["hmimys", "1.3", "hmimys"],
|
|
1630
|
+
["Morphnah", "1.0.X", ".nah"]
|
|
1631
|
+
];
|
|
1632
|
+
|
|
1633
|
+
const sectionNamesValidatingResult = validateSectionNames(dbCollectionOfSectionNamesDictionary);
|
|
1634
|
+
|
|
1635
|
+
var versionBySectionDetected;
|
|
1636
|
+
|
|
1637
|
+
if (sectionNamesValidatingResult != null) {
|
|
1638
|
+
versionBySectionDetected = sectionNamesValidatingResult[1];
|
|
1639
|
+
|
|
1640
|
+
log(logType.nothing, "Sections like " + sectionNamesValidatingResult[0] + (versionBySectionDetected ? " (v" + versionBySectionDetected + ")" : String()));
|
|
1641
|
+
isSectionNameLikePacker = true;
|
|
1642
|
+
}
|
|
1643
|
+
|
|
1644
|
+
// Clean up: release the dictionary
|
|
1645
|
+
dbCollectionOfSectionNamesDictionary = undefined;
|
|
1646
|
+
|
|
1647
|
+
if (isSectionNameLikePacker) options += (options.length != 0 ? " + " : String()) + "Sections like " + sectionNamesValidatingResult[0] + (versionBySectionDetected ? " (v" + sectionNamesValidatingResult[1] + ")" : String());
|
|
1648
|
+
|
|
1649
|
+
|
|
1650
|
+
|
|
1651
|
+
|
|
1652
|
+
// Check if there is a collision in sections
|
|
1653
|
+
var isCollisionInSectionsPresent = false;
|
|
1654
|
+
|
|
1655
|
+
// Get section name collision between "0" and "1"
|
|
1656
|
+
const sectionNameCollision = PE.getSectionNameCollision("0", "1");
|
|
1657
|
+
|
|
1658
|
+
// Check if there is a collision
|
|
1659
|
+
if (sectionNameCollision.length != 0) {
|
|
1660
|
+
log(logType.nothing, "Section names collision: '" + sectionNameCollision + "'");
|
|
1661
|
+
isCollisionInSectionsPresent = true;
|
|
1662
|
+
}
|
|
1663
|
+
|
|
1664
|
+
if (isCollisionInSectionsPresent) options += (options.length != 0 ? " + " : String()) + "Sections collision (\"" + sectionNameCollision + "\")";
|
|
1665
|
+
|
|
1666
|
+
|
|
1667
|
+
|
|
1668
|
+
|
|
1669
|
+
// Check if there are repeating section names
|
|
1670
|
+
var isSectionNamesRepeatingPresent = false;
|
|
1671
|
+
|
|
1672
|
+
// Dictionary to track encountered section names
|
|
1673
|
+
var sectionNamesDictionary = {};
|
|
1674
|
+
|
|
1675
|
+
// Iterate through sections to check for collisions
|
|
1676
|
+
for (var i = 0; i < PE.getNumberOfSections() && !isSectionNamesRepeatingPresent; i++) {
|
|
1677
|
+
const sectionName = PE.getSectionName(i);
|
|
1678
|
+
|
|
1679
|
+
// If section name is already encountered, set collision flag and break
|
|
1680
|
+
if (sectionNamesDictionary[sectionName]) {
|
|
1681
|
+
log(logType.nothing, "Section names repeating: '" + sectionName + "'");
|
|
1682
|
+
isSectionNamesRepeatingPresent = true;
|
|
1683
|
+
} else {
|
|
1684
|
+
sectionNamesDictionary[sectionName] = true;
|
|
1685
|
+
}
|
|
1686
|
+
}
|
|
1687
|
+
|
|
1688
|
+
// Clean up: release the dictionary
|
|
1689
|
+
sectionNamesDictionary = undefined;
|
|
1690
|
+
|
|
1691
|
+
if (isSectionNamesRepeatingPresent) options += (options.length != 0 ? " + " : String()) + "Section names repeating";
|
|
1692
|
+
|
|
1693
|
+
|
|
1694
|
+
|
|
1695
|
+
|
|
1696
|
+
// Check if the first instruction at entry point starts with a stack operation
|
|
1697
|
+
var isStartsWithStackOperation = false;
|
|
1698
|
+
|
|
1699
|
+
// Get the opcode of the first instruction at entry point
|
|
1700
|
+
const firstEpAsmOpCode = getFirstEpAsmOpCode();
|
|
1701
|
+
|
|
1702
|
+
// Switch statement to check for specific stack operation opcodes
|
|
1703
|
+
switch (firstEpAsmOpCode) {
|
|
1704
|
+
case "PUSHAL":
|
|
1705
|
+
case "PUSHA":
|
|
1706
|
+
case "PUSHF":
|
|
1707
|
+
case "POPA":
|
|
1708
|
+
log(logType.nothing, "'" + firstEpAsmOpCode + "' at EP");
|
|
1709
|
+
isStartsWithStackOperation = true;
|
|
1710
|
+
}
|
|
1711
|
+
|
|
1712
|
+
if (isStartsWithStackOperation) options += (options.length != 0 ? " + " : String()) + "\"" + firstEpAsmOpCode.toLowerCase() + "\" at EP";
|
|
1713
|
+
|
|
1714
|
+
|
|
1715
|
+
|
|
1716
|
+
|
|
1717
|
+
// Many not-so-smart virus writers use base64 to pack
|
|
1718
|
+
// or hide malicious code, but do not realize that this
|
|
1719
|
+
// is very easily detected by heuristic analysis.
|
|
1720
|
+
|
|
1721
|
+
const signaturesVariants = [
|
|
1722
|
+
"TVoAAAAAA", // MZ ~[00 00 00 00 00]
|
|
1723
|
+
"TVqQAA", // MZ ~[90 00 03]
|
|
1724
|
+
"TVpQAA", // MZ ~[50 00 02]
|
|
1725
|
+
"TVp4AA" // MZ ~[78 00 01]
|
|
1726
|
+
];
|
|
1727
|
+
|
|
1728
|
+
var isEncodedPeDetected = false;
|
|
1729
|
+
|
|
1730
|
+
// Iterate through signature variants
|
|
1731
|
+
for (var s = 0; s < signaturesVariants.length && !isEncodedPeDetected; s++) {
|
|
1732
|
+
const trigger = signaturesVariants[s];
|
|
1733
|
+
|
|
1734
|
+
// Check if the signature is valid using Unicode signature mask or the original signature
|
|
1735
|
+
if (
|
|
1736
|
+
validateGlobalUnicodeString(trigger) || validateSignature("'" + trigger + "'")
|
|
1737
|
+
) {
|
|
1738
|
+
log(logType.nothing, "Encoded PE detected! (with Base64)");
|
|
1739
|
+
isCryptor = true;
|
|
1740
|
+
isEncodedPeDetected = true;
|
|
1741
|
+
}
|
|
1742
|
+
}
|
|
1743
|
+
|
|
1744
|
+
if (isEncodedPeDetected) options += (options.length != 0 ? " + " : String()) + "Base64 payload";
|
|
1745
|
+
|
|
1746
|
+
|
|
1747
|
+
|
|
1748
|
+
|
|
1749
|
+
var isMzSignatureDetected = false;
|
|
1750
|
+
|
|
1751
|
+
if (PE.isOverlayPresent() &&
|
|
1752
|
+
PE.getOverlaySize() >= 100 &&
|
|
1753
|
+
PE.compareOverlay("'MZ'")) {
|
|
1754
|
+
log(logType.any, "PE signature at overlay");
|
|
1755
|
+
isMzSignatureDetected = true;
|
|
1756
|
+
}
|
|
1757
|
+
|
|
1758
|
+
if (isMzSignatureDetected) options += (options.length != 0 ? " + " : String()) + "PE in overlay";
|
|
1759
|
+
|
|
1760
|
+
|
|
1761
|
+
|
|
1762
|
+
|
|
1763
|
+
// Check for a strange overlay in the PE file
|
|
1764
|
+
var hasStrangeOverlay = false;
|
|
1765
|
+
|
|
1766
|
+
// Conditions to check for a strange overlay
|
|
1767
|
+
if (!isMzSignatureDetected && !isSfx && !PE.isSigned() && PE.isOverlayPresent()) {
|
|
1768
|
+
var overlayEntropy = PE.calculateEntropy(PE.getOverlayOffset(), PE.getOverlaySize());
|
|
1769
|
+
if (
|
|
1770
|
+
PE.getOverlaySize() > 150 && overlayEntropy > 7 ||
|
|
1771
|
+
PE.getOverlaySize() > (PE.getSize() - PE.getOverlaySize())
|
|
1772
|
+
) {
|
|
1773
|
+
log(logType.any, "Overlay size: " + PE.getOverlaySize() + " bytes; Entropy: " + overlayEntropy);
|
|
1774
|
+
hasStrangeOverlay = true;
|
|
1775
|
+
}
|
|
1776
|
+
}
|
|
1777
|
+
|
|
1778
|
+
if (hasStrangeOverlay) options += (options.length != 0 ? " + " : String()) + "Strange overlay";
|
|
1779
|
+
|
|
1780
|
+
|
|
1781
|
+
|
|
1782
|
+
|
|
1783
|
+
// Flag to indicate high entropy
|
|
1784
|
+
var isHighEntropy = false;
|
|
1785
|
+
|
|
1786
|
+
// Checks for high entropy (ignore overlay)
|
|
1787
|
+
if (!(PE.isDll() && (PE.isSectionNamePresent(".rdata") || PE.isSectionNamePresent(".rsrc"))) && // .dll with resources
|
|
1788
|
+
PE.calculateEntropy(0x00, PE.getSize() - PE.getOverlaySize()) > 7.3) {
|
|
1789
|
+
isHighEntropy = true;
|
|
1790
|
+
}
|
|
1791
|
+
|
|
1792
|
+
if (isHighEntropy) options += (options.length != 0 ? " + " : String()) + "High entropy";
|
|
1793
|
+
|
|
1794
|
+
|
|
1795
|
+
|
|
1796
|
+
|
|
1797
|
+
var isCompressedSectionPresent = false;
|
|
1798
|
+
|
|
1799
|
+
var sectionNumber = 0;
|
|
1800
|
+
|
|
1801
|
+
for (var t = 0; t < PE.getNumberOfSections() && !isCompressedSectionPresent; t++) {
|
|
1802
|
+
sectionNumber = t;
|
|
1803
|
+
if (PE.calculateEntropy(PE.getSectionFileOffset(sectionNumber), PE.getSectionFileSize(sectionNumber)) > 7.4) {
|
|
1804
|
+
isCompressedSectionPresent = true;
|
|
1805
|
+
}
|
|
1806
|
+
}
|
|
1807
|
+
|
|
1808
|
+
if (isCompressedSectionPresent) options += (options.length != 0 ? " + " : String()) + "Section " + sectionNumber + " (\"" + PE.getSectionName(sectionNumber) + "\") compressed";
|
|
1809
|
+
|
|
1810
|
+
|
|
1811
|
+
|
|
1812
|
+
|
|
1813
|
+
if (options.length != 0) isDetected = true;
|
|
1814
|
+
|
|
1815
|
+
|
|
1816
|
+
if (isDetected) {
|
|
1817
|
+
var detectedType = isCryptor ? "cryptor" : "packer";
|
|
1818
|
+
|
|
1819
|
+
_setResult("~" + detectedType, (isCryptor ? "Cryptor" : "Packer") + " detected", String(), PE.isVerbose() ? options : String());
|
|
1820
|
+
}
|
|
1821
|
+
}
|
|
1822
|
+
|
|
1823
|
+
|
|
1824
|
+
|
|
1825
|
+
|
|
1826
|
+
function isVbNetStandartLibraryPresent() {
|
|
1827
|
+
return PE.isNetObjectPresent("Microsoft.VisualBasic");
|
|
1828
|
+
}
|
|
1829
|
+
|
|
1830
|
+
|
|
1831
|
+
// Check if the file is a .NET Framework component
|
|
1832
|
+
function isFrameworkComponent() {
|
|
1833
|
+
return PE.isNET() && PE.isDll() && PE.isSigned() && PE.findSignature(PE.getOverlayOffset(), 300, "'Microsoft Corporation'") != -1;
|
|
1834
|
+
}
|
|
1835
|
+
|
|
1836
|
+
// Validate the presence of a signature in the file
|
|
1837
|
+
function validateSignature(pattern) {
|
|
1838
|
+
const offsetFound = PE.findSignature(PE.getDosStubOffset() + PE.getDosStubSize(), PE.getSize() - PE.getOverlaySize(), pattern),
|
|
1839
|
+
resultBool = offsetFound != -1;
|
|
1840
|
+
if (resultBool) {
|
|
1841
|
+
lastOffsetDetected = "0x" + Number(offsetFound).toString(16);
|
|
1842
|
+
log(logType.any, "Pattern found: " + pattern);
|
|
1843
|
+
}
|
|
1844
|
+
return resultBool;
|
|
1845
|
+
}
|
|
1846
|
+
|
|
1847
|
+
|
|
1848
|
+
function validateNetByteCode(byteCode) {
|
|
1849
|
+
for (var s = 0; s < PE.getNumberOfSections(); s++) {
|
|
1850
|
+
const sectionOffset = PE.getSectionFileOffset(s),
|
|
1851
|
+
sectionSize = PE.getSectionFileSize(s);
|
|
1852
|
+
var offsetFound = PE.findSignature(sectionOffset, sectionOffset + sectionSize, byteCode);
|
|
1853
|
+
if (offsetFound != -1) {
|
|
1854
|
+
lastOffsetDetected = "0x" + Number(offsetFound).toString(16);
|
|
1855
|
+
log(logType.net, "ByteCode detected: " + byteCode);
|
|
1856
|
+
return true;
|
|
1857
|
+
}
|
|
1858
|
+
}
|
|
1859
|
+
return false;
|
|
1860
|
+
}
|
|
1861
|
+
|
|
1862
|
+
|
|
1863
|
+
function validateNetObject(object) {
|
|
1864
|
+
const result = PE.isNetObjectPresent(object);
|
|
1865
|
+
if (result) log(logType.net, "Object present: " + object);
|
|
1866
|
+
return result;
|
|
1867
|
+
}
|
|
1868
|
+
|
|
1869
|
+
|
|
1870
|
+
function validateNetUnicodeString(ustring) {
|
|
1871
|
+
const result = PE.isNetUStringPresent(ustring);
|
|
1872
|
+
if (result) log(logType.net, "String present: \"" + ustring + "\"");
|
|
1873
|
+
return result;
|
|
1874
|
+
}
|
|
1875
|
+
|
|
1876
|
+
|
|
1877
|
+
function validateGlobalUnicodeString(ustring) {
|
|
1878
|
+
const result = PE.findSignature(PE.getDosStubOffset() + PE.getDosStubSize(), PE.getSize() - PE.getOverlaySize(), generateUnicodeSignatureMask(ustring)) != -1;
|
|
1879
|
+
if (result) log(logType.nothing, "Unicode string found: \"" + ustring + "\"");
|
|
1880
|
+
return result;
|
|
1881
|
+
}
|
|
1882
|
+
|
|
1883
|
+
|
|
1884
|
+
// Function to generate Unicode signature mask from an input string
|
|
1885
|
+
// "test" -> "'t'00'e'00's'00't'"
|
|
1886
|
+
|
|
1887
|
+
function generateUnicodeSignatureMask(inputString) {
|
|
1888
|
+
var output = String();
|
|
1889
|
+
|
|
1890
|
+
// Iterate through each character in the input string
|
|
1891
|
+
for (var c = 0; c < inputString.length; c++) {
|
|
1892
|
+
// Append the Unicode representation of the character to the output
|
|
1893
|
+
output += (c != 0 ? "00" : String()) + "'" + inputString[c] + "'";
|
|
1894
|
+
}
|
|
1895
|
+
|
|
1896
|
+
// Return the generated Unicode signature mask
|
|
1897
|
+
return output;
|
|
1898
|
+
}
|
|
1899
|
+
|
|
1900
|
+
|
|
1901
|
+
// Function to check if all specified .NET references are missing
|
|
1902
|
+
|
|
1903
|
+
function isAllNetReferencesMissing(references) {
|
|
1904
|
+
// Iterate through the array of .NET references
|
|
1905
|
+
for (var i = 0; i < references.length; i++) {
|
|
1906
|
+
// Get the current reference
|
|
1907
|
+
const ref = references[i];
|
|
1908
|
+
|
|
1909
|
+
// If the .NET object corresponding to the reference is present, return false
|
|
1910
|
+
if (PE.isNetObjectPresent(ref)) {
|
|
1911
|
+
return false;
|
|
1912
|
+
}
|
|
1913
|
+
}
|
|
1914
|
+
|
|
1915
|
+
// If all .NET references are missing, return true
|
|
1916
|
+
return true;
|
|
1917
|
+
}
|
|
1918
|
+
|
|
1919
|
+
|
|
1920
|
+
// Function to check if all specified .NET references are present
|
|
1921
|
+
|
|
1922
|
+
function isAllNetReferencesPresent(references) {
|
|
1923
|
+
// Iterate through the array of .NET references
|
|
1924
|
+
for (var i = 0; i < references.length; i++) {
|
|
1925
|
+
// Get the current reference
|
|
1926
|
+
const ref = references[i];
|
|
1927
|
+
|
|
1928
|
+
// If the .NET object corresponding to the reference is not present, return false
|
|
1929
|
+
if (!PE.isNetObjectPresent(ref)) {
|
|
1930
|
+
return false;
|
|
1931
|
+
}
|
|
1932
|
+
}
|
|
1933
|
+
|
|
1934
|
+
// If all .NET references are present, return true
|
|
1935
|
+
return true;
|
|
1936
|
+
}
|
|
1937
|
+
|
|
1938
|
+
|
|
1939
|
+
// "isFullName = true" = 00'sign'00
|
|
1940
|
+
// "isFullName = false" = 00'sign'
|
|
1941
|
+
|
|
1942
|
+
function findAndMark(sign, isFullName) {
|
|
1943
|
+
if (PE.isSignatureInSectionPresent(0,
|
|
1944
|
+
("00'" + sign + "'") + // 00'string
|
|
1945
|
+
(isFullName ? "00" : String()))) { // ... '00
|
|
1946
|
+
return sign;
|
|
1947
|
+
}
|
|
1948
|
+
return String();
|
|
1949
|
+
}
|
|
1950
|
+
|
|
1951
|
+
|
|
1952
|
+
|
|
1953
|
+
function scanForObfuscations_Native() {
|
|
1954
|
+
var options = String();
|
|
1955
|
+
|
|
1956
|
+
var isDetected = Boolean();
|
|
1957
|
+
|
|
1958
|
+
|
|
1959
|
+
|
|
1960
|
+
|
|
1961
|
+
// Check for section names containing forbidden characters
|
|
1962
|
+
var strangeSections = false;
|
|
1963
|
+
|
|
1964
|
+
// Define forbidden characters
|
|
1965
|
+
const badSectionChars = '-=+~!@#$%^&*()"№;%:?*():;,/\\|\'`<> ';
|
|
1966
|
+
|
|
1967
|
+
// Iterate through sections and characters to check for forbidden characters
|
|
1968
|
+
for (var i = 0; i < PE.getNumberOfSections() && !strangeSections; i++) {
|
|
1969
|
+
var sectionName = PE.getSectionName(i);
|
|
1970
|
+
|
|
1971
|
+
if (sectionName.length === 0 || sectionName[0] === " ") {
|
|
1972
|
+
strangeSections = true;
|
|
1973
|
+
}
|
|
1974
|
+
|
|
1975
|
+
|
|
1976
|
+
var isIdioticMinGwSectionsPresent = false;
|
|
1977
|
+
|
|
1978
|
+
if (_isResultPresent("linker", "GNU linker ld (GNU Binutils)")) {
|
|
1979
|
+
if (PE.isSectionNamePresent(".build-id")) {
|
|
1980
|
+
isIdioticMinGwSectionsPresent = true;
|
|
1981
|
+
} else {
|
|
1982
|
+
for (var d = 1; d < 10 && !isIdioticMinGwSectionsPresent; d++) { // sections like "/5", "/2" etc
|
|
1983
|
+
if (sectionName.indexOf("/" + d) != -1) {
|
|
1984
|
+
isIdioticMinGwSectionsPresent = true;
|
|
1985
|
+
}
|
|
1986
|
+
}
|
|
1987
|
+
}
|
|
1988
|
+
}
|
|
1989
|
+
|
|
1990
|
+
if (isIdioticMinGwSectionsPresent) {
|
|
1991
|
+
strangeSections = false;
|
|
1992
|
+
break;
|
|
1993
|
+
}
|
|
1994
|
+
|
|
1995
|
+
|
|
1996
|
+
for (var d = 0; d < badSectionChars.length && !strangeSections; d++) {
|
|
1997
|
+
// If forbidden character is found, set flag and break
|
|
1998
|
+
if (sectionName.indexOf(badSectionChars[d]) !== -1) {
|
|
1999
|
+
strangeSections = true;
|
|
2000
|
+
}
|
|
2001
|
+
}
|
|
2002
|
+
|
|
2003
|
+
|
|
2004
|
+
}
|
|
2005
|
+
|
|
2006
|
+
if (strangeSections) options += (options.length != 0 ? " + " : String()) + "Strange sections";
|
|
2007
|
+
|
|
2008
|
+
|
|
2009
|
+
|
|
2010
|
+
|
|
2011
|
+
// Check for DOS header in the PE file
|
|
2012
|
+
var isDosMissing = false,
|
|
2013
|
+
isCustomDosPresent = false;
|
|
2014
|
+
|
|
2015
|
+
// If DOS stub size is 0, set flag for missing DOS
|
|
2016
|
+
if (PE.getDosStubSize() === 0) {
|
|
2017
|
+
isDosMissing = true;
|
|
2018
|
+
} else {
|
|
2019
|
+
// Define messages to check for custom DOS
|
|
2020
|
+
const messages = [
|
|
2021
|
+
"This program cannot be run in DOS mode.",
|
|
2022
|
+
"This program must be run under Win32",
|
|
2023
|
+
"This program must be run under Win64",
|
|
2024
|
+
"This program requires Win32"
|
|
2025
|
+
];
|
|
2026
|
+
|
|
2027
|
+
isCustomDosPresent = true;
|
|
2028
|
+
|
|
2029
|
+
// Iterate through messages to check for custom DOS
|
|
2030
|
+
for (var d = 0; d < messages.length && isCustomDosPresent; d++) {
|
|
2031
|
+
if (PE.findSignature(PE.getDosStubOffset(), PE.getDosStubSize(), "'" + messages[d] + "'") != -1) {
|
|
2032
|
+
isCustomDosPresent = false;
|
|
2033
|
+
}
|
|
2034
|
+
}
|
|
2035
|
+
}
|
|
2036
|
+
|
|
2037
|
+
// Add appropriate option based on DOS presence
|
|
2038
|
+
if (isDosMissing) options += (options.length != 0 ? " + " : String()) + "Missing DOS";
|
|
2039
|
+
else if (isCustomDosPresent) options += (options.length != 0 ? " + " : String()) + "Custom DOS";
|
|
2040
|
+
|
|
2041
|
+
|
|
2042
|
+
|
|
2043
|
+
|
|
2044
|
+
// It works if the file contains an import without an extension (for example, instead of "kernel32.dll" it is written "kernel32"). Compilers don't do that
|
|
2045
|
+
var isContainsNoExtensionLibrary = false;
|
|
2046
|
+
|
|
2047
|
+
for (var i = 0; i < PE.getNumberOfImports() && !isContainsNoExtensionLibrary; i++) {
|
|
2048
|
+
const libraryName = PE.getImportLibraryName(i).toLowerCase();
|
|
2049
|
+
|
|
2050
|
+
if (libraryName.length > 4) {
|
|
2051
|
+
if (libraryName[libraryName.length - 4] !== ".") {
|
|
2052
|
+
isContainsNoExtensionLibrary = true;
|
|
2053
|
+
}
|
|
2054
|
+
} else { /* if (libraryName.indexOf(".") === -1) */
|
|
2055
|
+
isContainsNoExtensionLibrary = true;
|
|
2056
|
+
}
|
|
2057
|
+
}
|
|
2058
|
+
|
|
2059
|
+
if (isContainsNoExtensionLibrary) options += (options.length != 0 ? " + " : String()) + "No extension import";
|
|
2060
|
+
|
|
2061
|
+
|
|
2062
|
+
|
|
2063
|
+
|
|
2064
|
+
// .exe files in imports are a separate type of sophistication. But this happens.
|
|
2065
|
+
var exeInImports = false;
|
|
2066
|
+
|
|
2067
|
+
for (var i = 0; i < PE.getNumberOfImports() && !exeInImports; i++) {
|
|
2068
|
+
const libraryName = PE.getImportLibraryName(i).toLowerCase();
|
|
2069
|
+
|
|
2070
|
+
if (libraryName.length > 4) {
|
|
2071
|
+
if (libraryName.substr(libraryName.length - 4, 4) === ".exe") {
|
|
2072
|
+
exeInImports = true;
|
|
2073
|
+
}
|
|
2074
|
+
}
|
|
2075
|
+
}
|
|
2076
|
+
|
|
2077
|
+
if (exeInImports) options += (options.length != 0 ? " + " : String()) + "EXE in imports";
|
|
2078
|
+
|
|
2079
|
+
|
|
2080
|
+
|
|
2081
|
+
|
|
2082
|
+
// Looks for sections whose names contain strange (or invalid) characters
|
|
2083
|
+
var isInvalidImportsPresent = false;
|
|
2084
|
+
|
|
2085
|
+
const badImportChars = '=~!@#$%^&*()"№;%:?*():;,|\'`<> ';
|
|
2086
|
+
|
|
2087
|
+
for (var i = 0; i < PE.getNumberOfImports() && !isInvalidImportsPresent; i++) {
|
|
2088
|
+
const libraryName = PE.getImportLibraryName(i).toLowerCase();
|
|
2089
|
+
|
|
2090
|
+
for (var l = 0; l < badImportChars.length && !isInvalidImportsPresent; l++) {
|
|
2091
|
+
if (libraryName.indexOf(badImportChars[l]) !== -1) {
|
|
2092
|
+
isInvalidImportsPresent = true;
|
|
2093
|
+
}
|
|
2094
|
+
}
|
|
2095
|
+
}
|
|
2096
|
+
|
|
2097
|
+
if (isInvalidImportsPresent) options += (options.length != 0 ? " + " : String()) + "Invalid imports";
|
|
2098
|
+
|
|
2099
|
+
|
|
2100
|
+
|
|
2101
|
+
|
|
2102
|
+
// Checks if application resources can be read or if they are compressed/encrypted
|
|
2103
|
+
var isUnreadableResourcesPresent = false;
|
|
2104
|
+
|
|
2105
|
+
for (var i = 0; i < PE.getNumberOfResources() && !isUnreadableResourcesPresent; i++) {
|
|
2106
|
+
if (PE.getResourceOffsetByNumber(i) === -1)
|
|
2107
|
+
isUnreadableResourcesPresent = true;
|
|
2108
|
+
}
|
|
2109
|
+
|
|
2110
|
+
if (isUnreadableResourcesPresent) options += (options.length != 0 ? " + " : String()) + "Unreadable resources";
|
|
2111
|
+
|
|
2112
|
+
|
|
2113
|
+
|
|
2114
|
+
/*
|
|
2115
|
+
var isCheckSumEmpty = false;
|
|
2116
|
+
|
|
2117
|
+
if (PE.getImageOptionalHeader("CheckSum") == 0) {
|
|
2118
|
+
log(logType.any, "IMAGE_OPTIONAL_HEADER : CheckSum == 0");
|
|
2119
|
+
isCheckSumEmpty = true;
|
|
2120
|
+
}
|
|
2121
|
+
|
|
2122
|
+
if (isCheckSumEmpty) options += (options.length != 0 ? " + " : String()) + "No checksum";
|
|
2123
|
+
|
|
2124
|
+
|
|
2125
|
+
|
|
2126
|
+
|
|
2127
|
+
// False-positive detections; Todo: fix
|
|
2128
|
+
var aLotOfBreaks = false;
|
|
2129
|
+
|
|
2130
|
+
const codeSection = PE.section[".text"];
|
|
2131
|
+
|
|
2132
|
+
if (codeSection && PE.isSignaturePresent(codeSection.FileOffset, codeSection.FileSize, "CC CC CC CC CC CC CC CC CC CC CC CC CC")) { // ret (c3); int 3 (cc)
|
|
2133
|
+
aLotOfBreaks = true;
|
|
2134
|
+
}
|
|
2135
|
+
|
|
2136
|
+
if (aLotOfBreaks) options += (options.length != 0 ? " + " : String()) + "A lot of \"__debugbreak()\"";
|
|
2137
|
+
*/
|
|
2138
|
+
|
|
2139
|
+
|
|
2140
|
+
|
|
2141
|
+
|
|
2142
|
+
// Checks is executable application has been compiled or converted to a DLL
|
|
2143
|
+
// Like https://github.com/hasherezade/exe_to_dll
|
|
2144
|
+
var exeAsDll = false;
|
|
2145
|
+
|
|
2146
|
+
if (PE.isDll() && (
|
|
2147
|
+
PE.isExportFunctionPresent("Start") ||
|
|
2148
|
+
PE.isExportFunctionPresent("main") ||
|
|
2149
|
+
PE.isExportFunctionPresent("_start"))) {
|
|
2150
|
+
exeAsDll = true;
|
|
2151
|
+
}
|
|
2152
|
+
|
|
2153
|
+
if (exeAsDll) options += (options.length != 0 ? " + " : String()) + "EXE as DLL";
|
|
2154
|
+
|
|
2155
|
+
|
|
2156
|
+
|
|
2157
|
+
|
|
2158
|
+
// The .text section should always come first
|
|
2159
|
+
var isTextSectionNotFirst = false;
|
|
2160
|
+
|
|
2161
|
+
if ((PE.section[0].Name != ".text" && PE.section[0].Name != ".textbss") && (PE.section[".text"] && PE.section[".textbss"])) {
|
|
2162
|
+
isTextSectionNotFirst = true;
|
|
2163
|
+
}
|
|
2164
|
+
|
|
2165
|
+
if (isTextSectionNotFirst) options += (options.length != 0 ? " + " : String()) + "\".text\" section is not first";
|
|
2166
|
+
|
|
2167
|
+
|
|
2168
|
+
|
|
2169
|
+
|
|
2170
|
+
// If IAT (Import Address Table) is missing
|
|
2171
|
+
var isIatMissing = false;
|
|
2172
|
+
|
|
2173
|
+
if (PE.getNumberOfImports() == 0 &&
|
|
2174
|
+
(!PE.isDll() && PE.section[".text"])) {
|
|
2175
|
+
isIatMissing = true;
|
|
2176
|
+
}
|
|
2177
|
+
|
|
2178
|
+
if (isIatMissing) options += (options.length != 0 ? " + " : String()) + "No IAT";
|
|
2179
|
+
|
|
2180
|
+
|
|
2181
|
+
|
|
2182
|
+
|
|
2183
|
+
// Check if the entry point starts with NOP
|
|
2184
|
+
var isStartsWithNop = false;
|
|
2185
|
+
|
|
2186
|
+
// Condition to check if the first instruction is NOP
|
|
2187
|
+
if (getFirstEpAsmInstruction() === "NOP") // nop (90)
|
|
2188
|
+
isStartsWithNop = true;
|
|
2189
|
+
|
|
2190
|
+
if (isStartsWithNop) options += (options.length != 0 ? " + " : String()) + "Nop at EP";
|
|
2191
|
+
|
|
2192
|
+
|
|
2193
|
+
|
|
2194
|
+
|
|
2195
|
+
// Check if NOP padding is present at the entry point
|
|
2196
|
+
var isNopPaddingPresent = false;
|
|
2197
|
+
|
|
2198
|
+
// Condition to check for NOP padding
|
|
2199
|
+
if (!isStartsWithNop && getEpAsmPattern(onlyOpCodes = true, numberOf = 5).indexOf(getInstructionsAsmPattern(["NOP", "NOP"])) !== -1) {
|
|
2200
|
+
isNopPaddingPresent = true;
|
|
2201
|
+
}
|
|
2202
|
+
|
|
2203
|
+
if (isNopPaddingPresent) options += (options.length != 0 ? " + " : String()) + "Nop EP padding";
|
|
2204
|
+
|
|
2205
|
+
|
|
2206
|
+
|
|
2207
|
+
|
|
2208
|
+
// ASM Guard fake signatures
|
|
2209
|
+
if (PE.isSectionNamePresent(".asmg") || PE.isSectionNamePresent("ASMGUARD")) {
|
|
2210
|
+
for (var f = 0; f < 3; f++)
|
|
2211
|
+
_removeResult("packer", ["UPX", "MPRESS", "EP:MPRESS"][f]);
|
|
2212
|
+
}
|
|
2213
|
+
|
|
2214
|
+
|
|
2215
|
+
if (options.length != 0) isDetected = true;
|
|
2216
|
+
|
|
2217
|
+
|
|
2218
|
+
if (isDetected) {
|
|
2219
|
+
_setResult("~protection", "Generic", String(), PE.isVerbose() ? options : String());
|
|
2220
|
+
}
|
|
2221
|
+
}
|
|
2222
|
+
|
|
2223
|
+
|
|
2224
|
+
const _patternSplitter = "|";
|
|
2225
|
+
|
|
2226
|
+
|
|
2227
|
+
// Makes it possible to disassemble the entry point code and output
|
|
2228
|
+
// a specified number of instructions through a splitter (_patternSplitter)
|
|
2229
|
+
|
|
2230
|
+
function getEpAsmPattern(onlyOpCodes, numberOf) {
|
|
2231
|
+
// Initialize the result with a pattern splitter
|
|
2232
|
+
var result = _patternSplitter;
|
|
2233
|
+
|
|
2234
|
+
// Get the address of the entry point
|
|
2235
|
+
var disasmAddress = PE.getAddressOfEntryPoint();
|
|
2236
|
+
|
|
2237
|
+
// Iterate through instructions up to the specified number
|
|
2238
|
+
for (var i = 0; i < numberOf; i++) {
|
|
2239
|
+
|
|
2240
|
+
// Update the address to the next instruction if not the first iteration
|
|
2241
|
+
if (i >= 1) {
|
|
2242
|
+
disasmAddress = PE.getDisasmNextAddress(disasmAddress);
|
|
2243
|
+
}
|
|
2244
|
+
|
|
2245
|
+
// Get the assembly instruction at the current address
|
|
2246
|
+
const asmInstruction = PE.getDisasmString(disasmAddress);
|
|
2247
|
+
|
|
2248
|
+
// Append either the opcode or the full instruction to the result
|
|
2249
|
+
result += (
|
|
2250
|
+
onlyOpCodes ?
|
|
2251
|
+
getAsmOpCode(asmInstruction) : // "MOV"
|
|
2252
|
+
asmInstruction // "MOV EAX, 4"
|
|
2253
|
+
) + _patternSplitter;
|
|
2254
|
+
}
|
|
2255
|
+
|
|
2256
|
+
// Return the generated assembly pattern
|
|
2257
|
+
return result;
|
|
2258
|
+
}
|
|
2259
|
+
|
|
2260
|
+
|
|
2261
|
+
// Function to get assembly instruction by index
|
|
2262
|
+
|
|
2263
|
+
function getAsmInstructionByIndex(index) {
|
|
2264
|
+
// Get the address of the entry point
|
|
2265
|
+
var disasmAddress = PE.getAddressOfEntryPoint();
|
|
2266
|
+
|
|
2267
|
+
// Iterate through instructions until the specified index is reached
|
|
2268
|
+
for (var i = 0; i <= index; i++) {
|
|
2269
|
+
|
|
2270
|
+
// Update the address to the next instruction if not the first iteration
|
|
2271
|
+
if (i >= 1) {
|
|
2272
|
+
disasmAddress = PE.getDisasmNextAddress(disasmAddress);
|
|
2273
|
+
}
|
|
2274
|
+
|
|
2275
|
+
// If the current iteration matches the specified index, retrieve the instruction
|
|
2276
|
+
if (i === index) {
|
|
2277
|
+
const asmInstruction = PE.getDisasmString(disasmAddress);
|
|
2278
|
+
|
|
2279
|
+
// Return the assembly instruction
|
|
2280
|
+
return asmInstruction;
|
|
2281
|
+
}
|
|
2282
|
+
}
|
|
2283
|
+
}
|
|
2284
|
+
|
|
2285
|
+
|
|
2286
|
+
// Makes it possible to get a subpattern to search for instructions in a
|
|
2287
|
+
// pattern divided through a separator (_patternSplitter)
|
|
2288
|
+
//
|
|
2289
|
+
// like "|OPCODE1|OPCODE2|OPCODE3|".indexOf("|OPCODE2|")
|
|
2290
|
+
// but "|OPCODE1|OPCODE2|OPCODE3|".indexOf(getInstructionsAsmPattern("OPCODE2"))
|
|
2291
|
+
// or
|
|
2292
|
+
// like "|OPCODE1|OPCODE2|OPCODE3|".indexOf("|OPCODE2|OPCODE3|")
|
|
2293
|
+
// but "|OPCODE1|OPCODE2|OPCODE3|".indexOf(getInstructionsAsmPattern(["OPCODE2", "OPCODE3"]))
|
|
2294
|
+
|
|
2295
|
+
function getInstructionsAsmPattern(instruction) {
|
|
2296
|
+
return _patternSplitter +
|
|
2297
|
+
(
|
|
2298
|
+
Array.isArray(instruction) ?
|
|
2299
|
+
instruction.join(_patternSplitter) :
|
|
2300
|
+
instruction
|
|
2301
|
+
) +
|
|
2302
|
+
_patternSplitter;
|
|
2303
|
+
}
|
|
2304
|
+
|
|
2305
|
+
|
|
2306
|
+
function getFirstEpAsmInstruction() {
|
|
2307
|
+
return PE.getDisasmString(PE.OffsetToVA(PE.getEntryPointOffset()));
|
|
2308
|
+
}
|
|
2309
|
+
|
|
2310
|
+
|
|
2311
|
+
// Gets an opcode from an instruction
|
|
2312
|
+
|
|
2313
|
+
function getAsmOpCode(instruction) {
|
|
2314
|
+
return instruction.indexOf(" ") !== -1 ? instruction.split(" ")[0] : instruction;
|
|
2315
|
+
}
|
|
2316
|
+
|
|
2317
|
+
|
|
2318
|
+
// Returns only the name of the opcode used, without arguments
|
|
2319
|
+
|
|
2320
|
+
function getFirstEpAsmOpCode() {
|
|
2321
|
+
return getAsmOpCode(getFirstEpAsmInstruction());
|
|
2322
|
+
}
|
|
2323
|
+
|
|
2324
|
+
|
|
2325
|
+
// VC ?warp_size@cuda@at@@YAHXZ
|
|
2326
|
+
// GNU _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i
|
|
2327
|
+
function isFunctionMangled(functionPattern) {
|
|
2328
|
+
return functionPattern.length > 5 && (
|
|
2329
|
+
(functionPattern[0] == '?' && functionPattern.indexOf("@@") !== -1) || // MSVCPP mangler
|
|
2330
|
+
(functionPattern.substring(0, 4) == "_ZSt") // GNUCPP mangler
|
|
2331
|
+
);
|
|
2332
|
+
}
|
|
2333
|
+
|
|
2334
|
+
|
|
2335
|
+
function getNameOfMangledFunction(functionPattern) {
|
|
2336
|
+
if (isFunctionMangled(functionPattern)) {
|
|
2337
|
+
if (functionPattern[0] === '?') return functionPattern.split("?")[1].split("@")[0]; // MSVCPP mangler
|
|
2338
|
+
else if (functionPattern[0] === '_') { // GNUCPP mangler
|
|
2339
|
+
const match = functionPattern.match(/_ZSt(\d+)(\w+)/);
|
|
2340
|
+
|
|
2341
|
+
if (match) {
|
|
2342
|
+
return match[2].substring(0, parseInt(match[1], 10));
|
|
2343
|
+
} else {
|
|
2344
|
+
return functionPattern;
|
|
2345
|
+
}
|
|
2346
|
+
}
|
|
2347
|
+
} else {
|
|
2348
|
+
return functionPattern;
|
|
2349
|
+
}
|
|
2350
|
+
}
|
|
2351
|
+
|
|
2352
|
+
|
|
2353
|
+
function validateImportHashes(dbCollection) {
|
|
2354
|
+
for (var i = 0; i < dbCollection.length; i++) {
|
|
2355
|
+
const currentIndex = i,
|
|
2356
|
+
currentArrayPattern = dbCollection[currentIndex];
|
|
2357
|
+
|
|
2358
|
+
const name = currentArrayPattern[0],
|
|
2359
|
+
version = currentArrayPattern[1],
|
|
2360
|
+
position = currentArrayPattern[2],
|
|
2361
|
+
hash = currentArrayPattern[3];
|
|
2362
|
+
|
|
2363
|
+
if (PE.isImportPositionHashPresent(position, hash)) {
|
|
2364
|
+
return currentArrayPattern;
|
|
2365
|
+
}
|
|
2366
|
+
}
|
|
2367
|
+
|
|
2368
|
+
return null;
|
|
2369
|
+
}
|
|
2370
|
+
|
|
2371
|
+
|
|
2372
|
+
function validateSectionNames(dbCollection) {
|
|
2373
|
+
for (var i = 0; i < dbCollection.length; i++) {
|
|
2374
|
+
const currentIndex = i,
|
|
2375
|
+
currentArrayPattern = dbCollection[currentIndex];
|
|
2376
|
+
|
|
2377
|
+
const name = currentArrayPattern[0],
|
|
2378
|
+
version = currentArrayPattern[1],
|
|
2379
|
+
sectionName = currentArrayPattern[2];
|
|
2380
|
+
|
|
2381
|
+
if (PE.isSectionNamePresent(sectionName)) {
|
|
2382
|
+
return currentArrayPattern;
|
|
2383
|
+
}
|
|
2384
|
+
}
|
|
2385
|
+
|
|
2386
|
+
return null;
|
|
2387
|
+
}
|
|
2388
|
+
|
|
2389
|
+
|
|
2390
|
+
|
|
2391
|
+
function scanForLanguages_NET_and_Native() {
|
|
2392
|
+
log(logType.nothing, "Scanning to programming language has started!");
|
|
2393
|
+
|
|
2394
|
+
var c_cpp = _isLangPresent("C/C++"); // Unknown; C or C++
|
|
2395
|
+
|
|
2396
|
+
const extdb = [
|
|
2397
|
+
["C++", "cpp"],
|
|
2398
|
+
["Rust", "rs"],
|
|
2399
|
+
["Java", "class"],
|
|
2400
|
+
["JavaScript", "js"],
|
|
2401
|
+
["Python", "pyd"]
|
|
2402
|
+
];
|
|
2403
|
+
|
|
2404
|
+
for (var i = 0; i < extdb.length; i++) {
|
|
2405
|
+
const langName = extdb[i][0],
|
|
2406
|
+
langExtName = extdb[i][1];
|
|
2407
|
+
|
|
2408
|
+
if (PE.isSignaturePresent(0x00, PE.getSize(), "%% %% %% %% %% %% %% %% %% '." + langExtName + "' 00 00")) {
|
|
2409
|
+
log(logType.any, "Lines of ." + langExtName + " files (" + langName + ") detected");
|
|
2410
|
+
_setLangByHeur(langName);
|
|
2411
|
+
}
|
|
2412
|
+
}
|
|
2413
|
+
|
|
2414
|
+
if (!_isLangDetected("C++") && PE.isSignaturePresent(0x00, PE.getSize(), "%% %% %% %% %% %% %% %% %% %% '.c' 00")) {
|
|
2415
|
+
log(logType.any, "Lines of .c files (C) detected (not a C++)");
|
|
2416
|
+
_setLangByHeur("C");
|
|
2417
|
+
}
|
|
2418
|
+
|
|
2419
|
+
if (!_getNumberOfResults("protector") &&
|
|
2420
|
+
!_getNumberOfResults("cryptor") &&
|
|
2421
|
+
!_getNumberOfResults("~cryptor")
|
|
2422
|
+
) {
|
|
2423
|
+
|
|
2424
|
+
var isPpLibraryPresent = false,
|
|
2425
|
+
isCLibraryPresent = false;
|
|
2426
|
+
|
|
2427
|
+
for (var i = 0; i < PE.getNumberOfImports(); i++) {
|
|
2428
|
+
const libraryName = PE.getImportLibraryName(i).toLowerCase();
|
|
2429
|
+
|
|
2430
|
+
// Detect mangler
|
|
2431
|
+
for (var k = 0; k < PE.getNumberOfImportThunks(i); k++) {
|
|
2432
|
+
const functionName = PE.getImportFunctionName(i, k); // import, thunk
|
|
2433
|
+
|
|
2434
|
+
if (!isPpLibraryPresent && isFunctionMangled(functionName)) {
|
|
2435
|
+
log(logType.any, "Mangler detected -> \"" + libraryName + "\", at function \"" + getNameOfMangledFunction(functionName) + "\"");
|
|
2436
|
+
|
|
2437
|
+
if (!_getNumberOfResults("compiler") && !_getNumberOfResults("~compiler")) {
|
|
2438
|
+
if (functionName[0] == '_') {
|
|
2439
|
+
_setResult("~compiler", "MinGW", String(), String());
|
|
2440
|
+
} else if (functionName[0] == '?') {
|
|
2441
|
+
_setResult("~compiler", "Microsoft Visual C/C++", String(), String());
|
|
2442
|
+
}
|
|
2443
|
+
}
|
|
2444
|
+
|
|
2445
|
+
if (!_isLangDetected()) isPpLibraryPresent = true; // if language is unknown
|
|
2446
|
+
}
|
|
2447
|
+
}
|
|
2448
|
+
|
|
2449
|
+
|
|
2450
|
+
|
|
2451
|
+
if (libraryName.indexOf("msvcr") !== -1) {
|
|
2452
|
+
log(logType.any, "C library present -> \"" + libraryName + "\"");
|
|
2453
|
+
isCLibraryPresent = true;
|
|
2454
|
+
}
|
|
2455
|
+
|
|
2456
|
+
if (
|
|
2457
|
+
libraryName.indexOf("++") !== -1 ||
|
|
2458
|
+
libraryName.indexOf("cpp") !== -1 ||
|
|
2459
|
+
libraryName.indexOf("msvcp") !== -1
|
|
2460
|
+
) {
|
|
2461
|
+
log(logType.any, "C++ library present -> \"" + libraryName + "\"");
|
|
2462
|
+
isPpLibraryPresent = true;
|
|
2463
|
+
}
|
|
2464
|
+
}
|
|
2465
|
+
|
|
2466
|
+
|
|
2467
|
+
|
|
2468
|
+
|
|
2469
|
+
const rdataSection = PE.section[".rdata"];
|
|
2470
|
+
|
|
2471
|
+
if (rdataSection) {
|
|
2472
|
+
if (c_cpp && // if C/C++ detected by DIE
|
|
2473
|
+
PE.isSignaturePresent(
|
|
2474
|
+
rdataSection.FileOffset,
|
|
2475
|
+
rdataSection.FileSize,
|
|
2476
|
+
generateUnicodeSignatureMask("Visual C++"))) {
|
|
2477
|
+
|
|
2478
|
+
log(logType.any, "Embedded Visual C++ Runtime detected.");
|
|
2479
|
+
isPpLibraryPresent = true; // Visual C++ Runtime library in resources
|
|
2480
|
+
}
|
|
2481
|
+
}
|
|
2482
|
+
|
|
2483
|
+
|
|
2484
|
+
if (isPpLibraryPresent || (c_cpp && PE.isSignaturePresent(0x00, PE.getSize() - PE.getOverlaySize(), "' C++ '"))) {
|
|
2485
|
+
_setLangByHeur("C++");
|
|
2486
|
+
} else if (!_isLangPresent("C++") && isCLibraryPresent && (PE.isFunctionPresent("_iob") || PE.isFunctionPresent("printf") || PE.isFunctionPresent("malloc") || PE.isFunctionPresent("memset"))) {
|
|
2487
|
+
_setLangByHeur("C");
|
|
2488
|
+
} else if (PE.isLibraryPresentExp(/^api-ms-win-crt*/i) || PE.section[".msvcjmc"]) {
|
|
2489
|
+
_setLangByHeur("C/C++");
|
|
2490
|
+
} else if (!_isLangDetected() && !_getNumberOfResults("compiler") && !PE.isNET()) {
|
|
2491
|
+
_setLangByHeur("ASMx" + (PE.is64() ? "64" : "86"));
|
|
2492
|
+
}
|
|
2493
|
+
}
|
|
2494
|
+
}
|
|
2495
|
+
|
|
2496
|
+
|
|
2497
|
+
function _setLangByHeur(languageName) {
|
|
2498
|
+
log(logType.any, languageName + " language detected!");
|
|
2499
|
+
_setLang(languageName, true, heurLabel);
|
|
2500
|
+
}
|
|
2501
|
+
|
|
2502
|
+
|
|
2503
|
+
function log(messageTypeId, messageText) {
|
|
2504
|
+
// if (PE.isProfiling()) return null;
|
|
2505
|
+
|
|
2506
|
+
if (messageText.indexOf("\n") != -1) {
|
|
2507
|
+
throw "Illegal char at log( ... )";
|
|
2508
|
+
}
|
|
2509
|
+
|
|
2510
|
+
var prefix = String();
|
|
2511
|
+
|
|
2512
|
+
if (messageTypeId !== -2) {
|
|
2513
|
+
prefix = heurLabel;
|
|
2514
|
+
}
|
|
2515
|
+
|
|
2516
|
+
if (messageTypeId > -2 && messageTypeId !== 0) {
|
|
2517
|
+
prefix += "/";
|
|
2518
|
+
}
|
|
2519
|
+
|
|
2520
|
+
switch (messageTypeId) {
|
|
2521
|
+
case -2:
|
|
2522
|
+
prefix = "!";
|
|
2523
|
+
break;
|
|
2524
|
+
case -1:
|
|
2525
|
+
prefix += "About";
|
|
2526
|
+
break;
|
|
2527
|
+
case 1:
|
|
2528
|
+
prefix += "Any";
|
|
2529
|
+
break;
|
|
2530
|
+
case 2:
|
|
2531
|
+
prefix += ".NET";
|
|
2532
|
+
break;
|
|
2533
|
+
}
|
|
2534
|
+
|
|
2535
|
+
_log("[" + prefix + "] " + messageText);
|
|
2536
|
+
}
|
|
2537
|
+
|
|
2538
|
+
|
|
2539
|
+
|
|
2540
|
+
// ALPHA v0.01
|
|
2541
|
+
// The module is disabled and does not work
|
|
2542
|
+
// You can write this yourself if you want.
|
|
2543
|
+
|
|
2544
|
+
function scanForMaciliousCode_NET_and_Native() {
|
|
2545
|
+
|
|
2546
|
+
var _CriticalProc_ntdll = false;
|
|
2547
|
+
|
|
2548
|
+
if (validateSignature("'RtlSetProcessIsCritical'")) {
|
|
2549
|
+
_CriticalProc_ntdll = true;
|
|
2550
|
+
}
|
|
2551
|
+
|
|
2552
|
+
if (_CriticalProc_ntdll) heurAvSetResult("CriticalProc_ntdll", 8);
|
|
2553
|
+
|
|
2554
|
+
|
|
2555
|
+
|
|
2556
|
+
|
|
2557
|
+
var _TakeScreenshot = false;
|
|
2558
|
+
|
|
2559
|
+
if (PE.isNET()) {
|
|
2560
|
+
if (validateNetObject("BitBlt") || validateNetObject("GetDC")) {
|
|
2561
|
+
_TakeScreenshot = true;
|
|
2562
|
+
}
|
|
2563
|
+
} else { // Global scan
|
|
2564
|
+
if (validateSignature("00'BitBlt'00") || validateSignature("00'GetDC'00")) {
|
|
2565
|
+
_TakeScreenshot = true;
|
|
2566
|
+
}
|
|
2567
|
+
}
|
|
2568
|
+
|
|
2569
|
+
if (_TakeScreenshot) heurAvSetResult("TakeScreenshot", 3);
|
|
2570
|
+
}
|
|
2571
|
+
|
|
2572
|
+
|
|
2573
|
+
function heurAvSetResult(label, scores) {
|
|
2574
|
+
if (scores <= 10 && scores >= 0) {
|
|
2575
|
+
_setResult("macilious", ("Win" + (PE.is64() ? "64" : "32") + ".") + label, "Heuristic AV", scores + "/10");
|
|
2576
|
+
} else {
|
|
2577
|
+
throw "Incorrect scores value for '" + label + "'";
|
|
2578
|
+
}
|
|
2579
|
+
}
|
|
2580
|
+
|
|
2581
|
+
|
|
2582
|
+
// Every time I start writing bad code I get hit with my head on the keybofewuihdsowefjfqodgsa79dowqhdsioefurogrwhuoguethuhofrwyi
|