die-python 0.4.0__cp313-abi3-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.
Files changed (2917) hide show
  1. db/.vscode/about.txt +1 -0
  2. db/.vscode/settings.json +5 -0
  3. db/ACE +48 -0
  4. db/APK/APKProtect.2.sg +15 -0
  5. db/APK/APKProtector.2.sg +20 -0
  6. db/APK/AlibabaProtection.2.sg +15 -0
  7. db/APK/AndroidRepublic.2.sg +17 -0
  8. db/APK/ApktoolPlus.6.sg +12 -0
  9. db/APK/AppGuard.2.sg +17 -0
  10. db/APK/AppSolid.2.sg +12 -0
  11. db/APK/BaiduProtection.2.sg +18 -0
  12. db/APK/BangBangReinforcement.2.sg +27 -0
  13. db/APK/BangcleProtection.2.sg +14 -0
  14. db/APK/DXShield.2.sg +12 -0
  15. db/APK/DexProtector.2.sg +23 -0
  16. db/APK/DingXiangReinforcement.2.sg +14 -0
  17. db/APK/EasyShield.2.sg +19 -0
  18. db/APK/Gemalto.2.sg +19 -0
  19. db/APK/Hdus-Wjus.2.sg +14 -0
  20. db/APK/IL2CPP.4.sg +14 -0
  21. db/APK/Ijiami.2.sg +24 -0
  22. db/APK/Jiagu.2.sg +17 -0
  23. db/APK/Kiro.2.sg +12 -0
  24. db/APK/Kiwi.2.sg +23 -0
  25. db/APK/Kony.2.sg +12 -0
  26. db/APK/LIAPP.2.sg +16 -0
  27. db/APK/MedusaH.2.sg +12 -0
  28. db/APK/MobileTencentProtect.2.sg +14 -0
  29. db/APK/NQShield.2.sg +15 -0
  30. db/APK/NagaPTProtection.2.sg +14 -0
  31. db/APK/OLLVM-TTL.2.sg +14 -0
  32. db/APK/Obfuscapk.2.sg +14 -0
  33. db/APK/PackageName.1.sg +15 -0
  34. db/APK/PangXie.2.sg +14 -0
  35. db/APK/ProGuard.2.sg +12 -0
  36. db/APK/QDBH.2.sg +12 -0
  37. db/APK/Qihoo360Protection.2.sg +15 -0
  38. db/APK/SandHook.4.sg +16 -0
  39. db/APK/SecNeo.2.sg +19 -0
  40. db/APK/SecShell.2.sg +15 -0
  41. db/APK/SingleJar.3.sg +10 -0
  42. db/APK/TencentLegu.2.sg +18 -0
  43. db/APK/TencentProtection.2.sg +14 -0
  44. db/APK/TencentSecurity.2.sg +17 -0
  45. db/APK/TongfuShield.2.sg +21 -0
  46. db/APK/UnicomSDK.4.sg +21 -0
  47. db/APK/Unity.4.sg +12 -0
  48. db/APK/VDog.2.sg +16 -0
  49. db/APK/Yidun.2.sg +16 -0
  50. db/APK/_APK.0.sg +15 -0
  51. db/APK/_init +2 -0
  52. db/APK/iCrypt.2.sg +24 -0
  53. db/Amiga/DeliTracker.1.sg +14 -0
  54. db/Amiga/_Amiga.0.sg +15 -0
  55. db/Amiga/_init +2 -0
  56. db/Archive/_Archive.0.sg +17 -0
  57. db/Archive/_init +2 -0
  58. db/Binary/Amiga_loadable.1.sg +16 -0
  59. db/Binary/Empty.1.sg +11 -0
  60. db/Binary/Img.UDIF.1.sg +15 -0
  61. db/Binary/RIFF.1.sg +19 -0
  62. db/Binary/U-Boot.1.sg +321 -0
  63. db/Binary/Universal_Binary.1.sg +17 -0
  64. db/Binary/Video.FLV.1.sg +16 -0
  65. db/Binary/__MiniExtensionsHeuristic_By_DosX.7.sg +184 -0
  66. db/Binary/__MiniJavaScriptHeuristic_By_DosX.7.sg +44 -0
  67. db/Binary/_init +4 -0
  68. db/Binary/archive.7z.1.sg +14 -0
  69. db/Binary/archive.ACE.1.sg +10 -0
  70. db/Binary/archive.AR.1.sg +85 -0
  71. db/Binary/archive.ARC.1.sg +16 -0
  72. db/Binary/archive.ARJ.1.sg +9 -0
  73. db/Binary/archive.ASAR.sg +13 -0
  74. db/Binary/archive.BZip.1.sg +20 -0
  75. db/Binary/archive.CFL3.1.sg +25 -0
  76. db/Binary/archive.Cab.1.sg +25 -0
  77. db/Binary/archive.DEFLATE.1.sg +186 -0
  78. db/Binary/archive.DotBundle.sg +9 -0
  79. db/Binary/archive.LRZ.1.sg +57 -0
  80. db/Binary/archive.LZ4.1.sg +42 -0
  81. db/Binary/archive.LZOP.1.sg +13 -0
  82. db/Binary/archive.MS_Compound.1.sg +24 -0
  83. db/Binary/archive.PEA.1.sg +65 -0
  84. db/Binary/archive.RAR.1.sg +9 -0
  85. db/Binary/archive.Unity.1.sg +74 -0
  86. db/Binary/archive.ZIP.1.sg +10 -0
  87. db/Binary/archive.ZLIB.1.sg +14 -0
  88. db/Binary/archive.ZPAQ.1.sg +15 -0
  89. db/Binary/archive.btoa.1.sg +14 -0
  90. db/Binary/archives.1.sg +299 -0
  91. db/Binary/archives.ancient.sg +506 -0
  92. db/Binary/audio.1.sg +12079 -0
  93. db/Binary/audio.8svx.1.sg +16 -0
  94. db/Binary/audio.ACM.1.sg +22 -0
  95. db/Binary/audio.AU.1.sg +49 -0
  96. db/Binary/audio.DSS.1.sg +57 -0
  97. db/Binary/audio.FSB.1.sg +105 -0
  98. db/Binary/audio.VOC.1.sg +97 -0
  99. db/Binary/audio.WAV.1.sg +320 -0
  100. db/Binary/audio.mp3.2.sg +189 -0
  101. db/Binary/backup_images.1.sg +27 -0
  102. db/Binary/bin.AAALogo.1.sg +16 -0
  103. db/Binary/bin.Atari_ST.1.sg +12 -0
  104. db/Binary/bin.GameMaps.1.sg +13 -0
  105. db/Binary/bin.GuitarPro.1.sg +26 -0
  106. db/Binary/bin.Hermes.1.sg +16 -0
  107. db/Binary/bin.IDA.1.sg +78 -0
  108. db/Binary/bin.ISO_9660.1.sg +13 -0
  109. db/Binary/bin.JMDL.1.sg +34 -0
  110. db/Binary/bin.JSC.1.sg +88 -0
  111. db/Binary/bin.Java.1.sg +152 -0
  112. db/Binary/bin.KeePass.1.sg +22 -0
  113. db/Binary/bin.LUA.1.sg +48 -0
  114. db/Binary/bin.NVA.1.sg +15 -0
  115. db/Binary/bin.PDB.1.sg +16 -0
  116. db/Binary/bin.PEFF.1.sg +11 -0
  117. db/Binary/bin.PalmFile.1.sg +104 -0
  118. db/Binary/bin.Python.1.sg +628 -0
  119. db/Binary/bin.RPGMaker2Kdata.1.sg +242 -0
  120. db/Binary/bin.SWF.1.sg +26 -0
  121. db/Binary/bin.WAD.1.sg +19 -0
  122. db/Binary/bin.WindowsIconCacheDB.1.sg +34 -0
  123. db/Binary/bin.ZBMP.1.sg +16 -0
  124. db/Binary/cad.DWG.1.sg +63 -0
  125. db/Binary/cert.WinAuth.1.sg +13 -0
  126. db/Binary/database.SQLite.1.sg +45 -0
  127. db/Binary/databases.1.sg +117 -0
  128. db/Binary/debugData.1.sg +68 -0
  129. db/Binary/doc.CHM.1.sg +18 -0
  130. db/Binary/doc.DJVU.1.sg +113 -0
  131. db/Binary/doc.HLP.1.sg +11 -0
  132. db/Binary/doc.PDF.1.sg +16 -0
  133. db/Binary/doc.RTF.1.sg +13 -0
  134. db/Binary/donut.1.sg +49 -0
  135. db/Binary/font.ADOBE.1.sg +35 -0
  136. db/Binary/font.BMF.1.sg +63 -0
  137. db/Binary/format.MS-DBG.1.sg +19 -0
  138. db/Binary/format.MS-PST.sg +15 -0
  139. db/Binary/format.MS-VHD.1.sg +61 -0
  140. db/Binary/format.MS-VHDX.sg +16 -0
  141. db/Binary/format.MS-WIM.1.sg +43 -0
  142. db/Binary/format.MS-XNA.1.sg +80 -0
  143. db/Binary/format.UE.1.sg +36 -0
  144. db/Binary/format.VDI.1.sg +40 -0
  145. db/Binary/formats.1.sg +90 -0
  146. db/Binary/graphics.1.sg +37 -0
  147. db/Binary/image.ANI.1.sg +26 -0
  148. db/Binary/image.BMP.1.sg +48 -0
  149. db/Binary/image.CUR.1.sg +55 -0
  150. db/Binary/image.DDS.1.sg +26 -0
  151. db/Binary/image.EPS.1.sg +26 -0
  152. db/Binary/image.GIF.1.sg +95 -0
  153. db/Binary/image.ICO.1.sg +57 -0
  154. db/Binary/image.JNG.1.sg +34 -0
  155. db/Binary/image.JPEG.1.sg +52 -0
  156. db/Binary/image.JPEG.DQT.4.sg +13 -0
  157. db/Binary/image.JPEG.Tools.3.sg +53 -0
  158. db/Binary/image.JPEG.camera.2.sg +16 -0
  159. db/Binary/image.JPEG.comment.4.sg +16 -0
  160. db/Binary/image.JPEGXL.1.sg +15 -0
  161. db/Binary/image.KTX.1.sg +44 -0
  162. db/Binary/image.LBM.1.sg +69 -0
  163. db/Binary/image.MNG.1.sg +19 -0
  164. db/Binary/image.PCX.1.sg +69 -0
  165. db/Binary/image.PNG.1.sg +165 -0
  166. db/Binary/image.PSD.1.sg +63 -0
  167. db/Binary/image.PVR.1.sg +29 -0
  168. db/Binary/image.QOI.1.sg +36 -0
  169. db/Binary/image.TGA.1.sg +149 -0
  170. db/Binary/image.TIFF.1.sg +186 -0
  171. db/Binary/image.XAR.1.sg +31 -0
  172. db/Binary/img.VM.1.sg +13 -0
  173. db/Binary/overlays.6.sg +367 -0
  174. db/Binary/rom.1.sg +1327 -0
  175. db/Binary/shellcode.pe_to_shellcode.1.sg +107 -0
  176. db/Binary/srdi-monoxgas.1.sg +128 -0
  177. db/Binary/text.HTML.1.sg +14 -0
  178. db/Binary/text.Pascal.1.sg +19 -0
  179. db/Binary/text.RegistryFile.sg +20 -0
  180. db/Binary/text.Shell.1.sg +14 -0
  181. db/Binary/text.XML.1.sg +18 -0
  182. db/Binary/text.c.1.sg +35 -0
  183. db/Binary/text.pdb.1.sg +40 -0
  184. db/Binary/text.plaintext.3.sg +25 -0
  185. db/Binary/text.python.1.sg +17 -0
  186. db/Binary/text.script.2.sg +16 -0
  187. db/Binary/video.MP4.1.sg +16 -0
  188. db/Borland +19 -0
  189. db/COM/32-bit_crypt.2.sg +13 -0
  190. db/COM/4kZIP.2.sg +13 -0
  191. db/COM/8086_Forth_83.4.sg +14 -0
  192. db/COM/A3E.1.sg +13 -0
  193. db/COM/ABK-Scrambler.2.sg +12 -0
  194. db/COM/ACE_Scrambler.2.sg +34 -0
  195. db/COM/ACiDDRAW.1.sg +16 -0
  196. db/COM/ANS2ALL.1.sg +18 -0
  197. db/COM/ARF_AV_Inject.1.sg +14 -0
  198. db/COM/ASC2COM.1.sg +25 -0
  199. db/COM/ASIC-Basic.4.sg +21 -0
  200. db/COM/AVAST-Protect.2.sg +13 -0
  201. db/COM/AVPACK.2.sg +14 -0
  202. db/COM/AdFlt.2.sg +17 -0
  203. db/COM/Anti-Lamer_Cryptor.2.sg +14 -0
  204. db/COM/Anti-hack_encryption_system.2.sg +13 -0
  205. db/COM/AutoCracker.1.sg +14 -0
  206. db/COM/BAT2EXEC.2.sg +18 -0
  207. db/COM/BIN-Lock.2.sg +14 -0
  208. db/COM/BatLite.4.sg +13 -0
  209. db/COM/Best_Protection_Kit-B.2.sg +16 -0
  210. db/COM/Borland_C++.4.sg +17 -0
  211. db/COM/Budokan.1.sg +13 -0
  212. db/COM/C-crypt.2.sg +14 -0
  213. db/COM/CC#3.2.sg +13 -0
  214. db/COM/CC.2.sg +22 -0
  215. db/COM/CC286.2.sg +14 -0
  216. db/COM/CCC.2.sg +16 -0
  217. db/COM/CHECKPRG.2.sg +13 -0
  218. db/COM/CNT.2.sg +13 -0
  219. db/COM/COM-Protect.2.sg +16 -0
  220. db/COM/COM-Protection.2.sg +13 -0
  221. db/COM/COM2TXT.1.sg +13 -0
  222. db/COM/COMCRYPT.2.sg +23 -0
  223. db/COM/COMPACK.2.sg +32 -0
  224. db/COM/COMPROTECT.2.sg +14 -0
  225. db/COM/COM_Sccrambler.2.sg +14 -0
  226. db/COM/COP.2.sg +14 -0
  227. db/COM/CPAV.1.sg +13 -0
  228. db/COM/CRX2COM.1.sg +12 -0
  229. db/COM/Character_Intro_Engine.1.sg +16 -0
  230. db/COM/Cheat_packer.2.sg +13 -0
  231. db/COM/CodeLock.2.sg +14 -0
  232. db/COM/ComProt.2.sg +13 -0
  233. db/COM/ComProtector.2.sg +18 -0
  234. db/COM/Comlock.2.sg +19 -0
  235. db/COM/CrAcKeR.2.sg +14 -0
  236. db/COM/Crack2EXE.1.sg +14 -0
  237. db/COM/CryptCom.2.sg +18 -0
  238. db/COM/CryptGeneric.2.sg +12 -0
  239. db/COM/Crypt_(Dismember).2.sg +16 -0
  240. db/COM/Crypto-King.2.sg +13 -0
  241. db/COM/CyberWare_Packer.2.sg +13 -0
  242. db/COM/DCFR.2.sg +13 -0
  243. db/COM/DIGPAK.1.sg +16 -0
  244. db/COM/DOC2COM.1.sg +13 -0
  245. db/COM/DOC2PAGE.1.sg +13 -0
  246. db/COM/DS-CRP.2.sg +16 -0
  247. db/COM/Datalight_C.4.sg +15 -0
  248. db/COM/Deep_Crypter.2.sg +14 -0
  249. db/COM/Deeper.2.sg +17 -0
  250. db/COM/Diet.2.sg +26 -0
  251. db/COM/Dn.COM_Cruncher.2.sg +13 -0
  252. db/COM/E2C-Scrambler.2.sg +13 -0
  253. db/COM/E2C.1.sg +16 -0
  254. db/COM/E2C1.2.sg +13 -0
  255. db/COM/EPW.2.sg +14 -0
  256. db/COM/EXE2COM.1.sg +72 -0
  257. db/COM/EXETools.2.sg +22 -0
  258. db/COM/EXETools_EXE2COM.1.sg +16 -0
  259. db/COM/Easy!-C.4.sg +13 -0
  260. db/COM/Entropy_Coder.2.sg +13 -0
  261. db/COM/ExOM.2.sg +14 -0
  262. db/COM/FCRYPT.2.sg +14 -0
  263. db/COM/FIXCRK.1.sg +13 -0
  264. db/COM/Fig-FORTH.4.sg +13 -0
  265. db/COM/ForthCMP.2.sg +23 -0
  266. db/COM/ForthCMP.4.sg +18 -0
  267. db/COM/FromBAT.1.sg +18 -0
  268. db/COM/GOAT.2.sg +19 -0
  269. db/COM/GP-FORTH.4.sg +14 -0
  270. db/COM/Guardian_Angel.2.sg +28 -0
  271. db/COM/HDKPROTC.2.sg +13 -0
  272. db/COM/HYPDOC.1.sg +13 -0
  273. db/COM/HackStop.2.sg +19 -0
  274. db/COM/ICE.1.sg +13 -0
  275. db/COM/IMMUN.1.sg +14 -0
  276. db/COM/Inbuild_Encryption.2.sg +14 -0
  277. db/COM/IntroC0der.1.sg +13 -0
  278. db/COM/J0B_cryptor.2.sg +13 -0
  279. db/COM/Keygen_crypt.2.sg +14 -0
  280. db/COM/Khrome_Crypt.2.sg +14 -0
  281. db/COM/LAME_GG.2.sg +12 -0
  282. db/COM/LAMPROT.2.sg +13 -0
  283. db/COM/LGLZ.2.sg +14 -0
  284. db/COM/LHA.1.sg +16 -0
  285. db/COM/LHarc_SFX.1.sg +16 -0
  286. db/COM/Lattice_C.4.sg +32 -0
  287. db/COM/List.1.sg +21 -0
  288. db/COM/Lock-Master.2.sg +14 -0
  289. db/COM/MASK.2.sg +26 -0
  290. db/COM/MCLock.2.sg +13 -0
  291. db/COM/MESS.2.sg +13 -0
  292. db/COM/MICRO-C.4.sg +16 -0
  293. db/COM/MIDPAK.1.sg +13 -0
  294. db/COM/MINIFORTH.4.sg +14 -0
  295. db/COM/MSCC.2.sg +14 -0
  296. db/COM/MakeRead.1.sg +14 -0
  297. db/COM/Maveriks_C0der.2.sg +16 -0
  298. db/COM/MegaShield.2.sg +14 -0
  299. db/COM/Microsoft_C.4.sg +13 -0
  300. db/COM/Microsoft_RTL.3.sg +16 -0
  301. db/COM/Microxor.2.sg +13 -0
  302. db/COM/MoonRock.2.sg +14 -0
  303. db/COM/NH.2.sg +13 -0
  304. db/COM/NetCode.1.sg +18 -0
  305. db/COM/NetRun.1.sg +13 -0
  306. db/COM/NoAV.2.sg +13 -0
  307. db/COM/Nodebug.2.sg +14 -0
  308. db/COM/ONLINE-HELP.1.sg +13 -0
  309. db/COM/OUTFORTH.4.sg +13 -0
  310. db/COM/PBFC.2.sg +14 -0
  311. db/COM/PCOM.2.sg +14 -0
  312. db/COM/PCRYPT.2.sg +14 -0
  313. db/COM/PCVault-Protect.2.sg +13 -0
  314. db/COM/PC_FORTH.4.sg +13 -0
  315. db/COM/PKLITE.2.sg +29 -0
  316. db/COM/PKZip.1.sg +18 -0
  317. db/COM/PRO-PACK.2.sg +21 -0
  318. db/COM/PROTECT.2.sg +67 -0
  319. db/COM/PTP.2.sg +16 -0
  320. db/COM/PU-Cryptor.2.sg +25 -0
  321. db/COM/PassCOM.2.sg +13 -0
  322. db/COM/Phrozen_Crew_cryptor.2.sg +13 -0
  323. db/COM/ProtEXE.2.sg +14 -0
  324. db/COM/R-Crypt.2.sg +19 -0
  325. db/COM/RCC.2.sg +25 -0
  326. db/COM/RDT_Compressor2.2.sg +13 -0
  327. db/COM/RDT_ENC_3.2.sg +13 -0
  328. db/COM/RELETTER.1.sg +14 -0
  329. db/COM/RMCOBOL.4.sg +16 -0
  330. db/COM/RSCC.2.sg +65 -0
  331. db/COM/SCC.2.sg +13 -0
  332. db/COM/SCRAM.2.sg +14 -0
  333. db/COM/SCRE2B.2.sg +14 -0
  334. db/COM/SCRNCH.2.sg +22 -0
  335. db/COM/SDW.2.sg +34 -0
  336. db/COM/SHOWV20.1.sg +18 -0
  337. db/COM/SHOW_IT.1.sg +13 -0
  338. db/COM/SHRINK.2.sg +14 -0
  339. db/COM/SP-FORTH.4.sg +18 -0
  340. db/COM/SPHINX_C--.4.sg +24 -0
  341. db/COM/Scramb.2.sg +18 -0
  342. db/COM/Scrypt!.2.sg +18 -0
  343. db/COM/Scrypt.2.sg +14 -0
  344. db/COM/SelfCrypt.2.sg +13 -0
  345. db/COM/SelfProtect386.2.sg +12 -0
  346. db/COM/Shadow.2.sg +14 -0
  347. db/COM/Shadow_COM_encryptor.2.sg +14 -0
  348. db/COM/Six-2-Four.2.sg +18 -0
  349. db/COM/SnoopStop.2.sg +14 -0
  350. db/COM/SoftGuard.1.sg +13 -0
  351. db/COM/Steplock.2.sg +14 -0
  352. db/COM/Surpas-86.4.sg +14 -0
  353. db/COM/Sydex.2.sg +13 -0
  354. db/COM/TCEC.2.sg +14 -0
  355. db/COM/TCOM.4.sg +16 -0
  356. db/COM/TPACK.2.sg +18 -0
  357. db/COM/TPC_Scramble.2.sg +12 -0
  358. db/COM/TXT2COM.1.sg +22 -0
  359. db/COM/TXTmaker.1.sg +14 -0
  360. db/COM/Text_Header.1.sg +14 -0
  361. db/COM/The_DRAW.1.sg +15 -0
  362. db/COM/Tiny_Xor.2.sg +14 -0
  363. db/COM/TurboBAT.1.sg +21 -0
  364. db/COM/Turbo_C++.4.sg +13 -0
  365. db/COM/Turbo_C.4.sg +27 -0
  366. db/COM/Turbo_Pascal.4.sg +30 -0
  367. db/COM/Txt2Exe.1.sg +14 -0
  368. db/COM/UNIFORTH.4.sg +13 -0
  369. db/COM/UPX.2.sg +22 -0
  370. db/COM/USCC.2.sg +14 -0
  371. db/COM/UnPackStop.2.sg +17 -0
  372. db/COM/UniCrypt.1.sg +14 -0
  373. db/COM/Unknown_cryptors.2.sg +74 -0
  374. db/COM/VGA_font_loader.1.sg +13 -0
  375. db/COM/VSF&K_protection.2.sg +13 -0
  376. db/COM/VSS.1.sg +13 -0
  377. db/COM/Vacsina.4.sg +12 -0
  378. db/COM/Venus.2.sg +12 -0
  379. db/COM/Vienna-C.4.sg +12 -0
  380. db/COM/Watcom_C.4.sg +37 -0
  381. db/COM/WiZ_Cryptor.2.sg +14 -0
  382. db/COM/XCK2COM.1.sg +12 -0
  383. db/COM/XE.2.sg +13 -0
  384. db/COM/XORCOPY.2.sg +14 -0
  385. db/COM/XPACK.2.sg +22 -0
  386. db/COM/XcomOR.2.sg +24 -0
  387. db/COM/XoReR.2.sg +26 -0
  388. db/COM/XorCom.2.sg +14 -0
  389. db/COM/Zbikowski_C.4.sg +13 -0
  390. db/COM/Zortech_C.4.sg +26 -0
  391. db/COM/_init +2 -0
  392. db/COM/aPACK.2.sg +22 -0
  393. db/COM/aPatch.2.sg +13 -0
  394. db/COM/acBBS_protection.2.sg +13 -0
  395. db/COM/com-crypt.2.sg +16 -0
  396. db/COM/com_RLE_packer.2.sg +15 -0
  397. db/COM/cryptors.2.sg +214 -0
  398. db/COM/envelope.2.sg +13 -0
  399. db/COM/fds-cp.2.sg +13 -0
  400. db/COM/integrity_checker.1.sg +13 -0
  401. db/COM/mCrypt.2.sg +14 -0
  402. db/COM/muSIMP-83.4.sg +14 -0
  403. db/COM/packers.2.sg +26 -0
  404. db/COM/patchers.1.sg +100 -0
  405. db/COM/protection.2.sg +13 -0
  406. db/COM/readme.com.1.sg +12 -0
  407. db/COM/simple_ansi_viewer.1.sg +12 -0
  408. db/COM/simple_self-displayer.1.sg +12 -0
  409. db/COM/spirit.2.sg +22 -0
  410. db/COM/x3.2.sg +18 -0
  411. db/CurIcoBPP +14 -0
  412. db/DEX/AESObfuscator.2.sg +14 -0
  413. db/DEX/APKProtect.2.sg +12 -0
  414. db/DEX/AlibabaProtection.2.sg +12 -0
  415. db/DEX/AllatoriObfuscator.2.sg +14 -0
  416. db/DEX/ApkEncryptor.2.sg +12 -0
  417. db/DEX/ApkToolPlus.6.sg +12 -0
  418. db/DEX/AppSolid.2.sg +12 -0
  419. db/DEX/BaiduProtection.2.sg +12 -0
  420. db/DEX/BangcleProtection.2.sg +12 -0
  421. db/DEX/EasyProtector.2.sg +12 -0
  422. db/DEX/Jiagu.2.sg +12 -0
  423. db/DEX/Kiwi.2.sg +12 -0
  424. db/DEX/LIAPP.2.sg +12 -0
  425. db/DEX/MedusaH.2.sg +12 -0
  426. db/DEX/ModGuard.2.sg +16 -0
  427. db/DEX/NQShield.2.sg +12 -0
  428. db/DEX/NagaPTProtection.2.sg +12 -0
  429. db/DEX/PangXie.2.sg +12 -0
  430. db/DEX/ProGuard.2.sg +12 -0
  431. db/DEX/QDBH.2.sg +12 -0
  432. db/DEX/SecNeo.2.sg +12 -0
  433. db/DEX/TencentProtection.2.sg +12 -0
  434. db/DEX/UnicomSDK.4.sg +12 -0
  435. db/DEX/VDog.2.sg +12 -0
  436. db/DEX/Yidun.2.sg +12 -0
  437. db/DEX/_DEX.0.sg +15 -0
  438. db/DEX/_init +2 -0
  439. db/DOS16M/_DOS16M.0.sg +15 -0
  440. db/DOS16M/_init +2 -0
  441. db/DOS4G/_DOS4G.0.sg +15 -0
  442. db/DOS4G/_init +2 -0
  443. db/ELF/Borland_Kylix.4.sg +19 -0
  444. db/ELF/Burneye.2.sg +12 -0
  445. db/ELF/DMD.4.sg +31 -0
  446. db/ELF/ELFCrypt.2.sg +12 -0
  447. db/ELF/Ezuri.1.sg +30 -0
  448. db/ELF/FASM.4.sg +23 -0
  449. db/ELF/Flexlm.4.sg +15 -0
  450. db/ELF/Free_Pascal.4.sg +46 -0
  451. db/ELF/GLIBC.3.sg +49 -0
  452. db/ELF/Go.4.sg +126 -0
  453. db/ELF/HASP.1.sg +28 -0
  454. db/ELF/HP_C++.4.sg +12 -0
  455. db/ELF/IBM_AIX_kernel_loader.sg +18 -0
  456. db/ELF/Oracle_Solaris_Studio.4.sg +47 -0
  457. db/ELF/PyInstaller.2.sg +24 -0
  458. db/ELF/QT.3.sg +44 -0
  459. db/ELF/Rust.4.sg +25 -0
  460. db/ELF/SDL.3.sg +35 -0
  461. db/ELF/UPX.2.sg +57 -0
  462. db/ELF/VBCC.4.sg +17 -0
  463. db/ELF/Virbox.2.sg +17 -0
  464. db/ELF/Watcom.4.sg +15 -0
  465. db/ELF/Zig.4.sg +22 -0
  466. db/ELF/_ELF.0.sg +15 -0
  467. db/ELF/_init +2 -0
  468. db/ELF/gcc.4.sg +95 -0
  469. db/ELF/gdc.4.sg +13 -0
  470. db/ELF/ldc.4.sg +34 -0
  471. db/ELF/movfuscator.4.sg +19 -0
  472. db/FASM +9 -0
  473. db/FPC +11 -0
  474. db/IPA/_init +2 -0
  475. db/JAR/SingleJar.3.sg +13 -0
  476. db/JAR/_JAR.0.sg +15 -0
  477. db/JAR/_init +2 -0
  478. db/LE/UPX.1.sg +85 -0
  479. db/LE/Watcom_C.4.sg +24 -0
  480. db/LE/_LE.0.sg +15 -0
  481. db/LE/_init +2 -0
  482. db/LX/Watcom C.4.sg +51 -0
  483. db/LX/_LX.0.sg +15 -0
  484. db/LX/_init +2 -0
  485. db/MACH/Carbon.3.sg +13 -0
  486. db/MACH/Cocoa.3.sg +11 -0
  487. db/MACH/Delphi.4.sg +21 -0
  488. db/MACH/QT.3.sg +18 -0
  489. db/MACH/UPX.2.sg +15 -0
  490. db/MACH/Virbox.2.sg +13 -0
  491. db/MACH/WebKit.3.sg +11 -0
  492. db/MACH/Zig.4.sg +22 -0
  493. db/MACH/_MACH.0.sg +15 -0
  494. db/MACH/_init +2 -0
  495. db/MACH/gcc.4.sg +35 -0
  496. db/MACH/java.3.sg +15 -0
  497. db/MACHOFAT/_MACHOFAT.0.sg +15 -0
  498. db/MACHOFAT/_init +2 -0
  499. db/MFC +14 -0
  500. db/MSDOS/$pirit.2.sg +47 -0
  501. db/MSDOS/32stub.0a.sg +13 -0
  502. db/MSDOS/ABKprot.2.sg +12 -0
  503. db/MSDOS/ACE.6.sg +10 -0
  504. db/MSDOS/AEP.2.sg +12 -0
  505. db/MSDOS/AINEXE.2.sg +19 -0
  506. db/MSDOS/ALEC.2.sg +14 -0
  507. db/MSDOS/ANS2ALL.1.sg +14 -0
  508. db/MSDOS/ARC.1.sg +23 -0
  509. db/MSDOS/ARJ.1.sg +14 -0
  510. db/MSDOS/ASIC-Basic.4.sg +18 -0
  511. db/MSDOS/AVAST_CRC-Check.2.sg +14 -0
  512. db/MSDOS/AVPACK.2.sg +16 -0
  513. db/MSDOS/Ada89.4.sg +13 -0
  514. db/MSDOS/Adys_COM2EXE.1.sg +11 -0
  515. db/MSDOS/Adys_Glue.2.sg +15 -0
  516. db/MSDOS/Aluwain.2.sg +12 -0
  517. db/MSDOS/Amisetup.1.sg +13 -0
  518. db/MSDOS/Anti-LAME.2.sg +13 -0
  519. db/MSDOS/Anti-hack_encryption_system.2.sg +13 -0
  520. db/MSDOS/Antilame.2.sg +14 -0
  521. db/MSDOS/ApBasic.4.sg +17 -0
  522. db/MSDOS/AutoHack.1.sg +12 -0
  523. db/MSDOS/Aztec_C-86.4.sg +40 -0
  524. db/MSDOS/BAT2EXEC.4.sg +16 -0
  525. db/MSDOS/BSTAR_FORTH.4.sg +13 -0
  526. db/MSDOS/BatLite.4.sg +13 -0
  527. db/MSDOS/BetterBASIC.4.sg +13 -0
  528. db/MSDOS/Bitlok.2.sg +14 -0
  529. db/MSDOS/Black_fist.2.sg +13 -0
  530. db/MSDOS/Blinker.0a.sg +25 -0
  531. db/MSDOS/Borland_C.4.sg +89 -0
  532. db/MSDOS/Borland_Pascal.4.sg +89 -0
  533. db/MSDOS/Borland_RTM.0a.sg +33 -0
  534. db/MSDOS/Borland_TDS.sg +14 -0
  535. db/MSDOS/Borland_TLINK.5.sg +13 -0
  536. db/MSDOS/Bunny.2.sg +14 -0
  537. db/MSDOS/CC.2.sg +18 -0
  538. db/MSDOS/CEPexe.2.sg +12 -0
  539. db/MSDOS/CERBERUS.2.sg +12 -0
  540. db/MSDOS/CII-C.4.sg +18 -0
  541. db/MSDOS/COMCRYPT.2.sg +15 -0
  542. db/MSDOS/COMPACK.2.sg +15 -0
  543. db/MSDOS/COMPROTECT.2.sg +14 -0
  544. db/MSDOS/CONVOY.2.sg +17 -0
  545. db/MSDOS/CPAV.1.sg +13 -0
  546. db/MSDOS/CRYPACK.2.sg +12 -0
  547. db/MSDOS/CRYPTEXE.2.sg +19 -0
  548. db/MSDOS/CSCRYPT_Pro.2.sg +14 -0
  549. db/MSDOS/CWSDPMI.0a.sg +22 -0
  550. db/MSDOS/CauseWay_DOS_Extender.0a.sg +16 -0
  551. db/MSDOS/ChSFX.1.sg +27 -0
  552. db/MSDOS/Ciphator.2.sg +12 -0
  553. db/MSDOS/Coderunner.1.sg +22 -0
  554. db/MSDOS/Codesafe.2.sg +13 -0
  555. db/MSDOS/ComProtector.2.sg +15 -0
  556. db/MSDOS/ComprEXE.2.sg +14 -0
  557. db/MSDOS/Compress-EXE.2.sg +14 -0
  558. db/MSDOS/Concurrent_Small_C.4.sg +16 -0
  559. db/MSDOS/CopyQM_SFX.1.sg +16 -0
  560. db/MSDOS/Copy_Protector.2.sg +15 -0
  561. db/MSDOS/Copylock_PC.1.sg +13 -0
  562. db/MSDOS/CrAcKeR.2.sg +14 -0
  563. db/MSDOS/CrackStop.2.sg +16 -0
  564. db/MSDOS/Cruncher.2.sg +12 -0
  565. db/MSDOS/CryExe.2.sg +12 -0
  566. db/MSDOS/CryptCom.2.sg +14 -0
  567. db/MSDOS/Crypt_(Dismember).2.sg +25 -0
  568. db/MSDOS/Crypt_(LightShow).2.sg +25 -0
  569. db/MSDOS/CrypteXeC.2.sg +15 -0
  570. db/MSDOS/Cryptors.2.sg +59 -0
  571. db/MSDOS/DAEMON_Protect.2.sg +12 -0
  572. db/MSDOS/DCREXE.2.sg +18 -0
  573. db/MSDOS/DIET.2.sg +33 -0
  574. db/MSDOS/DMC.2.sg +14 -0
  575. db/MSDOS/DOS32.0a.sg +22 -0
  576. db/MSDOS/DOS32_loader.0a.sg +14 -0
  577. db/MSDOS/DOS4G.0a.sg +16 -0
  578. db/MSDOS/DOSX16.0a.sg +27 -0
  579. db/MSDOS/DOS_16M.0a.sg +31 -0
  580. db/MSDOS/DOS_32A.0a.sg +22 -0
  581. db/MSDOS/DSHIELD.2.sg +11 -0
  582. db/MSDOS/Deeper.2.sg +17 -0
  583. db/MSDOS/DemoMaker.2.sg +14 -0
  584. db/MSDOS/DexEXE.2.sg +14 -0
  585. db/MSDOS/Digital_Research_C.4.sg +16 -0
  586. db/MSDOS/Disk_eXPress.1.sg +14 -0
  587. db/MSDOS/E-PROT.2.sg +14 -0
  588. db/MSDOS/EEXE.2.sg +14 -0
  589. db/MSDOS/EMMXXXX0_check.0a.sg +12 -0
  590. db/MSDOS/EMX.0a.sg +16 -0
  591. db/MSDOS/EPW.2.sg +18 -0
  592. db/MSDOS/EXARJ.1.sg +13 -0
  593. db/MSDOS/EXE-Crypt.2.sg +13 -0
  594. db/MSDOS/EXE-Cryptor.2.sg +19 -0
  595. db/MSDOS/EXE-Protect.2.sg +13 -0
  596. db/MSDOS/EXE2COM.1.sg +22 -0
  597. db/MSDOS/EXECUTRIX.2.sg +13 -0
  598. db/MSDOS/EXEGUARD.2.sg +12 -0
  599. db/MSDOS/EXEHigh.2.sg +14 -0
  600. db/MSDOS/EXEPACK.2.sg +57 -0
  601. db/MSDOS/EXETools.2.sg +16 -0
  602. db/MSDOS/EXETools_COM2EXE.1.sg +12 -0
  603. db/MSDOS/EXE_Manager.2.sg +14 -0
  604. db/MSDOS/EXE_Packer.2.sg +15 -0
  605. db/MSDOS/EXE_encryption.2.sg +13 -0
  606. db/MSDOS/Easy!-C.4.sg +15 -0
  607. db/MSDOS/Eliashim's_CodeTrack.1.sg +12 -0
  608. db/MSDOS/Encriptor.2.sg +12 -0
  609. db/MSDOS/Enkryptonator.2.sg +12 -0
  610. db/MSDOS/ExeCode.2.sg +18 -0
  611. db/MSDOS/ExeLITE.2.sg +15 -0
  612. db/MSDOS/ExeLock.2.sg +16 -0
  613. db/MSDOS/F-XLOCK.1.sg +13 -0
  614. db/MSDOS/FACRYPT.2.sg +12 -0
  615. db/MSDOS/FCP_IV.2.sg +13 -0
  616. db/MSDOS/FSE.2.sg +61 -0
  617. db/MSDOS/File_Shield.1.sg +19 -0
  618. db/MSDOS/Fitted_Modula-2.4.sg +14 -0
  619. db/MSDOS/ForthInfo.4.sg +18 -0
  620. db/MSDOS/FromBAT.1.sg +13 -0
  621. db/MSDOS/GFX_to_EXE.1.sg +14 -0
  622. db/MSDOS/GIFEXE.1.sg +16 -0
  623. db/MSDOS/GOAT.1.sg +21 -0
  624. db/MSDOS/GRABBER.1.sg +26 -0
  625. db/MSDOS/GRASP.4.sg +20 -0
  626. db/MSDOS/GamBit_Pro_Library.1.sg +14 -0
  627. db/MSDOS/GameWizard_DOS_Extender.0a.sg +12 -0
  628. db/MSDOS/Go32Stub.0a.sg +22 -0
  629. db/MSDOS/Graphic_WorkShop.1.sg +14 -0
  630. db/MSDOS/Guardian_Angel.2.sg +21 -0
  631. db/MSDOS/H+BEDV_SelfCheck.1.sg +18 -0
  632. db/MSDOS/HACKSTOP.2.sg +77 -0
  633. db/MSDOS/HASP.2.sg +14 -0
  634. db/MSDOS/HEALTH.2.sg +12 -0
  635. db/MSDOS/Header_Changer.2.sg +13 -0
  636. db/MSDOS/Hi-Tech_C.4.sg +16 -0
  637. db/MSDOS/HyperLOCK_386.2.sg +14 -0
  638. db/MSDOS/IBM_PC_Pascal.4.sg +32 -0
  639. db/MSDOS/ICE.1.sg +13 -0
  640. db/MSDOS/IMMUN.1.sg +14 -0
  641. db/MSDOS/Inertia.2.sg +14 -0
  642. db/MSDOS/Ironthorn.2.sg +14 -0
  643. db/MSDOS/JAM.2.sg +12 -0
  644. db/MSDOS/JmCryptExe.2.sg +19 -0
  645. db/MSDOS/John_Socha_Library.3.sg +13 -0
  646. db/MSDOS/Joke.2.sg +13 -0
  647. db/MSDOS/KeyMaker.2.sg +14 -0
  648. db/MSDOS/Khrome_Crypt.2.sg +12 -0
  649. db/MSDOS/Kvetch.2.sg +14 -0
  650. db/MSDOS/LE.0.sg +11 -0
  651. db/MSDOS/LGLZ.2.sg +14 -0
  652. db/MSDOS/LH.1.sg +11 -0
  653. db/MSDOS/LHA.1.sg +20 -0
  654. db/MSDOS/LHarc.1.sg +19 -0
  655. db/MSDOS/LOCK.2.sg +14 -0
  656. db/MSDOS/LSI_C.4.sg +14 -0
  657. db/MSDOS/LX.0.sg +11 -0
  658. db/MSDOS/LZEXE.2.sg +42 -0
  659. db/MSDOS/L_O_V_E__FORTH.4.sg +18 -0
  660. db/MSDOS/Lahey_Fortran.4.sg +15 -0
  661. db/MSDOS/LamerStop.2.sg +12 -0
  662. db/MSDOS/Lattice_C.4.sg +88 -0
  663. db/MSDOS/LockTite+.2.sg +12 -0
  664. db/MSDOS/Logitech_Modula-2.4.sg +14 -0
  665. db/MSDOS/MEGALITE.2.sg +12 -0
  666. db/MSDOS/MESS.2.sg +30 -0
  667. db/MSDOS/MSLite.1.sg +14 -0
  668. db/MSDOS/Maker.2.sg +14 -0
  669. db/MSDOS/Mandrake.2.sg +13 -0
  670. db/MSDOS/MegaBasic.4.sg +16 -0
  671. db/MSDOS/MegaBasic1.4.sg +30 -0
  672. db/MSDOS/Meridian_Ada.4.sg +29 -0
  673. db/MSDOS/Meridian_Pascal.4.sg +22 -0
  674. db/MSDOS/MetaWare_High_C.4.sg +30 -0
  675. db/MSDOS/MetaWare_Professional_Pascal.4.sg +24 -0
  676. db/MSDOS/Micro_Focus_Cobol.4.sg +19 -0
  677. db/MSDOS/Micro_Focus_DOS_extender.0a.sg +13 -0
  678. db/MSDOS/Microsoft_Basic.4.sg +23 -0
  679. db/MSDOS/Microsoft_C.4.sg +57 -0
  680. db/MSDOS/Microsoft_C_Library.3.sg +20 -0
  681. db/MSDOS/Microsoft_Fortran.4.sg +15 -0
  682. db/MSDOS/Microsoft_Quick_Basic.4.sg +35 -0
  683. db/MSDOS/Microsoft_Quick_Pascal.4.sg +16 -0
  684. db/MSDOS/Microsoft_RTL.3.sg +48 -0
  685. db/MSDOS/Microsoft_RTL_(Clipper).3.sg +13 -0
  686. db/MSDOS/MultiLoop_Protection.2.sg +13 -0
  687. db/MSDOS/MutaWWP.2.sg +14 -0
  688. db/MSDOS/Mutate.2.sg +21 -0
  689. db/MSDOS/NE.0.sg +11 -0
  690. db/MSDOS/NOCLIP.2.sg +14 -0
  691. db/MSDOS/NOTA.2.sg +14 -0
  692. db/MSDOS/NTShell.2.sg +14 -0
  693. db/MSDOS/Netware_loader.1.sg +12 -0
  694. db/MSDOS/Nodebug.2.sg +14 -0
  695. db/MSDOS/Novex.2.sg +12 -0
  696. db/MSDOS/Oberon-M.4.sg +14 -0
  697. db/MSDOS/Optlink.2.sg +31 -0
  698. db/MSDOS/Overlay.2.sg +13 -0
  699. db/MSDOS/Oyster.1.sg +13 -0
  700. db/MSDOS/PACKWIN.2.sg +14 -0
  701. db/MSDOS/PC-Guard.2.sg +30 -0
  702. db/MSDOS/PCC.4.sg +28 -0
  703. db/MSDOS/PCOM.2.sg +14 -0
  704. db/MSDOS/PDC_Prolog.4.sg +15 -0
  705. db/MSDOS/PGMPAK.2.sg +17 -0
  706. db/MSDOS/PGPROT.1.sg +12 -0
  707. db/MSDOS/PKEXE.2.sg +13 -0
  708. db/MSDOS/PKLITE.2.sg +59 -0
  709. db/MSDOS/PKSFX.1.sg +15 -0
  710. db/MSDOS/PKTINY.2.sg +14 -0
  711. db/MSDOS/PKZIP-SFX.1.sg +13 -0
  712. db/MSDOS/PKZIP_mini-sfx.1.sg +17 -0
  713. db/MSDOS/PK_sig.1.sg +12 -0
  714. db/MSDOS/PMODE.0a.sg +17 -0
  715. db/MSDOS/PMWLite.2.sg +14 -0
  716. db/MSDOS/PRO-PACK.2.sg +16 -0
  717. db/MSDOS/PRO32.0a.sg +14 -0
  718. db/MSDOS/PROPACK_SFX.1.sg +13 -0
  719. db/MSDOS/PROTECT.2.sg +101 -0
  720. db/MSDOS/PVAC.2.sg +14 -0
  721. db/MSDOS/Pacific_C.4.sg +24 -0
  722. db/MSDOS/Pack.2.sg +14 -0
  723. db/MSDOS/Packers.2.sg +17 -0
  724. db/MSDOS/Palladix.1.sg +12 -0
  725. db/MSDOS/Panda_immunizer.1.sg +14 -0
  726. db/MSDOS/Pascal_MT+86.4.sg +20 -0
  727. db/MSDOS/PassEXE.2.sg +12 -0
  728. db/MSDOS/Patchers.1.sg +18 -0
  729. db/MSDOS/Phar_Lap.0a.sg +31 -0
  730. db/MSDOS/Pksmart.2.sg +14 -0
  731. db/MSDOS/Power_C.4.sg +16 -0
  732. db/MSDOS/ProtEXE.2.sg +58 -0
  733. db/MSDOS/Protector.2.sg +13 -0
  734. db/MSDOS/Quadru-Lock.2.sg +12 -0
  735. db/MSDOS/R-Crypt.2.sg +13 -0
  736. db/MSDOS/RAR.6.sg +8 -0
  737. db/MSDOS/REC.2.sg +22 -0
  738. db/MSDOS/REC_small.1.sg +26 -0
  739. db/MSDOS/REC_small_AV.1.sg +18 -0
  740. db/MSDOS/RELETTER.1.sg +14 -0
  741. db/MSDOS/RERP.2.sg +13 -0
  742. db/MSDOS/RHC.2.sg +14 -0
  743. db/MSDOS/RJcrush.2.sg +12 -0
  744. db/MSDOS/RLE_com-packer.2.sg +13 -0
  745. db/MSDOS/RM_FORTRAN.4.sg +14 -0
  746. db/MSDOS/ROSETINY.2.sg +15 -0
  747. db/MSDOS/RSX.0a.sg +12 -0
  748. db/MSDOS/RTLink_VM_Manager.0a.sg +12 -0
  749. db/MSDOS/RTPatch_SFX.1.sg +13 -0
  750. db/MSDOS/Realia_Cobol.4.sg +16 -0
  751. db/MSDOS/Realia_SPITBOL.4.sg +14 -0
  752. db/MSDOS/Relpack.2.sg +14 -0
  753. db/MSDOS/SCRNCH.2.sg +14 -0
  754. db/MSDOS/SEA-AXE.2.sg +15 -0
  755. db/MSDOS/SFX.1.sg +14 -0
  756. db/MSDOS/SHOW_IT.1.sg +14 -0
  757. db/MSDOS/SP-FORTH.4.sg +18 -0
  758. db/MSDOS/Scramb.2.sg +13 -0
  759. db/MSDOS/Secure.2.sg +37 -0
  760. db/MSDOS/SelfChk.2.sg +14 -0
  761. db/MSDOS/Self_UnStuffer.2.sg +16 -0
  762. db/MSDOS/Shrink.2.sg +15 -0
  763. db/MSDOS/Shrinker.2.sg +14 -0
  764. db/MSDOS/SimplyWare.1.sg +22 -0
  765. db/MSDOS/Small_C.4.sg +20 -0
  766. db/MSDOS/SnoopStop.2.sg +12 -0
  767. db/MSDOS/StonyBrook_Pascal.4.sg +26 -0
  768. db/MSDOS/Stub-386.0a.sg +13 -0
  769. db/MSDOS/SuckStop.2.sg +27 -0
  770. db/MSDOS/Sydex_SFX.1.sg +19 -0
  771. db/MSDOS/Symantec_BASIC.4.sg +16 -0
  772. db/MSDOS/TCEC.2.sg +18 -0
  773. db/MSDOS/TMTSTUB.0a.sg +14 -0
  774. db/MSDOS/TSCRUNCH.2.sg +13 -0
  775. db/MSDOS/TTW.1.sg +17 -0
  776. db/MSDOS/TUCCRYP.2.sg +14 -0
  777. db/MSDOS/TXT2COM.1.sg +18 -0
  778. db/MSDOS/TXTmaker.1.sg +14 -0
  779. db/MSDOS/Tenth_Planet.2.sg +13 -0
  780. db/MSDOS/TinyProg.2.sg +27 -0
  781. db/MSDOS/Tinyprot.2.sg +16 -0
  782. db/MSDOS/Topspeed_C.4.sg +20 -0
  783. db/MSDOS/Topspeed_Modula.4.sg +42 -0
  784. db/MSDOS/TraceLock.2.sg +13 -0
  785. db/MSDOS/Trap.2.sg +50 -0
  786. db/MSDOS/TurboChainer.1.sg +13 -0
  787. db/MSDOS/Turbo_Basic.4.sg +18 -0
  788. db/MSDOS/Turbo_Prolog.4.sg +16 -0
  789. db/MSDOS/Txt2Exe.1.sg +14 -0
  790. db/MSDOS/UCEXE.2.sg +22 -0
  791. db/MSDOS/UPX.2.sg +46 -0
  792. db/MSDOS/UR_FORTH.4.sg +14 -0
  793. db/MSDOS/Un2pack.2.sg +14 -0
  794. db/MSDOS/UnPackStop.2.sg +33 -0
  795. db/MSDOS/UniVac.1.sg +14 -0
  796. db/MSDOS/Unknown_cryptors.2.sg +54 -0
  797. db/MSDOS/Upper_Deck_Forth.4.sg +14 -0
  798. db/MSDOS/V-Load.1.sg +13 -0
  799. db/MSDOS/Visual_Cobol.4.sg +16 -0
  800. db/MSDOS/WATCOM.4.sg +59 -0
  801. db/MSDOS/WDOSX.0a.sg +14 -0
  802. db/MSDOS/WDOSX32.0a.sg +12 -0
  803. db/MSDOS/WPFORTH.4.sg +14 -0
  804. db/MSDOS/WWPACK.2.sg +89 -0
  805. db/MSDOS/WWPACK_mutator.2.sg +53 -0
  806. db/MSDOS/Whitesmiths_C.4.sg +21 -0
  807. db/MSDOS/Window_book.1.sg +21 -0
  808. db/MSDOS/Wizardy_protection.1.sg +12 -0
  809. db/MSDOS/WordPerfect_EXEPack.2.sg +12 -0
  810. db/MSDOS/XDOC.2.sg +13 -0
  811. db/MSDOS/XMLOD.0a.sg +16 -0
  812. db/MSDOS/XPACK.2.sg +37 -0
  813. db/MSDOS/Xtender.0a.sg +14 -0
  814. db/MSDOS/ZIPSCRUB.2.sg +14 -0
  815. db/MSDOS/ZOO.1.sg +14 -0
  816. db/MSDOS/Zbikowski_C.4.sg +19 -0
  817. db/MSDOS/Zip.6.sg +8 -0
  818. db/MSDOS/Zortech(Symantec)_C.4.sg +56 -0
  819. db/MSDOS/Zurenava_DOS_Extender.0a.sg +13 -0
  820. db/MSDOS/_MSDOS.0.sg +15 -0
  821. db/MSDOS/_init +52 -0
  822. db/MSDOS/aPACK.2.sg +60 -0
  823. db/MSDOS/aPatch.2.sg +13 -0
  824. db/MSDOS/anti-tracing_add-on.1.sg +12 -0
  825. db/MSDOS/com2exe.2.sg +21 -0
  826. db/MSDOS/cramble.2.sg +12 -0
  827. db/MSDOS/deep-CRyPTer.2.sg +12 -0
  828. db/MSDOS/djgpp.4.sg +16 -0
  829. db/MSDOS/dos_extender.0a.sg +16 -0
  830. db/MSDOS/dos_extender1.0a.sg +13 -0
  831. db/MSDOS/dos_extender2.0a.sg +16 -0
  832. db/MSDOS/iLUCRYPT.2.sg +18 -0
  833. db/MSDOS/immunizer.1.sg +13 -0
  834. db/MSDOS/mbp_SHRINK.2.sg +13 -0
  835. db/MSDOS/muLISP-87.4.sg +20 -0
  836. db/MSDOS/nbuild.2.sg +12 -0
  837. db/MSDOS/overlays.6.sg +73 -0
  838. db/MSDOS/self-displayer.1.sg +13 -0
  839. db/MSDOS/virus.1.sg +13 -0
  840. db/NE/ARC_SFX.1.sg +13 -0
  841. db/NE/Borland_C++.1.sg +25 -0
  842. db/NE/Borland_Pascal.1.sg +13 -0
  843. db/NE/MS_RTL.0.sg +28 -0
  844. db/NE/PKZIP-SFX.1.sg +13 -0
  845. db/NE/Setup-Specialist.1.sg +16 -0
  846. db/NE/Sydex_SFX.1.sg +13 -0
  847. db/NE/Watcom_C.1.sg +35 -0
  848. db/NE/_NE.0.sg +15 -0
  849. db/NE/_init +2 -0
  850. db/NPM/JavaScript.5.sg +11 -0
  851. db/NPM/PackageName.1.sg +15 -0
  852. db/NPM/TypeScript.5.sg +11 -0
  853. db/NPM/_NPM.0.sg +16 -0
  854. db/NPM/_init +2 -0
  855. db/PE/12Ghosts_Zip2.1.sg +16 -0
  856. db/PE/32Lite.2.sg +13 -0
  857. db/PE/7z.1.sg +43 -0
  858. db/PE/7z.4.sg +14 -0
  859. db/PE/7z.6.sg +21 -0
  860. db/PE/ACCAStore.1.sg +14 -0
  861. db/PE/ACE.6.sg +10 -0
  862. db/PE/ACProtect.2.sg +30 -0
  863. db/PE/ADS_Self_Extractor.1.sg +14 -0
  864. db/PE/AHTeam_EP_Protector.2.sg +71 -0
  865. db/PE/AHpacker.2.sg +13 -0
  866. db/PE/AMD_FSR.4.sg +23 -0
  867. db/PE/ANDpakk.2.sg +21 -0
  868. db/PE/AOLSetup.1.sg +15 -0
  869. db/PE/ARJSFX.1.sg +44 -0
  870. db/PE/ARM_Protector.2.sg +21 -0
  871. db/PE/ARQ.1.sg +16 -0
  872. db/PE/ASDPack.2.sg +12 -0
  873. db/PE/ASM_Guard.2.sg +27 -0
  874. db/PE/ASPR_Stripper.2.sg +12 -0
  875. db/PE/ASPack.2.sg +95 -0
  876. db/PE/ASProtect.2.sg +56 -0
  877. db/PE/AT4RE_Protector.2.sg +13 -0
  878. db/PE/AZProtect_0001.2.sg +11 -0
  879. db/PE/Aase_Crypter.2.sg +12 -0
  880. db/PE/Abbyy_Lingvo.1.sg +15 -0
  881. db/PE/Acronis_installer.1.sg +30 -0
  882. db/PE/ActiveMark.2.sg +14 -0
  883. db/PE/Active_Delivery.1.sg +16 -0
  884. db/PE/Actual_Installer.1.sg +16 -0
  885. db/PE/Adobe_FlashPlayer_downloader.1.sg +17 -0
  886. db/PE/Adobe_installers.1.sg +32 -0
  887. db/PE/Advanced_BAT_to_EXE_converter.2.sg +13 -0
  888. db/PE/Advanced_installer.1.sg +30 -0
  889. db/PE/Adveractive.1.sg +14 -0
  890. db/PE/Aeco_installer.1.sg +13 -0
  891. db/PE/Agile.2.sg +11 -0
  892. db/PE/Alchemy_Mindworks_installer.1.sg +19 -0
  893. db/PE/Alex_Protector.2.sg +15 -0
  894. db/PE/Alienyze.1.sg +14 -0
  895. db/PE/Amber.2.sg +17 -0
  896. db/PE/Anskya_Binder.2.sg +12 -0
  897. db/PE/Anskya_NTPacker_Generator.2.sg +11 -0
  898. db/PE/AntiDote.2.sg +33 -0
  899. db/PE/Anticrack_Software_Protector.2.sg +15 -0
  900. db/PE/App_Encryptor.2.sg +13 -0
  901. db/PE/ArmDot.2.sg +17 -0
  902. db/PE/Armadillo.2.sg +48 -0
  903. db/PE/Arxan.2.sg +69 -0
  904. db/PE/AssemblyInvoke.2.sg +11 -0
  905. db/PE/Astrum.1.sg +21 -0
  906. db/PE/AtomPePacker.2.sg +16 -0
  907. db/PE/AutoHotKey.3.sg +20 -0
  908. db/PE/AutoIt.3.sg +21 -0
  909. db/PE/AutoPlay_Media_Studio.1.sg +26 -0
  910. db/PE/Autodesk_Self-Extract.1.sg +14 -0
  911. db/PE/AutorunProEnterprise.1.sg +16 -0
  912. db/PE/AutorunProEnterpriseII.1.sg +16 -0
  913. db/PE/AverCryptor.2.sg +22 -0
  914. db/PE/BJFnt.2.sg +18 -0
  915. db/PE/Babel_.NET.2.sg +23 -0
  916. db/PE/BatToExe.1.sg +15 -0
  917. db/PE/BatToExeConverter.2.sg +18 -0
  918. db/PE/BatchToApp.2.sg +15 -0
  919. db/PE/BattlEye.5.sg +18 -0
  920. db/PE/BattleshipCrypter.2.sg +12 -0
  921. db/PE/BeRo.2.sg +37 -0
  922. db/PE/BeRo_Tiny_Pascal.4.sg +13 -0
  923. db/PE/Berio.2.sg +15 -0
  924. db/PE/BitRock_Installer.1.sg +22 -0
  925. db/PE/BitShape_PE_Crypt.2.sg +15 -0
  926. db/PE/BlindSpot.2.sg +12 -0
  927. db/PE/Blizzard_PrePatch.1.sg +15 -0
  928. db/PE/Borland_C++.4.sg +37 -0
  929. db/PE/Break_Into_Pattern.2.sg +12 -0
  930. db/PE/BulletProofSoft_installer.1.sg +14 -0
  931. db/PE/ByfronTech.2.sg +67 -0
  932. db/PE/ByteGuard.2.sg +17 -0
  933. db/PE/Bytessence_Install_Maker.1.sg +19 -0
  934. db/PE/CExe.2.sg +13 -0
  935. db/PE/CICompress.2.sg +12 -0
  936. db/PE/CSDD_installer.1.sg +18 -0
  937. db/PE/CUDA-Driver.4.sg +14 -0
  938. db/PE/CZ_installer.1.sg +14 -0
  939. db/PE/Cab.1.sg +60 -0
  940. db/PE/Cab.6.sg +33 -0
  941. db/PE/Calibre_installer.1.sg +19 -0
  942. db/PE/Cameyo.2.sg +12 -0
  943. db/PE/Celesty_File_Binder.1.sg +18 -0
  944. db/PE/ChainskiCrypter.1.sg +11 -0
  945. db/PE/Chaos_Software_installer.1.sg +14 -0
  946. db/PE/Chilkat_ZIP_Self-Extractor.1.sg +14 -0
  947. db/PE/Chromium_Embedded_Framework.4.sg +14 -0
  948. db/PE/Chromium_WebView.4.sg +14 -0
  949. db/PE/CipherWall.1.sg +20 -0
  950. db/PE/CliSecure.2.sg +21 -0
  951. db/PE/ClickTeam.1.sg +17 -0
  952. db/PE/CodeCrypt.2.sg +21 -0
  953. db/PE/CodeFusion_Wizard.1.sg +14 -0
  954. db/PE/CodeSafe.2.sg +12 -0
  955. db/PE/CodeVeil.2.sg +20 -0
  956. db/PE/Code_Virtualizer.2.sg +12 -0
  957. db/PE/Codegear_Installer.1.sg +14 -0
  958. db/PE/Codewall.2.sg +18 -0
  959. db/PE/CoffeeCup_SFX.2.sg +14 -0
  960. db/PE/Confuser.2.sg +39 -0
  961. db/PE/CopyMinder.2.sg +11 -0
  962. db/PE/Costura.Fody.4.sg +11 -0
  963. db/PE/CreateInstall.1.sg +22 -0
  964. db/PE/Crinkler.2.sg +15 -0
  965. db/PE/CronosCrypter.1.sg +12 -0
  966. db/PE/Crunch.2.sg +25 -0
  967. db/PE/CrypKey.2.sg +20 -0
  968. db/PE/CrypKey_Installer.1.sg +14 -0
  969. db/PE/CrypToCrack_Pe_Protector.2.sg +15 -0
  970. db/PE/Cryptect.1.sg +13 -0
  971. db/PE/Cryptic.2.sg +12 -0
  972. db/PE/CryptoObfuscator.2.sg +17 -0
  973. db/PE/Cxfreeze.1.sg +23 -0
  974. db/PE/Cygwin32.4.sg +11 -0
  975. db/PE/DBPE.2.sg +25 -0
  976. db/PE/DECFortran.4.sg +23 -0
  977. db/PE/DMD.4.sg +44 -0
  978. db/PE/DNGuard.2.sg +33 -0
  979. db/PE/DS.EZ-Logic.sg +12 -0
  980. db/PE/DS.Eutron_SmartKey_dongle.5.sg +29 -0
  981. db/PE/DS.HASP_dongle.5.sg +22 -0
  982. db/PE/DS.Hardlock_dongle.5.sg +24 -0
  983. db/PE/DS.MARX_Crypto-Box_dongle.5.sg +30 -0
  984. db/PE/DS.Matrix_Hardware_Lock_dongle.5.sg +19 -0
  985. db/PE/DS.NetHASP_dongle.5.sg +19 -0
  986. db/PE/DS.Novex_dongle.4.sg +13 -0
  987. db/PE/DS.RLM.4.sg +25 -0
  988. db/PE/DS.SenseLock_dongle.5.sg +20 -0
  989. db/PE/DS.Sentinel_SuperPro.2.sg +21 -0
  990. db/PE/DS.Sentinel_SuperPro_dongle.5.sg +20 -0
  991. db/PE/DS.Sentinel_dongle.5.sg +28 -0
  992. db/PE/DS.SoftLok_dongle.5.sg +17 -0
  993. db/PE/DS.Unikey_dongle.5.sg +30 -0
  994. db/PE/DS.WIBU_Key_dongle.5.sg +20 -0
  995. db/PE/DS.Wizzkey_dongle.5.sg +13 -0
  996. db/PE/DYAMAR.2.sg +12 -0
  997. db/PE/DZA_Patcher.2.sg +15 -0
  998. db/PE/Daemon_Protect.2.sg +13 -0
  999. db/PE/DalKrypt.2.sg +12 -0
  1000. db/PE/DataAnubis.1.sg +11 -0
  1001. db/PE/DeepSea.2.sg +18 -0
  1002. db/PE/DelZip_SFX.2.sg +14 -0
  1003. db/PE/Delphi.4.sg +270 -0
  1004. db/PE/Denuvo.2.sg +97 -0
  1005. db/PE/DeployMaster.1.sg +15 -0
  1006. db/PE/Dimd_SFX.1.sg +15 -0
  1007. db/PE/Ding_Boys_PE-lock_Phantasm.2.sg +18 -0
  1008. db/PE/Direct2D.4.sg +14 -0
  1009. db/PE/Direct3D.4.sg +38 -0
  1010. db/PE/DirectX.4.sg +14 -0
  1011. db/PE/Dolphin_VM.1.sg +18 -0
  1012. db/PE/DotFix_Nice_Protect.2.sg +23 -0
  1013. db/PE/Dotfuscator.2.sg +11 -0
  1014. db/PE/Duals_eXe_Encryptor.2.sg +19 -0
  1015. db/PE/DxPack.2.sg +22 -0
  1016. db/PE/ENIGMA.2.sg +115 -0
  1017. db/PE/EXE32Pack.2.sg +12 -0
  1018. db/PE/EXECryptor.2.sg +99 -0
  1019. db/PE/EXEFog.2.sg +22 -0
  1020. db/PE/EXE_Password_Protector.2.sg +12 -0
  1021. db/PE/Eazfuscator.2.sg +16 -0
  1022. db/PE/ElecKey.2.sg +33 -0
  1023. db/PE/ElectronApp.3.sg +22 -0
  1024. db/PE/Enigma_Virtual_Box.2.sg +13 -0
  1025. db/PE/Envoy_Packager.1.sg +15 -0
  1026. db/PE/Escargot.2.sg +15 -0
  1027. db/PE/Eschalon_installer.1.sg +15 -0
  1028. db/PE/ExE_Pack.2.sg +23 -0
  1029. db/PE/Excelsior_Installer.1.sg +14 -0
  1030. db/PE/Excelsior_JET.4.sg +36 -0
  1031. db/PE/ExeSplitter.1.sg +24 -0
  1032. db/PE/ExeStealth.2.sg +40 -0
  1033. db/PE/Exe_Guarder.2.sg +12 -0
  1034. db/PE/Exe_Locker.2.sg +12 -0
  1035. db/PE/Exe_Shield.2.sg +28 -0
  1036. db/PE/FASM.4.sg +22 -0
  1037. db/PE/FDM_Installer.1.sg +18 -0
  1038. db/PE/FISH_.NET.2.sg +17 -0
  1039. db/PE/FSG.2.sg +136 -0
  1040. db/PE/FileSplit_Self-Merger.2.sg +13 -0
  1041. db/PE/FishPE_Shield.2.sg +21 -0
  1042. db/PE/Fish_PE.2.sg +22 -0
  1043. db/PE/FixupPak.2.sg +12 -0
  1044. db/PE/Fox_Pro.3.sg +25 -0
  1045. db/PE/FreeBasic.6.sg +28 -0
  1046. db/PE/FreeJoiner.1.sg +45 -0
  1047. db/PE/Free_Pascal.4.sg +54 -0
  1048. db/PE/Fusion.2.sg +12 -0
  1049. db/PE/G!X_Protector.2.sg +12 -0
  1050. db/PE/GPInstall.1.sg +19 -0
  1051. db/PE/GSplit.1.sg +20 -0
  1052. db/PE/GZip.1.sg +20 -0
  1053. db/PE/GameGuard.2.sg +12 -0
  1054. db/PE/Gentee_Installer.1.sg +35 -0
  1055. db/PE/Ghost_Installer.1.sg +16 -0
  1056. db/PE/GkSetup.1.sg +18 -0
  1057. db/PE/Go.4.sg +61 -0
  1058. db/PE/Goats_PE_Mutilator.2.sg +12 -0
  1059. db/PE/GoldSrc.3.sg +20 -0
  1060. db/PE/Goliath.2.sg +15 -0
  1061. db/PE/Gremlin_patcher.1.sg +21 -0
  1062. db/PE/HASP.2.sg +22 -0
  1063. db/PE/HASP_HL_Protection.2.sg +34 -0
  1064. db/PE/HTML_executable.1.sg +20 -0
  1065. db/PE/HackShield.2.sg +17 -0
  1066. db/PE/Hide&Protect.2.sg +12 -0
  1067. db/PE/HidePE.2.sg +255 -0
  1068. db/PE/Huan.1.sg +12 -0
  1069. db/PE/HyperTech_Crackproof.2.sg +13 -0
  1070. db/PE/I-D_Media_installer.1.sg +15 -0
  1071. db/PE/IDM_Installer.1.sg +15 -0
  1072. db/PE/ID_Application_Protector(NoNamePacker).2.sg +12 -0
  1073. db/PE/ILProtector.2.sg +13 -0
  1074. db/PE/ILUCRYPT.2.sg +15 -0
  1075. db/PE/IMPostor_Pack.2.sg +12 -0
  1076. db/PE/INCrypter.2.sg +12 -0
  1077. db/PE/INFTool.1.sg +15 -0
  1078. db/PE/INTENIUM.1.sg +13 -0
  1079. db/PE/IProtect.2.sg +17 -0
  1080. db/PE/Inno_Setup_Module.1.sg +97 -0
  1081. db/PE/Inquartos_Obfuscator.2.sg +12 -0
  1082. db/PE/Instalit.1.sg +25 -0
  1083. db/PE/Install4j_installer.1.sg +16 -0
  1084. db/PE/InstallAnywhere.1.sg +36 -0
  1085. db/PE/InstallShield.1.sg +90 -0
  1086. db/PE/InstallUs.1.sg +16 -0
  1087. db/PE/Install_Factory.1.sg +14 -0
  1088. db/PE/Intel_C.4.sg +14 -0
  1089. db/PE/Intel_IPP.sg +15 -0
  1090. db/PE/IntelliProtector.2.sg +17 -0
  1091. db/PE/InxObfuscator.2.sg +14 -0
  1092. db/PE/JDPack.2.sg +15 -0
  1093. db/PE/JScript.4.sg +15 -0
  1094. db/PE/Jar2exe.1.sg +26 -0
  1095. db/PE/KBys_Packer.2.sg +21 -0
  1096. db/PE/KGCrypt.2.sg +11 -0
  1097. db/PE/KRZIP_SFX.2.sg +15 -0
  1098. db/PE/KoiVM.2.sg +20 -0
  1099. db/PE/Kryptonit.2.sg +17 -0
  1100. db/PE/LARP.2.sg +13 -0
  1101. db/PE/LCC-Win32.4.sg +15 -0
  1102. db/PE/LCL.5.sg +17 -0
  1103. db/PE/LDK.2.sg +21 -0
  1104. db/PE/LDK_.NET.2.sg +13 -0
  1105. db/PE/Lahey_Fortran_90.4.sg +20 -0
  1106. db/PE/LameCrypt.2.sg +12 -0
  1107. db/PE/Laserlok.2.sg +12 -0
  1108. db/PE/LimeCrypter.2.sg +56 -0
  1109. db/PE/Lua_Runtime.4.sg +17 -0
  1110. db/PE/LucasArts_Update_Installer.1.sg +14 -0
  1111. db/PE/Lyme_SFX.1.sg +15 -0
  1112. db/PE/MEW.2.sg +26 -0
  1113. db/PE/MP-ZipTool.1.sg +14 -0
  1114. db/PE/MPQ.1.sg +15 -0
  1115. db/PE/MPRESS.2.sg +52 -0
  1116. db/PE/MSLRH.2.sg +117 -0
  1117. db/PE/MZ-Crypt.2.sg +12 -0
  1118. db/PE/MZ0oPE.2.sg +12 -0
  1119. db/PE/MaskPE.2.sg +15 -0
  1120. db/PE/Maxtocode.2.sg +21 -0
  1121. db/PE/Metrowerks_CodeWarrior.2.sg +26 -0
  1122. db/PE/MicroJoiner.1.sg +21 -0
  1123. db/PE/Microsoft.6.sg +1735 -0
  1124. db/PE/Microsoft_C_Runtime.4.sg +16 -0
  1125. db/PE/Microsoft_Class_Installer.1.sg +22 -0
  1126. db/PE/Microsoft_Compound-based_installer.1.sg +14 -0
  1127. db/PE/Microsoft_Edge_WebView.4.sg +14 -0
  1128. db/PE/Microsoft_NET_Runtime.4.sg +15 -0
  1129. db/PE/Microsoft_Warbird.2.sg +15 -0
  1130. db/PE/Microsoft_dotNET_installer.1.sg +16 -0
  1131. db/PE/Miktex_Installer.1.sg +15 -0
  1132. db/PE/MinGW.4.sg +78 -0
  1133. db/PE/Minke.2.sg +12 -0
  1134. db/PE/Mioplanet_installer.1.sg +14 -0
  1135. db/PE/MoleBox.2.sg +41 -0
  1136. db/PE/Morphnah.2.sg +23 -0
  1137. db/PE/Multimedia_Fusion_Installer.1.sg +14 -0
  1138. db/PE/Mystic_Compressor.2.sg +15 -0
  1139. db/PE/N-Joiner.1.sg +12 -0
  1140. db/PE/N-Joy.2.sg +25 -0
  1141. db/PE/NETZ.2.sg +11 -0
  1142. db/PE/NET_Spider.2.sg +14 -0
  1143. db/PE/NOS_Installer.1.sg +22 -0
  1144. db/PE/NOS_Packer.2.sg +13 -0
  1145. db/PE/NTShell.2.sg +13 -0
  1146. db/PE/NTkrnl_Protector.2.sg +37 -0
  1147. db/PE/NakedPacker.2.sg +13 -0
  1148. db/PE/NanoZip.1.sg +16 -0
  1149. db/PE/NativeCryptor_by_DosX.2.sg +13 -0
  1150. db/PE/Native_UD_Packer.2.sg +12 -0
  1151. db/PE/NecroVM.Virt.2.sg +46 -0
  1152. db/PE/NeoLite.2.sg +39 -0
  1153. db/PE/NetReactor.2.sg +103 -0
  1154. db/PE/NetShieldProtector.2.sg +55 -0
  1155. db/PE/Newtonsoft.Json.4.sg +14 -0
  1156. db/PE/Nim.4.sg +18 -0
  1157. db/PE/Ningishzida.2.sg +12 -0
  1158. db/PE/NodeJS_Nexe.sg +16 -0
  1159. db/PE/NodeJS_Pkg.sg +16 -0
  1160. db/PE/NoobyProtect.2.sg +12 -0
  1161. db/PE/North_Star_PE_Shrinker.2.sg +12 -0
  1162. db/PE/NsPacK.2.sg +61 -0
  1163. db/PE/Nuitka.1.sg +26 -0
  1164. db/PE/Nullsoft_Scriptable_Install_System.1.sg +96 -0
  1165. db/PE/Nvidia_DLSS.4.sg +22 -0
  1166. db/PE/Nvidia_PhysX.4.sg +15 -0
  1167. db/PE/O'Setup95.1.sg +15 -0
  1168. db/PE/ORiEN.2.sg +19 -0
  1169. db/PE/Obfuscar.2.sg +14 -0
  1170. db/PE/Obfuscator_.NET_2009.2.sg +16 -0
  1171. db/PE/Obsidium.2.sg +272 -0
  1172. db/PE/OneVM.2.sg +23 -0
  1173. db/PE/OpenAL.4.sg +14 -0
  1174. db/PE/OpenCL.4.sg +14 -0
  1175. db/PE/OpenCV.4.sg +18 -0
  1176. db/PE/OpenGL.4.sg +14 -0
  1177. db/PE/OpenSSL.4.sg +14 -0
  1178. db/PE/OpusAudio.4.sg +15 -0
  1179. db/PE/Oreans_CodeVirtualizer.2.sg +14 -0
  1180. db/PE/OxiJoiner.sg +15 -0
  1181. db/PE/PACE.2.sg +17 -0
  1182. db/PE/PACKWIN.2.sg +12 -0
  1183. db/PE/PCInstall.1.sg +14 -0
  1184. db/PE/PCShrink.2.sg +15 -0
  1185. db/PE/PC_Guard.2.sg +20 -0
  1186. db/PE/PE-Admin.2.sg +12 -0
  1187. db/PE/PE-Armor.2.sg +21 -0
  1188. db/PE/PE-Shield.2.sg +16 -0
  1189. db/PE/PEBundle.2.sg +25 -0
  1190. db/PE/PECRYPT32.2.sg +22 -0
  1191. db/PE/PECompact.2.sg +167 -0
  1192. db/PE/PELock.2.sg +47 -0
  1193. db/PE/PESpin.2.sg +56 -0
  1194. db/PE/PETetris.sg +11 -0
  1195. db/PE/PEUnion.2.sg +122 -0
  1196. db/PE/PE_Diminisher.2.sg +16 -0
  1197. db/PE/PE_Encrypt.2.sg +12 -0
  1198. db/PE/PE_Intro.2.sg +12 -0
  1199. db/PE/PE_Lock_NT.2.sg +21 -0
  1200. db/PE/PE_Password.2.sg +12 -0
  1201. db/PE/PE_Protect.2.sg +15 -0
  1202. db/PE/PEncrypt.2.sg +21 -0
  1203. db/PE/PEnguinCrypt.2.sg +12 -0
  1204. db/PE/PIMP.1.sg +14 -0
  1205. db/PE/PKLITE.2.sg +15 -0
  1206. db/PE/PKSFX.1.sg +14 -0
  1207. db/PE/PMaker.1.sg +13 -0
  1208. db/PE/PUNiSHER.2.sg +12 -0
  1209. db/PE/Pack_Master.2.sg +12 -0
  1210. db/PE/PackageForTheWeb.1.sg +15 -0
  1211. db/PE/Packanoid.2.sg +12 -0
  1212. db/PE/Packman.2.sg +18 -0
  1213. db/PE/Pantaray_QSetup.1.sg +29 -0
  1214. db/PE/Paquet.1.sg +16 -0
  1215. db/PE/Paquet_Builder.1.sg +15 -0
  1216. db/PE/Patch.1.sg +20 -0
  1217. db/PE/PePack.2.sg +16 -0
  1218. db/PE/PeX.2.sg +12 -0
  1219. db/PE/Pe_Ninja.2.sg +12 -0
  1220. db/PE/Pelles_C.4.sg +14 -0
  1221. db/PE/Perl.3.sg +93 -0
  1222. db/PE/PerlApp.1.sg +21 -0
  1223. db/PE/Petite.2.sg +56 -0
  1224. db/PE/Phoenix.2.sg +19 -0
  1225. db/PE/Photo_Compiler.2.sg +15 -0
  1226. db/PE/PowerBASIC.4.sg +14 -0
  1227. db/PE/Power_Screen_Recorder.1.sg +16 -0
  1228. db/PE/Private_EXE_Protector.2.sg +86 -0
  1229. db/PE/PureBasic.4.sg +55 -0
  1230. db/PE/PwdProtect.2.sg +11 -0
  1231. db/PE/Py2exe.1.sg +15 -0
  1232. db/PE/PyInstaller.2.sg +72 -0
  1233. db/PE/PyInstallerHider.1.sg +27 -0
  1234. db/PE/Python.3.sg +22 -0
  1235. db/PE/Qt.4.sg +33 -0
  1236. db/PE/Quantum.1.sg +17 -0
  1237. db/PE/QuestPowerGUI.2.sg +16 -0
  1238. db/PE/QuickBFC.2.sg +19 -0
  1239. db/PE/QuickPack_NT.2.sg +13 -0
  1240. db/PE/RADBasic.4.sg +17 -0
  1241. db/PE/RCryptor.2.sg +39 -0
  1242. db/PE/RDG_Tejon_Crypter.2.sg +12 -0
  1243. db/PE/RJoiner.1.sg +17 -0
  1244. db/PE/RLP.2.sg +12 -0
  1245. db/PE/RLPack.2.sg +47 -0
  1246. db/PE/RNsetup.1.sg +17 -0
  1247. db/PE/RPP.1.sg +14 -0
  1248. db/PE/RTPatch.1.sg +15 -0
  1249. db/PE/ReNET-pack.2.sg +11 -0
  1250. db/PE/RealBasic.4.sg +24 -0
  1251. db/PE/RobustObfuscator.2.sg +15 -0
  1252. db/PE/RosASM.4.sg +20 -0
  1253. db/PE/Rust.4.sg +34 -0
  1254. db/PE/SCE_installer.1.sg +18 -0
  1255. db/PE/SC_Obfuscator.2.sg +12 -0
  1256. db/PE/SC_Pack.2.sg +13 -0
  1257. db/PE/SDL.4.sg +21 -0
  1258. db/PE/SDProtector.2.sg +18 -0
  1259. db/PE/SFXRun.1.sg +14 -0
  1260. db/PE/SLVc0deProtector.2.sg +21 -0
  1261. db/PE/STATICSUP.1.sg +14 -0
  1262. db/PE/STUD.2.sg +12 -0
  1263. db/PE/SVK_Protector.2.sg +22 -0
  1264. db/PE/SZDD.1.sg +40 -0
  1265. db/PE/Safedisc.2.sg +13 -0
  1266. db/PE/Safenet_RMS.2.sg +12 -0
  1267. db/PE/Safengine_Shielden.2.sg +43 -0
  1268. db/PE/ScriptHookV.4.sg +14 -0
  1269. db/PE/SecuPack.2.sg +13 -0
  1270. db/PE/SecuROM.2.sg +22 -0
  1271. db/PE/Secure_Shade.2.sg +13 -0
  1272. db/PE/SerGreen_Appacker.2.sg +16 -0
  1273. db/PE/Setup-Specialist.1.sg +15 -0
  1274. db/PE/Setup_Factory.1.sg +42 -0
  1275. db/PE/SfxCA.1.sg +20 -0
  1276. db/PE/Shrink_Wrap.2.sg +12 -0
  1277. db/PE/Shrinker.2.sg +27 -0
  1278. db/PE/SimbiOZ.2.sg +19 -0
  1279. db/PE/SimplePackerByEronana.2.sg +14 -0
  1280. db/PE/Simple_Pack.2.sg +15 -0
  1281. db/PE/Sixxpack.2.sg +20 -0
  1282. db/PE/Skater.2.sg +16 -0
  1283. db/PE/Smart_Assembly.2.sg +36 -0
  1284. db/PE/Smart_Install_Maker.1.sg +17 -0
  1285. db/PE/SmokesCrypt.2.sg +12 -0
  1286. db/PE/SoftProtect.2.sg +13 -0
  1287. db/PE/SoftSentry.2.sg +16 -0
  1288. db/PE/Soft_Defender.2.sg +20 -0
  1289. db/PE/Softlocx.1.sg +13 -0
  1290. db/PE/Software_Compress.2.sg +15 -0
  1291. db/PE/Sony_Windows_Installer.1.sg +16 -0
  1292. db/PE/SpASM.4.sg +20 -0
  1293. db/PE/Special_EXE_Password_Protector.2.sg +12 -0
  1294. db/PE/SpicesNet.2.sg +34 -0
  1295. db/PE/Spoon_Installer.1.sg +23 -0
  1296. db/PE/Spoon_Studio.2.sg +16 -0
  1297. db/PE/Squeez_SFX.1.sg +15 -0
  1298. db/PE/Squirrel_installer.1.sg +16 -0
  1299. db/PE/Squishy.2.sg +11 -0
  1300. db/PE/StarForce.2.sg +58 -0
  1301. db/PE/Ste@lth_PE.2.sg +16 -0
  1302. db/PE/Steam.4.sg +14 -0
  1303. db/PE/Stones_PE_Encryptor.2.sg +22 -0
  1304. db/PE/Store_Installer.1.sg +13 -0
  1305. db/PE/SwiftView_installer.1.sg +15 -0
  1306. db/PE/Synactis_In-The-Box_Installer.1.sg +21 -0
  1307. db/PE/TPP_Pack.2.sg +12 -0
  1308. db/PE/Tages.2.sg +12 -0
  1309. db/PE/Tarma_Installer.1.sg +29 -0
  1310. db/PE/TheArk.2.sg +11 -0
  1311. db/PE/Themida.2.sg +89 -0
  1312. db/PE/Thinstall.2.sg +89 -0
  1313. db/PE/TrueCrypt-VeraCrypt_installer.1.sg +18 -0
  1314. db/PE/UFI_installer.1.sg +14 -0
  1315. db/PE/UG2002_Cruncher.2.sg +12 -0
  1316. db/PE/UPX-Patcher.6.sg +29 -0
  1317. db/PE/UPX.2.sg +174 -0
  1318. db/PE/UPXFreak.2.sg +12 -0
  1319. db/PE/UPX_Inliner.2.sg +12 -0
  1320. db/PE/UPX_Modifier.2.sg +12 -0
  1321. db/PE/UPX_Mutanter.2.sg +21 -0
  1322. db/PE/UPX_Protector.2.sg +12 -0
  1323. db/PE/UPX_lock.2.sg +12 -0
  1324. db/PE/UPX_scrambler.2.sg +20 -0
  1325. db/PE/UPX_shit.2.sg +21 -0
  1326. db/PE/UPXcrypter.2.sg +11 -0
  1327. db/PE/UPolyX.2.sg +30 -0
  1328. db/PE/UltraPro.2.sg +18 -0
  1329. db/PE/UnoPiX.2.sg +27 -0
  1330. db/PE/VBox.2.sg +15 -0
  1331. db/PE/VCasm-Protector.2.sg +21 -0
  1332. db/PE/VMProtect.2.sg +296 -0
  1333. db/PE/VMProtect_NET.2.sg +57 -0
  1334. db/PE/VPacker.2.sg +13 -0
  1335. db/PE/VaySoft_PDF2EXE.2.sg +16 -0
  1336. db/PE/VbsToExe.1.sg +31 -0
  1337. db/PE/VbsToExeConverter.2.sg +18 -0
  1338. db/PE/Virbox.2.sg +13 -0
  1339. db/PE/Virtual_Pascal.4.sg +15 -0
  1340. db/PE/Vise.1.sg +16 -0
  1341. db/PE/VisualStudio_NET.6.sg +14 -0
  1342. db/PE/Visual_Objects.4.sg +13 -0
  1343. db/PE/Visual_Prolog.4.sg +15 -0
  1344. db/PE/Vulkan.4.sg +14 -0
  1345. db/PE/WF.Guna.UI2.4.sg +15 -0
  1346. db/PE/WF.Krypton.4.sg +14 -0
  1347. db/PE/WF.MetroFramework.4.sg +14 -0
  1348. db/PE/WF_WPF.MaterialSkin.4.sg +14 -0
  1349. db/PE/WWPACK.2.sg +11 -0
  1350. db/PE/Watcom.4.sg +36 -0
  1351. db/PE/WiX_Toolset_installer.1.sg +21 -0
  1352. db/PE/Wibu_Codemeter.1.sg +30 -0
  1353. db/PE/WinACE.1.sg +12 -0
  1354. db/PE/WinIMP.1.sg +15 -0
  1355. db/PE/WinImage.1.sg +15 -0
  1356. db/PE/WinPatch.1.sg +18 -0
  1357. db/PE/WinRAR.1.sg +18 -0
  1358. db/PE/WinRAR_Installer.1.sg +28 -0
  1359. db/PE/WinUpack.2.sg +64 -0
  1360. db/PE/WinZip.1.sg +44 -0
  1361. db/PE/Winamp_Installer.1.sg +14 -0
  1362. db/PE/Wind_of_Crypt.2.sg +12 -0
  1363. db/PE/Windows_Authenticode.7.sg +13 -0
  1364. db/PE/Windows_Installer.1.sg +22 -0
  1365. db/PE/Wine.3.sg +12 -0
  1366. db/PE/Wise_Installer.1.sg +52 -0
  1367. db/PE/XCR.2.sg +13 -0
  1368. db/PE/XComp.2.sg +19 -0
  1369. db/PE/XPACK.2.sg +17 -0
  1370. db/PE/Xash.3.sg +20 -0
  1371. db/PE/Xbase.4.sg +30 -0
  1372. db/PE/Xenocode_Postbuild.2.sg +12 -0
  1373. db/PE/Xerces-CPP.4.sg +15 -0
  1374. db/PE/XerinFuscator.2.sg +31 -0
  1375. db/PE/Xojo.3.sg +29 -0
  1376. db/PE/Xoreax_installer.1.sg +19 -0
  1377. db/PE/Xtreamlok.2.sg +22 -0
  1378. db/PE/Yano.2.sg +12 -0
  1379. db/PE/Yodas_Crypter.2.sg +35 -0
  1380. db/PE/Yodas_Protector.2.sg +15 -0
  1381. db/PE/Yummy_Game_SoftwareShield.2.sg +17 -0
  1382. db/PE/Zig.4.sg +22 -0
  1383. db/PE/ZipCentral_SFX.1.sg +16 -0
  1384. db/PE/Zip_SFX.2.sg +62 -0
  1385. db/PE/Zprotect.2.sg +26 -0
  1386. db/PE/Zydis.4.sg +14 -0
  1387. db/PE/_FixDetects.9.sg +79 -0
  1388. db/PE/_NetCompilersLibs.4.sg +39 -0
  1389. db/PE/_PE.0.sg +22 -0
  1390. db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg +3357 -0
  1391. db/PE/_init +138 -0
  1392. db/PE/_simpleNetAntivirus.1.sg +246 -0
  1393. db/PE/aPack.2.sg +26 -0
  1394. db/PE/arj.6.sg +10 -0
  1395. db/PE/beria.2.sg +12 -0
  1396. db/PE/curl.4.sg +14 -0
  1397. db/PE/dUP.1.sg +20 -0
  1398. db/PE/de4dot.6.sg +20 -0
  1399. db/PE/dePACK.2.sg +13 -0
  1400. db/PE/distutils.1.sg +18 -0
  1401. db/PE/eXPressor.2.sg +59 -0
  1402. db/PE/ezip.2.sg +14 -0
  1403. db/PE/gcc.4.sg +15 -0
  1404. db/PE/hXOR_packer.sg +13 -0
  1405. db/PE/hmimys_PE-Pack.2.sg +23 -0
  1406. db/PE/hmimys_Protect.2.sg +18 -0
  1407. db/PE/iPB_Protect.2.sg +12 -0
  1408. db/PE/inPEct.1.sg +10 -0
  1409. db/PE/java.3.sg +21 -0
  1410. db/PE/keygens.1.sg +25 -0
  1411. db/PE/kkrunchy.2.sg +19 -0
  1412. db/PE/ldc.4.sg +13 -0
  1413. db/PE/linker.6.sg +100 -0
  1414. db/PE/mPack.2.sg +15 -0
  1415. db/PE/mkfPack.2.sg +12 -0
  1416. db/PE/nPack.2.sg +36 -0
  1417. db/PE/netshrink.2.sg +25 -0
  1418. db/PE/obfus_h.5.sg +15 -0
  1419. db/PE/obfusheader_h.5.sg +32 -0
  1420. db/PE/ps2exe.2.sg +15 -0
  1421. db/PE/rar.1.sg +16 -0
  1422. db/PE/rar.6.sg +10 -0
  1423. db/PE/scr2exe.2.sg +18 -0
  1424. db/PE/sql-server.sg +14 -0
  1425. db/PE/sqlite.4.sg +14 -0
  1426. db/PE/sqx.1.sg +14 -0
  1427. db/PE/tElock.2.sg +81 -0
  1428. db/PE/tcc.4.sg +45 -0
  1429. db/PE/wxWidgets.5.sg +27 -0
  1430. db/PE/yzPack.2.sg +26 -0
  1431. db/PE/zip.6.sg +10 -0
  1432. db/PE/zlib.4.sg +14 -0
  1433. db/QtFramework +16 -0
  1434. db/RosASM +13 -0
  1435. db/SpASM +8 -0
  1436. db/ZIP/_ZIP.0.sg +17 -0
  1437. db/ZIP/_init +2 -0
  1438. db/_debug +23 -0
  1439. db/_init +149 -0
  1440. db/archive-file +36 -0
  1441. db/arj +80 -0
  1442. db/cab +45 -0
  1443. db/duration +14 -0
  1444. db/language +46 -0
  1445. db/python +30 -0
  1446. db/rar +75 -0
  1447. db/read +692 -0
  1448. db/shell-script +24 -0
  1449. db/wxWidgets +12 -0
  1450. db/zip-file +87 -0
  1451. db/zlib +23 -0
  1452. die/Qt6Concurrent.dll +0 -0
  1453. die/Qt6Core.dll +0 -0
  1454. die/Qt6Network.dll +0 -0
  1455. die/Qt6Qml.dll +0 -0
  1456. die/__init__.py +125 -0
  1457. die/_die.cp313-win_amd64.pyd +0 -0
  1458. die/db/db/.vscode/about.txt +1 -0
  1459. die/db/db/.vscode/settings.json +5 -0
  1460. die/db/db/ACE +48 -0
  1461. die/db/db/APK/APKProtect.2.sg +15 -0
  1462. die/db/db/APK/APKProtector.2.sg +20 -0
  1463. die/db/db/APK/AlibabaProtection.2.sg +15 -0
  1464. die/db/db/APK/AndroidRepublic.2.sg +17 -0
  1465. die/db/db/APK/ApktoolPlus.6.sg +12 -0
  1466. die/db/db/APK/AppGuard.2.sg +17 -0
  1467. die/db/db/APK/AppSolid.2.sg +12 -0
  1468. die/db/db/APK/BaiduProtection.2.sg +18 -0
  1469. die/db/db/APK/BangBangReinforcement.2.sg +27 -0
  1470. die/db/db/APK/BangcleProtection.2.sg +14 -0
  1471. die/db/db/APK/DXShield.2.sg +12 -0
  1472. die/db/db/APK/DexProtector.2.sg +23 -0
  1473. die/db/db/APK/DingXiangReinforcement.2.sg +14 -0
  1474. die/db/db/APK/EasyShield.2.sg +19 -0
  1475. die/db/db/APK/Gemalto.2.sg +19 -0
  1476. die/db/db/APK/Hdus-Wjus.2.sg +14 -0
  1477. die/db/db/APK/IL2CPP.4.sg +14 -0
  1478. die/db/db/APK/Ijiami.2.sg +24 -0
  1479. die/db/db/APK/Jiagu.2.sg +17 -0
  1480. die/db/db/APK/Kiro.2.sg +12 -0
  1481. die/db/db/APK/Kiwi.2.sg +23 -0
  1482. die/db/db/APK/Kony.2.sg +12 -0
  1483. die/db/db/APK/LIAPP.2.sg +16 -0
  1484. die/db/db/APK/MedusaH.2.sg +12 -0
  1485. die/db/db/APK/MobileTencentProtect.2.sg +14 -0
  1486. die/db/db/APK/NQShield.2.sg +15 -0
  1487. die/db/db/APK/NagaPTProtection.2.sg +14 -0
  1488. die/db/db/APK/OLLVM-TTL.2.sg +14 -0
  1489. die/db/db/APK/Obfuscapk.2.sg +14 -0
  1490. die/db/db/APK/PackageName.1.sg +15 -0
  1491. die/db/db/APK/PangXie.2.sg +14 -0
  1492. die/db/db/APK/ProGuard.2.sg +12 -0
  1493. die/db/db/APK/QDBH.2.sg +12 -0
  1494. die/db/db/APK/Qihoo360Protection.2.sg +15 -0
  1495. die/db/db/APK/SandHook.4.sg +16 -0
  1496. die/db/db/APK/SecNeo.2.sg +19 -0
  1497. die/db/db/APK/SecShell.2.sg +15 -0
  1498. die/db/db/APK/SingleJar.3.sg +10 -0
  1499. die/db/db/APK/TencentLegu.2.sg +18 -0
  1500. die/db/db/APK/TencentProtection.2.sg +14 -0
  1501. die/db/db/APK/TencentSecurity.2.sg +17 -0
  1502. die/db/db/APK/TongfuShield.2.sg +21 -0
  1503. die/db/db/APK/UnicomSDK.4.sg +21 -0
  1504. die/db/db/APK/Unity.4.sg +12 -0
  1505. die/db/db/APK/VDog.2.sg +16 -0
  1506. die/db/db/APK/Yidun.2.sg +16 -0
  1507. die/db/db/APK/_APK.0.sg +15 -0
  1508. die/db/db/APK/_init +2 -0
  1509. die/db/db/APK/iCrypt.2.sg +24 -0
  1510. die/db/db/Amiga/DeliTracker.1.sg +14 -0
  1511. die/db/db/Amiga/_Amiga.0.sg +15 -0
  1512. die/db/db/Amiga/_init +2 -0
  1513. die/db/db/Archive/_Archive.0.sg +17 -0
  1514. die/db/db/Archive/_init +2 -0
  1515. die/db/db/Binary/Amiga_loadable.1.sg +16 -0
  1516. die/db/db/Binary/Empty.1.sg +11 -0
  1517. die/db/db/Binary/Img.UDIF.1.sg +15 -0
  1518. die/db/db/Binary/RIFF.1.sg +19 -0
  1519. die/db/db/Binary/U-Boot.1.sg +321 -0
  1520. die/db/db/Binary/Universal_Binary.1.sg +17 -0
  1521. die/db/db/Binary/Video.FLV.1.sg +16 -0
  1522. die/db/db/Binary/__MiniExtensionsHeuristic_By_DosX.7.sg +184 -0
  1523. die/db/db/Binary/__MiniJavaScriptHeuristic_By_DosX.7.sg +44 -0
  1524. die/db/db/Binary/_init +4 -0
  1525. die/db/db/Binary/archive.7z.1.sg +14 -0
  1526. die/db/db/Binary/archive.ACE.1.sg +10 -0
  1527. die/db/db/Binary/archive.AR.1.sg +85 -0
  1528. die/db/db/Binary/archive.ARC.1.sg +16 -0
  1529. die/db/db/Binary/archive.ARJ.1.sg +9 -0
  1530. die/db/db/Binary/archive.ASAR.sg +13 -0
  1531. die/db/db/Binary/archive.BZip.1.sg +20 -0
  1532. die/db/db/Binary/archive.CFL3.1.sg +25 -0
  1533. die/db/db/Binary/archive.Cab.1.sg +25 -0
  1534. die/db/db/Binary/archive.DEFLATE.1.sg +186 -0
  1535. die/db/db/Binary/archive.DotBundle.sg +9 -0
  1536. die/db/db/Binary/archive.LRZ.1.sg +57 -0
  1537. die/db/db/Binary/archive.LZ4.1.sg +42 -0
  1538. die/db/db/Binary/archive.LZOP.1.sg +13 -0
  1539. die/db/db/Binary/archive.MS_Compound.1.sg +24 -0
  1540. die/db/db/Binary/archive.PEA.1.sg +65 -0
  1541. die/db/db/Binary/archive.RAR.1.sg +9 -0
  1542. die/db/db/Binary/archive.Unity.1.sg +74 -0
  1543. die/db/db/Binary/archive.ZIP.1.sg +10 -0
  1544. die/db/db/Binary/archive.ZLIB.1.sg +14 -0
  1545. die/db/db/Binary/archive.ZPAQ.1.sg +15 -0
  1546. die/db/db/Binary/archive.btoa.1.sg +14 -0
  1547. die/db/db/Binary/archives.1.sg +299 -0
  1548. die/db/db/Binary/archives.ancient.sg +506 -0
  1549. die/db/db/Binary/audio.1.sg +12079 -0
  1550. die/db/db/Binary/audio.8svx.1.sg +16 -0
  1551. die/db/db/Binary/audio.ACM.1.sg +22 -0
  1552. die/db/db/Binary/audio.AU.1.sg +49 -0
  1553. die/db/db/Binary/audio.DSS.1.sg +57 -0
  1554. die/db/db/Binary/audio.FSB.1.sg +105 -0
  1555. die/db/db/Binary/audio.VOC.1.sg +97 -0
  1556. die/db/db/Binary/audio.WAV.1.sg +320 -0
  1557. die/db/db/Binary/audio.mp3.2.sg +189 -0
  1558. die/db/db/Binary/backup_images.1.sg +27 -0
  1559. die/db/db/Binary/bin.AAALogo.1.sg +16 -0
  1560. die/db/db/Binary/bin.Atari_ST.1.sg +12 -0
  1561. die/db/db/Binary/bin.GameMaps.1.sg +13 -0
  1562. die/db/db/Binary/bin.GuitarPro.1.sg +26 -0
  1563. die/db/db/Binary/bin.Hermes.1.sg +16 -0
  1564. die/db/db/Binary/bin.IDA.1.sg +78 -0
  1565. die/db/db/Binary/bin.ISO_9660.1.sg +13 -0
  1566. die/db/db/Binary/bin.JMDL.1.sg +34 -0
  1567. die/db/db/Binary/bin.JSC.1.sg +88 -0
  1568. die/db/db/Binary/bin.Java.1.sg +152 -0
  1569. die/db/db/Binary/bin.KeePass.1.sg +22 -0
  1570. die/db/db/Binary/bin.LUA.1.sg +48 -0
  1571. die/db/db/Binary/bin.NVA.1.sg +15 -0
  1572. die/db/db/Binary/bin.PDB.1.sg +16 -0
  1573. die/db/db/Binary/bin.PEFF.1.sg +11 -0
  1574. die/db/db/Binary/bin.PalmFile.1.sg +104 -0
  1575. die/db/db/Binary/bin.Python.1.sg +628 -0
  1576. die/db/db/Binary/bin.RPGMaker2Kdata.1.sg +242 -0
  1577. die/db/db/Binary/bin.SWF.1.sg +26 -0
  1578. die/db/db/Binary/bin.WAD.1.sg +19 -0
  1579. die/db/db/Binary/bin.WindowsIconCacheDB.1.sg +34 -0
  1580. die/db/db/Binary/bin.ZBMP.1.sg +16 -0
  1581. die/db/db/Binary/cad.DWG.1.sg +63 -0
  1582. die/db/db/Binary/cert.WinAuth.1.sg +13 -0
  1583. die/db/db/Binary/database.SQLite.1.sg +45 -0
  1584. die/db/db/Binary/databases.1.sg +117 -0
  1585. die/db/db/Binary/debugData.1.sg +68 -0
  1586. die/db/db/Binary/doc.CHM.1.sg +18 -0
  1587. die/db/db/Binary/doc.DJVU.1.sg +113 -0
  1588. die/db/db/Binary/doc.HLP.1.sg +11 -0
  1589. die/db/db/Binary/doc.PDF.1.sg +16 -0
  1590. die/db/db/Binary/doc.RTF.1.sg +13 -0
  1591. die/db/db/Binary/donut.1.sg +49 -0
  1592. die/db/db/Binary/font.ADOBE.1.sg +35 -0
  1593. die/db/db/Binary/font.BMF.1.sg +63 -0
  1594. die/db/db/Binary/format.MS-DBG.1.sg +19 -0
  1595. die/db/db/Binary/format.MS-PST.sg +15 -0
  1596. die/db/db/Binary/format.MS-VHD.1.sg +61 -0
  1597. die/db/db/Binary/format.MS-VHDX.sg +16 -0
  1598. die/db/db/Binary/format.MS-WIM.1.sg +43 -0
  1599. die/db/db/Binary/format.MS-XNA.1.sg +80 -0
  1600. die/db/db/Binary/format.UE.1.sg +36 -0
  1601. die/db/db/Binary/format.VDI.1.sg +40 -0
  1602. die/db/db/Binary/formats.1.sg +90 -0
  1603. die/db/db/Binary/graphics.1.sg +37 -0
  1604. die/db/db/Binary/image.ANI.1.sg +26 -0
  1605. die/db/db/Binary/image.BMP.1.sg +48 -0
  1606. die/db/db/Binary/image.CUR.1.sg +55 -0
  1607. die/db/db/Binary/image.DDS.1.sg +26 -0
  1608. die/db/db/Binary/image.EPS.1.sg +26 -0
  1609. die/db/db/Binary/image.GIF.1.sg +95 -0
  1610. die/db/db/Binary/image.ICO.1.sg +57 -0
  1611. die/db/db/Binary/image.JNG.1.sg +34 -0
  1612. die/db/db/Binary/image.JPEG.1.sg +52 -0
  1613. die/db/db/Binary/image.JPEG.DQT.4.sg +13 -0
  1614. die/db/db/Binary/image.JPEG.Tools.3.sg +53 -0
  1615. die/db/db/Binary/image.JPEG.camera.2.sg +16 -0
  1616. die/db/db/Binary/image.JPEG.comment.4.sg +16 -0
  1617. die/db/db/Binary/image.JPEGXL.1.sg +15 -0
  1618. die/db/db/Binary/image.KTX.1.sg +44 -0
  1619. die/db/db/Binary/image.LBM.1.sg +69 -0
  1620. die/db/db/Binary/image.MNG.1.sg +19 -0
  1621. die/db/db/Binary/image.PCX.1.sg +69 -0
  1622. die/db/db/Binary/image.PNG.1.sg +165 -0
  1623. die/db/db/Binary/image.PSD.1.sg +63 -0
  1624. die/db/db/Binary/image.PVR.1.sg +29 -0
  1625. die/db/db/Binary/image.QOI.1.sg +36 -0
  1626. die/db/db/Binary/image.TGA.1.sg +149 -0
  1627. die/db/db/Binary/image.TIFF.1.sg +186 -0
  1628. die/db/db/Binary/image.XAR.1.sg +31 -0
  1629. die/db/db/Binary/img.VM.1.sg +13 -0
  1630. die/db/db/Binary/overlays.6.sg +367 -0
  1631. die/db/db/Binary/rom.1.sg +1327 -0
  1632. die/db/db/Binary/shellcode.pe_to_shellcode.1.sg +107 -0
  1633. die/db/db/Binary/srdi-monoxgas.1.sg +128 -0
  1634. die/db/db/Binary/text.HTML.1.sg +14 -0
  1635. die/db/db/Binary/text.Pascal.1.sg +19 -0
  1636. die/db/db/Binary/text.RegistryFile.sg +20 -0
  1637. die/db/db/Binary/text.Shell.1.sg +14 -0
  1638. die/db/db/Binary/text.XML.1.sg +18 -0
  1639. die/db/db/Binary/text.c.1.sg +35 -0
  1640. die/db/db/Binary/text.pdb.1.sg +40 -0
  1641. die/db/db/Binary/text.plaintext.3.sg +25 -0
  1642. die/db/db/Binary/text.python.1.sg +17 -0
  1643. die/db/db/Binary/text.script.2.sg +16 -0
  1644. die/db/db/Binary/video.MP4.1.sg +16 -0
  1645. die/db/db/Borland +19 -0
  1646. die/db/db/COM/32-bit_crypt.2.sg +13 -0
  1647. die/db/db/COM/4kZIP.2.sg +13 -0
  1648. die/db/db/COM/8086_Forth_83.4.sg +14 -0
  1649. die/db/db/COM/A3E.1.sg +13 -0
  1650. die/db/db/COM/ABK-Scrambler.2.sg +12 -0
  1651. die/db/db/COM/ACE_Scrambler.2.sg +34 -0
  1652. die/db/db/COM/ACiDDRAW.1.sg +16 -0
  1653. die/db/db/COM/ANS2ALL.1.sg +18 -0
  1654. die/db/db/COM/ARF_AV_Inject.1.sg +14 -0
  1655. die/db/db/COM/ASC2COM.1.sg +25 -0
  1656. die/db/db/COM/ASIC-Basic.4.sg +21 -0
  1657. die/db/db/COM/AVAST-Protect.2.sg +13 -0
  1658. die/db/db/COM/AVPACK.2.sg +14 -0
  1659. die/db/db/COM/AdFlt.2.sg +17 -0
  1660. die/db/db/COM/Anti-Lamer_Cryptor.2.sg +14 -0
  1661. die/db/db/COM/Anti-hack_encryption_system.2.sg +13 -0
  1662. die/db/db/COM/AutoCracker.1.sg +14 -0
  1663. die/db/db/COM/BAT2EXEC.2.sg +18 -0
  1664. die/db/db/COM/BIN-Lock.2.sg +14 -0
  1665. die/db/db/COM/BatLite.4.sg +13 -0
  1666. die/db/db/COM/Best_Protection_Kit-B.2.sg +16 -0
  1667. die/db/db/COM/Borland_C++.4.sg +17 -0
  1668. die/db/db/COM/Budokan.1.sg +13 -0
  1669. die/db/db/COM/C-crypt.2.sg +14 -0
  1670. die/db/db/COM/CC#3.2.sg +13 -0
  1671. die/db/db/COM/CC.2.sg +22 -0
  1672. die/db/db/COM/CC286.2.sg +14 -0
  1673. die/db/db/COM/CCC.2.sg +16 -0
  1674. die/db/db/COM/CHECKPRG.2.sg +13 -0
  1675. die/db/db/COM/CNT.2.sg +13 -0
  1676. die/db/db/COM/COM-Protect.2.sg +16 -0
  1677. die/db/db/COM/COM-Protection.2.sg +13 -0
  1678. die/db/db/COM/COM2TXT.1.sg +13 -0
  1679. die/db/db/COM/COMCRYPT.2.sg +23 -0
  1680. die/db/db/COM/COMPACK.2.sg +32 -0
  1681. die/db/db/COM/COMPROTECT.2.sg +14 -0
  1682. die/db/db/COM/COM_Sccrambler.2.sg +14 -0
  1683. die/db/db/COM/COP.2.sg +14 -0
  1684. die/db/db/COM/CPAV.1.sg +13 -0
  1685. die/db/db/COM/CRX2COM.1.sg +12 -0
  1686. die/db/db/COM/Character_Intro_Engine.1.sg +16 -0
  1687. die/db/db/COM/Cheat_packer.2.sg +13 -0
  1688. die/db/db/COM/CodeLock.2.sg +14 -0
  1689. die/db/db/COM/ComProt.2.sg +13 -0
  1690. die/db/db/COM/ComProtector.2.sg +18 -0
  1691. die/db/db/COM/Comlock.2.sg +19 -0
  1692. die/db/db/COM/CrAcKeR.2.sg +14 -0
  1693. die/db/db/COM/Crack2EXE.1.sg +14 -0
  1694. die/db/db/COM/CryptCom.2.sg +18 -0
  1695. die/db/db/COM/CryptGeneric.2.sg +12 -0
  1696. die/db/db/COM/Crypt_(Dismember).2.sg +16 -0
  1697. die/db/db/COM/Crypto-King.2.sg +13 -0
  1698. die/db/db/COM/CyberWare_Packer.2.sg +13 -0
  1699. die/db/db/COM/DCFR.2.sg +13 -0
  1700. die/db/db/COM/DIGPAK.1.sg +16 -0
  1701. die/db/db/COM/DOC2COM.1.sg +13 -0
  1702. die/db/db/COM/DOC2PAGE.1.sg +13 -0
  1703. die/db/db/COM/DS-CRP.2.sg +16 -0
  1704. die/db/db/COM/Datalight_C.4.sg +15 -0
  1705. die/db/db/COM/Deep_Crypter.2.sg +14 -0
  1706. die/db/db/COM/Deeper.2.sg +17 -0
  1707. die/db/db/COM/Diet.2.sg +26 -0
  1708. die/db/db/COM/Dn.COM_Cruncher.2.sg +13 -0
  1709. die/db/db/COM/E2C-Scrambler.2.sg +13 -0
  1710. die/db/db/COM/E2C.1.sg +16 -0
  1711. die/db/db/COM/E2C1.2.sg +13 -0
  1712. die/db/db/COM/EPW.2.sg +14 -0
  1713. die/db/db/COM/EXE2COM.1.sg +72 -0
  1714. die/db/db/COM/EXETools.2.sg +22 -0
  1715. die/db/db/COM/EXETools_EXE2COM.1.sg +16 -0
  1716. die/db/db/COM/Easy!-C.4.sg +13 -0
  1717. die/db/db/COM/Entropy_Coder.2.sg +13 -0
  1718. die/db/db/COM/ExOM.2.sg +14 -0
  1719. die/db/db/COM/FCRYPT.2.sg +14 -0
  1720. die/db/db/COM/FIXCRK.1.sg +13 -0
  1721. die/db/db/COM/Fig-FORTH.4.sg +13 -0
  1722. die/db/db/COM/ForthCMP.2.sg +23 -0
  1723. die/db/db/COM/ForthCMP.4.sg +18 -0
  1724. die/db/db/COM/FromBAT.1.sg +18 -0
  1725. die/db/db/COM/GOAT.2.sg +19 -0
  1726. die/db/db/COM/GP-FORTH.4.sg +14 -0
  1727. die/db/db/COM/Guardian_Angel.2.sg +28 -0
  1728. die/db/db/COM/HDKPROTC.2.sg +13 -0
  1729. die/db/db/COM/HYPDOC.1.sg +13 -0
  1730. die/db/db/COM/HackStop.2.sg +19 -0
  1731. die/db/db/COM/ICE.1.sg +13 -0
  1732. die/db/db/COM/IMMUN.1.sg +14 -0
  1733. die/db/db/COM/Inbuild_Encryption.2.sg +14 -0
  1734. die/db/db/COM/IntroC0der.1.sg +13 -0
  1735. die/db/db/COM/J0B_cryptor.2.sg +13 -0
  1736. die/db/db/COM/Keygen_crypt.2.sg +14 -0
  1737. die/db/db/COM/Khrome_Crypt.2.sg +14 -0
  1738. die/db/db/COM/LAME_GG.2.sg +12 -0
  1739. die/db/db/COM/LAMPROT.2.sg +13 -0
  1740. die/db/db/COM/LGLZ.2.sg +14 -0
  1741. die/db/db/COM/LHA.1.sg +16 -0
  1742. die/db/db/COM/LHarc_SFX.1.sg +16 -0
  1743. die/db/db/COM/Lattice_C.4.sg +32 -0
  1744. die/db/db/COM/List.1.sg +21 -0
  1745. die/db/db/COM/Lock-Master.2.sg +14 -0
  1746. die/db/db/COM/MASK.2.sg +26 -0
  1747. die/db/db/COM/MCLock.2.sg +13 -0
  1748. die/db/db/COM/MESS.2.sg +13 -0
  1749. die/db/db/COM/MICRO-C.4.sg +16 -0
  1750. die/db/db/COM/MIDPAK.1.sg +13 -0
  1751. die/db/db/COM/MINIFORTH.4.sg +14 -0
  1752. die/db/db/COM/MSCC.2.sg +14 -0
  1753. die/db/db/COM/MakeRead.1.sg +14 -0
  1754. die/db/db/COM/Maveriks_C0der.2.sg +16 -0
  1755. die/db/db/COM/MegaShield.2.sg +14 -0
  1756. die/db/db/COM/Microsoft_C.4.sg +13 -0
  1757. die/db/db/COM/Microsoft_RTL.3.sg +16 -0
  1758. die/db/db/COM/Microxor.2.sg +13 -0
  1759. die/db/db/COM/MoonRock.2.sg +14 -0
  1760. die/db/db/COM/NH.2.sg +13 -0
  1761. die/db/db/COM/NetCode.1.sg +18 -0
  1762. die/db/db/COM/NetRun.1.sg +13 -0
  1763. die/db/db/COM/NoAV.2.sg +13 -0
  1764. die/db/db/COM/Nodebug.2.sg +14 -0
  1765. die/db/db/COM/ONLINE-HELP.1.sg +13 -0
  1766. die/db/db/COM/OUTFORTH.4.sg +13 -0
  1767. die/db/db/COM/PBFC.2.sg +14 -0
  1768. die/db/db/COM/PCOM.2.sg +14 -0
  1769. die/db/db/COM/PCRYPT.2.sg +14 -0
  1770. die/db/db/COM/PCVault-Protect.2.sg +13 -0
  1771. die/db/db/COM/PC_FORTH.4.sg +13 -0
  1772. die/db/db/COM/PKLITE.2.sg +29 -0
  1773. die/db/db/COM/PKZip.1.sg +18 -0
  1774. die/db/db/COM/PRO-PACK.2.sg +21 -0
  1775. die/db/db/COM/PROTECT.2.sg +67 -0
  1776. die/db/db/COM/PTP.2.sg +16 -0
  1777. die/db/db/COM/PU-Cryptor.2.sg +25 -0
  1778. die/db/db/COM/PassCOM.2.sg +13 -0
  1779. die/db/db/COM/Phrozen_Crew_cryptor.2.sg +13 -0
  1780. die/db/db/COM/ProtEXE.2.sg +14 -0
  1781. die/db/db/COM/R-Crypt.2.sg +19 -0
  1782. die/db/db/COM/RCC.2.sg +25 -0
  1783. die/db/db/COM/RDT_Compressor2.2.sg +13 -0
  1784. die/db/db/COM/RDT_ENC_3.2.sg +13 -0
  1785. die/db/db/COM/RELETTER.1.sg +14 -0
  1786. die/db/db/COM/RMCOBOL.4.sg +16 -0
  1787. die/db/db/COM/RSCC.2.sg +65 -0
  1788. die/db/db/COM/SCC.2.sg +13 -0
  1789. die/db/db/COM/SCRAM.2.sg +14 -0
  1790. die/db/db/COM/SCRE2B.2.sg +14 -0
  1791. die/db/db/COM/SCRNCH.2.sg +22 -0
  1792. die/db/db/COM/SDW.2.sg +34 -0
  1793. die/db/db/COM/SHOWV20.1.sg +18 -0
  1794. die/db/db/COM/SHOW_IT.1.sg +13 -0
  1795. die/db/db/COM/SHRINK.2.sg +14 -0
  1796. die/db/db/COM/SP-FORTH.4.sg +18 -0
  1797. die/db/db/COM/SPHINX_C--.4.sg +24 -0
  1798. die/db/db/COM/Scramb.2.sg +18 -0
  1799. die/db/db/COM/Scrypt!.2.sg +18 -0
  1800. die/db/db/COM/Scrypt.2.sg +14 -0
  1801. die/db/db/COM/SelfCrypt.2.sg +13 -0
  1802. die/db/db/COM/SelfProtect386.2.sg +12 -0
  1803. die/db/db/COM/Shadow.2.sg +14 -0
  1804. die/db/db/COM/Shadow_COM_encryptor.2.sg +14 -0
  1805. die/db/db/COM/Six-2-Four.2.sg +18 -0
  1806. die/db/db/COM/SnoopStop.2.sg +14 -0
  1807. die/db/db/COM/SoftGuard.1.sg +13 -0
  1808. die/db/db/COM/Steplock.2.sg +14 -0
  1809. die/db/db/COM/Surpas-86.4.sg +14 -0
  1810. die/db/db/COM/Sydex.2.sg +13 -0
  1811. die/db/db/COM/TCEC.2.sg +14 -0
  1812. die/db/db/COM/TCOM.4.sg +16 -0
  1813. die/db/db/COM/TPACK.2.sg +18 -0
  1814. die/db/db/COM/TPC_Scramble.2.sg +12 -0
  1815. die/db/db/COM/TXT2COM.1.sg +22 -0
  1816. die/db/db/COM/TXTmaker.1.sg +14 -0
  1817. die/db/db/COM/Text_Header.1.sg +14 -0
  1818. die/db/db/COM/The_DRAW.1.sg +15 -0
  1819. die/db/db/COM/Tiny_Xor.2.sg +14 -0
  1820. die/db/db/COM/TurboBAT.1.sg +21 -0
  1821. die/db/db/COM/Turbo_C++.4.sg +13 -0
  1822. die/db/db/COM/Turbo_C.4.sg +27 -0
  1823. die/db/db/COM/Turbo_Pascal.4.sg +30 -0
  1824. die/db/db/COM/Txt2Exe.1.sg +14 -0
  1825. die/db/db/COM/UNIFORTH.4.sg +13 -0
  1826. die/db/db/COM/UPX.2.sg +22 -0
  1827. die/db/db/COM/USCC.2.sg +14 -0
  1828. die/db/db/COM/UnPackStop.2.sg +17 -0
  1829. die/db/db/COM/UniCrypt.1.sg +14 -0
  1830. die/db/db/COM/Unknown_cryptors.2.sg +74 -0
  1831. die/db/db/COM/VGA_font_loader.1.sg +13 -0
  1832. die/db/db/COM/VSF&K_protection.2.sg +13 -0
  1833. die/db/db/COM/VSS.1.sg +13 -0
  1834. die/db/db/COM/Vacsina.4.sg +12 -0
  1835. die/db/db/COM/Venus.2.sg +12 -0
  1836. die/db/db/COM/Vienna-C.4.sg +12 -0
  1837. die/db/db/COM/Watcom_C.4.sg +37 -0
  1838. die/db/db/COM/WiZ_Cryptor.2.sg +14 -0
  1839. die/db/db/COM/XCK2COM.1.sg +12 -0
  1840. die/db/db/COM/XE.2.sg +13 -0
  1841. die/db/db/COM/XORCOPY.2.sg +14 -0
  1842. die/db/db/COM/XPACK.2.sg +22 -0
  1843. die/db/db/COM/XcomOR.2.sg +24 -0
  1844. die/db/db/COM/XoReR.2.sg +26 -0
  1845. die/db/db/COM/XorCom.2.sg +14 -0
  1846. die/db/db/COM/Zbikowski_C.4.sg +13 -0
  1847. die/db/db/COM/Zortech_C.4.sg +26 -0
  1848. die/db/db/COM/_init +2 -0
  1849. die/db/db/COM/aPACK.2.sg +22 -0
  1850. die/db/db/COM/aPatch.2.sg +13 -0
  1851. die/db/db/COM/acBBS_protection.2.sg +13 -0
  1852. die/db/db/COM/com-crypt.2.sg +16 -0
  1853. die/db/db/COM/com_RLE_packer.2.sg +15 -0
  1854. die/db/db/COM/cryptors.2.sg +214 -0
  1855. die/db/db/COM/envelope.2.sg +13 -0
  1856. die/db/db/COM/fds-cp.2.sg +13 -0
  1857. die/db/db/COM/integrity_checker.1.sg +13 -0
  1858. die/db/db/COM/mCrypt.2.sg +14 -0
  1859. die/db/db/COM/muSIMP-83.4.sg +14 -0
  1860. die/db/db/COM/packers.2.sg +26 -0
  1861. die/db/db/COM/patchers.1.sg +100 -0
  1862. die/db/db/COM/protection.2.sg +13 -0
  1863. die/db/db/COM/readme.com.1.sg +12 -0
  1864. die/db/db/COM/simple_ansi_viewer.1.sg +12 -0
  1865. die/db/db/COM/simple_self-displayer.1.sg +12 -0
  1866. die/db/db/COM/spirit.2.sg +22 -0
  1867. die/db/db/COM/x3.2.sg +18 -0
  1868. die/db/db/CurIcoBPP +14 -0
  1869. die/db/db/DEX/AESObfuscator.2.sg +14 -0
  1870. die/db/db/DEX/APKProtect.2.sg +12 -0
  1871. die/db/db/DEX/AlibabaProtection.2.sg +12 -0
  1872. die/db/db/DEX/AllatoriObfuscator.2.sg +14 -0
  1873. die/db/db/DEX/ApkEncryptor.2.sg +12 -0
  1874. die/db/db/DEX/ApkToolPlus.6.sg +12 -0
  1875. die/db/db/DEX/AppSolid.2.sg +12 -0
  1876. die/db/db/DEX/BaiduProtection.2.sg +12 -0
  1877. die/db/db/DEX/BangcleProtection.2.sg +12 -0
  1878. die/db/db/DEX/EasyProtector.2.sg +12 -0
  1879. die/db/db/DEX/Jiagu.2.sg +12 -0
  1880. die/db/db/DEX/Kiwi.2.sg +12 -0
  1881. die/db/db/DEX/LIAPP.2.sg +12 -0
  1882. die/db/db/DEX/MedusaH.2.sg +12 -0
  1883. die/db/db/DEX/ModGuard.2.sg +16 -0
  1884. die/db/db/DEX/NQShield.2.sg +12 -0
  1885. die/db/db/DEX/NagaPTProtection.2.sg +12 -0
  1886. die/db/db/DEX/PangXie.2.sg +12 -0
  1887. die/db/db/DEX/ProGuard.2.sg +12 -0
  1888. die/db/db/DEX/QDBH.2.sg +12 -0
  1889. die/db/db/DEX/SecNeo.2.sg +12 -0
  1890. die/db/db/DEX/TencentProtection.2.sg +12 -0
  1891. die/db/db/DEX/UnicomSDK.4.sg +12 -0
  1892. die/db/db/DEX/VDog.2.sg +12 -0
  1893. die/db/db/DEX/Yidun.2.sg +12 -0
  1894. die/db/db/DEX/_DEX.0.sg +15 -0
  1895. die/db/db/DEX/_init +2 -0
  1896. die/db/db/DOS16M/_DOS16M.0.sg +15 -0
  1897. die/db/db/DOS16M/_init +2 -0
  1898. die/db/db/DOS4G/_DOS4G.0.sg +15 -0
  1899. die/db/db/DOS4G/_init +2 -0
  1900. die/db/db/ELF/Borland_Kylix.4.sg +19 -0
  1901. die/db/db/ELF/Burneye.2.sg +12 -0
  1902. die/db/db/ELF/DMD.4.sg +31 -0
  1903. die/db/db/ELF/ELFCrypt.2.sg +12 -0
  1904. die/db/db/ELF/Ezuri.1.sg +30 -0
  1905. die/db/db/ELF/FASM.4.sg +23 -0
  1906. die/db/db/ELF/Flexlm.4.sg +15 -0
  1907. die/db/db/ELF/Free_Pascal.4.sg +46 -0
  1908. die/db/db/ELF/GLIBC.3.sg +49 -0
  1909. die/db/db/ELF/Go.4.sg +126 -0
  1910. die/db/db/ELF/HASP.1.sg +28 -0
  1911. die/db/db/ELF/HP_C++.4.sg +12 -0
  1912. die/db/db/ELF/IBM_AIX_kernel_loader.sg +18 -0
  1913. die/db/db/ELF/Oracle_Solaris_Studio.4.sg +47 -0
  1914. die/db/db/ELF/PyInstaller.2.sg +24 -0
  1915. die/db/db/ELF/QT.3.sg +44 -0
  1916. die/db/db/ELF/Rust.4.sg +25 -0
  1917. die/db/db/ELF/SDL.3.sg +35 -0
  1918. die/db/db/ELF/UPX.2.sg +57 -0
  1919. die/db/db/ELF/VBCC.4.sg +17 -0
  1920. die/db/db/ELF/Virbox.2.sg +17 -0
  1921. die/db/db/ELF/Watcom.4.sg +15 -0
  1922. die/db/db/ELF/Zig.4.sg +22 -0
  1923. die/db/db/ELF/_ELF.0.sg +15 -0
  1924. die/db/db/ELF/_init +2 -0
  1925. die/db/db/ELF/gcc.4.sg +95 -0
  1926. die/db/db/ELF/gdc.4.sg +13 -0
  1927. die/db/db/ELF/ldc.4.sg +34 -0
  1928. die/db/db/ELF/movfuscator.4.sg +19 -0
  1929. die/db/db/FASM +9 -0
  1930. die/db/db/FPC +11 -0
  1931. die/db/db/IPA/_init +2 -0
  1932. die/db/db/JAR/SingleJar.3.sg +13 -0
  1933. die/db/db/JAR/_JAR.0.sg +15 -0
  1934. die/db/db/JAR/_init +2 -0
  1935. die/db/db/LE/UPX.1.sg +85 -0
  1936. die/db/db/LE/Watcom_C.4.sg +24 -0
  1937. die/db/db/LE/_LE.0.sg +15 -0
  1938. die/db/db/LE/_init +2 -0
  1939. die/db/db/LX/Watcom C.4.sg +51 -0
  1940. die/db/db/LX/_LX.0.sg +15 -0
  1941. die/db/db/LX/_init +2 -0
  1942. die/db/db/MACH/Carbon.3.sg +13 -0
  1943. die/db/db/MACH/Cocoa.3.sg +11 -0
  1944. die/db/db/MACH/Delphi.4.sg +21 -0
  1945. die/db/db/MACH/QT.3.sg +18 -0
  1946. die/db/db/MACH/UPX.2.sg +15 -0
  1947. die/db/db/MACH/Virbox.2.sg +13 -0
  1948. die/db/db/MACH/WebKit.3.sg +11 -0
  1949. die/db/db/MACH/Zig.4.sg +22 -0
  1950. die/db/db/MACH/_MACH.0.sg +15 -0
  1951. die/db/db/MACH/_init +2 -0
  1952. die/db/db/MACH/gcc.4.sg +35 -0
  1953. die/db/db/MACH/java.3.sg +15 -0
  1954. die/db/db/MACHOFAT/_MACHOFAT.0.sg +15 -0
  1955. die/db/db/MACHOFAT/_init +2 -0
  1956. die/db/db/MFC +14 -0
  1957. die/db/db/MSDOS/$pirit.2.sg +47 -0
  1958. die/db/db/MSDOS/32stub.0a.sg +13 -0
  1959. die/db/db/MSDOS/ABKprot.2.sg +12 -0
  1960. die/db/db/MSDOS/ACE.6.sg +10 -0
  1961. die/db/db/MSDOS/AEP.2.sg +12 -0
  1962. die/db/db/MSDOS/AINEXE.2.sg +19 -0
  1963. die/db/db/MSDOS/ALEC.2.sg +14 -0
  1964. die/db/db/MSDOS/ANS2ALL.1.sg +14 -0
  1965. die/db/db/MSDOS/ARC.1.sg +23 -0
  1966. die/db/db/MSDOS/ARJ.1.sg +14 -0
  1967. die/db/db/MSDOS/ASIC-Basic.4.sg +18 -0
  1968. die/db/db/MSDOS/AVAST_CRC-Check.2.sg +14 -0
  1969. die/db/db/MSDOS/AVPACK.2.sg +16 -0
  1970. die/db/db/MSDOS/Ada89.4.sg +13 -0
  1971. die/db/db/MSDOS/Adys_COM2EXE.1.sg +11 -0
  1972. die/db/db/MSDOS/Adys_Glue.2.sg +15 -0
  1973. die/db/db/MSDOS/Aluwain.2.sg +12 -0
  1974. die/db/db/MSDOS/Amisetup.1.sg +13 -0
  1975. die/db/db/MSDOS/Anti-LAME.2.sg +13 -0
  1976. die/db/db/MSDOS/Anti-hack_encryption_system.2.sg +13 -0
  1977. die/db/db/MSDOS/Antilame.2.sg +14 -0
  1978. die/db/db/MSDOS/ApBasic.4.sg +17 -0
  1979. die/db/db/MSDOS/AutoHack.1.sg +12 -0
  1980. die/db/db/MSDOS/Aztec_C-86.4.sg +40 -0
  1981. die/db/db/MSDOS/BAT2EXEC.4.sg +16 -0
  1982. die/db/db/MSDOS/BSTAR_FORTH.4.sg +13 -0
  1983. die/db/db/MSDOS/BatLite.4.sg +13 -0
  1984. die/db/db/MSDOS/BetterBASIC.4.sg +13 -0
  1985. die/db/db/MSDOS/Bitlok.2.sg +14 -0
  1986. die/db/db/MSDOS/Black_fist.2.sg +13 -0
  1987. die/db/db/MSDOS/Blinker.0a.sg +25 -0
  1988. die/db/db/MSDOS/Borland_C.4.sg +89 -0
  1989. die/db/db/MSDOS/Borland_Pascal.4.sg +89 -0
  1990. die/db/db/MSDOS/Borland_RTM.0a.sg +33 -0
  1991. die/db/db/MSDOS/Borland_TDS.sg +14 -0
  1992. die/db/db/MSDOS/Borland_TLINK.5.sg +13 -0
  1993. die/db/db/MSDOS/Bunny.2.sg +14 -0
  1994. die/db/db/MSDOS/CC.2.sg +18 -0
  1995. die/db/db/MSDOS/CEPexe.2.sg +12 -0
  1996. die/db/db/MSDOS/CERBERUS.2.sg +12 -0
  1997. die/db/db/MSDOS/CII-C.4.sg +18 -0
  1998. die/db/db/MSDOS/COMCRYPT.2.sg +15 -0
  1999. die/db/db/MSDOS/COMPACK.2.sg +15 -0
  2000. die/db/db/MSDOS/COMPROTECT.2.sg +14 -0
  2001. die/db/db/MSDOS/CONVOY.2.sg +17 -0
  2002. die/db/db/MSDOS/CPAV.1.sg +13 -0
  2003. die/db/db/MSDOS/CRYPACK.2.sg +12 -0
  2004. die/db/db/MSDOS/CRYPTEXE.2.sg +19 -0
  2005. die/db/db/MSDOS/CSCRYPT_Pro.2.sg +14 -0
  2006. die/db/db/MSDOS/CWSDPMI.0a.sg +22 -0
  2007. die/db/db/MSDOS/CauseWay_DOS_Extender.0a.sg +16 -0
  2008. die/db/db/MSDOS/ChSFX.1.sg +27 -0
  2009. die/db/db/MSDOS/Ciphator.2.sg +12 -0
  2010. die/db/db/MSDOS/Coderunner.1.sg +22 -0
  2011. die/db/db/MSDOS/Codesafe.2.sg +13 -0
  2012. die/db/db/MSDOS/ComProtector.2.sg +15 -0
  2013. die/db/db/MSDOS/ComprEXE.2.sg +14 -0
  2014. die/db/db/MSDOS/Compress-EXE.2.sg +14 -0
  2015. die/db/db/MSDOS/Concurrent_Small_C.4.sg +16 -0
  2016. die/db/db/MSDOS/CopyQM_SFX.1.sg +16 -0
  2017. die/db/db/MSDOS/Copy_Protector.2.sg +15 -0
  2018. die/db/db/MSDOS/Copylock_PC.1.sg +13 -0
  2019. die/db/db/MSDOS/CrAcKeR.2.sg +14 -0
  2020. die/db/db/MSDOS/CrackStop.2.sg +16 -0
  2021. die/db/db/MSDOS/Cruncher.2.sg +12 -0
  2022. die/db/db/MSDOS/CryExe.2.sg +12 -0
  2023. die/db/db/MSDOS/CryptCom.2.sg +14 -0
  2024. die/db/db/MSDOS/Crypt_(Dismember).2.sg +25 -0
  2025. die/db/db/MSDOS/Crypt_(LightShow).2.sg +25 -0
  2026. die/db/db/MSDOS/CrypteXeC.2.sg +15 -0
  2027. die/db/db/MSDOS/Cryptors.2.sg +59 -0
  2028. die/db/db/MSDOS/DAEMON_Protect.2.sg +12 -0
  2029. die/db/db/MSDOS/DCREXE.2.sg +18 -0
  2030. die/db/db/MSDOS/DIET.2.sg +33 -0
  2031. die/db/db/MSDOS/DMC.2.sg +14 -0
  2032. die/db/db/MSDOS/DOS32.0a.sg +22 -0
  2033. die/db/db/MSDOS/DOS32_loader.0a.sg +14 -0
  2034. die/db/db/MSDOS/DOS4G.0a.sg +16 -0
  2035. die/db/db/MSDOS/DOSX16.0a.sg +27 -0
  2036. die/db/db/MSDOS/DOS_16M.0a.sg +31 -0
  2037. die/db/db/MSDOS/DOS_32A.0a.sg +22 -0
  2038. die/db/db/MSDOS/DSHIELD.2.sg +11 -0
  2039. die/db/db/MSDOS/Deeper.2.sg +17 -0
  2040. die/db/db/MSDOS/DemoMaker.2.sg +14 -0
  2041. die/db/db/MSDOS/DexEXE.2.sg +14 -0
  2042. die/db/db/MSDOS/Digital_Research_C.4.sg +16 -0
  2043. die/db/db/MSDOS/Disk_eXPress.1.sg +14 -0
  2044. die/db/db/MSDOS/E-PROT.2.sg +14 -0
  2045. die/db/db/MSDOS/EEXE.2.sg +14 -0
  2046. die/db/db/MSDOS/EMMXXXX0_check.0a.sg +12 -0
  2047. die/db/db/MSDOS/EMX.0a.sg +16 -0
  2048. die/db/db/MSDOS/EPW.2.sg +18 -0
  2049. die/db/db/MSDOS/EXARJ.1.sg +13 -0
  2050. die/db/db/MSDOS/EXE-Crypt.2.sg +13 -0
  2051. die/db/db/MSDOS/EXE-Cryptor.2.sg +19 -0
  2052. die/db/db/MSDOS/EXE-Protect.2.sg +13 -0
  2053. die/db/db/MSDOS/EXE2COM.1.sg +22 -0
  2054. die/db/db/MSDOS/EXECUTRIX.2.sg +13 -0
  2055. die/db/db/MSDOS/EXEGUARD.2.sg +12 -0
  2056. die/db/db/MSDOS/EXEHigh.2.sg +14 -0
  2057. die/db/db/MSDOS/EXEPACK.2.sg +57 -0
  2058. die/db/db/MSDOS/EXETools.2.sg +16 -0
  2059. die/db/db/MSDOS/EXETools_COM2EXE.1.sg +12 -0
  2060. die/db/db/MSDOS/EXE_Manager.2.sg +14 -0
  2061. die/db/db/MSDOS/EXE_Packer.2.sg +15 -0
  2062. die/db/db/MSDOS/EXE_encryption.2.sg +13 -0
  2063. die/db/db/MSDOS/Easy!-C.4.sg +15 -0
  2064. die/db/db/MSDOS/Eliashim's_CodeTrack.1.sg +12 -0
  2065. die/db/db/MSDOS/Encriptor.2.sg +12 -0
  2066. die/db/db/MSDOS/Enkryptonator.2.sg +12 -0
  2067. die/db/db/MSDOS/ExeCode.2.sg +18 -0
  2068. die/db/db/MSDOS/ExeLITE.2.sg +15 -0
  2069. die/db/db/MSDOS/ExeLock.2.sg +16 -0
  2070. die/db/db/MSDOS/F-XLOCK.1.sg +13 -0
  2071. die/db/db/MSDOS/FACRYPT.2.sg +12 -0
  2072. die/db/db/MSDOS/FCP_IV.2.sg +13 -0
  2073. die/db/db/MSDOS/FSE.2.sg +61 -0
  2074. die/db/db/MSDOS/File_Shield.1.sg +19 -0
  2075. die/db/db/MSDOS/Fitted_Modula-2.4.sg +14 -0
  2076. die/db/db/MSDOS/ForthInfo.4.sg +18 -0
  2077. die/db/db/MSDOS/FromBAT.1.sg +13 -0
  2078. die/db/db/MSDOS/GFX_to_EXE.1.sg +14 -0
  2079. die/db/db/MSDOS/GIFEXE.1.sg +16 -0
  2080. die/db/db/MSDOS/GOAT.1.sg +21 -0
  2081. die/db/db/MSDOS/GRABBER.1.sg +26 -0
  2082. die/db/db/MSDOS/GRASP.4.sg +20 -0
  2083. die/db/db/MSDOS/GamBit_Pro_Library.1.sg +14 -0
  2084. die/db/db/MSDOS/GameWizard_DOS_Extender.0a.sg +12 -0
  2085. die/db/db/MSDOS/Go32Stub.0a.sg +22 -0
  2086. die/db/db/MSDOS/Graphic_WorkShop.1.sg +14 -0
  2087. die/db/db/MSDOS/Guardian_Angel.2.sg +21 -0
  2088. die/db/db/MSDOS/H+BEDV_SelfCheck.1.sg +18 -0
  2089. die/db/db/MSDOS/HACKSTOP.2.sg +77 -0
  2090. die/db/db/MSDOS/HASP.2.sg +14 -0
  2091. die/db/db/MSDOS/HEALTH.2.sg +12 -0
  2092. die/db/db/MSDOS/Header_Changer.2.sg +13 -0
  2093. die/db/db/MSDOS/Hi-Tech_C.4.sg +16 -0
  2094. die/db/db/MSDOS/HyperLOCK_386.2.sg +14 -0
  2095. die/db/db/MSDOS/IBM_PC_Pascal.4.sg +32 -0
  2096. die/db/db/MSDOS/ICE.1.sg +13 -0
  2097. die/db/db/MSDOS/IMMUN.1.sg +14 -0
  2098. die/db/db/MSDOS/Inertia.2.sg +14 -0
  2099. die/db/db/MSDOS/Ironthorn.2.sg +14 -0
  2100. die/db/db/MSDOS/JAM.2.sg +12 -0
  2101. die/db/db/MSDOS/JmCryptExe.2.sg +19 -0
  2102. die/db/db/MSDOS/John_Socha_Library.3.sg +13 -0
  2103. die/db/db/MSDOS/Joke.2.sg +13 -0
  2104. die/db/db/MSDOS/KeyMaker.2.sg +14 -0
  2105. die/db/db/MSDOS/Khrome_Crypt.2.sg +12 -0
  2106. die/db/db/MSDOS/Kvetch.2.sg +14 -0
  2107. die/db/db/MSDOS/LE.0.sg +11 -0
  2108. die/db/db/MSDOS/LGLZ.2.sg +14 -0
  2109. die/db/db/MSDOS/LH.1.sg +11 -0
  2110. die/db/db/MSDOS/LHA.1.sg +20 -0
  2111. die/db/db/MSDOS/LHarc.1.sg +19 -0
  2112. die/db/db/MSDOS/LOCK.2.sg +14 -0
  2113. die/db/db/MSDOS/LSI_C.4.sg +14 -0
  2114. die/db/db/MSDOS/LX.0.sg +11 -0
  2115. die/db/db/MSDOS/LZEXE.2.sg +42 -0
  2116. die/db/db/MSDOS/L_O_V_E__FORTH.4.sg +18 -0
  2117. die/db/db/MSDOS/Lahey_Fortran.4.sg +15 -0
  2118. die/db/db/MSDOS/LamerStop.2.sg +12 -0
  2119. die/db/db/MSDOS/Lattice_C.4.sg +88 -0
  2120. die/db/db/MSDOS/LockTite+.2.sg +12 -0
  2121. die/db/db/MSDOS/Logitech_Modula-2.4.sg +14 -0
  2122. die/db/db/MSDOS/MEGALITE.2.sg +12 -0
  2123. die/db/db/MSDOS/MESS.2.sg +30 -0
  2124. die/db/db/MSDOS/MSLite.1.sg +14 -0
  2125. die/db/db/MSDOS/Maker.2.sg +14 -0
  2126. die/db/db/MSDOS/Mandrake.2.sg +13 -0
  2127. die/db/db/MSDOS/MegaBasic.4.sg +16 -0
  2128. die/db/db/MSDOS/MegaBasic1.4.sg +30 -0
  2129. die/db/db/MSDOS/Meridian_Ada.4.sg +29 -0
  2130. die/db/db/MSDOS/Meridian_Pascal.4.sg +22 -0
  2131. die/db/db/MSDOS/MetaWare_High_C.4.sg +30 -0
  2132. die/db/db/MSDOS/MetaWare_Professional_Pascal.4.sg +24 -0
  2133. die/db/db/MSDOS/Micro_Focus_Cobol.4.sg +19 -0
  2134. die/db/db/MSDOS/Micro_Focus_DOS_extender.0a.sg +13 -0
  2135. die/db/db/MSDOS/Microsoft_Basic.4.sg +23 -0
  2136. die/db/db/MSDOS/Microsoft_C.4.sg +57 -0
  2137. die/db/db/MSDOS/Microsoft_C_Library.3.sg +20 -0
  2138. die/db/db/MSDOS/Microsoft_Fortran.4.sg +15 -0
  2139. die/db/db/MSDOS/Microsoft_Quick_Basic.4.sg +35 -0
  2140. die/db/db/MSDOS/Microsoft_Quick_Pascal.4.sg +16 -0
  2141. die/db/db/MSDOS/Microsoft_RTL.3.sg +48 -0
  2142. die/db/db/MSDOS/Microsoft_RTL_(Clipper).3.sg +13 -0
  2143. die/db/db/MSDOS/MultiLoop_Protection.2.sg +13 -0
  2144. die/db/db/MSDOS/MutaWWP.2.sg +14 -0
  2145. die/db/db/MSDOS/Mutate.2.sg +21 -0
  2146. die/db/db/MSDOS/NE.0.sg +11 -0
  2147. die/db/db/MSDOS/NOCLIP.2.sg +14 -0
  2148. die/db/db/MSDOS/NOTA.2.sg +14 -0
  2149. die/db/db/MSDOS/NTShell.2.sg +14 -0
  2150. die/db/db/MSDOS/Netware_loader.1.sg +12 -0
  2151. die/db/db/MSDOS/Nodebug.2.sg +14 -0
  2152. die/db/db/MSDOS/Novex.2.sg +12 -0
  2153. die/db/db/MSDOS/Oberon-M.4.sg +14 -0
  2154. die/db/db/MSDOS/Optlink.2.sg +31 -0
  2155. die/db/db/MSDOS/Overlay.2.sg +13 -0
  2156. die/db/db/MSDOS/Oyster.1.sg +13 -0
  2157. die/db/db/MSDOS/PACKWIN.2.sg +14 -0
  2158. die/db/db/MSDOS/PC-Guard.2.sg +30 -0
  2159. die/db/db/MSDOS/PCC.4.sg +28 -0
  2160. die/db/db/MSDOS/PCOM.2.sg +14 -0
  2161. die/db/db/MSDOS/PDC_Prolog.4.sg +15 -0
  2162. die/db/db/MSDOS/PGMPAK.2.sg +17 -0
  2163. die/db/db/MSDOS/PGPROT.1.sg +12 -0
  2164. die/db/db/MSDOS/PKEXE.2.sg +13 -0
  2165. die/db/db/MSDOS/PKLITE.2.sg +59 -0
  2166. die/db/db/MSDOS/PKSFX.1.sg +15 -0
  2167. die/db/db/MSDOS/PKTINY.2.sg +14 -0
  2168. die/db/db/MSDOS/PKZIP-SFX.1.sg +13 -0
  2169. die/db/db/MSDOS/PKZIP_mini-sfx.1.sg +17 -0
  2170. die/db/db/MSDOS/PK_sig.1.sg +12 -0
  2171. die/db/db/MSDOS/PMODE.0a.sg +17 -0
  2172. die/db/db/MSDOS/PMWLite.2.sg +14 -0
  2173. die/db/db/MSDOS/PRO-PACK.2.sg +16 -0
  2174. die/db/db/MSDOS/PRO32.0a.sg +14 -0
  2175. die/db/db/MSDOS/PROPACK_SFX.1.sg +13 -0
  2176. die/db/db/MSDOS/PROTECT.2.sg +101 -0
  2177. die/db/db/MSDOS/PVAC.2.sg +14 -0
  2178. die/db/db/MSDOS/Pacific_C.4.sg +24 -0
  2179. die/db/db/MSDOS/Pack.2.sg +14 -0
  2180. die/db/db/MSDOS/Packers.2.sg +17 -0
  2181. die/db/db/MSDOS/Palladix.1.sg +12 -0
  2182. die/db/db/MSDOS/Panda_immunizer.1.sg +14 -0
  2183. die/db/db/MSDOS/Pascal_MT+86.4.sg +20 -0
  2184. die/db/db/MSDOS/PassEXE.2.sg +12 -0
  2185. die/db/db/MSDOS/Patchers.1.sg +18 -0
  2186. die/db/db/MSDOS/Phar_Lap.0a.sg +31 -0
  2187. die/db/db/MSDOS/Pksmart.2.sg +14 -0
  2188. die/db/db/MSDOS/Power_C.4.sg +16 -0
  2189. die/db/db/MSDOS/ProtEXE.2.sg +58 -0
  2190. die/db/db/MSDOS/Protector.2.sg +13 -0
  2191. die/db/db/MSDOS/Quadru-Lock.2.sg +12 -0
  2192. die/db/db/MSDOS/R-Crypt.2.sg +13 -0
  2193. die/db/db/MSDOS/RAR.6.sg +8 -0
  2194. die/db/db/MSDOS/REC.2.sg +22 -0
  2195. die/db/db/MSDOS/REC_small.1.sg +26 -0
  2196. die/db/db/MSDOS/REC_small_AV.1.sg +18 -0
  2197. die/db/db/MSDOS/RELETTER.1.sg +14 -0
  2198. die/db/db/MSDOS/RERP.2.sg +13 -0
  2199. die/db/db/MSDOS/RHC.2.sg +14 -0
  2200. die/db/db/MSDOS/RJcrush.2.sg +12 -0
  2201. die/db/db/MSDOS/RLE_com-packer.2.sg +13 -0
  2202. die/db/db/MSDOS/RM_FORTRAN.4.sg +14 -0
  2203. die/db/db/MSDOS/ROSETINY.2.sg +15 -0
  2204. die/db/db/MSDOS/RSX.0a.sg +12 -0
  2205. die/db/db/MSDOS/RTLink_VM_Manager.0a.sg +12 -0
  2206. die/db/db/MSDOS/RTPatch_SFX.1.sg +13 -0
  2207. die/db/db/MSDOS/Realia_Cobol.4.sg +16 -0
  2208. die/db/db/MSDOS/Realia_SPITBOL.4.sg +14 -0
  2209. die/db/db/MSDOS/Relpack.2.sg +14 -0
  2210. die/db/db/MSDOS/SCRNCH.2.sg +14 -0
  2211. die/db/db/MSDOS/SEA-AXE.2.sg +15 -0
  2212. die/db/db/MSDOS/SFX.1.sg +14 -0
  2213. die/db/db/MSDOS/SHOW_IT.1.sg +14 -0
  2214. die/db/db/MSDOS/SP-FORTH.4.sg +18 -0
  2215. die/db/db/MSDOS/Scramb.2.sg +13 -0
  2216. die/db/db/MSDOS/Secure.2.sg +37 -0
  2217. die/db/db/MSDOS/SelfChk.2.sg +14 -0
  2218. die/db/db/MSDOS/Self_UnStuffer.2.sg +16 -0
  2219. die/db/db/MSDOS/Shrink.2.sg +15 -0
  2220. die/db/db/MSDOS/Shrinker.2.sg +14 -0
  2221. die/db/db/MSDOS/SimplyWare.1.sg +22 -0
  2222. die/db/db/MSDOS/Small_C.4.sg +20 -0
  2223. die/db/db/MSDOS/SnoopStop.2.sg +12 -0
  2224. die/db/db/MSDOS/StonyBrook_Pascal.4.sg +26 -0
  2225. die/db/db/MSDOS/Stub-386.0a.sg +13 -0
  2226. die/db/db/MSDOS/SuckStop.2.sg +27 -0
  2227. die/db/db/MSDOS/Sydex_SFX.1.sg +19 -0
  2228. die/db/db/MSDOS/Symantec_BASIC.4.sg +16 -0
  2229. die/db/db/MSDOS/TCEC.2.sg +18 -0
  2230. die/db/db/MSDOS/TMTSTUB.0a.sg +14 -0
  2231. die/db/db/MSDOS/TSCRUNCH.2.sg +13 -0
  2232. die/db/db/MSDOS/TTW.1.sg +17 -0
  2233. die/db/db/MSDOS/TUCCRYP.2.sg +14 -0
  2234. die/db/db/MSDOS/TXT2COM.1.sg +18 -0
  2235. die/db/db/MSDOS/TXTmaker.1.sg +14 -0
  2236. die/db/db/MSDOS/Tenth_Planet.2.sg +13 -0
  2237. die/db/db/MSDOS/TinyProg.2.sg +27 -0
  2238. die/db/db/MSDOS/Tinyprot.2.sg +16 -0
  2239. die/db/db/MSDOS/Topspeed_C.4.sg +20 -0
  2240. die/db/db/MSDOS/Topspeed_Modula.4.sg +42 -0
  2241. die/db/db/MSDOS/TraceLock.2.sg +13 -0
  2242. die/db/db/MSDOS/Trap.2.sg +50 -0
  2243. die/db/db/MSDOS/TurboChainer.1.sg +13 -0
  2244. die/db/db/MSDOS/Turbo_Basic.4.sg +18 -0
  2245. die/db/db/MSDOS/Turbo_Prolog.4.sg +16 -0
  2246. die/db/db/MSDOS/Txt2Exe.1.sg +14 -0
  2247. die/db/db/MSDOS/UCEXE.2.sg +22 -0
  2248. die/db/db/MSDOS/UPX.2.sg +46 -0
  2249. die/db/db/MSDOS/UR_FORTH.4.sg +14 -0
  2250. die/db/db/MSDOS/Un2pack.2.sg +14 -0
  2251. die/db/db/MSDOS/UnPackStop.2.sg +33 -0
  2252. die/db/db/MSDOS/UniVac.1.sg +14 -0
  2253. die/db/db/MSDOS/Unknown_cryptors.2.sg +54 -0
  2254. die/db/db/MSDOS/Upper_Deck_Forth.4.sg +14 -0
  2255. die/db/db/MSDOS/V-Load.1.sg +13 -0
  2256. die/db/db/MSDOS/Visual_Cobol.4.sg +16 -0
  2257. die/db/db/MSDOS/WATCOM.4.sg +59 -0
  2258. die/db/db/MSDOS/WDOSX.0a.sg +14 -0
  2259. die/db/db/MSDOS/WDOSX32.0a.sg +12 -0
  2260. die/db/db/MSDOS/WPFORTH.4.sg +14 -0
  2261. die/db/db/MSDOS/WWPACK.2.sg +89 -0
  2262. die/db/db/MSDOS/WWPACK_mutator.2.sg +53 -0
  2263. die/db/db/MSDOS/Whitesmiths_C.4.sg +21 -0
  2264. die/db/db/MSDOS/Window_book.1.sg +21 -0
  2265. die/db/db/MSDOS/Wizardy_protection.1.sg +12 -0
  2266. die/db/db/MSDOS/WordPerfect_EXEPack.2.sg +12 -0
  2267. die/db/db/MSDOS/XDOC.2.sg +13 -0
  2268. die/db/db/MSDOS/XMLOD.0a.sg +16 -0
  2269. die/db/db/MSDOS/XPACK.2.sg +37 -0
  2270. die/db/db/MSDOS/Xtender.0a.sg +14 -0
  2271. die/db/db/MSDOS/ZIPSCRUB.2.sg +14 -0
  2272. die/db/db/MSDOS/ZOO.1.sg +14 -0
  2273. die/db/db/MSDOS/Zbikowski_C.4.sg +19 -0
  2274. die/db/db/MSDOS/Zip.6.sg +8 -0
  2275. die/db/db/MSDOS/Zortech(Symantec)_C.4.sg +56 -0
  2276. die/db/db/MSDOS/Zurenava_DOS_Extender.0a.sg +13 -0
  2277. die/db/db/MSDOS/_MSDOS.0.sg +15 -0
  2278. die/db/db/MSDOS/_init +52 -0
  2279. die/db/db/MSDOS/aPACK.2.sg +60 -0
  2280. die/db/db/MSDOS/aPatch.2.sg +13 -0
  2281. die/db/db/MSDOS/anti-tracing_add-on.1.sg +12 -0
  2282. die/db/db/MSDOS/com2exe.2.sg +21 -0
  2283. die/db/db/MSDOS/cramble.2.sg +12 -0
  2284. die/db/db/MSDOS/deep-CRyPTer.2.sg +12 -0
  2285. die/db/db/MSDOS/djgpp.4.sg +16 -0
  2286. die/db/db/MSDOS/dos_extender.0a.sg +16 -0
  2287. die/db/db/MSDOS/dos_extender1.0a.sg +13 -0
  2288. die/db/db/MSDOS/dos_extender2.0a.sg +16 -0
  2289. die/db/db/MSDOS/iLUCRYPT.2.sg +18 -0
  2290. die/db/db/MSDOS/immunizer.1.sg +13 -0
  2291. die/db/db/MSDOS/mbp_SHRINK.2.sg +13 -0
  2292. die/db/db/MSDOS/muLISP-87.4.sg +20 -0
  2293. die/db/db/MSDOS/nbuild.2.sg +12 -0
  2294. die/db/db/MSDOS/overlays.6.sg +73 -0
  2295. die/db/db/MSDOS/self-displayer.1.sg +13 -0
  2296. die/db/db/MSDOS/virus.1.sg +13 -0
  2297. die/db/db/NE/ARC_SFX.1.sg +13 -0
  2298. die/db/db/NE/Borland_C++.1.sg +25 -0
  2299. die/db/db/NE/Borland_Pascal.1.sg +13 -0
  2300. die/db/db/NE/MS_RTL.0.sg +28 -0
  2301. die/db/db/NE/PKZIP-SFX.1.sg +13 -0
  2302. die/db/db/NE/Setup-Specialist.1.sg +16 -0
  2303. die/db/db/NE/Sydex_SFX.1.sg +13 -0
  2304. die/db/db/NE/Watcom_C.1.sg +35 -0
  2305. die/db/db/NE/_NE.0.sg +15 -0
  2306. die/db/db/NE/_init +2 -0
  2307. die/db/db/NPM/JavaScript.5.sg +11 -0
  2308. die/db/db/NPM/PackageName.1.sg +15 -0
  2309. die/db/db/NPM/TypeScript.5.sg +11 -0
  2310. die/db/db/NPM/_NPM.0.sg +16 -0
  2311. die/db/db/NPM/_init +2 -0
  2312. die/db/db/PE/12Ghosts_Zip2.1.sg +16 -0
  2313. die/db/db/PE/32Lite.2.sg +13 -0
  2314. die/db/db/PE/7z.1.sg +43 -0
  2315. die/db/db/PE/7z.4.sg +14 -0
  2316. die/db/db/PE/7z.6.sg +21 -0
  2317. die/db/db/PE/ACCAStore.1.sg +14 -0
  2318. die/db/db/PE/ACE.6.sg +10 -0
  2319. die/db/db/PE/ACProtect.2.sg +30 -0
  2320. die/db/db/PE/ADS_Self_Extractor.1.sg +14 -0
  2321. die/db/db/PE/AHTeam_EP_Protector.2.sg +71 -0
  2322. die/db/db/PE/AHpacker.2.sg +13 -0
  2323. die/db/db/PE/AMD_FSR.4.sg +23 -0
  2324. die/db/db/PE/ANDpakk.2.sg +21 -0
  2325. die/db/db/PE/AOLSetup.1.sg +15 -0
  2326. die/db/db/PE/ARJSFX.1.sg +44 -0
  2327. die/db/db/PE/ARM_Protector.2.sg +21 -0
  2328. die/db/db/PE/ARQ.1.sg +16 -0
  2329. die/db/db/PE/ASDPack.2.sg +12 -0
  2330. die/db/db/PE/ASM_Guard.2.sg +27 -0
  2331. die/db/db/PE/ASPR_Stripper.2.sg +12 -0
  2332. die/db/db/PE/ASPack.2.sg +95 -0
  2333. die/db/db/PE/ASProtect.2.sg +56 -0
  2334. die/db/db/PE/AT4RE_Protector.2.sg +13 -0
  2335. die/db/db/PE/AZProtect_0001.2.sg +11 -0
  2336. die/db/db/PE/Aase_Crypter.2.sg +12 -0
  2337. die/db/db/PE/Abbyy_Lingvo.1.sg +15 -0
  2338. die/db/db/PE/Acronis_installer.1.sg +30 -0
  2339. die/db/db/PE/ActiveMark.2.sg +14 -0
  2340. die/db/db/PE/Active_Delivery.1.sg +16 -0
  2341. die/db/db/PE/Actual_Installer.1.sg +16 -0
  2342. die/db/db/PE/Adobe_FlashPlayer_downloader.1.sg +17 -0
  2343. die/db/db/PE/Adobe_installers.1.sg +32 -0
  2344. die/db/db/PE/Advanced_BAT_to_EXE_converter.2.sg +13 -0
  2345. die/db/db/PE/Advanced_installer.1.sg +30 -0
  2346. die/db/db/PE/Adveractive.1.sg +14 -0
  2347. die/db/db/PE/Aeco_installer.1.sg +13 -0
  2348. die/db/db/PE/Agile.2.sg +11 -0
  2349. die/db/db/PE/Alchemy_Mindworks_installer.1.sg +19 -0
  2350. die/db/db/PE/Alex_Protector.2.sg +15 -0
  2351. die/db/db/PE/Alienyze.1.sg +14 -0
  2352. die/db/db/PE/Amber.2.sg +17 -0
  2353. die/db/db/PE/Anskya_Binder.2.sg +12 -0
  2354. die/db/db/PE/Anskya_NTPacker_Generator.2.sg +11 -0
  2355. die/db/db/PE/AntiDote.2.sg +33 -0
  2356. die/db/db/PE/Anticrack_Software_Protector.2.sg +15 -0
  2357. die/db/db/PE/App_Encryptor.2.sg +13 -0
  2358. die/db/db/PE/ArmDot.2.sg +17 -0
  2359. die/db/db/PE/Armadillo.2.sg +48 -0
  2360. die/db/db/PE/Arxan.2.sg +69 -0
  2361. die/db/db/PE/AssemblyInvoke.2.sg +11 -0
  2362. die/db/db/PE/Astrum.1.sg +21 -0
  2363. die/db/db/PE/AtomPePacker.2.sg +16 -0
  2364. die/db/db/PE/AutoHotKey.3.sg +20 -0
  2365. die/db/db/PE/AutoIt.3.sg +21 -0
  2366. die/db/db/PE/AutoPlay_Media_Studio.1.sg +26 -0
  2367. die/db/db/PE/Autodesk_Self-Extract.1.sg +14 -0
  2368. die/db/db/PE/AutorunProEnterprise.1.sg +16 -0
  2369. die/db/db/PE/AutorunProEnterpriseII.1.sg +16 -0
  2370. die/db/db/PE/AverCryptor.2.sg +22 -0
  2371. die/db/db/PE/BJFnt.2.sg +18 -0
  2372. die/db/db/PE/Babel_.NET.2.sg +23 -0
  2373. die/db/db/PE/BatToExe.1.sg +15 -0
  2374. die/db/db/PE/BatToExeConverter.2.sg +18 -0
  2375. die/db/db/PE/BatchToApp.2.sg +15 -0
  2376. die/db/db/PE/BattlEye.5.sg +18 -0
  2377. die/db/db/PE/BattleshipCrypter.2.sg +12 -0
  2378. die/db/db/PE/BeRo.2.sg +37 -0
  2379. die/db/db/PE/BeRo_Tiny_Pascal.4.sg +13 -0
  2380. die/db/db/PE/Berio.2.sg +15 -0
  2381. die/db/db/PE/BitRock_Installer.1.sg +22 -0
  2382. die/db/db/PE/BitShape_PE_Crypt.2.sg +15 -0
  2383. die/db/db/PE/BlindSpot.2.sg +12 -0
  2384. die/db/db/PE/Blizzard_PrePatch.1.sg +15 -0
  2385. die/db/db/PE/Borland_C++.4.sg +37 -0
  2386. die/db/db/PE/Break_Into_Pattern.2.sg +12 -0
  2387. die/db/db/PE/BulletProofSoft_installer.1.sg +14 -0
  2388. die/db/db/PE/ByfronTech.2.sg +67 -0
  2389. die/db/db/PE/ByteGuard.2.sg +17 -0
  2390. die/db/db/PE/Bytessence_Install_Maker.1.sg +19 -0
  2391. die/db/db/PE/CExe.2.sg +13 -0
  2392. die/db/db/PE/CICompress.2.sg +12 -0
  2393. die/db/db/PE/CSDD_installer.1.sg +18 -0
  2394. die/db/db/PE/CUDA-Driver.4.sg +14 -0
  2395. die/db/db/PE/CZ_installer.1.sg +14 -0
  2396. die/db/db/PE/Cab.1.sg +60 -0
  2397. die/db/db/PE/Cab.6.sg +33 -0
  2398. die/db/db/PE/Calibre_installer.1.sg +19 -0
  2399. die/db/db/PE/Cameyo.2.sg +12 -0
  2400. die/db/db/PE/Celesty_File_Binder.1.sg +18 -0
  2401. die/db/db/PE/ChainskiCrypter.1.sg +11 -0
  2402. die/db/db/PE/Chaos_Software_installer.1.sg +14 -0
  2403. die/db/db/PE/Chilkat_ZIP_Self-Extractor.1.sg +14 -0
  2404. die/db/db/PE/Chromium_Embedded_Framework.4.sg +14 -0
  2405. die/db/db/PE/Chromium_WebView.4.sg +14 -0
  2406. die/db/db/PE/CipherWall.1.sg +20 -0
  2407. die/db/db/PE/CliSecure.2.sg +21 -0
  2408. die/db/db/PE/ClickTeam.1.sg +17 -0
  2409. die/db/db/PE/CodeCrypt.2.sg +21 -0
  2410. die/db/db/PE/CodeFusion_Wizard.1.sg +14 -0
  2411. die/db/db/PE/CodeSafe.2.sg +12 -0
  2412. die/db/db/PE/CodeVeil.2.sg +20 -0
  2413. die/db/db/PE/Code_Virtualizer.2.sg +12 -0
  2414. die/db/db/PE/Codegear_Installer.1.sg +14 -0
  2415. die/db/db/PE/Codewall.2.sg +18 -0
  2416. die/db/db/PE/CoffeeCup_SFX.2.sg +14 -0
  2417. die/db/db/PE/Confuser.2.sg +39 -0
  2418. die/db/db/PE/CopyMinder.2.sg +11 -0
  2419. die/db/db/PE/Costura.Fody.4.sg +11 -0
  2420. die/db/db/PE/CreateInstall.1.sg +22 -0
  2421. die/db/db/PE/Crinkler.2.sg +15 -0
  2422. die/db/db/PE/CronosCrypter.1.sg +12 -0
  2423. die/db/db/PE/Crunch.2.sg +25 -0
  2424. die/db/db/PE/CrypKey.2.sg +20 -0
  2425. die/db/db/PE/CrypKey_Installer.1.sg +14 -0
  2426. die/db/db/PE/CrypToCrack_Pe_Protector.2.sg +15 -0
  2427. die/db/db/PE/Cryptect.1.sg +13 -0
  2428. die/db/db/PE/Cryptic.2.sg +12 -0
  2429. die/db/db/PE/CryptoObfuscator.2.sg +17 -0
  2430. die/db/db/PE/Cxfreeze.1.sg +23 -0
  2431. die/db/db/PE/Cygwin32.4.sg +11 -0
  2432. die/db/db/PE/DBPE.2.sg +25 -0
  2433. die/db/db/PE/DECFortran.4.sg +23 -0
  2434. die/db/db/PE/DMD.4.sg +44 -0
  2435. die/db/db/PE/DNGuard.2.sg +33 -0
  2436. die/db/db/PE/DS.EZ-Logic.sg +12 -0
  2437. die/db/db/PE/DS.Eutron_SmartKey_dongle.5.sg +29 -0
  2438. die/db/db/PE/DS.HASP_dongle.5.sg +22 -0
  2439. die/db/db/PE/DS.Hardlock_dongle.5.sg +24 -0
  2440. die/db/db/PE/DS.MARX_Crypto-Box_dongle.5.sg +30 -0
  2441. die/db/db/PE/DS.Matrix_Hardware_Lock_dongle.5.sg +19 -0
  2442. die/db/db/PE/DS.NetHASP_dongle.5.sg +19 -0
  2443. die/db/db/PE/DS.Novex_dongle.4.sg +13 -0
  2444. die/db/db/PE/DS.RLM.4.sg +25 -0
  2445. die/db/db/PE/DS.SenseLock_dongle.5.sg +20 -0
  2446. die/db/db/PE/DS.Sentinel_SuperPro.2.sg +21 -0
  2447. die/db/db/PE/DS.Sentinel_SuperPro_dongle.5.sg +20 -0
  2448. die/db/db/PE/DS.Sentinel_dongle.5.sg +28 -0
  2449. die/db/db/PE/DS.SoftLok_dongle.5.sg +17 -0
  2450. die/db/db/PE/DS.Unikey_dongle.5.sg +30 -0
  2451. die/db/db/PE/DS.WIBU_Key_dongle.5.sg +20 -0
  2452. die/db/db/PE/DS.Wizzkey_dongle.5.sg +13 -0
  2453. die/db/db/PE/DYAMAR.2.sg +12 -0
  2454. die/db/db/PE/DZA_Patcher.2.sg +15 -0
  2455. die/db/db/PE/Daemon_Protect.2.sg +13 -0
  2456. die/db/db/PE/DalKrypt.2.sg +12 -0
  2457. die/db/db/PE/DataAnubis.1.sg +11 -0
  2458. die/db/db/PE/DeepSea.2.sg +18 -0
  2459. die/db/db/PE/DelZip_SFX.2.sg +14 -0
  2460. die/db/db/PE/Delphi.4.sg +270 -0
  2461. die/db/db/PE/Denuvo.2.sg +97 -0
  2462. die/db/db/PE/DeployMaster.1.sg +15 -0
  2463. die/db/db/PE/Dimd_SFX.1.sg +15 -0
  2464. die/db/db/PE/Ding_Boys_PE-lock_Phantasm.2.sg +18 -0
  2465. die/db/db/PE/Direct2D.4.sg +14 -0
  2466. die/db/db/PE/Direct3D.4.sg +38 -0
  2467. die/db/db/PE/DirectX.4.sg +14 -0
  2468. die/db/db/PE/Dolphin_VM.1.sg +18 -0
  2469. die/db/db/PE/DotFix_Nice_Protect.2.sg +23 -0
  2470. die/db/db/PE/Dotfuscator.2.sg +11 -0
  2471. die/db/db/PE/Duals_eXe_Encryptor.2.sg +19 -0
  2472. die/db/db/PE/DxPack.2.sg +22 -0
  2473. die/db/db/PE/ENIGMA.2.sg +115 -0
  2474. die/db/db/PE/EXE32Pack.2.sg +12 -0
  2475. die/db/db/PE/EXECryptor.2.sg +99 -0
  2476. die/db/db/PE/EXEFog.2.sg +22 -0
  2477. die/db/db/PE/EXE_Password_Protector.2.sg +12 -0
  2478. die/db/db/PE/Eazfuscator.2.sg +16 -0
  2479. die/db/db/PE/ElecKey.2.sg +33 -0
  2480. die/db/db/PE/ElectronApp.3.sg +22 -0
  2481. die/db/db/PE/Enigma_Virtual_Box.2.sg +13 -0
  2482. die/db/db/PE/Envoy_Packager.1.sg +15 -0
  2483. die/db/db/PE/Escargot.2.sg +15 -0
  2484. die/db/db/PE/Eschalon_installer.1.sg +15 -0
  2485. die/db/db/PE/ExE_Pack.2.sg +23 -0
  2486. die/db/db/PE/Excelsior_Installer.1.sg +14 -0
  2487. die/db/db/PE/Excelsior_JET.4.sg +36 -0
  2488. die/db/db/PE/ExeSplitter.1.sg +24 -0
  2489. die/db/db/PE/ExeStealth.2.sg +40 -0
  2490. die/db/db/PE/Exe_Guarder.2.sg +12 -0
  2491. die/db/db/PE/Exe_Locker.2.sg +12 -0
  2492. die/db/db/PE/Exe_Shield.2.sg +28 -0
  2493. die/db/db/PE/FASM.4.sg +22 -0
  2494. die/db/db/PE/FDM_Installer.1.sg +18 -0
  2495. die/db/db/PE/FISH_.NET.2.sg +17 -0
  2496. die/db/db/PE/FSG.2.sg +136 -0
  2497. die/db/db/PE/FileSplit_Self-Merger.2.sg +13 -0
  2498. die/db/db/PE/FishPE_Shield.2.sg +21 -0
  2499. die/db/db/PE/Fish_PE.2.sg +22 -0
  2500. die/db/db/PE/FixupPak.2.sg +12 -0
  2501. die/db/db/PE/Fox_Pro.3.sg +25 -0
  2502. die/db/db/PE/FreeBasic.6.sg +28 -0
  2503. die/db/db/PE/FreeJoiner.1.sg +45 -0
  2504. die/db/db/PE/Free_Pascal.4.sg +54 -0
  2505. die/db/db/PE/Fusion.2.sg +12 -0
  2506. die/db/db/PE/G!X_Protector.2.sg +12 -0
  2507. die/db/db/PE/GPInstall.1.sg +19 -0
  2508. die/db/db/PE/GSplit.1.sg +20 -0
  2509. die/db/db/PE/GZip.1.sg +20 -0
  2510. die/db/db/PE/GameGuard.2.sg +12 -0
  2511. die/db/db/PE/Gentee_Installer.1.sg +35 -0
  2512. die/db/db/PE/Ghost_Installer.1.sg +16 -0
  2513. die/db/db/PE/GkSetup.1.sg +18 -0
  2514. die/db/db/PE/Go.4.sg +61 -0
  2515. die/db/db/PE/Goats_PE_Mutilator.2.sg +12 -0
  2516. die/db/db/PE/GoldSrc.3.sg +20 -0
  2517. die/db/db/PE/Goliath.2.sg +15 -0
  2518. die/db/db/PE/Gremlin_patcher.1.sg +21 -0
  2519. die/db/db/PE/HASP.2.sg +22 -0
  2520. die/db/db/PE/HASP_HL_Protection.2.sg +34 -0
  2521. die/db/db/PE/HTML_executable.1.sg +20 -0
  2522. die/db/db/PE/HackShield.2.sg +17 -0
  2523. die/db/db/PE/Hide&Protect.2.sg +12 -0
  2524. die/db/db/PE/HidePE.2.sg +255 -0
  2525. die/db/db/PE/Huan.1.sg +12 -0
  2526. die/db/db/PE/HyperTech_Crackproof.2.sg +13 -0
  2527. die/db/db/PE/I-D_Media_installer.1.sg +15 -0
  2528. die/db/db/PE/IDM_Installer.1.sg +15 -0
  2529. die/db/db/PE/ID_Application_Protector(NoNamePacker).2.sg +12 -0
  2530. die/db/db/PE/ILProtector.2.sg +13 -0
  2531. die/db/db/PE/ILUCRYPT.2.sg +15 -0
  2532. die/db/db/PE/IMPostor_Pack.2.sg +12 -0
  2533. die/db/db/PE/INCrypter.2.sg +12 -0
  2534. die/db/db/PE/INFTool.1.sg +15 -0
  2535. die/db/db/PE/INTENIUM.1.sg +13 -0
  2536. die/db/db/PE/IProtect.2.sg +17 -0
  2537. die/db/db/PE/Inno_Setup_Module.1.sg +97 -0
  2538. die/db/db/PE/Inquartos_Obfuscator.2.sg +12 -0
  2539. die/db/db/PE/Instalit.1.sg +25 -0
  2540. die/db/db/PE/Install4j_installer.1.sg +16 -0
  2541. die/db/db/PE/InstallAnywhere.1.sg +36 -0
  2542. die/db/db/PE/InstallShield.1.sg +90 -0
  2543. die/db/db/PE/InstallUs.1.sg +16 -0
  2544. die/db/db/PE/Install_Factory.1.sg +14 -0
  2545. die/db/db/PE/Intel_C.4.sg +14 -0
  2546. die/db/db/PE/Intel_IPP.sg +15 -0
  2547. die/db/db/PE/IntelliProtector.2.sg +17 -0
  2548. die/db/db/PE/InxObfuscator.2.sg +14 -0
  2549. die/db/db/PE/JDPack.2.sg +15 -0
  2550. die/db/db/PE/JScript.4.sg +15 -0
  2551. die/db/db/PE/Jar2exe.1.sg +26 -0
  2552. die/db/db/PE/KBys_Packer.2.sg +21 -0
  2553. die/db/db/PE/KGCrypt.2.sg +11 -0
  2554. die/db/db/PE/KRZIP_SFX.2.sg +15 -0
  2555. die/db/db/PE/KoiVM.2.sg +20 -0
  2556. die/db/db/PE/Kryptonit.2.sg +17 -0
  2557. die/db/db/PE/LARP.2.sg +13 -0
  2558. die/db/db/PE/LCC-Win32.4.sg +15 -0
  2559. die/db/db/PE/LCL.5.sg +17 -0
  2560. die/db/db/PE/LDK.2.sg +21 -0
  2561. die/db/db/PE/LDK_.NET.2.sg +13 -0
  2562. die/db/db/PE/Lahey_Fortran_90.4.sg +20 -0
  2563. die/db/db/PE/LameCrypt.2.sg +12 -0
  2564. die/db/db/PE/Laserlok.2.sg +12 -0
  2565. die/db/db/PE/LimeCrypter.2.sg +56 -0
  2566. die/db/db/PE/Lua_Runtime.4.sg +17 -0
  2567. die/db/db/PE/LucasArts_Update_Installer.1.sg +14 -0
  2568. die/db/db/PE/Lyme_SFX.1.sg +15 -0
  2569. die/db/db/PE/MEW.2.sg +26 -0
  2570. die/db/db/PE/MP-ZipTool.1.sg +14 -0
  2571. die/db/db/PE/MPQ.1.sg +15 -0
  2572. die/db/db/PE/MPRESS.2.sg +52 -0
  2573. die/db/db/PE/MSLRH.2.sg +117 -0
  2574. die/db/db/PE/MZ-Crypt.2.sg +12 -0
  2575. die/db/db/PE/MZ0oPE.2.sg +12 -0
  2576. die/db/db/PE/MaskPE.2.sg +15 -0
  2577. die/db/db/PE/Maxtocode.2.sg +21 -0
  2578. die/db/db/PE/Metrowerks_CodeWarrior.2.sg +26 -0
  2579. die/db/db/PE/MicroJoiner.1.sg +21 -0
  2580. die/db/db/PE/Microsoft.6.sg +1735 -0
  2581. die/db/db/PE/Microsoft_C_Runtime.4.sg +16 -0
  2582. die/db/db/PE/Microsoft_Class_Installer.1.sg +22 -0
  2583. die/db/db/PE/Microsoft_Compound-based_installer.1.sg +14 -0
  2584. die/db/db/PE/Microsoft_Edge_WebView.4.sg +14 -0
  2585. die/db/db/PE/Microsoft_NET_Runtime.4.sg +15 -0
  2586. die/db/db/PE/Microsoft_Warbird.2.sg +15 -0
  2587. die/db/db/PE/Microsoft_dotNET_installer.1.sg +16 -0
  2588. die/db/db/PE/Miktex_Installer.1.sg +15 -0
  2589. die/db/db/PE/MinGW.4.sg +78 -0
  2590. die/db/db/PE/Minke.2.sg +12 -0
  2591. die/db/db/PE/Mioplanet_installer.1.sg +14 -0
  2592. die/db/db/PE/MoleBox.2.sg +41 -0
  2593. die/db/db/PE/Morphnah.2.sg +23 -0
  2594. die/db/db/PE/Multimedia_Fusion_Installer.1.sg +14 -0
  2595. die/db/db/PE/Mystic_Compressor.2.sg +15 -0
  2596. die/db/db/PE/N-Joiner.1.sg +12 -0
  2597. die/db/db/PE/N-Joy.2.sg +25 -0
  2598. die/db/db/PE/NETZ.2.sg +11 -0
  2599. die/db/db/PE/NET_Spider.2.sg +14 -0
  2600. die/db/db/PE/NOS_Installer.1.sg +22 -0
  2601. die/db/db/PE/NOS_Packer.2.sg +13 -0
  2602. die/db/db/PE/NTShell.2.sg +13 -0
  2603. die/db/db/PE/NTkrnl_Protector.2.sg +37 -0
  2604. die/db/db/PE/NakedPacker.2.sg +13 -0
  2605. die/db/db/PE/NanoZip.1.sg +16 -0
  2606. die/db/db/PE/NativeCryptor_by_DosX.2.sg +13 -0
  2607. die/db/db/PE/Native_UD_Packer.2.sg +12 -0
  2608. die/db/db/PE/NecroVM.Virt.2.sg +46 -0
  2609. die/db/db/PE/NeoLite.2.sg +39 -0
  2610. die/db/db/PE/NetReactor.2.sg +103 -0
  2611. die/db/db/PE/NetShieldProtector.2.sg +55 -0
  2612. die/db/db/PE/Newtonsoft.Json.4.sg +14 -0
  2613. die/db/db/PE/Nim.4.sg +18 -0
  2614. die/db/db/PE/Ningishzida.2.sg +12 -0
  2615. die/db/db/PE/NodeJS_Nexe.sg +16 -0
  2616. die/db/db/PE/NodeJS_Pkg.sg +16 -0
  2617. die/db/db/PE/NoobyProtect.2.sg +12 -0
  2618. die/db/db/PE/North_Star_PE_Shrinker.2.sg +12 -0
  2619. die/db/db/PE/NsPacK.2.sg +61 -0
  2620. die/db/db/PE/Nuitka.1.sg +26 -0
  2621. die/db/db/PE/Nullsoft_Scriptable_Install_System.1.sg +96 -0
  2622. die/db/db/PE/Nvidia_DLSS.4.sg +22 -0
  2623. die/db/db/PE/Nvidia_PhysX.4.sg +15 -0
  2624. die/db/db/PE/O'Setup95.1.sg +15 -0
  2625. die/db/db/PE/ORiEN.2.sg +19 -0
  2626. die/db/db/PE/Obfuscar.2.sg +14 -0
  2627. die/db/db/PE/Obfuscator_.NET_2009.2.sg +16 -0
  2628. die/db/db/PE/Obsidium.2.sg +272 -0
  2629. die/db/db/PE/OneVM.2.sg +23 -0
  2630. die/db/db/PE/OpenAL.4.sg +14 -0
  2631. die/db/db/PE/OpenCL.4.sg +14 -0
  2632. die/db/db/PE/OpenCV.4.sg +18 -0
  2633. die/db/db/PE/OpenGL.4.sg +14 -0
  2634. die/db/db/PE/OpenSSL.4.sg +14 -0
  2635. die/db/db/PE/OpusAudio.4.sg +15 -0
  2636. die/db/db/PE/Oreans_CodeVirtualizer.2.sg +14 -0
  2637. die/db/db/PE/OxiJoiner.sg +15 -0
  2638. die/db/db/PE/PACE.2.sg +17 -0
  2639. die/db/db/PE/PACKWIN.2.sg +12 -0
  2640. die/db/db/PE/PCInstall.1.sg +14 -0
  2641. die/db/db/PE/PCShrink.2.sg +15 -0
  2642. die/db/db/PE/PC_Guard.2.sg +20 -0
  2643. die/db/db/PE/PE-Admin.2.sg +12 -0
  2644. die/db/db/PE/PE-Armor.2.sg +21 -0
  2645. die/db/db/PE/PE-Shield.2.sg +16 -0
  2646. die/db/db/PE/PEBundle.2.sg +25 -0
  2647. die/db/db/PE/PECRYPT32.2.sg +22 -0
  2648. die/db/db/PE/PECompact.2.sg +167 -0
  2649. die/db/db/PE/PELock.2.sg +47 -0
  2650. die/db/db/PE/PESpin.2.sg +56 -0
  2651. die/db/db/PE/PETetris.sg +11 -0
  2652. die/db/db/PE/PEUnion.2.sg +122 -0
  2653. die/db/db/PE/PE_Diminisher.2.sg +16 -0
  2654. die/db/db/PE/PE_Encrypt.2.sg +12 -0
  2655. die/db/db/PE/PE_Intro.2.sg +12 -0
  2656. die/db/db/PE/PE_Lock_NT.2.sg +21 -0
  2657. die/db/db/PE/PE_Password.2.sg +12 -0
  2658. die/db/db/PE/PE_Protect.2.sg +15 -0
  2659. die/db/db/PE/PEncrypt.2.sg +21 -0
  2660. die/db/db/PE/PEnguinCrypt.2.sg +12 -0
  2661. die/db/db/PE/PIMP.1.sg +14 -0
  2662. die/db/db/PE/PKLITE.2.sg +15 -0
  2663. die/db/db/PE/PKSFX.1.sg +14 -0
  2664. die/db/db/PE/PMaker.1.sg +13 -0
  2665. die/db/db/PE/PUNiSHER.2.sg +12 -0
  2666. die/db/db/PE/Pack_Master.2.sg +12 -0
  2667. die/db/db/PE/PackageForTheWeb.1.sg +15 -0
  2668. die/db/db/PE/Packanoid.2.sg +12 -0
  2669. die/db/db/PE/Packman.2.sg +18 -0
  2670. die/db/db/PE/Pantaray_QSetup.1.sg +29 -0
  2671. die/db/db/PE/Paquet.1.sg +16 -0
  2672. die/db/db/PE/Paquet_Builder.1.sg +15 -0
  2673. die/db/db/PE/Patch.1.sg +20 -0
  2674. die/db/db/PE/PePack.2.sg +16 -0
  2675. die/db/db/PE/PeX.2.sg +12 -0
  2676. die/db/db/PE/Pe_Ninja.2.sg +12 -0
  2677. die/db/db/PE/Pelles_C.4.sg +14 -0
  2678. die/db/db/PE/Perl.3.sg +93 -0
  2679. die/db/db/PE/PerlApp.1.sg +21 -0
  2680. die/db/db/PE/Petite.2.sg +56 -0
  2681. die/db/db/PE/Phoenix.2.sg +19 -0
  2682. die/db/db/PE/Photo_Compiler.2.sg +15 -0
  2683. die/db/db/PE/PowerBASIC.4.sg +14 -0
  2684. die/db/db/PE/Power_Screen_Recorder.1.sg +16 -0
  2685. die/db/db/PE/Private_EXE_Protector.2.sg +86 -0
  2686. die/db/db/PE/PureBasic.4.sg +55 -0
  2687. die/db/db/PE/PwdProtect.2.sg +11 -0
  2688. die/db/db/PE/Py2exe.1.sg +15 -0
  2689. die/db/db/PE/PyInstaller.2.sg +72 -0
  2690. die/db/db/PE/PyInstallerHider.1.sg +27 -0
  2691. die/db/db/PE/Python.3.sg +22 -0
  2692. die/db/db/PE/Qt.4.sg +33 -0
  2693. die/db/db/PE/Quantum.1.sg +17 -0
  2694. die/db/db/PE/QuestPowerGUI.2.sg +16 -0
  2695. die/db/db/PE/QuickBFC.2.sg +19 -0
  2696. die/db/db/PE/QuickPack_NT.2.sg +13 -0
  2697. die/db/db/PE/RADBasic.4.sg +17 -0
  2698. die/db/db/PE/RCryptor.2.sg +39 -0
  2699. die/db/db/PE/RDG_Tejon_Crypter.2.sg +12 -0
  2700. die/db/db/PE/RJoiner.1.sg +17 -0
  2701. die/db/db/PE/RLP.2.sg +12 -0
  2702. die/db/db/PE/RLPack.2.sg +47 -0
  2703. die/db/db/PE/RNsetup.1.sg +17 -0
  2704. die/db/db/PE/RPP.1.sg +14 -0
  2705. die/db/db/PE/RTPatch.1.sg +15 -0
  2706. die/db/db/PE/ReNET-pack.2.sg +11 -0
  2707. die/db/db/PE/RealBasic.4.sg +24 -0
  2708. die/db/db/PE/RobustObfuscator.2.sg +15 -0
  2709. die/db/db/PE/RosASM.4.sg +20 -0
  2710. die/db/db/PE/Rust.4.sg +34 -0
  2711. die/db/db/PE/SCE_installer.1.sg +18 -0
  2712. die/db/db/PE/SC_Obfuscator.2.sg +12 -0
  2713. die/db/db/PE/SC_Pack.2.sg +13 -0
  2714. die/db/db/PE/SDL.4.sg +21 -0
  2715. die/db/db/PE/SDProtector.2.sg +18 -0
  2716. die/db/db/PE/SFXRun.1.sg +14 -0
  2717. die/db/db/PE/SLVc0deProtector.2.sg +21 -0
  2718. die/db/db/PE/STATICSUP.1.sg +14 -0
  2719. die/db/db/PE/STUD.2.sg +12 -0
  2720. die/db/db/PE/SVK_Protector.2.sg +22 -0
  2721. die/db/db/PE/SZDD.1.sg +40 -0
  2722. die/db/db/PE/Safedisc.2.sg +13 -0
  2723. die/db/db/PE/Safenet_RMS.2.sg +12 -0
  2724. die/db/db/PE/Safengine_Shielden.2.sg +43 -0
  2725. die/db/db/PE/ScriptHookV.4.sg +14 -0
  2726. die/db/db/PE/SecuPack.2.sg +13 -0
  2727. die/db/db/PE/SecuROM.2.sg +22 -0
  2728. die/db/db/PE/Secure_Shade.2.sg +13 -0
  2729. die/db/db/PE/SerGreen_Appacker.2.sg +16 -0
  2730. die/db/db/PE/Setup-Specialist.1.sg +15 -0
  2731. die/db/db/PE/Setup_Factory.1.sg +42 -0
  2732. die/db/db/PE/SfxCA.1.sg +20 -0
  2733. die/db/db/PE/Shrink_Wrap.2.sg +12 -0
  2734. die/db/db/PE/Shrinker.2.sg +27 -0
  2735. die/db/db/PE/SimbiOZ.2.sg +19 -0
  2736. die/db/db/PE/SimplePackerByEronana.2.sg +14 -0
  2737. die/db/db/PE/Simple_Pack.2.sg +15 -0
  2738. die/db/db/PE/Sixxpack.2.sg +20 -0
  2739. die/db/db/PE/Skater.2.sg +16 -0
  2740. die/db/db/PE/Smart_Assembly.2.sg +36 -0
  2741. die/db/db/PE/Smart_Install_Maker.1.sg +17 -0
  2742. die/db/db/PE/SmokesCrypt.2.sg +12 -0
  2743. die/db/db/PE/SoftProtect.2.sg +13 -0
  2744. die/db/db/PE/SoftSentry.2.sg +16 -0
  2745. die/db/db/PE/Soft_Defender.2.sg +20 -0
  2746. die/db/db/PE/Softlocx.1.sg +13 -0
  2747. die/db/db/PE/Software_Compress.2.sg +15 -0
  2748. die/db/db/PE/Sony_Windows_Installer.1.sg +16 -0
  2749. die/db/db/PE/SpASM.4.sg +20 -0
  2750. die/db/db/PE/Special_EXE_Password_Protector.2.sg +12 -0
  2751. die/db/db/PE/SpicesNet.2.sg +34 -0
  2752. die/db/db/PE/Spoon_Installer.1.sg +23 -0
  2753. die/db/db/PE/Spoon_Studio.2.sg +16 -0
  2754. die/db/db/PE/Squeez_SFX.1.sg +15 -0
  2755. die/db/db/PE/Squirrel_installer.1.sg +16 -0
  2756. die/db/db/PE/Squishy.2.sg +11 -0
  2757. die/db/db/PE/StarForce.2.sg +58 -0
  2758. die/db/db/PE/Ste@lth_PE.2.sg +16 -0
  2759. die/db/db/PE/Steam.4.sg +14 -0
  2760. die/db/db/PE/Stones_PE_Encryptor.2.sg +22 -0
  2761. die/db/db/PE/Store_Installer.1.sg +13 -0
  2762. die/db/db/PE/SwiftView_installer.1.sg +15 -0
  2763. die/db/db/PE/Synactis_In-The-Box_Installer.1.sg +21 -0
  2764. die/db/db/PE/TPP_Pack.2.sg +12 -0
  2765. die/db/db/PE/Tages.2.sg +12 -0
  2766. die/db/db/PE/Tarma_Installer.1.sg +29 -0
  2767. die/db/db/PE/TheArk.2.sg +11 -0
  2768. die/db/db/PE/Themida.2.sg +89 -0
  2769. die/db/db/PE/Thinstall.2.sg +89 -0
  2770. die/db/db/PE/TrueCrypt-VeraCrypt_installer.1.sg +18 -0
  2771. die/db/db/PE/UFI_installer.1.sg +14 -0
  2772. die/db/db/PE/UG2002_Cruncher.2.sg +12 -0
  2773. die/db/db/PE/UPX-Patcher.6.sg +29 -0
  2774. die/db/db/PE/UPX.2.sg +174 -0
  2775. die/db/db/PE/UPXFreak.2.sg +12 -0
  2776. die/db/db/PE/UPX_Inliner.2.sg +12 -0
  2777. die/db/db/PE/UPX_Modifier.2.sg +12 -0
  2778. die/db/db/PE/UPX_Mutanter.2.sg +21 -0
  2779. die/db/db/PE/UPX_Protector.2.sg +12 -0
  2780. die/db/db/PE/UPX_lock.2.sg +12 -0
  2781. die/db/db/PE/UPX_scrambler.2.sg +20 -0
  2782. die/db/db/PE/UPX_shit.2.sg +21 -0
  2783. die/db/db/PE/UPXcrypter.2.sg +11 -0
  2784. die/db/db/PE/UPolyX.2.sg +30 -0
  2785. die/db/db/PE/UltraPro.2.sg +18 -0
  2786. die/db/db/PE/UnoPiX.2.sg +27 -0
  2787. die/db/db/PE/VBox.2.sg +15 -0
  2788. die/db/db/PE/VCasm-Protector.2.sg +21 -0
  2789. die/db/db/PE/VMProtect.2.sg +296 -0
  2790. die/db/db/PE/VMProtect_NET.2.sg +57 -0
  2791. die/db/db/PE/VPacker.2.sg +13 -0
  2792. die/db/db/PE/VaySoft_PDF2EXE.2.sg +16 -0
  2793. die/db/db/PE/VbsToExe.1.sg +31 -0
  2794. die/db/db/PE/VbsToExeConverter.2.sg +18 -0
  2795. die/db/db/PE/Virbox.2.sg +13 -0
  2796. die/db/db/PE/Virtual_Pascal.4.sg +15 -0
  2797. die/db/db/PE/Vise.1.sg +16 -0
  2798. die/db/db/PE/VisualStudio_NET.6.sg +14 -0
  2799. die/db/db/PE/Visual_Objects.4.sg +13 -0
  2800. die/db/db/PE/Visual_Prolog.4.sg +15 -0
  2801. die/db/db/PE/Vulkan.4.sg +14 -0
  2802. die/db/db/PE/WF.Guna.UI2.4.sg +15 -0
  2803. die/db/db/PE/WF.Krypton.4.sg +14 -0
  2804. die/db/db/PE/WF.MetroFramework.4.sg +14 -0
  2805. die/db/db/PE/WF_WPF.MaterialSkin.4.sg +14 -0
  2806. die/db/db/PE/WWPACK.2.sg +11 -0
  2807. die/db/db/PE/Watcom.4.sg +36 -0
  2808. die/db/db/PE/WiX_Toolset_installer.1.sg +21 -0
  2809. die/db/db/PE/Wibu_Codemeter.1.sg +30 -0
  2810. die/db/db/PE/WinACE.1.sg +12 -0
  2811. die/db/db/PE/WinIMP.1.sg +15 -0
  2812. die/db/db/PE/WinImage.1.sg +15 -0
  2813. die/db/db/PE/WinPatch.1.sg +18 -0
  2814. die/db/db/PE/WinRAR.1.sg +18 -0
  2815. die/db/db/PE/WinRAR_Installer.1.sg +28 -0
  2816. die/db/db/PE/WinUpack.2.sg +64 -0
  2817. die/db/db/PE/WinZip.1.sg +44 -0
  2818. die/db/db/PE/Winamp_Installer.1.sg +14 -0
  2819. die/db/db/PE/Wind_of_Crypt.2.sg +12 -0
  2820. die/db/db/PE/Windows_Authenticode.7.sg +13 -0
  2821. die/db/db/PE/Windows_Installer.1.sg +22 -0
  2822. die/db/db/PE/Wine.3.sg +12 -0
  2823. die/db/db/PE/Wise_Installer.1.sg +52 -0
  2824. die/db/db/PE/XCR.2.sg +13 -0
  2825. die/db/db/PE/XComp.2.sg +19 -0
  2826. die/db/db/PE/XPACK.2.sg +17 -0
  2827. die/db/db/PE/Xash.3.sg +20 -0
  2828. die/db/db/PE/Xbase.4.sg +30 -0
  2829. die/db/db/PE/Xenocode_Postbuild.2.sg +12 -0
  2830. die/db/db/PE/Xerces-CPP.4.sg +15 -0
  2831. die/db/db/PE/XerinFuscator.2.sg +31 -0
  2832. die/db/db/PE/Xojo.3.sg +29 -0
  2833. die/db/db/PE/Xoreax_installer.1.sg +19 -0
  2834. die/db/db/PE/Xtreamlok.2.sg +22 -0
  2835. die/db/db/PE/Yano.2.sg +12 -0
  2836. die/db/db/PE/Yodas_Crypter.2.sg +35 -0
  2837. die/db/db/PE/Yodas_Protector.2.sg +15 -0
  2838. die/db/db/PE/Yummy_Game_SoftwareShield.2.sg +17 -0
  2839. die/db/db/PE/Zig.4.sg +22 -0
  2840. die/db/db/PE/ZipCentral_SFX.1.sg +16 -0
  2841. die/db/db/PE/Zip_SFX.2.sg +62 -0
  2842. die/db/db/PE/Zprotect.2.sg +26 -0
  2843. die/db/db/PE/Zydis.4.sg +14 -0
  2844. die/db/db/PE/_FixDetects.9.sg +79 -0
  2845. die/db/db/PE/_NetCompilersLibs.4.sg +39 -0
  2846. die/db/db/PE/_PE.0.sg +22 -0
  2847. die/db/db/PE/__GenericHeuristicAnalysis_By_DosX.7.sg +3357 -0
  2848. die/db/db/PE/_init +138 -0
  2849. die/db/db/PE/_simpleNetAntivirus.1.sg +246 -0
  2850. die/db/db/PE/aPack.2.sg +26 -0
  2851. die/db/db/PE/arj.6.sg +10 -0
  2852. die/db/db/PE/beria.2.sg +12 -0
  2853. die/db/db/PE/curl.4.sg +14 -0
  2854. die/db/db/PE/dUP.1.sg +20 -0
  2855. die/db/db/PE/de4dot.6.sg +20 -0
  2856. die/db/db/PE/dePACK.2.sg +13 -0
  2857. die/db/db/PE/distutils.1.sg +18 -0
  2858. die/db/db/PE/eXPressor.2.sg +59 -0
  2859. die/db/db/PE/ezip.2.sg +14 -0
  2860. die/db/db/PE/gcc.4.sg +15 -0
  2861. die/db/db/PE/hXOR_packer.sg +13 -0
  2862. die/db/db/PE/hmimys_PE-Pack.2.sg +23 -0
  2863. die/db/db/PE/hmimys_Protect.2.sg +18 -0
  2864. die/db/db/PE/iPB_Protect.2.sg +12 -0
  2865. die/db/db/PE/inPEct.1.sg +10 -0
  2866. die/db/db/PE/java.3.sg +21 -0
  2867. die/db/db/PE/keygens.1.sg +25 -0
  2868. die/db/db/PE/kkrunchy.2.sg +19 -0
  2869. die/db/db/PE/ldc.4.sg +13 -0
  2870. die/db/db/PE/linker.6.sg +100 -0
  2871. die/db/db/PE/mPack.2.sg +15 -0
  2872. die/db/db/PE/mkfPack.2.sg +12 -0
  2873. die/db/db/PE/nPack.2.sg +36 -0
  2874. die/db/db/PE/netshrink.2.sg +25 -0
  2875. die/db/db/PE/obfus_h.5.sg +15 -0
  2876. die/db/db/PE/obfusheader_h.5.sg +32 -0
  2877. die/db/db/PE/ps2exe.2.sg +15 -0
  2878. die/db/db/PE/rar.1.sg +16 -0
  2879. die/db/db/PE/rar.6.sg +10 -0
  2880. die/db/db/PE/scr2exe.2.sg +18 -0
  2881. die/db/db/PE/sql-server.sg +14 -0
  2882. die/db/db/PE/sqlite.4.sg +14 -0
  2883. die/db/db/PE/sqx.1.sg +14 -0
  2884. die/db/db/PE/tElock.2.sg +81 -0
  2885. die/db/db/PE/tcc.4.sg +45 -0
  2886. die/db/db/PE/wxWidgets.5.sg +27 -0
  2887. die/db/db/PE/yzPack.2.sg +26 -0
  2888. die/db/db/PE/zip.6.sg +10 -0
  2889. die/db/db/PE/zlib.4.sg +14 -0
  2890. die/db/db/QtFramework +16 -0
  2891. die/db/db/RosASM +13 -0
  2892. die/db/db/SpASM +8 -0
  2893. die/db/db/ZIP/_ZIP.0.sg +17 -0
  2894. die/db/db/ZIP/_init +2 -0
  2895. die/db/db/_debug +23 -0
  2896. die/db/db/_init +149 -0
  2897. die/db/db/archive-file +36 -0
  2898. die/db/db/arj +80 -0
  2899. die/db/db/cab +45 -0
  2900. die/db/db/duration +14 -0
  2901. die/db/db/language +46 -0
  2902. die/db/db/python +30 -0
  2903. die/db/db/rar +75 -0
  2904. die/db/db/read +692 -0
  2905. die/db/db/shell-script +24 -0
  2906. die/db/db/wxWidgets +12 -0
  2907. die/db/db/zip-file +87 -0
  2908. die/db/db/zlib +23 -0
  2909. die/db/db_custom/PE/example.sg +18 -0
  2910. die/db/db_custom/where-is-structure-example.txt +1 -0
  2911. die/die.lib +0 -0
  2912. die.lib +0 -0
  2913. die_python-0.4.0.dist-info/METADATA +335 -0
  2914. die_python-0.4.0.dist-info/RECORD +2917 -0
  2915. die_python-0.4.0.dist-info/WHEEL +5 -0
  2916. die_python-0.4.0.dist-info/licenses/LICENSE +201 -0
  2917. include/die.h +60 -0
@@ -0,0 +1,3357 @@
1
+ /*
2
+ ██████╗ ███████╗███╗ ██╗███████╗██████╗ ██╗ ██████╗
3
+ ██╔════╝ ██╔════╝████╗ ██║██╔════╝██╔══██╗██║██╔════╝
4
+ ██║ ███╗█████╗ ██╔██╗ ██║█████╗ ██████╔╝██║██║
5
+ ██║ ██║██╔══╝ ██║╚██╗██║██╔══╝ ██╔══██╗██║██║
6
+ ╚██████╔╝███████╗██║ ╚████║███████╗██║ ██║██║╚██████╗
7
+ ╚═════╝ ╚══════╝╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═════╝
8
+ ██╗ ██╗ ██╗███████╗██╗ ██╗██████╗ ██╗███████╗████████╗██╗ ██████╗ ██╗
9
+ ██╔╝ ██║ ██║██╔════╝██║ ██║██╔══██╗██║██╔════╝╚══██╔══╝██║██╔════╝ ╚██╗
10
+ ██╔╝ ███████║█████╗ ██║ ██║██████╔╝██║███████╗ ██║ ██║██║ ╚██╗
11
+ ╚██╗ ██╔══██║██╔══╝ ██║ ██║██╔══██╗██║╚════██║ ██║ ██║██║ ██╔╝
12
+ ╚██╗ ██║ ██║███████╗╚██████╔╝██║ ██║██║███████║ ██║ ██║╚██████╗ ██╔╝
13
+ ╚═╝ ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝╚══════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝
14
+ █████╗ ███╗ ██╗ █████╗ ██╗ ██╗ ██╗███████╗██╗███████╗
15
+ ██╔══██╗████╗ ██║██╔══██╗██║ ╚██╗ ██╔╝██╔════╝██║██╔════╝
16
+ ███████║██╔██╗ ██║███████║██║ ╚████╔╝ ███████╗██║███████╗
17
+ ██╔══██║██║╚██╗██║██╔══██║██║ ╚██╔╝ ╚════██║██║╚════██║
18
+ ██║ ██║██║ ╚████║██║ ██║███████╗██║ ███████║██║███████║
19
+ ╚═╝ ╚═╝╚═╝ ╚═══╝╚═╝ ╚═╝╚══════╝╚═╝ ╚══════╝╚═╝╚══════╝
20
+ */
21
+
22
+ // Detect It Easy: detection rule 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
+ // >> Payeer: P1066822521 [Recommended]
37
+ //
38
+ // >> BTC: 37uRiHBqK3QiJ2jamqmmk1Q3sCmAmWngcC
39
+ // 0,0005 BTC minimum
40
+ //
41
+ // >> LTC: MCwRK1Z7K4GYHt9ZrbTR2SMCEqzqQaTbRF
42
+ // 0,001 LTC minimum
43
+ //
44
+ // >> USDT: TUVH7QkcZws78QMC3XyAwfuzxUbaeLnfAC
45
+ // TRC-20 5 USDT minimum
46
+ // ================================================
47
+
48
+ // ================= [ CONTACTS ] =================
49
+ // Author: DosX
50
+ // E-Mail: collab@kay-software.ru
51
+ // GitHub: https://github.com/DosX-dev
52
+ // Telegram: @DosX_dev
53
+ // ================================================
54
+ // If I don't respond to email, message to Telegram
55
+ // ================================================
56
+
57
+ // For the script to work correctly, the following
58
+ // official Detect It Easy components are required:
59
+ // "language", "FASM", "RosASM", "SpASM", "FPC"
60
+ // "PE\linker.6.sg", "Microsoft.6.sg"
61
+
62
+ // Please do not read the code out loud unless you have exorcism skills
63
+
64
+ const logType = {
65
+ warning: -2,
66
+ about: -1,
67
+ nothing: 0,
68
+ any: 1,
69
+ net: 2
70
+ },
71
+ heurLabel = "HEUR";
72
+
73
+ var lastOffsetDetected = "0x00";
74
+
75
+ const detect = main;
76
+
77
+ function main() {
78
+ if (stubForWrongEnvironment()) return null; // 'PE' is undefined
79
+ if (stubForLegacyEngines()) return null; // old DIE version
80
+
81
+ if (PE.isHeuristicScan()) {
82
+ if (!PE.isVerbose()) {
83
+ log(logType.warning, "To get the full heuristic scan result use '--verbose'");
84
+ }
85
+
86
+ log(logType.about, "Generic Heuristic Analysis by DosX (@DosX_dev)");
87
+
88
+ log(logType.nothing, "Scanning has begun!");
89
+
90
+ if (PE.isNET()) {
91
+ scanForObfuscations_NET();
92
+ scanForAntiAnalysis_NET();
93
+ } else {
94
+ scanForObfuscations_Native();
95
+ }
96
+
97
+ scanForPackersAndCryptors_NET_and_Native();
98
+ scanForLicensingSystems_NET_and_Native();
99
+ scanForBadFileFormat_NET_and_Native();
100
+ scanForDebugData_NET_and_Native();
101
+
102
+ if (PE.isVerbose()) {
103
+ scanForLanguages_NET_and_Native();
104
+ }
105
+
106
+ // >> Happy end <<
107
+ log(logType.nothing, "Scan completed.");
108
+
109
+
110
+ // scanForMaciliousCode_NET_and_Native();
111
+ } else {
112
+ log(logType.warning, "Heuristic scan is disabled. Use '--heuristicscan' to enable");
113
+ }
114
+ }
115
+
116
+
117
+
118
+ function stubForLegacyEngines() {
119
+ if (typeof _error === "undefined") {
120
+ stdout(">>> Update DIE Engine to 3.11 and higher for using Heuristic-analyser by DosX <<<");
121
+ return true;
122
+ }
123
+
124
+ return false;
125
+ }
126
+
127
+
128
+
129
+ function stubForWrongEnvironment() {
130
+ if (typeof PE === "undefined") {
131
+ stdout(">>> Wrong environment! 'PE' is undefined. Check DIE-engine for correct installation <<<");
132
+ return true;
133
+ }
134
+
135
+ return false;
136
+ }
137
+
138
+
139
+
140
+ /**
141
+ * Outputs a warning message to the appropriate output stream.
142
+ *
143
+ * Depending on the environment, this function will:
144
+ * - Use `console.warn` if `console` is available.
145
+ * - Use `_setResult` if `File` is available.
146
+ * - Use `_error` if it is defined as a function.
147
+ * - Throw an error if none of the above conditions are met.
148
+ *
149
+ * @param {string} stringToOut - The warning message to output.
150
+ */
151
+ function stdout(stringToOut) {
152
+ if (typeof console === "object") {
153
+ console.warn(stringToOut);
154
+ } else if (typeof File === "object") {
155
+ _setResult("~warning", stringToOut, String(), String());
156
+ } else {
157
+ if (typeof _error === "function") {
158
+ _error(stringToOut);
159
+ } else {
160
+ throw stringToOut;
161
+ }
162
+ }
163
+ }
164
+
165
+
166
+
167
+ function scanForObfuscations_NET() {
168
+ var options = String();
169
+
170
+ var isDetected = Boolean();
171
+
172
+
173
+
174
+
175
+ const isVbNet = isVbNetStandartLibraryPresent();
176
+
177
+
178
+ var isEntryPointModified = false;
179
+
180
+ const vbNetEntries = [
181
+ "Main",
182
+ "main",
183
+ "MAIN",
184
+ "MyApplication"
185
+ ],
186
+ defaultEntries = [ // like MSIL, C#, C++ NET etc
187
+ "Main",
188
+ "main", // F# entry
189
+ "main@", // F# entry
190
+ "<Main>$", // For programs with top-level operators (C#)
191
+ "mainCRTStartup", // C++ CLR .NET (CLI)
192
+ "wWinMainCRTStartup" // C++ CLR .NET (GUI)
193
+ ]
194
+
195
+ if (!PE.isDll()) {
196
+ if (isVbNet) {
197
+ if (isAllNetReferencesMissing(vbNetEntries)) {
198
+ isEntryPointModified = true;
199
+ }
200
+ } else if (isAllNetReferencesMissing(defaultEntries)) {
201
+ isEntryPointModified = true;
202
+ }
203
+
204
+ if (isEntryPointModified) {
205
+ log(logType.net, "No \"Main\" method found")
206
+ }
207
+ }
208
+
209
+ if (isEntryPointModified) options = "Modified EP";
210
+
211
+
212
+
213
+
214
+ // <Module>.cctor can execute code before the Main method is called
215
+
216
+ var isNetCctorPresent = false;
217
+
218
+ if (PE.isNetGlobalCctorPresent() && !isClrNET()) {
219
+ log(logType.net, "Global constructor detected!");
220
+ isNetCctorPresent = true;
221
+ }
222
+
223
+ if (isNetCctorPresent) options += (options.length != 0 ? " + " : String()) + "CLR constructor";
224
+
225
+
226
+
227
+
228
+ // If .NET meta headers are not present in the default .NET section, then the file is mutant
229
+
230
+ var isStrangeEpPosition = false;
231
+
232
+ const netMetaHeaders = [
233
+ "~",
234
+ "Strings",
235
+ "US",
236
+ "GUID",
237
+ "Blob"
238
+ ];
239
+
240
+ // Specify the default .NET section index
241
+ const defaultNetSection = 0;
242
+
243
+ // Check conditions for a strange entry point position (not for CLR apps)
244
+ if (!PE.isDll() && PE.getNumberOfSections() > 1 && !isClrNET()) {
245
+ // Iterate through .NET metadata headers
246
+ for (var s = 0; s < netMetaHeaders.length; s++) {
247
+ const headerName = netMetaHeaders[s];
248
+
249
+ // Check if the signature is not present in the default .NET section
250
+ if (!PE.isSignatureInSectionPresent(defaultNetSection, "00'#" + headerName + "'00")) {
251
+ isStrangeEpPosition = true;
252
+ break;
253
+ }
254
+ }
255
+ }
256
+
257
+ if (isStrangeEpPosition) options += (options.length != 0 ? " + " : String()) + "Strange EP position";
258
+
259
+
260
+
261
+
262
+ // .NET files has a specific pattern of the entry point
263
+
264
+ var isNativeEntryPointModified = false;
265
+
266
+ if (!PE.isDll() && !isClrNET()) { // not for CLR apps
267
+ if (!PE.is64()) {
268
+ // FF2500????00: jmp dword ptr [ ... ]
269
+ const firstOpCode = getFirstEpAsmOpCode();
270
+
271
+ if (firstOpCode !== "JMP") {
272
+ if (PE.VAToOffset(PE.getAddressOfEntryPoint()) !== -1) {
273
+ log(logType.net, "Very strange EP pattern: " + getEpAsmPattern(onlyOpCodes = true, numberOf = 4).split("|").join(" .. "));
274
+ } else {
275
+ log(logType.net, "No native entry point");
276
+ }
277
+
278
+ isNativeEntryPointModified = true;
279
+ }
280
+ } else { // AMD64
281
+ if (PE.VAToOffset(PE.getAddressOfEntryPoint()) !== 0x00) {
282
+ isNativeEntryPointModified = true;
283
+ }
284
+ }
285
+ }
286
+
287
+ if (isNativeEntryPointModified) options += (options.length != 0 ? " + " : String()) + "Modified native EP";
288
+
289
+
290
+
291
+
292
+ // Check if the specified DOS message is not found in the DOS stub
293
+
294
+ var isDosMessageModified = false;
295
+
296
+ if (PE.findSignature(PE.getDosStubOffset(), PE.getDosStubSize(), "'This program cannot be run in DOS mode.'") === -1) {
297
+ log(logType.net, "DOS-stub modified!");
298
+ isDosMessageModified = true;
299
+ }
300
+
301
+ if (isDosMessageModified) options += (options.length != 0 ? " + " : String()) + "Modified DOS";
302
+
303
+
304
+
305
+
306
+ // Check PE image for strange sections
307
+
308
+ var strangeSections = false;
309
+
310
+ const badChars = '_-=+~!@#$%^&*()"№;%:?*():;,/\\|\'`<>.0123456789'; // Very very bad!
311
+
312
+ if (PE.getNumberOfSections() > (!isClrNET() ? 6 : 10) || !PE.isSectionNamePresent(".text")) { strangeSections = true; } else {
313
+ // Iterate through each section
314
+ for (var i = 0; i < PE.getNumberOfSections() && !strangeSections; i++) {
315
+ const sectionName = PE.getSectionName(i);
316
+
317
+ // Check if the first character is not "." and the length of name is less than 3
318
+ if (sectionName[0] !== "." && sectionName.length < 3) {
319
+ strangeSections = true;
320
+ break;
321
+ }
322
+
323
+ // Iterate through characters after "."
324
+ // Check if the character is in the badChars list
325
+ for (var d = 0; d < badChars.length && !strangeSections; d++) {
326
+ if (sectionName.substr(1, sectionName.length).indexOf(badChars[d]) !== -1) {
327
+ strangeSections = true;
328
+ }
329
+ }
330
+ }
331
+ }
332
+
333
+ if (strangeSections) options += (options.length != 0 ? " + " : String()) + "Strange sections";
334
+
335
+
336
+
337
+
338
+ const opCodes = new NetOpCodes();
339
+
340
+
341
+
342
+
343
+ // A popular way to obfuscate numbers/booleans
344
+
345
+ var isIntConfusionPresent = false;
346
+
347
+ const intConfusionXorPattern = opCodes.ldc_i4 + opCodes.ldc_i4 + opCodes.xor + opCodes.ldc_i4;
348
+
349
+ if (validateNetByteCode(intConfusionXorPattern)) {
350
+ if (validateNetByteCode( // samples by: Inx Obfuscator
351
+ intConfusionXorPattern +
352
+ (opCodes.bne_un_s + opCodes.ldc_i4_2 + opCodes.stloc_0 + opCodes.sizeof + opCodes.add)
353
+ ) ||
354
+ validateNetByteCode( // samples by: MindLated, NetShield
355
+ intConfusionXorPattern +
356
+ (opCodes.bne_un + opCodes.ldc_i4 + opCodes.stloc + opCodes.sizeof + opCodes.add)
357
+ ) ||
358
+ validateNetByteCode( // samples by: VavilonProtect
359
+ intConfusionXorPattern +
360
+ (opCodes.bne_un + opCodes.ldc_i4_2 + opCodes.stloc_s + opCodes.sizeof + opCodes.add)
361
+ )
362
+ ) {
363
+ log(logType.net, "Int confusion detected! Offset: " + lastOffsetDetected);
364
+ isIntConfusionPresent = true;
365
+ }
366
+ }
367
+
368
+ if (isIntConfusionPresent) options += (options.length != 0 ? " + " : String()) + "Int confusion";
369
+
370
+
371
+
372
+
373
+ // 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
374
+
375
+ var isVirtualizationPresent = false;
376
+
377
+ if (
378
+ isAllNetReferencesPresent(
379
+ references = [
380
+ "System.Reflection", // System.Reflection.dll
381
+ "GetILGenerator", // MSIL: 'System.Reflection.Emit.DynamicMethod::GetILGenerator()'
382
+ "BeginInvoke",
383
+ "EndInvoke",
384
+ "OpCode" // MSIL: 'System.Reflection.Emit.OpCode'
385
+ ]
386
+ ) &&
387
+ (
388
+ PE.isNetObjectPresent("Ldarg_0") || // MSIL: 'System.Reflection.Emit.OpCodes.Ldarg_0'
389
+ PE.isNetObjectPresent("CreateDelegate") // MSIL: 'System.Delegate.CreateDelegate'
390
+ ) && !isFrameworkComponent()
391
+ ) {
392
+ isVirtualizationPresent = true;
393
+ }
394
+
395
+ if (isVirtualizationPresent) options += (options.length != 0 ? " + " : String()) + "Virtualization";
396
+
397
+
398
+
399
+
400
+ // Hiding calls using delegate tricks
401
+
402
+ var callsEncrypt = false;
403
+
404
+ if (
405
+ isAllNetReferencesPresent(
406
+ references = [
407
+ "GetTypeFromHandle", // MSIL: 'System.Type::GetTypeFromHandle( ... )'
408
+ "BinaryReader", // MSIL: 'System.IO.BinaryReader'
409
+ "CreateDelegate", // MSIL: '[Delegate].CreateDelegate'
410
+ "MakeByRefType", // MSIL: 'System.Type::MakeByRefType()'
411
+ "DynamicMethod" // MSIL: 'System.Reflection.Emit.DynamicMethod'
412
+ ]
413
+ ) && !isFrameworkComponent()
414
+ ) {
415
+ callsEncrypt = true;
416
+ }
417
+
418
+ if (callsEncrypt) options += (options.length != 0 ? " + " : String()) + "Calls encrypt";
419
+
420
+
421
+
422
+
423
+ // https://learn.microsoft.com/en-us/dotnet/api/system.runtime.compilerservices.suppressildasmattribute
424
+
425
+ var isAntiIldasmPresent = false;
426
+
427
+ if (validateNetObject("SuppressIldasmAttribute")) {
428
+ isAntiIldasmPresent = true;
429
+ }
430
+
431
+ if (isAntiIldasmPresent) options += (options.length != 0 ? " + " : String()) + "Anti-ILDASM";
432
+
433
+
434
+
435
+
436
+ // Anti de4dot via inheritance
437
+
438
+ var isAntiDe4dotPresent = false;
439
+
440
+ if (
441
+ validateSignature("'Form'******00'Form'******00'Form'******00") || // samples by: NetShield
442
+ validateNetObject("Form0") // samples by: MindLated
443
+ ) {
444
+ log(logType.net, "File may be protected by de4dot!");
445
+ isAntiDe4dotPresent = true;
446
+ }
447
+
448
+ if (isAntiDe4dotPresent) options += (options.length != 0 ? " + " : String()) + "Anti-de4dot";
449
+
450
+
451
+
452
+
453
+ // An obfuscation method in which calli is used instead of regular calls
454
+
455
+ var isCalliInvokesPresent = false;
456
+
457
+ if (validateNetByteCode( // samples by: MindLated
458
+ opCodes.setStrict(opCodes.ldftn, "** ?? 00 0A") +
459
+ opCodes.setStrict(opCodes.calli, "** 00 00 11")
460
+ ) ||
461
+ validateNetByteCode( // samples by: ArmDot, DarksProtector
462
+ opCodes.idelem_i +
463
+ opCodes.setStrict(opCodes.calli, "** 00 00 11")
464
+ )) {
465
+ log(logType.net, "Calli invokes detected! Offset: " + lastOffsetDetected);
466
+ isCalliInvokesPresent = true;
467
+ }
468
+
469
+ if (isCalliInvokesPresent) options += (options.length != 0 ? " + " : String()) + "Calli invokes";
470
+
471
+
472
+
473
+
474
+ var isLdftnPointersPresent = false;
475
+
476
+ if (validateNetByteCode(
477
+ opCodes.nop + opCodes.setStrict(opCodes.ldftn, "** 00 00 06") + opCodes.stelem_i
478
+ ) ||
479
+ validateNetByteCode(
480
+ opCodes.nop + opCodes.setStrict(opCodes.ldftn, "** 00 00 0A") + opCodes.stelem_i
481
+ ) ||
482
+ validateNetByteCode( // samples by: Quantum (private)
483
+ opCodes.setStrict(opCodes.ldftn, "** 00 00 0A") +
484
+ opCodes.setStrict(opCodes.calli, "** 00 00 11")
485
+ )) {
486
+ log(logType.net, "Ldftn pointers method-obfuscation detected! Offset: " + lastOffsetDetected);
487
+ isLdftnPointersPresent = true;
488
+ }
489
+
490
+ if (isLdftnPointersPresent) options += (options.length != 0 ? " + " : String()) + "Ldftn pointers";
491
+
492
+
493
+
494
+
495
+ // Turns the code into spaghetti by splitting it into blocks that it executes depending on the situation
496
+
497
+ var isCtrlFlowPresent = false;
498
+
499
+ if (validateNetByteCode( // samples by: ConfuserEx
500
+ opCodes.nop + opCodes.ldloc_0 + opCodes.ldc_i4 + opCodes.mul + opCodes.ldc_i4 + opCodes.xor + opCodes.br_s +
501
+ opCodes.nop + opCodes.ldloc_0 + opCodes.ldc_i4 + opCodes.mul + opCodes.ldc_i4 + opCodes.xor + opCodes.br_s
502
+ ) ||
503
+ validateNetByteCode( // samples by: ConfuserEx (neo mod)
504
+ opCodes.ldc_i4 + opCodes.ldc_i4 + opCodes.xor + opCodes.dup + opCodes.stloc_0 + opCodes.ldc_i4_3 + opCodes.rem_un + opCodes.switch__nobody
505
+ ) ||
506
+ validateNetByteCode( // samples by: .NET Reactor (v6.9.8)
507
+ opCodes.setStrict(opCodes.ldc_i4, "00 00 00 00") + opCodes.br + opCodes.br + opCodes.ldloc
508
+ ) ||
509
+ validateNetByteCode( // samples by: .NET Reactor
510
+ opCodes.ldsfld + opCodes.brfalse + opCodes.pop +
511
+ opCodes.setStrict(opCodes.ldc_i4, "01 00 00 00") + // MSIL: 'ldc.4 1'
512
+ opCodes.br + opCodes.nop
513
+ ) ||
514
+ validateNetByteCode( // samples by: .NET Reactor
515
+ opCodes.setNullValue(opCodes.ldc_i4) +
516
+ opCodes.ldsfld + opCodes.brtrue + opCodes.pop + opCodes.ldc_i4 +
517
+ opCodes.br
518
+ ) ||
519
+ validateNetByteCode( // samples by: .NET Reactor (legacy~~)
520
+ opCodes.stloc + opCodes.ldloc +
521
+ opCodes.setStrict(opCodes.switch__nobody, "** ** ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 00 00") +
522
+ opCodes.ldc_i4 + opCodes.br
523
+ ) ||
524
+ validateNetByteCode( // samples by: MindLated, NetShield
525
+ opCodes.setNullValue(opCodes.ldc_i4) + // MSIL: 'ldc.i4 0'
526
+ opCodes.stloc + opCodes.br + opCodes.nop + opCodes.ldloc +
527
+ opCodes.setStrict(opCodes.ldc_i4, "01 00 00 00") + // MSIL: 'ldc.i4 1'
528
+ opCodes.ceq + opCodes.brfalse
529
+ ) ||
530
+ validateNetByteCode( // samples by: Rose Obfuscator
531
+ opCodes.setNullValue(opCodes.ldc_i4) + // MSIL: 'ldc.i4'
532
+ opCodes.stloc + opCodes.br + opCodes.nop + opCodes.ldloc + opCodes.ldc_i4 + opCodes.ceq + opCodes.brfalse
533
+ ) ||
534
+ validateNetByteCode( // samples by: Smart Assembly
535
+ opCodes.ldc_i4 + opCodes.br + opCodes.ldloc_s + opCodes.ldc_i4_s + opCodes.ldc_i4_0 + opCodes.stelem_i1 +
536
+ opCodes.ldc_i4 + opCodes.br
537
+ ) ||
538
+ validateNetByteCode( // samples by: ConfuserEx (Beds mod)
539
+ opCodes.ldc_i4 + opCodes.ldc_i4 + opCodes._unknown + opCodes.ldc_i4 + opCodes._unknown + opCodes.stloc_0 + opCodes.nop + opCodes.ldloc_0 +
540
+ opCodes.ldc_i4 + opCodes.ldc_i4 + opCodes._unknown + opCodes.ldc_i4 + opCodes._unknown + opCodes.ceq + opCodes.brfalse_s
541
+ ) ||
542
+ validateNetByteCode( // samples by: DotNetPatcher
543
+ opCodes.setStrict(opCodes.stloc_s, "05") + opCodes.nop + opCodes.ldloc_s + opCodes._unknown + opCodes.ceq + opCodes.brfalse_s + opCodes._unknown +
544
+ opCodes.setStrict(opCodes.stloc_s, "05") + opCodes.nop + opCodes.ldloc_s + opCodes._unknown + opCodes.ceq + opCodes.brfalse_s
545
+ ) ||
546
+ validateNetByteCode( // samples by: VMProtect
547
+ opCodes.ldloc_0 + opCodes.setStrict(opCodes.ldc_i4, "?? ** ** **") + opCodes._unknown + opCodes.stloc_0 +
548
+ opCodes.ldloc_0 + opCodes.setStrict(opCodes.ldc_i4, "?? ** ** **") + opCodes.xor + opCodes.stloc_0
549
+ ) ||
550
+ validateNetByteCode( // samples by: VMProtect
551
+ opCodes.setStrict(opCodes.ldc_i4, "?? ** ** **") + opCodes._unknown + opCodes.stloc_0 + opCodes.setStrict(opCodes.ldftn, "** ?? ?? ??")
552
+ )
553
+ ) {
554
+ log(logType.net, "Control flow obfuscation detected! Offset: " + lastOffsetDetected);
555
+ isCtrlFlowPresent = true;
556
+ }
557
+
558
+ if (isCtrlFlowPresent) options += (options.length != 0 ? " + " : String()) + "Ctrl flow";
559
+
560
+
561
+
562
+
563
+ const afterCtorOffset = PE.findSignature(PE.getDosStubOffset() + PE.getDosStubSize(), PE.getSize() - PE.getOverlaySize(), "'<Module>'00**") + 8;
564
+
565
+
566
+ // Indicates that the file uses short object names. Typically this indicates the presence of an obfuscation
567
+ // There are two ways to detect short names - find one-letter objects or just use signature mask at Ctor offset :D
568
+
569
+ var isShortNamesPresent = false;
570
+
571
+ if (PE.compare("00**00**00", afterCtorOffset) ||
572
+ PE.compare("00****00****00****00", afterCtorOffset) ||
573
+ PE.compare("00******00******00******00", afterCtorOffset) ||
574
+ PE.compare("00********00********00********00", afterCtorOffset) ||
575
+ PE.compare("00****00****00", afterCtorOffset) ||
576
+ PE.compare("00****00**00", afterCtorOffset) ||
577
+ PE.compare("00**00****00", afterCtorOffset)) {
578
+ log(logType.net, "Short names detected! (mask)");
579
+ isShortNamesPresent = true;
580
+ }
581
+
582
+ if (!isShortNamesPresent && PE.compare("00**00", afterCtorOffset)) { // second way :D
583
+ var shortNamesFound = 0;
584
+
585
+ const chars = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm";
586
+ for (var i = 1; i < chars.length && !isShortNamesPresent; i++) {
587
+ if (PE.isNetObjectPresent(chars[i])) {
588
+ shortNamesFound++;
589
+ log(logType.net, "Short name found: '" + chars[i] + "' (" + shortNamesFound + "/20)");
590
+ }
591
+
592
+ if (shortNamesFound === 20) {
593
+ isShortNamesPresent = true;
594
+ }
595
+ }
596
+ }
597
+
598
+ if (isShortNamesPresent) options += (options.length != 0 ? " + " : String()) + "Short names";
599
+
600
+
601
+
602
+
603
+ var badNamings = false;
604
+
605
+ var buffer = "";
606
+
607
+ // get next 0x12c bytes after <Module> .ctor
608
+ for (var i = 0; i < 0x12c; i++) {
609
+ var currentByte = PE.readByte(afterCtorOffset + i).toString(16);
610
+
611
+ if (currentByte === '0') currentByte += '0';
612
+
613
+ buffer += currentByte;
614
+ buffer += ' ';
615
+ }
616
+
617
+ var bufferString = String();
618
+
619
+ // 0x00 to [0x20, 0x20, 0x20]
620
+ const bufferArray = replaceAllInString(buffer, '00 ', '20 20 20 ').split(' ');
621
+
622
+ // buffer to a string
623
+ for (var i = 0; i < bufferArray.length; i++)
624
+ bufferString += String.fromCharCode(parseInt(bufferArray[i], 16));
625
+
626
+
627
+ const patternsToExplore = bufferString.split(" ");
628
+
629
+ var strangePatternsCounter = 0;
630
+
631
+ for (var i = 0; i < patternsToExplore.length && !badNamings; i++) {
632
+
633
+ const currentStringPattern = patternsToExplore[i];
634
+
635
+ if (currentStringPattern.indexOf("<") === -1 && currentStringPattern.match(/^(?=\d|[a-z])(?=.*[a-z]\d[a-z])(?=(?:.*\d){4,})/i))
636
+ strangePatternsCounter++;
637
+
638
+ if (strangePatternsCounter > 4)
639
+ badNamings = true;
640
+
641
+ }
642
+
643
+ if (badNamings) options += (options.length != 0 ? " + " : String()) + "Bad namings";
644
+
645
+
646
+
647
+
648
+ // AntiTamper protects the file from modification
649
+
650
+ var isAntiTamperPresent = false;
651
+
652
+ if (
653
+ validateNetUnicodeString(" is tampered.") || // samples by: .NET Reactor
654
+ validateNetUnicodeString("ping 127.0.0.1 > nul") || // samples by: ConfuserEx (Trinity, SkiDzEx like)
655
+ validateNetUnicodeString("/C ping 1.1.1.1 -n 1 -w 3000 > Nul & Del \"") || // samples by: MindLated
656
+ validateNetUnicodeString( // samples by: ConfuserEx
657
+ 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 +
658
+ 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 +
659
+ 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 +
660
+ 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 +
661
+ 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
662
+ ) ||
663
+ validateNetByteCode( // samples: ConfuserEx (Beds mod, private)
664
+ opCodes.ldloc_s + opCodes._unknown + opCodes.shr_un + opCodes.ldloc_s + opCodes.ldc_i4_s + opCodes.shl + opCodes.or + opCodes.stloc_s +
665
+ opCodes.ldloc_s + opCodes._unknown + opCodes.shr_un + opCodes.ldloc_s + opCodes.ldc_i4_s + opCodes.shl + opCodes.or + opCodes.stloc_s +
666
+ opCodes.ldloc_s + opCodes._unknown + opCodes.shr_un + opCodes.ldloc_s + opCodes.ldc_i4_s + opCodes.shl + opCodes.or + opCodes.stloc_s
667
+ )
668
+ ) {
669
+ log(logType.net, "Anti-tamper detected!");
670
+ isAntiTamperPresent = true;
671
+ }
672
+
673
+ if (isAntiTamperPresent) options += (options.length != 0 ? " + " : String()) + "Anti-tamper";
674
+
675
+
676
+
677
+
678
+ // If in the assembly you can find a second object starting with “<Module>”, then this is a fakeee!
679
+
680
+ var isModuleCtorMultiple = false;
681
+
682
+ var currentCtorOffset = PE.findSignature(PE.getDosStubOffset() + PE.getDosStubSize(), PE.getSize() - PE.getOverlaySize(), "00'<Module>'00");
683
+
684
+ if (currentCtorOffset !== -1) {
685
+ var secondCtorNameOffset = PE.findSignature(currentCtorOffset + 10, PE.getSize() - PE.getOverlaySize(), "'<Module>'");
686
+
687
+ if (secondCtorNameOffset !== -1 && PE.readByte(secondCtorNameOffset + 8) !== 0x00) {
688
+ log(logType.net, "Fake <Module> detected! Offset: 0x" + Number(secondCtorNameOffset).toString(16));
689
+ isModuleCtorMultiple = true;
690
+ }
691
+ }
692
+
693
+ if (isModuleCtorMultiple) options += (options.length != 0 ? " + " : String()) + "Fake .cctor name";
694
+
695
+
696
+
697
+
698
+ var isBadCctor = false;
699
+
700
+ if (currentCtorOffset === -1) {
701
+ log("It seems that the .cctor is missing. Bad PE format!");
702
+ isBadCctor = true;
703
+ }
704
+
705
+ if (isBadCctor) options += (options.length != 0 ? " + " : String()) + "Bad .cctor format";
706
+
707
+
708
+
709
+
710
+ // Detects the use of unusual mathematical expressions that would be simplified by the compiler. For example, an expression like "912874 + 39188124^834"
711
+
712
+ var isMutationsPresent = false;
713
+
714
+ const mathOpCodes = [
715
+ opCodes.add, opCodes.sub,
716
+ opCodes.mul, opCodes.div,
717
+ opCodes.xor, opCodes.shr,
718
+ opCodes.shl, opCodes.or,
719
+ opCodes.not, opCodes.and
720
+ ];
721
+
722
+ const mathTemplates = [ // %s = math opcode
723
+ opCodes.ldc_i4 + opCodes.ldc_i4 + "%s" + opCodes.stloc, // samples by: .NET Reactor
724
+ opCodes.ldc_i4 + opCodes.ldc_i4 + "%s" + opCodes.ldc_i4 + opCodes.add, // samples by: ConfuserEx (Beds mod)
725
+ opCodes.ldloc_1 + opCodes.ldc_i4 + opCodes.ldc_i4 + "%s" + opCodes.ldc_i4 + opCodes.ldc_i4, // samples by: SkiDzEX
726
+ opCodes.ldloc + opCodes.ldc_i4 + opCodes.ldc_i4 + opCodes.ldc_i4 + "%s" + opCodes.stelem_i1, // samples by: .NET Reactor
727
+ opCodes.ldc_i4 + opCodes.ldc_i4 + "%s" + opCodes.br_s // samples by: [Unknown protector, only samples]
728
+ ];
729
+
730
+ for (var y = 0; y < mathTemplates.length && !isMutationsPresent; y++) {
731
+ const template = mathTemplates[y];
732
+
733
+ for (var e = 0; e < mathOpCodes.length && !isMutationsPresent; e++) {
734
+
735
+ if (e == 0 && !validateNetByteCode(template.replace("%s", opCodes._unknown))) break; // No math mutations
736
+
737
+ const pattern = template.replace("%s", mathOpCodes[e]);
738
+
739
+ if (validateNetByteCode(pattern)) {
740
+ log(logType.net, "Math mutations detected! Offset: " + lastOffsetDetected);
741
+ isMutationsPresent = true;
742
+ }
743
+ }
744
+ }
745
+
746
+ if (isMutationsPresent) options += (options.length != 0 ? " + " : String()) + "Math mutations";
747
+
748
+
749
+
750
+
751
+ // VB NET apps with resources only
752
+
753
+ var isStringsEncryptionPresent = false;
754
+
755
+ if (isVbNet) {
756
+ if (PE.isNetObjectPresent("Resources") && !validateGlobalUnicodeString(".Resources")) {
757
+ isStringsEncryptionPresent = true;
758
+ }
759
+ }
760
+
761
+ if (isStringsEncryptionPresent) options += (options.length != 0 ? " + " : String()) + "Strings encryption";
762
+
763
+
764
+
765
+
766
+ // A type of obfuscation of numbers in which they are inverted several times from positive to negative and vice versa...
767
+ var isMathInversionsPresent = false;
768
+
769
+ if (validateNetByteCode(opCodes.ldc_i4 + opCodes.not) && (
770
+ validateNetByteCode( // ~(-(~(-(~(-(~(-( num ))))))))
771
+ opCodes.ldc_i4 +
772
+ opCodes.not + opCodes.neg + opCodes.not + opCodes.neg +
773
+ opCodes.not + opCodes.neg + opCodes.not + opCodes.neg
774
+ ) ||
775
+ validateNetByteCode( // ~(~(-(-(~(~( num ))))))
776
+ opCodes.ldc_i4 +
777
+ opCodes.not + opCodes.not + opCodes.neg + opCodes.neg +
778
+ opCodes.not + opCodes.not
779
+ ) ||
780
+ validateNetByteCode( // ~(-(~(~(-(-( num ))))))
781
+ opCodes.ldc_i4 +
782
+ opCodes.not + opCodes.neg + opCodes.not + opCodes.not +
783
+ opCodes.neg + opCodes.neg
784
+ ) ||
785
+ validateNetByteCode( // ~(-(~(-(~(~( num ))))))
786
+ opCodes.ldc_i4 +
787
+ opCodes.not + opCodes.neg + opCodes.not + opCodes.neg +
788
+ opCodes.not + opCodes.not
789
+ ) ||
790
+ validateNetByteCode( // ~(-(~(-(~(-( num ))))))
791
+ opCodes.ldc_i4 +
792
+ opCodes.not + opCodes.neg + opCodes.not + opCodes.neg +
793
+ opCodes.not + opCodes.neg
794
+ )
795
+ )) {
796
+ log(logType.net, "Math inversions detected, offset " + lastOffsetDetected);
797
+ isMathInversionsPresent = true;
798
+ }
799
+
800
+ if (isMathInversionsPresent) options += (options.length != 0 ? " + " : String()) + "Math inversions";
801
+
802
+
803
+
804
+
805
+ // A technique that allows you to avoid code decompilation. dnSpy gives a parsing error when trying to open such a file
806
+
807
+ var invalidOpCodes = false;
808
+
809
+ if (
810
+ /* validateNetByteCode( // samples by: SugarGuard
811
+ opCodes.setStrict(opCodes.box, "?? 00 00 01") + opCodes.ret
812
+ ) || */
813
+ validateNetByteCode( // samples by: ConfuserEx (Beds mod)
814
+ opCodes.setStrict(opCodes.calli, "FF FF FF FF") + opCodes.setStrict(opCodes.sizeof, "FF FF FF FF")
815
+ )
816
+ ) {
817
+ log(logType, "Invalid OpCodes detected, offset " + lastOffsetDetected);
818
+ invalidOpCodes = true;
819
+ }
820
+
821
+ if (invalidOpCodes) options += (options.length != 0 ? " + " : String()) + "Invalid OpCodes";
822
+
823
+
824
+
825
+
826
+ // Some protections include their own dependencies in the form of runtime libraries
827
+
828
+ var isProtectionRuntimePresent = false;
829
+
830
+ var runtimeFound = String();
831
+
832
+ const protectionsRuntime = [ // Need more
833
+ { lib: "AgileDotNet.VMRuntime.dll", name: "Agile" },
834
+ { lib: "Xerin.Runtime.dll", name: "XerinFuscator" },
835
+ { lib: "OneVM.Runtime.dll", name: "OneVM" },
836
+ { lib: "HVMRuntm.dll", name: "DNGuard" }
837
+ ];
838
+
839
+ for (var i = 0; i < protectionsRuntime.length; i++) {
840
+ const
841
+ runtimeInfo = protectionsRuntime[i],
842
+ runtimeLibraryName = runtimeInfo.lib,
843
+ protectorName = runtimeInfo.name;
844
+
845
+ if (PE.isNetObjectPresent(runtimeLibraryName) || // "runtime.dll"
846
+ PE.isNetObjectPresent(runtimeLibraryName.substring(0, runtimeLibraryName.length - 4))) { // "runtime"
847
+ log(logType.net, protectorName + " runtime detected!");
848
+ isProtectionRuntimePresent = true;
849
+ runtimeFound = protectorName;
850
+ break;
851
+ }
852
+ }
853
+
854
+ if (isProtectionRuntimePresent) options += (options.length != 0 ? " + " : String()) + runtimeFound + " runtime";
855
+
856
+
857
+
858
+
859
+ const obfuscatorsAttributes = [
860
+ "Xenocode.Client.Attributes.AssemblyAttributes.ProcessedByXenocode", // Xenocode
861
+ "CryptoObfuscator.ProtectedWithCryptoObfuscatorAttribute", // Crypto Obfuscator
862
+ "SecureTeam.Attributes.ObfuscatedByAgileDotNetAttribute", // Agile.NET
863
+ "Xenocode.Client.Attributes.AssemblyAttributes", // Xenocode
864
+ "SmartAssembly.Attributes.PoweredByAttribute", // Smart Assembly
865
+ "ObfuscatedByAgileDotNetAttribute", // Agile.NET
866
+ "NineRays.Obfuscator.Evaluation", // Spices.Net
867
+ "ObfuscatedByCliSecureAttribute", // CliSecure
868
+ "BabelObfuscatorAttribute", // Babel
869
+ "AsStrongAsFuckAttribute", // AsStrongAsFuck
870
+ "ProtectedByDotnetsafer", // DotNetSafer
871
+ "Macrobject.Obfuscator", // Macrobject
872
+ "DotfuscatorAttribute", // Dotfuscator
873
+ "CodeWallTrialVersion", // CodeWall
874
+ "ConfusedByAttribute", // ConfuserEx
875
+ "ObfuscatedByGoliath", // Goliath
876
+ "NETSpider.Attribute", // NETSpider
877
+ "NineRays.Obfuscator", // Spices.Net
878
+ "PoweredByAttribute", // Smart Assembly
879
+ "RustemSoft.Skater", // Skater
880
+ "BabelAttribute", // Babel
881
+ "MRuntime3.dll", // Maxtocode
882
+ "YanoAttribute", // Yano
883
+ "EMyPID_8234_", // Eazfuscator.NET
884
+ "ZYXDNGuarder", // DNGuard
885
+ "SkiDzEX", // ConfuserEx based
886
+ "Sixxpack", // Sixxpack
887
+ "____KILL", // CodeVeil
888
+ "Reactor", // Fake .NET Reactor
889
+ ];
890
+
891
+ var isFakeSignaturesPresent = false;
892
+
893
+ var isWatermarkPresent = false;
894
+
895
+ var signaturesCounter = 0;
896
+
897
+ var obfuscatorAttributeFound = String();
898
+
899
+ // Iterate through obfuscators attributes
900
+ for (var t = 0; t < obfuscatorsAttributes.length && !isFakeSignaturesPresent; t++) {
901
+
902
+ if (validateNetObject(obfuscatorsAttributes[t])) {
903
+ obfuscatorAttributeFound = obfuscatorsAttributes[t];
904
+ signaturesCounter++;
905
+ }
906
+
907
+ // Check if the number of detected signatures exceeds 1
908
+ if (signaturesCounter > 1) {
909
+
910
+ // Set flag indicating the presence of fake signatures
911
+ isFakeSignaturesPresent = true;
912
+ }
913
+ }
914
+
915
+ if (isFakeSignaturesPresent) {
916
+ options += (options.length != 0 ? " + " : String()) + "Fake signatures";
917
+ } else {
918
+ // "Watermark" is only possible in the absence of fake signatures
919
+
920
+ if (signaturesCounter === 1) {
921
+ log(logType.nothing, "Watermark (Attribute) found: '" + obfuscatorAttributeFound + "'");
922
+ isWatermarkPresent = true;
923
+ }
924
+
925
+ if ((!isWatermarkPresent && (
926
+ validateSignature("'Obfuscated'") ||
927
+ validateSignature("'obfuscated'") ||
928
+ validateSignature("'ByAttribute'") ||
929
+ validateSignature("'ObfuscatorAttribute'") ||
930
+ validateNetObject("ObfuscationAttribute")
931
+ )) && !isFrameworkComponent()) // System.Reflection.ObfuscationAttribute
932
+ {
933
+ isWatermarkPresent = true;
934
+ }
935
+ }
936
+
937
+ if (isWatermarkPresent) options += (options.length != 0 ? " + " : String()) + "Watermark";
938
+
939
+
940
+
941
+
942
+ const protectorsLabelsToRemove = [ // Protectors with these names will be removed from results
943
+ "SafeNet Sentinel LDK .NET",
944
+ "Xenocode Postbuild",
945
+ "Smart Assembly",
946
+ "Dotfuscator",
947
+ "Babel .NET",
948
+ "Spices.Net",
949
+ "Maxtocode",
950
+ "FISH .NET",
951
+ "CliSecure",
952
+ "CodeWall",
953
+ "CodeVeil",
954
+ "Sixxpack",
955
+ "DNGuard",
956
+ "Goliath",
957
+ "Agile",
958
+ "Yano"
959
+ ],
960
+ packersLabelsToRemove = [
961
+ "ChainskiCrypter",
962
+ "Quest PowerGUI",
963
+ "DataAnubis",
964
+ "NsPack",
965
+ "ASPack"
966
+ ],
967
+ protectionsLabelsToRemove = [
968
+ "Sentinel SuperPro dongle reference",
969
+ "Unikey/Activator dongle reference",
970
+ "Eutron SmartKey dongle reference",
971
+ "SenseLock dongle reference",
972
+ "Hardlock dongle reference",
973
+ "WIBU Key dongle reference",
974
+ "Wizzkey dongle reference",
975
+ "SoftLok dongle reference",
976
+ "NetHASP dongle reference"
977
+ ];
978
+
979
+ // Волки делают АУФ 🐺☝️
980
+
981
+ if (isFakeSignaturesPresent) {
982
+ for (var d = 0; d < protectorsLabelsToRemove.length; d++) {
983
+ _removeResult("protector", protectorsLabelsToRemove[d]);
984
+ }
985
+
986
+ for (var d = 0; d < packersLabelsToRemove.length; d++) {
987
+ _removeResult("cryptor", packersLabelsToRemove[d]);
988
+ _removeResult("packer", packersLabelsToRemove[d]);
989
+ }
990
+
991
+ for (var d = 0; d < protectionsLabelsToRemove.length; d++) {
992
+ _removeResult("protection", protectionsLabelsToRemove[d]);
993
+ }
994
+ }
995
+
996
+
997
+
998
+
999
+ if (options.length != 0) isDetected = true;
1000
+
1001
+
1002
+ if (isDetected) {
1003
+ _setResult("~protection", "Obfuscation", String(), PE.isVerbose() ? options : String());
1004
+ }
1005
+ }
1006
+
1007
+
1008
+
1009
+ function scanForAntiAnalysis_NET() {
1010
+ var options = String();
1011
+
1012
+
1013
+ // Assumes the file can detect debugging protection
1014
+
1015
+ var isAntiDebugPresent = false;
1016
+
1017
+ const debuggerObject = "Debugger", // MSIL: 'System.Diagnostics.Debugger' from System.Diagnostics.dll
1018
+ isAttached = "get_IsAttached", // MSIL: '*.Debugger::get_IsAttached()'
1019
+ isLogging = "IsLogging" // MSIL: '*.Debugger::IsLogging()'
1020
+
1021
+ if (
1022
+ (
1023
+ ( // .NET Functions
1024
+ validateNetObject(debuggerObject) || validateNetUnicodeString(debuggerObject) // Check for 'Debugger'
1025
+ ) && (
1026
+ (validateNetObject(isAttached) || validateNetUnicodeString(isAttached)) || // Check for 'get_IsAttached' property
1027
+ (validateNetObject(isLogging) || validateNetUnicodeString(isLogging)) // Check for 'IsLogging' function
1028
+ ) ||
1029
+ ( // Native (WinAPI) functions
1030
+ validateNetObject("CheckRemoteDebuggerPresent") || validateNetObject("IsDebuggerPresent") ||
1031
+ validateNetObject("NtRemoveProcessDebug") || validateNetObject("NtQueryInformationProcess")
1032
+ )
1033
+ ) && !isFrameworkComponent()
1034
+ ) {
1035
+ isAntiDebugPresent = true;
1036
+ }
1037
+
1038
+ if (isAntiDebugPresent) options += (options.length != 0 ? " + " : String()) + "Anti-debug";
1039
+
1040
+
1041
+
1042
+
1043
+ // A type of protection in which, after launching an application, it erases the headers and/or PE signature behind itself
1044
+
1045
+ var isAntiDumpPresent = false;
1046
+
1047
+ if (
1048
+ validateNetObject("VirtualProtect") && ( // from 'kernel32.dll', WinAPI
1049
+ // Need to check
1050
+ isAllNetReferencesPresent( // samples by: ConfuserEx, SkiDzEX
1051
+ references = [
1052
+ "System.Runtime.InteropServices", // System.Runtime.InteropServices.dll
1053
+ "Marshal", // MSIL: '*.Marshal::GetHINSTANCE( ... )'
1054
+ "GetHINSTANCE", // MSIL: '*.Marshal::GetHINSTANCE( ... )'
1055
+ "IntPtr", // MSIL: 'System.IntPtr'
1056
+ "op_Explicit" // MSIL: 'System.IntPtr::op_Explicit'
1057
+ ]
1058
+ ) ||
1059
+ isAllNetReferencesPresent( // samples by: Inx Obfuscator
1060
+ references = [
1061
+ "System.Diagnostics", // System.Diagnostics
1062
+ "memcpy", // from 'msvcrt.dll', WinAPI
1063
+ "IntPtr", // MSIL: 'System.IntPtr'
1064
+ "get_MainModule", // MSIL: '*.Process::get_MainModule()'
1065
+ "get_BaseAddress" // MSIL: '*.ProcessModule::get_BaseAddress()'
1066
+ ]
1067
+ ) ||
1068
+ isAllNetReferencesPresent( // samples by: MindLated
1069
+ references = [
1070
+ "System.Runtime.InteropServices", // System.Runtime.InteropServices.dll
1071
+ "Marshal", // MSIL: '*.Marshal::GetHINSTANCE( ... )'
1072
+ "GetHINSTANCE", // MSIL: '*.Marshal::GetHINSTANCE( ... )'
1073
+ "IntPtr", // MSIL: 'System.IntPtr'
1074
+ "CopyBlock",
1075
+ "InitBlock"
1076
+ ]
1077
+ )
1078
+ )
1079
+ ) {
1080
+ isAntiDumpPresent = true;
1081
+ }
1082
+
1083
+ if (isAntiDumpPresent) options += (options.length != 0 ? " + " : String()) + "Anti-dump";
1084
+
1085
+
1086
+
1087
+
1088
+ const antiDnSpyTriggers = [
1089
+ "dnspy",
1090
+ "dnSpy",
1091
+ "DNSPY"
1092
+ ];
1093
+
1094
+ var isAntiDnSpyPresent = false;
1095
+
1096
+ // Iterate through anti-DnSpy triggers
1097
+ for (var l = 0; l < antiDnSpyTriggers.length && !isAntiDnSpyPresent; l++) {
1098
+ const dnSpyName = antiDnSpyTriggers[l];
1099
+
1100
+ // Check if the signature for anti-DnSpy trigger is valid using Unicode signature mask or the original signature
1101
+ if (
1102
+ validateGlobalUnicodeString(dnSpyName) ||
1103
+ validateSignature("'" + dnSpyName + "'")
1104
+ ) {
1105
+ // Set flag indicating the presence of anti-DnSpy behavior
1106
+ isAntiDnSpyPresent = true;
1107
+ }
1108
+ }
1109
+
1110
+ if (isAntiDnSpyPresent) options += (options.length != 0 ? " + " : String()) + "Anti-dnSpy";
1111
+
1112
+
1113
+
1114
+
1115
+ const antiIlSpyTriggers = [
1116
+ "ilspy",
1117
+ "ilSpy",
1118
+ "ILSpy",
1119
+ "ILSPY"
1120
+ ];
1121
+
1122
+ var isAntiIlSpyPresent = false;
1123
+
1124
+ for (var l = 0; l < antiIlSpyTriggers.length && !isAntiIlSpyPresent; l++) {
1125
+ const ilSpyName = antiIlSpyTriggers[l];
1126
+
1127
+ if (
1128
+ validateGlobalUnicodeString(ilSpyName) ||
1129
+ validateSignature("'" + ilSpyName + "'")
1130
+ ) {
1131
+ isAntiIlSpyPresent = true;
1132
+ }
1133
+ }
1134
+
1135
+ if (isAntiIlSpyPresent) options += (options.length != 0 ? " + " : String()) + "Anti-ILSpy";
1136
+
1137
+
1138
+
1139
+
1140
+ const sbieVariants = [
1141
+ "sbiedll.",
1142
+ "SbieDll.",
1143
+ "SBIEDLL."
1144
+ ];
1145
+
1146
+ var isAntiSbiePresent = false;
1147
+
1148
+ // Check if the signature for 'GetModuleHandle' is present
1149
+ if (validateSignature("'GetModuleHandle'")) { // from 'kernel32.dll') {
1150
+ // Iterate through Sandboxie variants
1151
+ for (var l = 0; l < sbieVariants.length && !isAntiSbiePresent; l++) {
1152
+ const sbieLib = sbieVariants[l];
1153
+
1154
+ // Check if the signature for Sandboxie variant is valid using Unicode signature mask or the original signature
1155
+ if (
1156
+ validateGlobalUnicodeString(sbieLib) ||
1157
+ validateSignature("'" + sbieLib + "'")
1158
+ ) {
1159
+ // Set flag indicating the presence of anti-Sandboxie behavior
1160
+ isAntiSbiePresent = true;
1161
+ }
1162
+ }
1163
+ }
1164
+
1165
+ if (isAntiSbiePresent) options += (options.length != 0 ? " + " : String()) + "Anti-SandBoxie";
1166
+
1167
+
1168
+
1169
+
1170
+ var isAntiVmPresent = false;
1171
+
1172
+ if (validateNetUnicodeString("vmware") || validateNetUnicodeString("VirtualBox")) {
1173
+ isAntiVmPresent = true;
1174
+ }
1175
+
1176
+ if (isAntiVmPresent) options += (options.length != 0 ? " + " : String()) + "Anti-VM";
1177
+
1178
+
1179
+
1180
+
1181
+ if (options.length != 0) {
1182
+ _setResult("~protection", "Anti analysis", String(), PE.isVerbose() ? options : String());
1183
+ }
1184
+ }
1185
+
1186
+
1187
+
1188
+ /**
1189
+ * Checks if the Portable Executable (PE) file is a .NET assembly.
1190
+ *
1191
+ * This function determines if the PE file is a .NET assembly by verifying the following:
1192
+ * 1. The PE file is identified as a .NET assembly.
1193
+ * 2. The PE file has the "KERNEL32.DLL" library present.
1194
+ * 3. The PE file has a global .cctor (class constructor) method present.
1195
+ *
1196
+ * @returns {boolean} True if the PE file is a .NET assembly, otherwise false.
1197
+ */
1198
+ function isClrNET() {
1199
+ return PE.isNET() && PE.isLibraryPresent("KERNEL32.DLL") && PE.isNetGlobalCctorPresent();
1200
+ }
1201
+
1202
+
1203
+
1204
+ // .NET OpCodes for static emulations
1205
+
1206
+ function NetOpCodes() {
1207
+ this.add = "58"; // MSIL: 'add'
1208
+ this.sub = "59"; // MSIL: 'sub'
1209
+ this.mul = "5A"; // MSIL: 'mul'
1210
+ this.and = "5F"; // MSIL: 'and'
1211
+ this.bne_un = "40????????"; // MSIL: 'bne.un'
1212
+ this.bne_un_s = "3309"; // MSIL: 'bne.un.s'
1213
+ this.br = "38????????"; // MSIL: 'br'
1214
+ this.br_s = "2B??"; // MSIL: 'br.s'
1215
+ this.brfalse = "39????????"; // MSIL: 'brfalse'
1216
+ this.brfalse_s = "2C??"; // MSIL: 'brfalse.s'
1217
+ this.brtrue = "3A????????"
1218
+ this.call = "28????????"; // MSIL: 'call'
1219
+ this.calli = "29????????"; // MSIL: 'calli'
1220
+ this.ceq = "FE01"; // MSIL: 'ceq'
1221
+ this.div = "5B"; // MSIL: 'div'
1222
+ this.dup = "25"; // MSIL: 'dup'
1223
+ this.idelem_i = "97"; // MSIL: 'idelem.i'
1224
+ this.ldc_i4 = "20????????"; // MSIL: 'ldc.i4'
1225
+ this.ldc_i4_0 = "16"; // MSIL: 'ldc.i4.0'
1226
+ this.ldc_i4_1 = "17"; // MSIL: 'ldc.i4.1'
1227
+ this.ldc_i4_2 = "18"; // MSIL: 'ldc.i4.2'
1228
+ this.ldc_i4_3 = "19"; // MSIL: 'ldc.i4.2'
1229
+ this.ldc_i4_4 = "1A"; // MSIL: 'ldc.i4.4'
1230
+ this.ldc_i4_s = "1F??"; // MSIL: 'ldc.i4.s'
1231
+ this.ldftn = "FE06????????"; // MSIL: 'ldftn'
1232
+ this.ldloc = "FE??????"; // MSIL: 'ldloc'
1233
+ this.ldloc_0 = "06"; // MSIL: 'ldloc.0'
1234
+ this.ldloc_1 = "07"; // MSIL: 'ldloc.1'
1235
+ this.ldloc_2 = "08"; // MSIL: 'ldloc.2'
1236
+ this.ldloc_3 = "09"; // MSIL: 'ldloc.3'
1237
+ this.ldloc_s = "11??"; // MSIL: 'ldloc.s'
1238
+ this.ldsfld = "7E????????"; // MSIL: 'ldsfld'
1239
+ this.ldstr = "72????????"; // MSIL: 'ldstr'
1240
+ this.ldelem_u4 = "95"; // MSIL: 'ldelem.u4'
1241
+ this.nop = "00"; // MSIL: 'nop'
1242
+ this.not = "66"; // MSIL: 'not'
1243
+ this.neg = "65"; // MSIL: 'neg'
1244
+ this.or = "60"; // MSIL: 'or'
1245
+ this.pop = "26"; // MSIL: 'pop'
1246
+ this.ret = "2A"; // MSIL: 'ret'
1247
+ this.rem_un = "5E"; // MSIL: 'rem.un'
1248
+ this.shl = "62"; // MSIL: 'shl'
1249
+ this.shr = "63"; // MSIL: 'shr'
1250
+ this.sizeof = "FE1C????????"; // MSIL: 'sizeof'
1251
+ this.stloc = "FE0E????"; // MSIL: 'stloc'
1252
+ this.stloc_0 = "0A"; // MSIL: 'stloc.0'
1253
+ this.stloc_1 = "0B"; // MSIL: 'stloc.1'
1254
+ this.stloc_2 = "0C"; // MSIL: 'stloc.2'
1255
+ this.stloc_3 = "0D"; // MSIL: 'stloc.3'
1256
+ this.stloc_s = "13??"; // MSIL: 'stloc.s'
1257
+ this.shr_un = "64"; // MSIL: 'shr.un'
1258
+ this.xor = "61"; // MSIL: 'xor'
1259
+ this.stelem_i = "9B"; // MSIL: 'stelem.i'
1260
+ this.stelem_i1 = "9C"; // MSIL: 'stelem.i1'
1261
+ this.stelem_i4 = "9E"; // MSIL: 'stelem.i4'
1262
+ this.box = "8C????????"; // MSIL: 'box'
1263
+
1264
+ this.switch__nobody = "45"; // MSIL: 'switch'
1265
+ this._unknown = "**"; // Unknown opcode
1266
+ this._any = "??"; // Any opcode
1267
+
1268
+
1269
+
1270
+ // setStrict sets the strict value of the opcode for substitution
1271
+ // btw I like what I do
1272
+ this.setStrict = function(opCodeMask, value) {
1273
+ // Remove spaces from opcode mask and value
1274
+ opCodeMask = removeSpaces(opCodeMask);
1275
+ value = removeSpaces(value);
1276
+
1277
+ // Find the index of the special pattern "??" in the opcode mask
1278
+ var indexOfSpecialPattern = opCodeMask.indexOf("??");
1279
+
1280
+ // Check if the opcode mask has a body (contains the special pattern "??")
1281
+ var isOpCodeMaskHasBody = indexOfSpecialPattern !== -1; // -1 if not found
1282
+
1283
+ // Extract the opcode in hexadecimal
1284
+ var opCodeInHex = isOpCodeMaskHasBody ? opCodeMask.substr(0x00, indexOfSpecialPattern) : opCodeMask;
1285
+
1286
+ // Check if the opcode mask has a body and the length of the body matches the length of the value
1287
+ if (isOpCodeMaskHasBody && opCodeMask.substr(opCodeInHex.length).length != value.length) {
1288
+ _error("The size of the input values does not match.");
1289
+ }
1290
+
1291
+ // Combine the opcode in hexadecimal with the value
1292
+ return opCodeInHex + value;
1293
+ }
1294
+
1295
+ // Sets the mask value to zero for the specified opcode
1296
+ this.setNullValue = function(opCodeMask) {
1297
+
1298
+ if (opCodeMask.indexOf("??") === -1) {
1299
+ _error("Instruction does not have a body to overwrite the value.");
1300
+ }
1301
+
1302
+ return replaceAllInString(opCodeMask, "??", "00");
1303
+ }
1304
+ }
1305
+
1306
+
1307
+
1308
+ /**
1309
+ * Removes all spaces from the given input string.
1310
+ *
1311
+ * @param {string} inputString - The string from which spaces will be removed.
1312
+ * @returns {string} - The input string without any spaces.
1313
+ */
1314
+ function removeSpaces(inputString) {
1315
+ return inputString.split(" ").join("");
1316
+ }
1317
+
1318
+
1319
+
1320
+ /**
1321
+ * Replaces all occurrences of a specified substring within a given string with a new substring.
1322
+ *
1323
+ * @param {string} inputString - The original string in which to perform the replacements.
1324
+ * @param {string} search - The substring to search for within the input string.
1325
+ * @param {string} replacement - The substring to replace each occurrence of the search substring with.
1326
+ * @returns {string} - The modified string with all occurrences of the search substring replaced by the replacement substring.
1327
+ */
1328
+ function replaceAllInString(inputString, search, replacement) {
1329
+ while (inputString.indexOf(search) !== -1) {
1330
+ inputString = inputString.replace(search, replacement)
1331
+ }
1332
+
1333
+ return inputString;
1334
+ }
1335
+
1336
+
1337
+
1338
+ function clearSectionName(sectionName) {
1339
+ if (sectionName.length > 0 && sectionName.trim() === String()) {
1340
+ return sectionName;
1341
+ }
1342
+
1343
+ return sectionName.trim();
1344
+ }
1345
+
1346
+
1347
+
1348
+ // This feature was originally intended only for .NET, but
1349
+ // now partially works with Native files.
1350
+
1351
+ function scanForPackersAndCryptors_NET_and_Native() { // For .NET and Native apps
1352
+ var options = String();
1353
+
1354
+ var isDetected = Boolean(),
1355
+ isCryptor = Boolean();
1356
+
1357
+
1358
+
1359
+
1360
+ if (PE.isNET()) {
1361
+
1362
+ var isAssemblyInvokeFound = false;
1363
+
1364
+ if (isAllNetReferencesPresent( // TODO: update [!!!]
1365
+ references = [
1366
+ "System.Reflection", // System.Reflection.dll
1367
+ "get_EntryPoint", // MSIL: '*.Assembly::get_EntryPoint()'
1368
+ "Assembly", // MSIL: 'System.Reflection.Assembly' from System.Reflection.dll
1369
+ "Invoke", // MSIL: '*.MethodBase::Invoke(object, object[])'
1370
+ "Load" // MSIL: '*.Assembly::Load(uint8[])'
1371
+ ]
1372
+ )) {
1373
+ isAssemblyInvokeFound = true;
1374
+
1375
+ options = "Assembly invoke";
1376
+ }
1377
+
1378
+
1379
+
1380
+
1381
+ // Check if any class from System.Security.Cryptography namespace is used (non-full name) - for cryptors
1382
+ if (findAndMark("System.Security.Cryptography", isFullName = false) != String()) {
1383
+
1384
+ // Specify cryptography classes to look for
1385
+ const cryptoClasses = [
1386
+ "TripleDESCryptoServiceProvider",
1387
+ "RSACryptoServiceProvider",
1388
+ "DSACryptoServiceProvider",
1389
+ "DESCryptoServiceProvider",
1390
+ "AesCryptoServiceProvider",
1391
+ "Rfc2898DeriveBytes",
1392
+ "SHA256Managed",
1393
+ "TripleDES",
1394
+ "Rijndael",
1395
+ "ECDsaCng",
1396
+ "AesAEAD",
1397
+ "Aes192Cbc",
1398
+ "Aes256Cbc",
1399
+ "Aes128Cbc",
1400
+ "AesManaged",
1401
+ "AesCng",
1402
+ "SHA256",
1403
+ "SHA512",
1404
+ "SHA1CryptoServiceProvider",
1405
+ "SHA512CryptoServiceProvider",
1406
+ "RC2CryptoServiceProvider",
1407
+ "SHA384CryptoServiceProvider",
1408
+ // "MD5CryptoServiceProvider",
1409
+ "SHA256CryptoServiceProvider",
1410
+ "RNGCryptoServiceProvider"
1411
+ ];
1412
+
1413
+ // Iterate through cryptography classes
1414
+ for (var i = 0; i < cryptoClasses.length && !isCryptor; i++) {
1415
+ var cryptoClassSign = cryptoClasses[i],
1416
+ result = findAndMark(
1417
+ sign = cryptoClassSign,
1418
+ isFullName = true
1419
+ );
1420
+
1421
+ // Check if assembly invoke is found and the cryptography class is present
1422
+ if (isAssemblyInvokeFound && result.length != 0) {
1423
+ log(logType.net, "Crypto class present: " + cryptoClassSign);
1424
+
1425
+ isCryptor = true;
1426
+
1427
+ // Add the cryptography class to options
1428
+ options += (options.length != 0 ? " + " : String()) + cryptoClassSign;
1429
+ }
1430
+ }
1431
+ }
1432
+
1433
+
1434
+
1435
+
1436
+ // Check if any class from System.IO.Compression namespace is used (non-full name)
1437
+ if (findAndMark("System.IO.Compression", isFullName = false).length != 0) {
1438
+
1439
+ // Specify compression classes to look for
1440
+ const compressionClasses = [
1441
+ "DeflateStream",
1442
+ "GZipStream"
1443
+ ];
1444
+
1445
+ // Iterate through compression classes
1446
+ for (var i = 0; i < compressionClasses.length; i++) {
1447
+ var compressionClassSign = compressionClasses[i],
1448
+ result = findAndMark(compressionClassSign, isFullName = true);
1449
+
1450
+ // Check if assembly invoke is found and the compression class is present
1451
+ if (isAssemblyInvokeFound && result.length != 0) {
1452
+ log(logType.net, "Compression class present: " + compressionClassSign);
1453
+
1454
+ // If it's a cryptor, add the compression class to options
1455
+ if (isCryptor) options += (options.length != 0 ? " + " : String()) + compressionClassSign;
1456
+
1457
+ // Break the loop if a match is found
1458
+ break;
1459
+ }
1460
+ }
1461
+ }
1462
+ }
1463
+
1464
+
1465
+ // Self-Extracting archives
1466
+ // TODO: Upgrade
1467
+
1468
+ var isSfx = false;
1469
+
1470
+ if (!PE.isDll() && PE.isOverlayPresent()) {
1471
+ const overlayPatterns = [
1472
+ "'Rar!'", // samples by: WinRAR
1473
+ "'PK'03", // samples by: Zip SFX (by Intel)
1474
+ "';!@Install@!UTF-8!'", "'7z'BCAF271C", "efbbbf';!@Install@!UTF-8!'" // samples by: 7z
1475
+ ]
1476
+
1477
+ for (var l = 0; l < overlayPatterns.length; l++) {
1478
+ if (PE.compareOverlay(overlayPatterns[l])) {
1479
+ log(logType.nothing, "SFX overlay pattern: " + overlayPatterns[l]);
1480
+ isSfx = true;
1481
+ }
1482
+ }
1483
+
1484
+
1485
+ if (!isSfx && !PE.isNET()) {
1486
+ const sfxEntries = [
1487
+ // "e8$$$$$$$$558bec83ec..a1........8365....8365....5357bf........3bc7bb........74..85c374..f7d0", // samples by: WinZip
1488
+ // "558bec6a..68........68........64a1........50648925........83....5356578965..ff15", // samples by: Zip SFX
1489
+ // "e8$$$$$$$$558bec83ec..8365....8365....a1........5657bf........be........3bc7", // samples by: WinRAR Installer
1490
+ // "e8$$$$$$$$8bff558bec83ec..a1........8365....8365....5357bf........bb", // samples by: Zip SFX
1491
+ // "558bec83c4..b8........e8........33c05568........64ff30648920e8", // samples by: Zip SFX
1492
+ "4883ec..e8$$$$$$$$48895c24..55488bec4883ec..488365....48bb................488b05........483bc375", // samples by: WinRAR Installer
1493
+ "83ec..5657ff15........8bf08d4424..50c74424..........ff15........8a068b3d........3c..75..56ffd7", // samples by: Zip SFX
1494
+ "e9$$$$$$$$558bec81ec........830d..........5356576a..33dbbf........68........895d..881d", // samples by: Microsoft Cabinet
1495
+ "558bec83ec..56ff15........8bf08a003c..75..84c074..803e..74..46803e..75..803e..75..46eb", // samples by: Zip SFX
1496
+ "6a..33c0505050ff15........50e8$$$$$$$$55b8........8bece8........53b9........5657be", // samples by: Zip SFX
1497
+ "6a..68........e8........66813d............75..a1........81b8................75..", // samples by: Microsoft Cabinet
1498
+ "558bec83ec..565733ffff15........8bf0897d..8d45..50ff15........8a063c..75..56ff15", // samples by: Zip SFX
1499
+ "51526a..2eff15........506a..6a..2eff15........50e8........502eff15........5a59c3", // samples by: WinIMP
1500
+ "558bec81ec........535657ff15........a3........ff15........a1........6625....3d", // samples by: Microsoft Cabinet
1501
+ "558becb8........e8........5356be........578d45..5633db5053ff15........85c00f84", // samples by: Zip SFX
1502
+ "a1........c1e0..a3........575133c0bf........b9........3bcf76..2bcffcf3aa595f", // samples by: WinRAR Installer
1503
+ "558bec83c4..5356e8$$$$$$$$e8........6a..e8........8905........e8........8905", // samples by: Zip SFX
1504
+ "ff15........b1..380874..b1..4080....74..380874..4080....75..80....74..4033", // samples by: WinZip
1505
+ "53ff15........b3..38..74..80c3..4033d28a083aca74..3acb74..408a083aca75", // samples by: WinZip
1506
+ "558bec83c4..535657e8........e8........33c05568........64ff30648920e8", // samples by: WinRAR
1507
+ "53ff15........b3..38..74..80c3..8a48..4033d23aca74..3acb74..8a48..40", // samples by: WinZip
1508
+ "e8$$$$$$$$53bb........e8........85c074..33d28a1083fa..75..40eb", // samples by: WinRAR
1509
+ "fffe2a002a002a006d0065007300730061006700650073002a002a002a00", // samples by: WinRAR Installer
1510
+ "e8$$$$$$$$558bec83c4..b8........53", // samples by: WinRAR Installer
1511
+ "8A48014033D23ACA740A3ACB74068A4801" // samples by: WinZip
1512
+ ]
1513
+
1514
+ if (PE.isSectionNamePresent("_winzip_")) {
1515
+ isSfx = true;
1516
+ }
1517
+
1518
+ for (var k = 0; k < sfxEntries.length; k++) {
1519
+ if (PE.compareEP(sfxEntries[k])) {
1520
+ log(logType.nothing, "SFX entry pattern: " + sfxEntries[k]);
1521
+
1522
+ isSfx = true;
1523
+ }
1524
+ }
1525
+ }
1526
+ }
1527
+
1528
+ if (isSfx) options += (options.length != 0 ? " + " : String()) + "SFX";
1529
+
1530
+
1531
+
1532
+
1533
+ var entryLikePacker = false;
1534
+
1535
+ if (!PE.isDll()) {
1536
+ const entries = [
1537
+ "53565755488D35........488DBE", // samples by: UPX (x64)
1538
+ "B8........68........64", // samples by: Petite (x32)
1539
+ "60..................E8", // samples by: Anticrack Software (x32)
1540
+ "33C08BC068........68", // samples by: ExE Pack (x32)
1541
+ "74..E9........60E8", // samples by: PE-PACK
1542
+ "EB0668........C39C", // samples by: PECompact (x32)
1543
+ "93071F05....8ED0BC", // samples by: aPack (x32)
1544
+ "60BE........8DBE", // samples by: UPX (x32)
1545
+ "B8........6A..68", // samples by: Petite (x32)
1546
+ "BE........AD8BF8", // samples by: WinUPack (x32)
1547
+ "68........9C60E8", // samples by: XComp, XPACK (x32)
1548
+ "53558BE833DBEB60", // samples by: WWPack (x32)
1549
+ "BD........C745", // samples by: kkrunchy (x32)
1550
+ "57565351524150", // samples by: mpress (x64)
1551
+ "B8........5064", // samples by: PECompact (x32)
1552
+ "8CCBBA....03DA", // // samples by: aPack (x32)
1553
+ "B8........669C", // samples by: Petite, Themida (x32)
1554
+ "8CC0FA8ED0BC", // samples by: PACKWIN (x32)
1555
+ "B8........60", // samples by: Petite, Themida (x32)
1556
+ "8B44240456", // samples by: ASDPack (x32)
1557
+ "1E068CC88E", // samples by: aPack (x32)
1558
+ "1E068CCBBA", // samples by: aPack (x32)
1559
+ "EB..9C60E8", // samples by: PECompact (x32)
1560
+ "9C60E8CA", // samples by: Petite (x??)
1561
+ "60FCBED4", // samples by: ANDPakk (x32)
1562
+ "60EB..5D", // samples by: ASPack (x32)
1563
+ "60EB..E8", // samples by: G!X Protector
1564
+ "64FF35", // samples by: Petite (x32)
1565
+ "6033C0", // samples by: yzPack (x32)
1566
+ "669C60", // samples by: Petite (x??)
1567
+ "EB..60", // samples by: kkryptor, dePACK (x32)
1568
+ "60E8", // samples by: mpress, Packman, Pack Master, Yodas Crypter, DxPack, ASPack, MSLRH, tElock (x32)
1569
+ "6068" // samples by: BeRo, ExE Pack, AHPacker (x32)
1570
+ ];
1571
+
1572
+ // Iterate through the entries to check against the entry point
1573
+ for (var e = 0; e < entries.length && !entryLikePacker; e++) {
1574
+ const entryToCheck = entries[e];
1575
+
1576
+ // If the entry point matches the current entry, set the flag to true and break the loop
1577
+ if (PE.compareEP(entryToCheck)) {
1578
+ log(logType.nothing, "EP like a packer: '" + entryToCheck + "'");
1579
+
1580
+ entryLikePacker = true;
1581
+ }
1582
+ }
1583
+ }
1584
+
1585
+ if (entryLikePacker) options += (options.length != 0 ? " + " : String()) + "EntryPoint";
1586
+
1587
+
1588
+
1589
+
1590
+ // Check if the entry point is in the last section
1591
+
1592
+ var isLastSectionEP = false;
1593
+
1594
+ if (!PE.isDll()) {
1595
+ if (PE.getNumberOfSections() > 1) {
1596
+ // Get addresses of the last section and entry point
1597
+
1598
+ var lastSectionAddress = -1,
1599
+ entryPointAddress = -1;
1600
+
1601
+
1602
+ // Get last section with non -1 address
1603
+ for (var i = 1; lastSectionAddress == -1; i++) {
1604
+ lastSectionAddress = PE.OffsetToVA(PE.getSectionFileOffset(PE.getNumberOfSections() - i));
1605
+ }
1606
+ entryPointAddress = PE.getAddressOfEntryPoint();
1607
+
1608
+
1609
+ // Check if the entry point is greater than or equal to the last section address
1610
+ if (entryPointAddress >= lastSectionAddress) {
1611
+ isLastSectionEP = true;
1612
+ log(logType.nothing, "EP address (" + entryPointAddress + ") more than last section address (" + lastSectionAddress + ")");
1613
+ }
1614
+ }
1615
+ }
1616
+
1617
+ if (isLastSectionEP) options = "Last section EP";
1618
+
1619
+
1620
+
1621
+
1622
+ // Check for strange calls if entry point is in the last section
1623
+
1624
+ var isStrangeCalls = false;
1625
+
1626
+ if (!PE.isDll()) {
1627
+ if (isLastSectionEP && getAsmOpCode(getAsmInstructionByIndex(1)) === "CALL") {
1628
+ log(logType.nothing, "Strange call to address: " + getAsmInstructionByIndex(1).split(" ")[1]);
1629
+ isStrangeCalls = true;
1630
+ }
1631
+ }
1632
+
1633
+ if (isStrangeCalls) options += (options.length != 0 ? " + " : String()) + "Strange call";
1634
+
1635
+
1636
+
1637
+
1638
+ var isImportsLikePacker = false;
1639
+
1640
+ // ["Name", "Version", ImportLibraryIndex, Hash]
1641
+ // If {ImportLibraryIndex} is -1, it means the hash has no index
1642
+
1643
+ var dbCollectionOfHashesDictionary = [
1644
+ // packers
1645
+ ["UPX", "0.59-0.93", 0, 0xd4fdcab1],
1646
+ ["UPX", "0.94-1.93", 0, 0x1d51299a],
1647
+ ["UPX", "1.94-2.03", 0, 0xb3318086],
1648
+ ["UPX", "1.94-2.03", 0, 0x3778aab9],
1649
+ ["UPX", "2.90-3.XX", 0, 0xf375ee03],
1650
+ ["UPX", "2.90-3.XX", 0, 0xf737d853],
1651
+ ["UPX", "3.91+", 0, 0xf737d853],
1652
+ ["UPX", "3.91+", -1, 0x82a048fc],
1653
+ ["UPX", "3.91+", -1, 0x554a1748],
1654
+ ["NSPACK", null, 0, 0xf375ee03],
1655
+ ["ASPack", "1.XX-2.XX", 0, 0x1272f45b],
1656
+ ["MKFPACK", null, 0, 0x42b3e7f9],
1657
+ ["MPRESS", null, 0, 0x174efb84],
1658
+ ["PACKMAN", "0.0.0.1", 0, 0x174efb84],
1659
+ ["PACKMAN", "1.0", 0, 0x69076a83],
1660
+ ["PECompact", "0.90-0.91", -1, 0xbea416d1],
1661
+ ["PECompact", "0.92-0.94", -1, 0x93312c2e],
1662
+ ["PECompact", "0.97-0.971b", -1, 0xe6aa8495],
1663
+ ["PECompact", "0.975-1.10b3", -1, 0x29188619],
1664
+ ["PECompact", "1.10b7-1.34", -1, 0xe4c11305],
1665
+ ["PECompact", "1.30-1.40", 0, 0x9b3305ed],
1666
+ ["PECompact", "1.40-1.84", 0, 0xcc5b2a3c],
1667
+ ["PECompact", "2.40-3.XX", 0, 0x2652ce4f],
1668
+ ["PECompact", "2.40-3.XX", -1, 0xdb8fbb75],
1669
+ ["EXE32PACK", "1.3X-1.4X", 0, 0x174efb84],
1670
+ ["tElock", "1.0", -1, 0x051946f7],
1671
+ ["JDPACK", "2.00", 0, 0xc002db0e],
1672
+ ["CRINKLER", null, 0, 0x0b0e1fbf],
1673
+ ["WinUpack", null, -1, 0x29188619],
1674
+ ["YodasCrypter", "1.X", -1, 0x1303a51b],
1675
+ ["XComp", "0.97-0.98", -1, 0xea1e66e4],
1676
+ ["XPack", "0.97-0.98", -1, 0x2ac44dd2],
1677
+ ["kkrunchy", null, -1, 0x29188619],
1678
+ ["ANDPakk2", "0.18", -1, 0x29188619],
1679
+ // protectors
1680
+ ["ASProtect", "1.XX-2.XX", 0, 0x1272f45b],
1681
+ ["SHRINKER", "3.2", 0, 0xb2a64858],
1682
+ ["SHRINKER", "3.2", 0, 0x158af2d0],
1683
+ ["SHRINKER", "3.2", 0, 0x49e8aa1f],
1684
+ ["SHRINKER", "3.5", 0, 0xe9ea0851],
1685
+ ["SHRINKER", "3.5", 0, 0x3344b95d],
1686
+ ["SHRINKER", "3.5", 0, 0x586088f3],
1687
+ ["Enigma", "1.00-3.60", 0, 0xc002db0e],
1688
+ ["Enigma", "2.XX", 0, 0xdd92de10],
1689
+ ["Enigma", "3.70+", 0, 0xd04c7a50],
1690
+ ["PCGUARD", "5.04-5.05", 0, 0x5a169c7a],
1691
+ ["PCGUARD", "5.04-5.05", 0, 0x0b0b2965],
1692
+ ["eXPressor", "1.2", -1, 0x66b35c6e],
1693
+ ["eXPressor", "1.2", -1, 0x32f4466c],
1694
+ ["eXPressor", "1.3", -1, 0x921d0280],
1695
+ ["eXPressor", "1.3", -1, 0xf51eba68],
1696
+ ["eXPressor", "1.3", -1, 0xbc84ce09],
1697
+ ["eXPressor", "1.4.5.X", 0, 0x427816ab],
1698
+ ["eXPressor", "1.4.5.X", -1, 0x3c705cae],
1699
+ ["eXPressor", "1.4.5.X", -1, 0x4d02e093],
1700
+ ["eXPressor", "1.4.5.X", -1, 0x958a9ea2], // VB6
1701
+ ["eXPressor", "1.5.0.X", -1, 0x7ababb5a],
1702
+ ["eXPressor", "1.5.0.X", -1, 0x95ca15e4],
1703
+ ["eXPressor", "1.5.0.X", -1, 0xbd41da20],
1704
+ ["eXPressor", "1.6", -1, 0xca58fa0c],
1705
+ ["eXPressor", "1.6.1", -1, 0x48ffd359],
1706
+ ["VMProtect", "1.70", -1, 0x1ff3103f],
1707
+ // ["VMProtect", "1.70", -1, 0x0c16df2d],
1708
+ ["VMProtect", "2.0.3-2.13", -1, 0x9d12b153],
1709
+ ["VMProtect", "3.0.0", -1, 0x1e5500c1],
1710
+ ["VMProtect", "3.0.9", -1, 0xc5fb6a4b],
1711
+ ["VMProtect", "3.2.0-3.5.0", -1, 0x5caa99c7],
1712
+ ["YodasProtector", "1.0b", -1, 0x1303a51b],
1713
+ ["ASM Guard", "2.XX+", -1, 0xf1e0d63b],
1714
+ ["Themida", "2.XX-3.XX", 0, 0x3ffccc8a],
1715
+ ["Amber", null, -1, 0x97c72051],
1716
+ [".NET Reactor", null, 0, 0x96be8e26],
1717
+ [".NET Reactor", null, 1, 0xb4cda32f],
1718
+ ["Bat To Exe Converter", null, 0, 0x72a2ca64],
1719
+ ["Vbs To Exe Converter", null, 0, 0x182aac68],
1720
+ ["DNGuard", null, 0, 0x38432571],
1721
+ ["DNGuard", "4.9+", 0, 0x99f8b58e]
1722
+ ];
1723
+
1724
+ const importValidatingResult = validateImportHashes(dbCollectionOfHashesDictionary);
1725
+
1726
+ var versionByImportsDetected;
1727
+
1728
+ if (importValidatingResult != null) {
1729
+ versionByImportsDetected = importValidatingResult[1];
1730
+
1731
+ log(logType.nothing, "Imports hash like " + importValidatingResult[0] + (versionByImportsDetected ? " (version " + versionByImportsDetected + ")" : String()) + " (" + importValidatingResult[3] + ")")
1732
+ isImportsLikePacker = true;
1733
+ }
1734
+
1735
+ // Clean up: release the dictionary
1736
+ dbCollectionOfHashesDictionary = undefined;
1737
+
1738
+ if (isImportsLikePacker) options += (options.length != 0 ? " + " : String()) + "Imports like " + importValidatingResult[0] + (versionByImportsDetected ? " (v" + importValidatingResult[1] + ")" : String());
1739
+
1740
+
1741
+
1742
+
1743
+ var isSectionNameLikePacker = false;
1744
+
1745
+ var dbCollectionOfSectionNamesDictionary = [
1746
+ ["UPX", null, "UPX0"],
1747
+ ["UPX", null, "UPX1"],
1748
+ ["UPX", null, "UPX2"],
1749
+ ["UPX", null, "UPX3"],
1750
+ ["VMProtect", null, ".vmp"],
1751
+ ["VMProtect", null, ".vmp0"],
1752
+ ["VMProtect", null, ".vmp1"],
1753
+ ["VMProtect", null, ".vmp2"],
1754
+ ["VMProtect", null, ".vmp3"],
1755
+ ["ASPack", "1.08-2.XX", ".adata"],
1756
+ ["ASPack", "2.XX", ".aspack"],
1757
+ ["Petite", null, ".petite"],
1758
+ ["Petite", null, "petite"],
1759
+ ["Enigma", null, ".enigma1"],
1760
+ ["Enigma", null, ".enigma2"],
1761
+ [".NET Reactor", "2.XX", ".reacto"],
1762
+ ["Themida", "3.X", ".imports"],
1763
+ ["Themida", "3.X", ".themida"],
1764
+ ["Themida", "3.X", ".winlice"],
1765
+ ["Themida", "3.X", ".loadcon"],
1766
+ ["Themida", "2.XX", " "],
1767
+ ["Themida", null, ".stub01"],
1768
+ ["ASM Guard", "2.XX", "ASMGUARD"],
1769
+ ["ASM Guard", "2.XX", ".asmg"],
1770
+ ["tElock", null, "UPX!"], // ???
1771
+ ["YodasProtector", "1.0b", ".yP"],
1772
+ ["YodasCrypter", "1.X", "yC"],
1773
+ ["MPRESS", null, ".MPRESS1"],
1774
+ ["MPRESS", null, ".MPRESS2"],
1775
+ ["DxPack", "1.0", "coderpub"],
1776
+ ["SafeNet", null, ".AKS1"],
1777
+ ["SafeNet", null, ".AKS2"],
1778
+ ["SafeNet", null, ".AKS3"],
1779
+ ["Alienyze", null, ".alien"],
1780
+ ["PECompact", null, "pec"],
1781
+ ["PECompact", null, "pec1"],
1782
+ ["RLP", null, ".rlp"],
1783
+ [".NET Reactor", null, ".reacto"],
1784
+ ["StarForce", "4.X-5.X", ".ps4"],
1785
+ ["StarForce", "3.X", ".sforce3"],
1786
+ ["Safengine Shielden", null, ".sedat"],
1787
+ ["VirtualizeProtect", null, "VProtect"],
1788
+ ["Krypton", null, "YADO"],
1789
+ ["NsPack", null, "nsp0"],
1790
+ ["NsPack", null, "nsp1"],
1791
+ ["nPack", null, ".nPack"],
1792
+ ["JDPack", null, ".jdpack"],
1793
+ ["SC Pack", null, ".scpack"],
1794
+ ["Simple Pack", null, ".spack"],
1795
+ ["Eronana", null, ".packer"],
1796
+ ["PE-SHiELD", null, "PESHiELD"],
1797
+ ["SVK Protector", null, "SVKP"],
1798
+ ["obfus.h", null, ".obfh"],
1799
+ ["Warbird", null, "?g_Encry"],
1800
+ ["ACProtect", null, ".perplex"],
1801
+ ["Software Compress", null, "SoftComp"],
1802
+ ["RLPack", null, ".RLPack"],
1803
+ ["CodeVirtualizer", null, ".vlizer"],
1804
+ ["DYAMAR", "1.3.5", ".dyamarC"],
1805
+ ["hmimys", "1.3", "hmimys"],
1806
+ ["Morphnah", "1.0.X", ".nah"]
1807
+ ];
1808
+
1809
+ const sectionNamesValidatingResult = validateSectionNames(dbCollectionOfSectionNamesDictionary);
1810
+
1811
+ var versionBySectionDetected;
1812
+
1813
+ if (sectionNamesValidatingResult != null) {
1814
+ versionBySectionDetected = sectionNamesValidatingResult[1];
1815
+
1816
+ log(logType.nothing, "Sections like " + sectionNamesValidatingResult[0] + (versionBySectionDetected ? " (v" + versionBySectionDetected + ")" : String()));
1817
+ isSectionNameLikePacker = true;
1818
+ }
1819
+
1820
+ // Clean up: release the dictionary
1821
+ dbCollectionOfSectionNamesDictionary = undefined;
1822
+
1823
+ if (isSectionNameLikePacker) options += (options.length != 0 ? " + " : String()) + "Sections like " + sectionNamesValidatingResult[0] + (versionBySectionDetected ? " (v" + sectionNamesValidatingResult[1] + ")" : String());
1824
+
1825
+
1826
+
1827
+
1828
+ // Check if there is a collision in sections
1829
+
1830
+ var isCollisionInSectionsPresent = false;
1831
+
1832
+ // Get section name collision between "0" and "1"
1833
+ const sectionNameCollision = PE.getSectionNameCollision("0", "1");
1834
+
1835
+ // Check if there is a collision
1836
+ if (sectionNameCollision.length != 0) {
1837
+ log(logType.nothing, "Section names collision: '" + sectionNameCollision + "'");
1838
+ isCollisionInSectionsPresent = true;
1839
+ }
1840
+
1841
+ if (isCollisionInSectionsPresent) options += (options.length != 0 ? " + " : String()) + "Sections collision (\"" + sectionNameCollision + "\")";
1842
+
1843
+
1844
+
1845
+
1846
+ // Check if there are repeating section names
1847
+
1848
+ var isSectionNamesRepeatingPresent = false;
1849
+
1850
+ var sectionCount = PE.getNumberOfSections(),
1851
+ sectionNamesDictionary = {};
1852
+
1853
+ for (var i = 0; i < sectionCount && !isSectionNamesRepeatingPresent; i++) {
1854
+ var sectionName = PE.getSectionName(i);
1855
+ sectionNamesDictionary[sectionName] = (sectionNamesDictionary[sectionName] || 0) + 1;
1856
+ if (sectionNamesDictionary[sectionName] > 1) {
1857
+ log(logType.nothing, "Section names repeating: '" + clearSectionName(sectionName) + "'");
1858
+ isSectionNamesRepeatingPresent = true;
1859
+ }
1860
+ }
1861
+
1862
+ if (isSectionNamesRepeatingPresent) options += (options.length != 0 ? " + " : String()) + "Section names repeating";
1863
+
1864
+
1865
+
1866
+
1867
+ // Check if the first instruction at entry point starts with a stack operation
1868
+
1869
+ var isStartsWithStackOperation = false;
1870
+
1871
+ // Get the opcode of the first instruction at entry point
1872
+ const firstEpAsmOpCode = getFirstEpAsmOpCode();
1873
+
1874
+ // Switch statement to check for specific stack operation opcodes
1875
+ switch (firstEpAsmOpCode) {
1876
+ case "PUSHAL":
1877
+ case "PUSHA":
1878
+ case "PUSHF":
1879
+ case "POPA":
1880
+ log(logType.nothing, "'" + firstEpAsmOpCode + "' at EP");
1881
+ isStartsWithStackOperation = true;
1882
+ }
1883
+
1884
+ if (isStartsWithStackOperation) options += (options.length != 0 ? " + " : String()) + "\"" + firstEpAsmOpCode.toLowerCase() + "\" at EP";
1885
+
1886
+
1887
+
1888
+
1889
+ // Many not-so-smart virus writers use base64 to pack
1890
+ // or hide malicious code, but do not realize that this
1891
+ // is very easily detected by heuristic analysis.
1892
+
1893
+ const signaturesVariants = [
1894
+ "TVoAAAAAA", // MZ ~[00 00 00 00 00]
1895
+ "TVqQAA", // MZ ~[90 00 03]
1896
+ "TVpQAA", // MZ ~[50 00 02]
1897
+ "TVp4AA" // MZ ~[78 00 01]
1898
+ ];
1899
+
1900
+ var isEncodedPeDetected = false;
1901
+
1902
+ // Iterate through signature variants
1903
+ for (var s = 0; s < signaturesVariants.length && !isEncodedPeDetected; s++) {
1904
+ const trigger = signaturesVariants[s];
1905
+
1906
+ // Check if the signature is valid using Unicode signature mask or the original signature
1907
+ if (
1908
+ validateGlobalUnicodeString(trigger) || validateSignature("'" + trigger + "'")
1909
+ ) {
1910
+ log(logType.nothing, "Encoded PE detected! (with Base64)");
1911
+ isCryptor = true;
1912
+ isEncodedPeDetected = true;
1913
+ }
1914
+ }
1915
+
1916
+ if (isEncodedPeDetected) options += (options.length != 0 ? " + " : String()) + "Base64 payload";
1917
+
1918
+
1919
+
1920
+
1921
+ var isMzSignatureDetected = false;
1922
+
1923
+ if (PE.isOverlayPresent() &&
1924
+ PE.getOverlaySize() >= 100 &&
1925
+ PE.compareOverlay("'MZ'")) {
1926
+ log(logType.any, "PE signature at overlay");
1927
+ isMzSignatureDetected = true;
1928
+ }
1929
+
1930
+ if (isMzSignatureDetected) options += (options.length != 0 ? " + " : String()) + "PE in overlay";
1931
+
1932
+
1933
+
1934
+
1935
+ // Check for a strange overlay in the PE file
1936
+
1937
+ var hasStrangeOverlay = false;
1938
+
1939
+ // Conditions to check for a strange overlay
1940
+ if (!isMzSignatureDetected && !isSfx && !PE.isSigned() && PE.isOverlayPresent()) {
1941
+ var overlayEntropy = PE.calculateEntropy(PE.getOverlayOffset(), PE.getOverlaySize());
1942
+ if (
1943
+ PE.getOverlaySize() > 150 && overlayEntropy > 7 ||
1944
+ PE.getOverlaySize() > (PE.getSize() - PE.getOverlaySize())
1945
+ ) {
1946
+ log(logType.any, "Overlay size: " + PE.getOverlaySize() + " bytes; Entropy: " + overlayEntropy);
1947
+ hasStrangeOverlay = true;
1948
+ }
1949
+ }
1950
+
1951
+ if (hasStrangeOverlay) options += (options.length != 0 ? " + " : String()) + "Strange overlay";
1952
+
1953
+
1954
+
1955
+
1956
+ // Flag to indicate high entropy
1957
+
1958
+ var isHighEntropy = false;
1959
+
1960
+ // Checks for high entropy (ignore overlay)
1961
+ if (!(PE.isDll() && (PE.isSectionNamePresent(".rdata") || PE.isSectionNamePresent(".rsrc"))) && // .dll with resources
1962
+ PE.calculateEntropy(0x00, PE.getSize() - PE.getOverlaySize()) > 7.3) {
1963
+ isHighEntropy = true;
1964
+ }
1965
+
1966
+ if (isHighEntropy) options += (options.length != 0 ? " + " : String()) + "High entropy";
1967
+
1968
+
1969
+
1970
+
1971
+ var isCompressedSectionPresent = false;
1972
+
1973
+ var sectionNumber = 0;
1974
+
1975
+ for (var t = 0; t < PE.getNumberOfSections() && !isCompressedSectionPresent; t++) {
1976
+ sectionNumber = t;
1977
+ if (PE.calculateEntropy(PE.getSectionFileOffset(sectionNumber), PE.getSectionFileSize(sectionNumber)) > 7.4) {
1978
+ isCompressedSectionPresent = true;
1979
+ }
1980
+ }
1981
+
1982
+ if (isCompressedSectionPresent) options += (options.length != 0 ? " + " : String()) + "Section " + sectionNumber + " (\"" + clearSectionName(PE.getSectionName(sectionNumber)) + "\") compressed";
1983
+
1984
+
1985
+
1986
+
1987
+ // Check for recurring import names
1988
+
1989
+ var recurringImports = false;
1990
+
1991
+ var importCount = PE.getNumberOfImports(),
1992
+ importNames = {};
1993
+
1994
+ for (var i = 0; i < importCount && !recurringImports; i++) {
1995
+ var name = PE.getImportLibraryName(i);
1996
+ importNames[name] = (importNames[name] || 0) + 1;
1997
+ if (importNames[name] >= 3) {
1998
+ recurringImports = true;
1999
+ }
2000
+ }
2001
+
2002
+ if (recurringImports) options += (options.length != 0 ? " + " : String()) + "Recurring import names";
2003
+
2004
+
2005
+
2006
+
2007
+ if (options.length != 0) isDetected = true;
2008
+
2009
+
2010
+ if (isDetected) {
2011
+ var detectedType = isCryptor ? "cryptor" : "packer";
2012
+
2013
+ _setResult("~" + detectedType, (isCryptor ? "Encrypted" : "Compressed") + " data", String(), PE.isVerbose() ? options : String());
2014
+ }
2015
+ }
2016
+
2017
+
2018
+
2019
+
2020
+ function scanForLicensingSystems_NET_and_Native() { // For .NET and Native apps
2021
+ var options = String();
2022
+
2023
+ var isDetected = Boolean();
2024
+
2025
+
2026
+
2027
+
2028
+ if (PE.isNET()) {
2029
+
2030
+ // https://learn.microsoft.com/en-us/dotnet/api/system.componentmodel.licenseproviderattribute
2031
+
2032
+ var isLicenseProviderPresent = false;
2033
+
2034
+ if (PE.isNetObjectPresent("LicenseProviderAttribute")) {
2035
+ isLicenseProviderPresent = true;
2036
+ }
2037
+
2038
+ if (isLicenseProviderPresent) options = "Provider attribute";
2039
+
2040
+
2041
+
2042
+
2043
+ // https://learn.microsoft.com/ru-ru/dotnet/api/system.componentmodel.licensemanager
2044
+
2045
+ var isLicenseManagerPresent = false;
2046
+
2047
+ if (PE.isNetObjectPresent("LicenseManager")) {
2048
+ isLicenseManagerPresent = true;
2049
+ }
2050
+
2051
+ if (isLicenseManagerPresent) options += (options.length != 0 ? " + " : String()) + "License manager";
2052
+
2053
+ }
2054
+
2055
+
2056
+
2057
+
2058
+ // Check for licensing strings
2059
+
2060
+ var isInterestingStringsFound = false;
2061
+
2062
+ const licesingStrings = [ /*[E]*/ "nter serial ", /*[S]*/ "erial key ", " activate ", " trial ", /*[W]*/ "rong activation", /*[W]*/ "rong licens", /*[L]*/ "icense expire", "valid license", /*[L]*/ "icense key", " full version", " purchase a "];
2063
+
2064
+ for (var i = 0; i < licesingStrings.length; i++) {
2065
+ const currentPatternToFind = licesingStrings[i];
2066
+
2067
+ if (PE.isSignaturePresent(0x00, PE.getSize(), "'" + currentPatternToFind + "'") ||
2068
+ PE.isSignaturePresent(0x00, PE.getSize(), "'" + generateUnicodeSignatureMask(currentPatternToFind) + "'")) {
2069
+ isInterestingStringsFound = true;
2070
+ break;
2071
+ }
2072
+ }
2073
+
2074
+ if (isInterestingStringsFound) options += (options.length != 0 ? " + " : String()) + "Strings";
2075
+
2076
+
2077
+
2078
+
2079
+ if (options.length != 0) isDetected = true;
2080
+
2081
+
2082
+ if (isDetected) {
2083
+ _setResult("~licensing", "Contains", String(), PE.isVerbose() ? options : String());
2084
+ }
2085
+ }
2086
+
2087
+
2088
+
2089
+ function scanForBadFileFormat_NET_and_Native() {
2090
+ var options = String();
2091
+
2092
+ var isDetected = Boolean();
2093
+
2094
+
2095
+
2096
+
2097
+ var isEntryPointIncorrect = false;
2098
+
2099
+ if (!PE.isEntryPointCorrect()) {
2100
+ isEntryPointIncorrect = true;
2101
+ }
2102
+
2103
+ if (isEntryPointIncorrect) options += (options.length != 0 ? " + " : String()) + "EntryPoint";
2104
+
2105
+
2106
+
2107
+
2108
+ var isSectionAlignmentIncorrect = false;
2109
+
2110
+ if (!PE.isSectionAlignmentCorrect()) {
2111
+ isSectionAlignmentIncorrect = true;
2112
+ }
2113
+
2114
+ if (isSectionAlignmentIncorrect) options += (options.length != 0 ? " + " : String()) + "Section aligment";
2115
+
2116
+
2117
+
2118
+
2119
+ var isFileAlignmentIncorrect = false;
2120
+
2121
+ if (!PE.isFileAlignmentCorrect()) {
2122
+ isFileAlignmentIncorrect = true;
2123
+ }
2124
+
2125
+ if (isFileAlignmentIncorrect) options += (options.length != 0 ? " + " : String()) + "File alignment";
2126
+
2127
+
2128
+
2129
+
2130
+ var isHeaderIncorrect = false;
2131
+
2132
+ if (!PE.isHeaderCorrect()) {
2133
+ isHeaderIncorrect = true;
2134
+ }
2135
+
2136
+ if (isHeaderIncorrect) options += (options.length != 0 ? " + " : String()) + "Header";
2137
+
2138
+
2139
+
2140
+
2141
+ var isRelocsTableIncorrect = false;
2142
+
2143
+ if (!PE.isRelocsTableCorrect()) {
2144
+ isRelocsTableIncorrect = true;
2145
+ }
2146
+
2147
+ if (isRelocsTableIncorrect) options += (options.length != 0 ? " + " : String()) + "Relocs";
2148
+
2149
+
2150
+
2151
+
2152
+ var isImportTableIncorrect = false;
2153
+
2154
+ if (!PE.isImportTableCorrect()) {
2155
+ isImportTableIncorrect = true;
2156
+ }
2157
+
2158
+ if (isImportTableIncorrect) options += (options.length != 0 ? " + " : String()) + "IAT";
2159
+
2160
+
2161
+
2162
+
2163
+ // Check EAT (only for .dll)
2164
+
2165
+ var isExportTableIncorrect = false;
2166
+
2167
+ if (PE.isDll() && !PE.isExportTableCorrect()) {
2168
+ isExportTableIncorrect = true;
2169
+ }
2170
+
2171
+ if (isExportTableIncorrect) options += (options.length != 0 ? " + " : String()) + "EAT";
2172
+
2173
+
2174
+
2175
+
2176
+ var isResourcesTableIncorrect = false;
2177
+
2178
+ if (!PE.isResourcesTableCorrect()) {
2179
+ isResourcesTableIncorrect = true;
2180
+ }
2181
+
2182
+ if (isResourcesTableIncorrect) options += (options.length != 0 ? " + " : String()) + "Resources";
2183
+
2184
+
2185
+
2186
+
2187
+ if (options.length != 0) isDetected = true;
2188
+
2189
+
2190
+ if (isDetected) {
2191
+ _setResult("~corrupted data", "Bad format", String(), PE.isVerbose() ? options : String());
2192
+ }
2193
+ }
2194
+
2195
+
2196
+
2197
+ function scanForDebugData_NET_and_Native() { // For .NET and Native apps
2198
+ var options = String();
2199
+
2200
+ var isDetected = Boolean();
2201
+
2202
+
2203
+
2204
+
2205
+ // Check for sections with debug data by name
2206
+
2207
+ var isDebugSectionPresent = false;
2208
+
2209
+ var sectionNumber = 0;
2210
+
2211
+ for (var i = 0; i < PE.getNumberOfSections() && !isDebugSectionPresent; i++) {
2212
+ sectionNumber = i;
2213
+
2214
+ const currentSectionName = PE.getSectionName(i).toLowerCase();
2215
+
2216
+ if (currentSectionName.indexOf("debug") !== -1 || // Modern LLVM debug sections
2217
+ currentSectionName === ".stab" || currentSectionName === ".stabstr") { // TCC/GCC
2218
+ log(logType.any, "Debug section detected: \"" + clearSectionName(PE.getSectionName(sectionNumber)) + "\"");
2219
+ isDebugSectionPresent = true;
2220
+ }
2221
+ }
2222
+
2223
+ if (isDebugSectionPresent) options = "Section " + sectionNumber + " (\"" + clearSectionName(PE.getSectionName(sectionNumber)) + "\")";
2224
+
2225
+
2226
+
2227
+
2228
+ // .NET Native debug header, EAT function
2229
+
2230
+ var isNetNativeDebugDataPresent = false;
2231
+
2232
+ if (!PE.isNET() && PE.isExportFunctionPresent("DotNetRuntimeDebugHeader")) {
2233
+ log(logType.any, ".NET Native debug function detected");
2234
+ isNetNativeDebugDataPresent = true;
2235
+ }
2236
+
2237
+ if (isNetNativeDebugDataPresent) options += (options.length != 0 ? " + " : String()) + "DotNET runtime header";
2238
+
2239
+
2240
+
2241
+
2242
+ // Check for absolute PDB path
2243
+
2244
+ var isPdbFullPathPresent = false;
2245
+
2246
+ var pdbExtensionPatternOffset = PE.findSignature(PE.getDosStubOffset() + PE.getDosStubSize(), PE.getSize() - PE.getOverlaySize(), "'.pdb'");
2247
+
2248
+ var pdbPathBeginOffset, pdbPath = String();
2249
+
2250
+ if (pdbExtensionPatternOffset !== -1) {
2251
+
2252
+ for (var i = pdbExtensionPatternOffset; i > 0; i--) {
2253
+ if (PE.readByte(i) === 0x00) {
2254
+ pdbPathBeginOffset = i + 1;
2255
+ break;
2256
+ }
2257
+ }
2258
+
2259
+ pdbPath = PE.getString(pdbPathBeginOffset, 256);
2260
+
2261
+ if (pdbPath.length > 255)
2262
+ pdbPath = pdbPath.substring(0, 255) + " . . .";
2263
+
2264
+ pdbPath = pdbPath.replace(/[\n\r]/g, "");
2265
+
2266
+ if (pdbPath.match(/^[a-zA-Z]:\\/) !== null) {
2267
+ log(logType.any, "PDB absolute path: \"" + pdbPath + "\"");
2268
+ isPdbFullPathPresent = true;
2269
+ }
2270
+ }
2271
+
2272
+ if (isPdbFullPathPresent) options += (options.length != 0 ? " + " : String()) + "Absolute PDB path";
2273
+
2274
+
2275
+
2276
+
2277
+ // Check for portable (relative path) or embedded PDB
2278
+
2279
+ var isPortableOrEmbeddedPdbDetected = false;
2280
+
2281
+ var pdbTextType = String();
2282
+
2283
+ if (pdbPath && !isPdbFullPathPresent) {
2284
+ pdbTextType = validateSignature("00 52 53 44 53") ? "Embedded" : "Portable";
2285
+
2286
+ log(logType.any, pdbTextType + " PDB name: \"" + pdbPath + "\"");
2287
+ isPortableOrEmbeddedPdbDetected = true;
2288
+ }
2289
+
2290
+ if (isPortableOrEmbeddedPdbDetected) options += (options.length != 0 ? " + " : String()) + pdbTextType + " PDB (release)";
2291
+
2292
+
2293
+
2294
+
2295
+ var isCosturaEmbeddedDebugData = false;
2296
+
2297
+ if (PE.isNET() && PE.isNetObjectPresent("costura.costura.pdb.compressed")) {
2298
+ log(logType.any, "Costura embedded PDB detected");
2299
+ isCosturaEmbeddedDebugData = true;
2300
+ }
2301
+
2302
+ if (isCosturaEmbeddedDebugData) options += (options.length != 0 ? " + " : String()) + "Costura.Fody embedded PDB";
2303
+
2304
+
2305
+
2306
+
2307
+ if (options.length != 0) isDetected = true;
2308
+
2309
+
2310
+ if (isDetected) {
2311
+ _setResult("~debug data", "Contains", String(), PE.isVerbose() ? options : String());
2312
+ }
2313
+ }
2314
+
2315
+
2316
+
2317
+ /**
2318
+ * Checks if the .NET Visual Basic standard library is present.
2319
+ *
2320
+ * @returns {boolean} True if the Microsoft.VisualBasic library is found; otherwise false.
2321
+ */
2322
+ function isVbNetStandartLibraryPresent() {
2323
+ return PE.isNetObjectPresent("Microsoft.VisualBasic");
2324
+ }
2325
+
2326
+
2327
+
2328
+ /**
2329
+ * Determines if the current file is a .NET DLL signed by Microsoft Corporation.
2330
+ *
2331
+ * @returns {boolean} True if the file meets the criteria, false otherwise.
2332
+ */
2333
+ function isFrameworkComponent() {
2334
+ return PE.isNET() && PE.isDll() && PE.isSigned() && PE.findSignature(PE.getOverlayOffset(), 300, "'Microsoft Corporation'") != -1;
2335
+ }
2336
+
2337
+
2338
+
2339
+ /**
2340
+ * Validates the presence of a signature (pattern) within a specified range in a PE file.
2341
+ *
2342
+ * Searches for the given pattern starting from the DOS stub end until the PE size excluding the overlay.
2343
+ * Logs a message if the pattern is found and returns a boolean indicating the result.
2344
+ *
2345
+ * @param {string} pattern - The pattern to search for within the file.
2346
+ * @returns {boolean} True if the pattern is found, false otherwise.
2347
+ */
2348
+ function validateSignature(pattern) {
2349
+ const
2350
+ offsetFound = PE.findSignature(PE.getDosStubOffset() + PE.getDosStubSize(), PE.getSize() - PE.getOverlaySize(), pattern),
2351
+ resultBool = offsetFound != -1;
2352
+
2353
+ if (resultBool) {
2354
+ lastOffsetDetected = "0x" + Number(offsetFound).toString(16);
2355
+ log(logType.any, "Pattern found: " + pattern);
2356
+ }
2357
+ return resultBool;
2358
+ }
2359
+
2360
+
2361
+
2362
+ /**
2363
+ * Searches all sections in the current PE file for the specified byte code.
2364
+ * If discovered, logs the offset at which it appears and returns true.
2365
+ *
2366
+ * @param {string} byteCode - The byte code signature to locate.
2367
+ * @returns {boolean} True if the byte code is found in any section, otherwise false.
2368
+ */
2369
+ function validateNetByteCode(byteCode) {
2370
+ for (var s = 0; s < PE.getNumberOfSections(); s++) {
2371
+ const
2372
+ sectionOffset = PE.getSectionFileOffset(s),
2373
+ sectionSize = PE.getSectionFileSize(s);
2374
+
2375
+ var offsetFound = PE.findSignature(sectionOffset, sectionOffset + sectionSize, byteCode);
2376
+ if (offsetFound != -1) {
2377
+ lastOffsetDetected = "0x" + Number(offsetFound).toString(16);
2378
+ log(logType.net, "ByteCode detected: " + byteCode);
2379
+ return true;
2380
+ }
2381
+ }
2382
+ return false;
2383
+ }
2384
+
2385
+
2386
+
2387
+ /**
2388
+ * Validates if the given object is a .NET object.
2389
+ *
2390
+ * @param {Object} object - The object to be validated.
2391
+ * @returns {boolean} - Returns true if the object is a .NET object, otherwise false.
2392
+ */
2393
+ function validateNetObject(object) {
2394
+ const result = PE.isNetObjectPresent(object);
2395
+ if (result) log(logType.net, "Object present: " + object);
2396
+ return result;
2397
+ }
2398
+
2399
+
2400
+
2401
+ /**
2402
+ * Validates if a .NET Unicode string is present in the PE file.
2403
+ *
2404
+ * @param {string} ustring - The Unicode string to validate.
2405
+ * @returns {boolean} - Returns true if the Unicode string is present, otherwise false.
2406
+ */
2407
+ function validateNetUnicodeString(ustring) {
2408
+ const result = PE.isNetUStringPresent(ustring);
2409
+ if (result) log(logType.net, "String present: \"" + ustring + "\"");
2410
+ return result;
2411
+ }
2412
+
2413
+
2414
+
2415
+ /**
2416
+ * Validates if a given Unicode string exists within the PE file.
2417
+ *
2418
+ * This function searches for the specified Unicode string within the PE file's
2419
+ * memory range, excluding the DOS stub and overlay sections. If the string is
2420
+ * found, it logs a message indicating the presence of the string.
2421
+ *
2422
+ * @param {string} ustring - The Unicode string to search for within the PE file.
2423
+ * @returns {boolean} - Returns true if the Unicode string is found, otherwise false.
2424
+ */
2425
+ function validateGlobalUnicodeString(ustring) {
2426
+ const result = PE.findSignature(PE.getDosStubOffset() + PE.getDosStubSize(), PE.getSize() - PE.getOverlaySize(), generateUnicodeSignatureMask(ustring)) != -1;
2427
+ if (result) log(logType.nothing, "Unicode string found: \"" + ustring + "\"");
2428
+ return result;
2429
+ }
2430
+
2431
+
2432
+
2433
+ /**
2434
+ * Generates a Unicode signature mask for the given input string.
2435
+ *
2436
+ * This function iterates through each character in the input string and appends
2437
+ * its Unicode representation to the output string. The first character is appended
2438
+ * without a prefix, while subsequent characters are prefixed with "00".
2439
+ *
2440
+ * "test" -> "'t'00'e'00's'00't'"
2441
+ *
2442
+ * @param {string} inputString - The input string for which to generate the Unicode signature mask.
2443
+ * @returns {string} The generated Unicode signature mask.
2444
+ */
2445
+ function generateUnicodeSignatureMask(inputString) {
2446
+ var output = String();
2447
+
2448
+ // Iterate through each character in the input string
2449
+ for (var c = 0; c < inputString.length; c++) {
2450
+ // Append the Unicode representation of the character to the output
2451
+ output += (c != 0 ? "00" : String()) + "'" + inputString[c] + "'";
2452
+ }
2453
+
2454
+ // Return the generated Unicode signature mask
2455
+ return output;
2456
+ }
2457
+
2458
+
2459
+
2460
+ /**
2461
+ * Checks if all .NET references in the provided array are missing.
2462
+ *
2463
+ * @param {Array} references - An array of .NET references to check.
2464
+ * @returns {boolean} - Returns true if all .NET references are missing, otherwise false.
2465
+ */
2466
+ function isAllNetReferencesMissing(references) {
2467
+ // Iterate through the array of .NET references
2468
+ for (var i = 0; i < references.length; i++) {
2469
+ // Get the current reference
2470
+ const ref = references[i];
2471
+
2472
+ // If the .NET object corresponding to the reference is present, return false
2473
+ if (PE.isNetObjectPresent(ref)) {
2474
+ return false;
2475
+ }
2476
+ }
2477
+
2478
+ // If all .NET references are missing, return true
2479
+ return true;
2480
+ }
2481
+
2482
+
2483
+
2484
+ /**
2485
+ * Checks if all .NET references are present.
2486
+ *
2487
+ * @param {Array} references - An array of .NET references to check.
2488
+ * @returns {boolean} - Returns true if all .NET references are present, otherwise false.
2489
+ */
2490
+ function isAllNetReferencesPresent(references) {
2491
+ // Iterate through the array of .NET references
2492
+ for (var i = 0; i < references.length; i++) {
2493
+ // Get the current reference
2494
+ const ref = references[i];
2495
+
2496
+ // If the .NET object corresponding to the reference is not present, return false
2497
+ if (!PE.isNetObjectPresent(ref)) {
2498
+ return false;
2499
+ }
2500
+ }
2501
+
2502
+ // If all .NET references are present, return true
2503
+ return true;
2504
+ }
2505
+
2506
+
2507
+
2508
+ /**
2509
+ * Searches for a signature in the first section of a PE file and marks it if found.
2510
+ *
2511
+ * @param {string} sign - The signature to search for.
2512
+ * @param {boolean} isFullName - A flag indicating whether to append '00' to the signature.
2513
+ * @returns {string} - The found signature if present, otherwise an empty string.
2514
+ */
2515
+ function findAndMark(sign, isFullName) {
2516
+ if (PE.isSignatureInSectionPresent(0,
2517
+ ("00'" + sign + "'") + // 00'string
2518
+ (isFullName ? "00" : String()))) { // ... '00
2519
+ return sign;
2520
+ }
2521
+ return String();
2522
+ }
2523
+
2524
+
2525
+
2526
+ function scanForObfuscations_Native() {
2527
+ var options = String();
2528
+
2529
+ var isDetected = Boolean();
2530
+
2531
+
2532
+
2533
+
2534
+ // Check for section names containing forbidden characters
2535
+
2536
+ var strangeSections = false;
2537
+
2538
+ // Define forbidden characters
2539
+ const badSectionChars = '-=+~!@#$%^&*()"№;%:?*():;,/\\|\'`<> ';
2540
+
2541
+ // Iterate through sections and characters to check for forbidden characters
2542
+ for (var i = 0; i < PE.getNumberOfSections() && !strangeSections; i++) {
2543
+ var sectionName = PE.getSectionName(i);
2544
+
2545
+ if (sectionName.length === 0 || sectionName[0] === " ") {
2546
+ strangeSections = true;
2547
+ }
2548
+
2549
+
2550
+ var isIdioticMinGwSectionsPresent = false;
2551
+
2552
+ if (_isResultPresent("linker", "GNU linker ld (GNU Binutils)")) {
2553
+ if (PE.isSectionNamePresent(".build-id")) {
2554
+ isIdioticMinGwSectionsPresent = true;
2555
+ } else {
2556
+ for (var d = 1; d < 10 && !isIdioticMinGwSectionsPresent; d++) { // sections like "/5", "/2" etc
2557
+ if (sectionName.indexOf("/" + d) != -1) {
2558
+ isIdioticMinGwSectionsPresent = true;
2559
+ }
2560
+ }
2561
+ }
2562
+ }
2563
+
2564
+ if (isIdioticMinGwSectionsPresent) {
2565
+ strangeSections = false;
2566
+ break;
2567
+ }
2568
+
2569
+
2570
+ for (var d = 0; d < badSectionChars.length && !strangeSections; d++) {
2571
+ // If forbidden character is found, set flag and break
2572
+ if (sectionName.indexOf(badSectionChars[d]) !== -1) {
2573
+ strangeSections = true;
2574
+ }
2575
+ }
2576
+
2577
+
2578
+ }
2579
+
2580
+ if (strangeSections) options += (options.length != 0 ? " + " : String()) + "Strange sections";
2581
+
2582
+
2583
+
2584
+
2585
+ // Check for DOS header in the PE file
2586
+
2587
+ var isDosMissing = false,
2588
+ isCustomDosPresent = false;
2589
+
2590
+ // If DOS stub size is 0, set flag for missing DOS
2591
+ if (PE.getDosStubSize() === 0) {
2592
+ isDosMissing = true;
2593
+ } else {
2594
+ // Define messages to check for custom DOS
2595
+ const messages = [
2596
+ "This program cannot be run in DOS mode.", // most popular (standart)
2597
+ "This program must be run under Win32",
2598
+ "This program must be run under Win64",
2599
+ "This program requires Win32",
2600
+ "This is a Windows NT character-mode executable" // Watcom C/C++
2601
+ ];
2602
+
2603
+ isCustomDosPresent = true;
2604
+
2605
+ // Iterate through messages to check for custom DOS
2606
+ for (var d = 0; d < messages.length && isCustomDosPresent; d++) {
2607
+ if (PE.findSignature(PE.getDosStubOffset(), PE.getDosStubSize(), "'" + messages[d] + "'") != -1) {
2608
+ isCustomDosPresent = false;
2609
+ }
2610
+ }
2611
+ }
2612
+
2613
+ // Add appropriate option based on DOS presence
2614
+ if (isDosMissing) options += (options.length != 0 ? " + " : String()) + "Missing DOS";
2615
+ else if (isCustomDosPresent) options += (options.length != 0 ? " + " : String()) + "Custom DOS";
2616
+
2617
+
2618
+
2619
+
2620
+ // It works if the file contains an import without an extension (for example, instead of "kernel32.dll" it is written "kernel32").
2621
+ // Compilers don't do that
2622
+
2623
+ var isContainsNoExtensionLibrary = false;
2624
+
2625
+ for (var i = 0; i < PE.getNumberOfImports() && !isContainsNoExtensionLibrary; i++) {
2626
+ const libraryName = PE.getImportLibraryName(i).toLowerCase();
2627
+
2628
+ if (libraryName.length > 4) {
2629
+ if (libraryName[libraryName.length - 4] !== ".") {
2630
+ isContainsNoExtensionLibrary = true;
2631
+ }
2632
+ } else { /* if (libraryName.indexOf(".") === -1) */
2633
+ isContainsNoExtensionLibrary = true;
2634
+ }
2635
+ }
2636
+
2637
+ if (isContainsNoExtensionLibrary) options += (options.length != 0 ? " + " : String()) + "No extension import";
2638
+
2639
+
2640
+
2641
+
2642
+ // .exe files in imports are a separate type of sophistication. But this happens.
2643
+
2644
+ var exeInImports = false;
2645
+
2646
+ for (var i = 0; i < PE.getNumberOfImports() && !exeInImports; i++) {
2647
+ const libraryName = PE.getImportLibraryName(i).toLowerCase();
2648
+
2649
+ if (libraryName.length > 4) {
2650
+ if (libraryName !== "ntoskrnl.exe" && libraryName.substr(libraryName.length - 4, 4) === ".exe") {
2651
+ exeInImports = true;
2652
+ }
2653
+ }
2654
+ }
2655
+
2656
+ if (exeInImports) options += (options.length != 0 ? " + " : String()) + "EXE in imports";
2657
+
2658
+
2659
+
2660
+
2661
+ // Looks for sections whose names contain strange (or invalid) characters
2662
+
2663
+ var isInvalidImportsPresent = false;
2664
+
2665
+ const badImportChars = '=~!@#$%^&*()"№;%:?*():;,|\'`<> ';
2666
+
2667
+ for (var i = 0; i < PE.getNumberOfImports() && !isInvalidImportsPresent; i++) {
2668
+ const libraryName = PE.getImportLibraryName(i).toLowerCase();
2669
+
2670
+ for (var l = 0; l < badImportChars.length && !isInvalidImportsPresent; l++) {
2671
+ if (libraryName.indexOf(badImportChars[l]) !== -1) {
2672
+ isInvalidImportsPresent = true;
2673
+ }
2674
+ }
2675
+ }
2676
+
2677
+ if (isInvalidImportsPresent) options += (options.length != 0 ? " + " : String()) + "Invalid imports";
2678
+
2679
+
2680
+
2681
+
2682
+ // Checks if application resources can be read or if they are compressed/encrypted
2683
+
2684
+ var isUnreadableResourcesPresent = false;
2685
+
2686
+ for (var i = 0; i < PE.getNumberOfResources() && !isUnreadableResourcesPresent; i++) {
2687
+ if (PE.getResourceOffsetByNumber(i) === -1)
2688
+ isUnreadableResourcesPresent = true;
2689
+ }
2690
+
2691
+ if (isUnreadableResourcesPresent) options += (options.length != 0 ? " + " : String()) + "Unreadable resources";
2692
+
2693
+
2694
+
2695
+ /*
2696
+ var isCheckSumEmpty = false;
2697
+
2698
+ if (PE.getImageOptionalHeader("CheckSum") == 0) {
2699
+ log(logType.any, "IMAGE_OPTIONAL_HEADER : CheckSum == 0");
2700
+ isCheckSumEmpty = true;
2701
+ }
2702
+
2703
+ if (isCheckSumEmpty) options += (options.length != 0 ? " + " : String()) + "No checksum";
2704
+
2705
+
2706
+
2707
+
2708
+ // False-positive detections; Todo: fix
2709
+ var aLotOfBreaks = false;
2710
+
2711
+ const codeSection = PE.section[".text"];
2712
+
2713
+ 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)
2714
+ aLotOfBreaks = true;
2715
+ }
2716
+
2717
+ if (aLotOfBreaks) options += (options.length != 0 ? " + " : String()) + "A lot of \"__debugbreak()\"";
2718
+ */
2719
+
2720
+
2721
+
2722
+
2723
+ // Checks is executable application has been compiled or converted to a DLL
2724
+ // Like https://github.com/hasherezade/exe_to_dll
2725
+
2726
+ var exeAsDll = false;
2727
+
2728
+ if (PE.isDll() && (
2729
+ PE.isExportFunctionPresent("Start") ||
2730
+ PE.isExportFunctionPresent("main") ||
2731
+ PE.isExportFunctionPresent("_start"))) {
2732
+ exeAsDll = true;
2733
+ }
2734
+
2735
+ if (exeAsDll) options += (options.length != 0 ? " + " : String()) + "EXE as DLL";
2736
+
2737
+
2738
+
2739
+
2740
+ // The .text section should always come first
2741
+
2742
+ var isTextSectionNotFirst = false;
2743
+
2744
+ if ((PE.section[0].Name != ".text" && PE.section[0].Name != ".textbss") && (PE.section[".text"] && PE.section[".textbss"])) {
2745
+ isTextSectionNotFirst = true;
2746
+ }
2747
+
2748
+ if (isTextSectionNotFirst) options += (options.length != 0 ? " + " : String()) + "\".text\" section is not first";
2749
+
2750
+
2751
+
2752
+
2753
+ // If IAT (Import Address Table) is missing
2754
+
2755
+ var isIatMissing = false;
2756
+
2757
+ if (PE.getNumberOfImports() == 0 &&
2758
+ (!PE.isDll() && PE.section[".text"])) {
2759
+ isIatMissing = true;
2760
+ }
2761
+
2762
+ if (isIatMissing) options += (options.length != 0 ? " + " : String()) + "No IAT";
2763
+
2764
+
2765
+
2766
+
2767
+ // Check if the entry point starts with NOP
2768
+
2769
+ var isStartsWithNop = false;
2770
+
2771
+ // Condition to check if the first instruction is NOP
2772
+ if (getFirstEpAsmInstruction() === "NOP") { // nop (90)
2773
+ isStartsWithNop = true;
2774
+ }
2775
+
2776
+ if (isStartsWithNop) options += (options.length != 0 ? " + " : String()) + "Nop at EP";
2777
+
2778
+
2779
+
2780
+ // A lot of bugs! Todo.
2781
+ /*
2782
+ // Example:
2783
+ // xor eax, eax
2784
+ // je $+1
2785
+ var isBreakerDetected = false;
2786
+
2787
+ //
2788
+ // 0: 31 c0 | xor eax, eax
2789
+ // 1: 31 db | xor ebx, ebx
2790
+ // 2: 31 c9 | xor ecx, ecx
2791
+ // 3: 31 d2 | xor edx, edx
2792
+ // 4: 31 f6 | xor esi, esi
2793
+ // 5: 31 ff | xor edi, edi
2794
+ // 6: 31 ed | xor ebp, ebp
2795
+ // 7: 31 e4 | xor esp, esp
2796
+ //
2797
+ const xorPatterns_x86 = [
2798
+ "c0", "db", "c9", "d2", "f6", "ff", "ed", "e4"
2799
+ ];
2800
+
2801
+ for (var i = 0; i < xorPatterns_x86.length && !isBreakerDetected; i++) {
2802
+ const foundOffset = PE.findSignature(0x00, PE.getSize() - PE.getOverlaySize(), "31 " + xorPatterns_x86[i] + "0F84......00"); // ... je $+[*] ...
2803
+
2804
+ if (foundOffset !== -1 && !PE.compare("%% %% %% %% %% %% %%", foundOffset - 7)) {
2805
+ isBreakerDetected = true;
2806
+ }
2807
+ }
2808
+
2809
+ if (isBreakerDetected) options += (options.length != 0 ? " + " : String()) + "Anti-Decompile";
2810
+ */
2811
+
2812
+
2813
+
2814
+
2815
+ // Check if NOP padding is present at the entry point
2816
+
2817
+ var isNopPaddingPresent = false;
2818
+
2819
+ // Condition to check for NOP padding
2820
+ if (!isStartsWithNop && getEpAsmPattern(onlyOpCodes = true, numberOf = 5).indexOf(getInstructionsAsmPattern(["NOP", "NOP"])) !== -1) {
2821
+ isNopPaddingPresent = true;
2822
+ }
2823
+
2824
+ if (isNopPaddingPresent) options += (options.length != 0 ? " + " : String()) + "Nop EP padding";
2825
+
2826
+
2827
+
2828
+
2829
+ // ASM Guard fake signatures
2830
+
2831
+ if (PE.isSectionNamePresent(".asmg") || PE.isSectionNamePresent("ASMGUARD")) {
2832
+ for (var f = 0; f < 3; f++)
2833
+ _removeResult("packer", ["UPX", "MPRESS", "EP:MPRESS"][f]);
2834
+ }
2835
+
2836
+
2837
+
2838
+
2839
+ if (options.length != 0) isDetected = true;
2840
+
2841
+
2842
+ if (isDetected) {
2843
+ _setResult("~protection", "Generic", String(), PE.isVerbose() ? options : String());
2844
+ }
2845
+ }
2846
+
2847
+
2848
+
2849
+ const _patternSplitter = "|";
2850
+
2851
+ /**
2852
+ * Generates a pattern of assembly instructions or opcodes from the entry point.
2853
+ *
2854
+ * @param {boolean} onlyOpCodes - If true, only the opcodes of the instructions are included in the pattern.
2855
+ * @param {number} numberOf - The number of instructions to include in the pattern.
2856
+ * @returns {string} The generated assembly pattern.
2857
+ */
2858
+ function getEpAsmPattern(onlyOpCodes, numberOf) {
2859
+ // Initialize the result with a pattern splitter
2860
+ var result = _patternSplitter;
2861
+
2862
+ // Get the address of the entry point
2863
+ var disasmAddress = PE.getAddressOfEntryPoint();
2864
+
2865
+ // Iterate through instructions up to the specified number
2866
+ for (var i = 0; i < numberOf; i++) {
2867
+
2868
+ // Update the address to the next instruction if not the first iteration
2869
+ if (i >= 1) {
2870
+ disasmAddress = PE.getDisasmNextAddress(disasmAddress);
2871
+ }
2872
+
2873
+ // Get the assembly instruction at the current address
2874
+ const asmInstruction = PE.getDisasmString(disasmAddress);
2875
+
2876
+ // Append either the opcode or the full instruction to the result
2877
+ result += (
2878
+ onlyOpCodes ?
2879
+ getAsmOpCode(asmInstruction) : // "MOV"
2880
+ asmInstruction // "MOV EAX, 4"
2881
+ ) + _patternSplitter;
2882
+ }
2883
+
2884
+ // Return the generated assembly pattern
2885
+ return result;
2886
+ }
2887
+
2888
+
2889
+
2890
+ /**
2891
+ * Retrieves the assembly instruction at the specified index from the entry point of a PE file.
2892
+ *
2893
+ * @param {number} index - The index of the assembly instruction to retrieve.
2894
+ * @returns {string} The assembly instruction at the specified index.
2895
+ */
2896
+ function getAsmInstructionByIndex(index) {
2897
+ // Get the address of the entry point
2898
+ var disasmAddress = PE.getAddressOfEntryPoint();
2899
+
2900
+ // Iterate through instructions until the specified index is reached
2901
+ for (var i = 0; i <= index; i++) {
2902
+
2903
+ // Update the address to the next instruction if not the first iteration
2904
+ if (i >= 1) {
2905
+ disasmAddress = PE.getDisasmNextAddress(disasmAddress);
2906
+ }
2907
+
2908
+ // If the current iteration matches the specified index, retrieve the instruction
2909
+ if (i === index) {
2910
+ const asmInstruction = PE.getDisasmString(disasmAddress);
2911
+
2912
+ // Return the assembly instruction
2913
+ return asmInstruction;
2914
+ }
2915
+ }
2916
+ }
2917
+
2918
+
2919
+
2920
+ /**
2921
+ * Generates a subpattern string to search for instructions within a pattern divided by a separator.
2922
+ *
2923
+ * This function allows you to create a subpattern that can be used to search for specific instructions
2924
+ * within a larger pattern string that is divided by a separator (_patternSplitter).
2925
+ *
2926
+ * Examples:
2927
+ * - "|OPCODE1|OPCODE2|OPCODE3|".indexOf("|OPCODE2|")
2928
+ * - "|OPCODE1|OPCODE2|OPCODE3|".indexOf(getInstructionsAsmPattern("OPCODE2"))
2929
+ * - "|OPCODE1|OPCODE2|OPCODE3|".indexOf("|OPCODE2|OPCODE3|")
2930
+ * - "|OPCODE1|OPCODE2|OPCODE3|".indexOf(getInstructionsAsmPattern(["OPCODE2", "OPCODE3"]))
2931
+ *
2932
+ * @param {string|string[]} instruction - The instruction or array of instructions to create the subpattern for.
2933
+ * @returns {string} The generated subpattern string.
2934
+ */
2935
+ function getInstructionsAsmPattern(instruction) {
2936
+ return _patternSplitter +
2937
+ (
2938
+ Array.isArray(instruction) ?
2939
+ instruction.join(_patternSplitter) :
2940
+ instruction
2941
+ ) +
2942
+ _patternSplitter;
2943
+ }
2944
+
2945
+
2946
+
2947
+ /**
2948
+ * Retrieves the first assembly instruction at the entry point of the PE file.
2949
+ *
2950
+ * @returns {string} The disassembled string of the first instruction at the entry point.
2951
+ */
2952
+ function getFirstEpAsmInstruction() {
2953
+ return PE.getDisasmString(PE.OffsetToVA(PE.getEntryPointOffset()));
2954
+ }
2955
+
2956
+
2957
+
2958
+ /**
2959
+ * Extracts the opcode from an assembly instruction.
2960
+ *
2961
+ * @param {string} instruction - The assembly instruction.
2962
+ * @returns {string} - The opcode of the instruction.
2963
+ */
2964
+ function getAsmOpCode(instruction) {
2965
+ return instruction.indexOf(" ") !== -1 ? instruction.split(" ")[0] : instruction;
2966
+ }
2967
+
2968
+
2969
+
2970
+ /**
2971
+ * Retrieves the first assembly operation code from the entry point of the executable.
2972
+ *
2973
+ * @returns {string} The assembly operation code of the first instruction at the entry point.
2974
+ */
2975
+ function getFirstEpAsmOpCode() {
2976
+ return getAsmOpCode(getFirstEpAsmInstruction());
2977
+ }
2978
+
2979
+
2980
+
2981
+ /**
2982
+ * Checks if a given function name pattern is mangled.
2983
+ *
2984
+ * This function determines if a function name pattern is mangled by checking
2985
+ * specific characteristics of the pattern. It supports detection for both
2986
+ * Microsoft Visual C++ (MSVCPP) and GNU C++ (GNUCPP) mangled names.
2987
+ *
2988
+ * Examples:
2989
+ * - MSVCPP: ??0_Lockit@std@@QEAA@H@Z
2990
+ * - GNUCPP: _ZSt16__ostream_insertIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_PKS3_i
2991
+ *
2992
+ * @param {string} functionPattern - The function name pattern to check.
2993
+ * @returns {boolean} - Returns true if the function name pattern is mangled, otherwise false.
2994
+ */
2995
+ function isFunctionMangled(functionPattern) {
2996
+ return functionPattern.length > 5 && (
2997
+ (functionPattern[0] == '?' && functionPattern.indexOf("@@") !== -1) || // MSVCPP mangler
2998
+ (functionPattern.substring(0, 4) == "_ZSt") // GNUCPP mangler
2999
+ );
3000
+ }
3001
+
3002
+
3003
+
3004
+ /**
3005
+ * Extracts the name of a mangled function from a given function pattern.
3006
+ *
3007
+ * @param {string} functionPattern - The mangled function pattern to analyze.
3008
+ * @returns {string} - The extracted function name if the pattern is recognized as mangled, otherwise returns the original pattern.
3009
+ */
3010
+ function getNameOfMangledFunction(functionPattern) {
3011
+ if (isFunctionMangled(functionPattern)) {
3012
+ if (functionPattern[0] === '?' && functionPattern[1] !== '?') {
3013
+
3014
+ // MSVCPP mangler (e.g., ??0_Lockit@std@@QEAA@H@Z)
3015
+ return functionPattern.split("?")[1].split("@")[0];
3016
+
3017
+ } else if (functionPattern[0] === '?' && functionPattern[1] === '?' && functionPattern[3] === '?' && functionPattern[4] === '$') {
3018
+
3019
+ // MSVCPP mangler (e.g., ??1?$basic_streambuf@DU?$char_traits@D@std@@@std@@UEAA@XZ)
3020
+ return functionPattern.split("$")[1].split("@")[0];
3021
+
3022
+ } else if (functionPattern[0] === '?' && functionPattern[1] === '?' && functionPattern[2] === '_') {
3023
+ // MSVCPP mangler (e.g., ??_7_Facet_base@std@@6B@)
3024
+ var functionName = functionPattern.split("?")[2].split("@")[0];
3025
+
3026
+ functionName = functionName.substring(2, functionName.length);
3027
+ return functionName;
3028
+
3029
+ } else if (functionPattern[0] === '?' && functionPattern[1] === '?') {
3030
+
3031
+ // MSVCPP mangler
3032
+ var functionName = functionPattern.split("?")[2].split("@")[0];
3033
+ functionName = functionName.substring(1, functionName.length); // first char is a number
3034
+ return functionName;
3035
+
3036
+ } else if (functionPattern[0] === '_') {
3037
+
3038
+ // GNUCPP mangler (e.g., _ZSt12functionName)
3039
+ var match = functionPattern.match(/_ZSt(\d+)(\w+)/);
3040
+ if (match) {
3041
+ return match[2].substring(0, parseInt(match[1], 10));
3042
+ } else {
3043
+ return functionPattern;
3044
+ }
3045
+
3046
+ }
3047
+ } else {
3048
+ return functionPattern;
3049
+ }
3050
+ }
3051
+
3052
+
3053
+
3054
+ /**
3055
+ * Validates import hashes in a given database collection.
3056
+ *
3057
+ * @param {Array} dbCollection - The database collection to validate. Each element in the collection is expected to be an array with the following structure:
3058
+ * [name, version, position, hash]
3059
+ * - name {string}: The name of the import.
3060
+ * - version {string}: The version of the import.
3061
+ * - position {number}: The position of the import.
3062
+ * - hash {string}: The hash of the import.
3063
+ * @returns {Array|null} The first array pattern that has a matching import position and hash, or null if no match is found.
3064
+ */
3065
+ function validateImportHashes(dbCollection) {
3066
+ for (var i = 0; i < dbCollection.length; i++) {
3067
+ const
3068
+ currentIndex = i,
3069
+ currentArrayPattern = dbCollection[currentIndex];
3070
+
3071
+ const
3072
+ name = currentArrayPattern[0],
3073
+ version = currentArrayPattern[1],
3074
+ position = currentArrayPattern[2],
3075
+ hash = currentArrayPattern[3];
3076
+
3077
+ if (PE.isImportPositionHashPresent(position, hash)) {
3078
+ return currentArrayPattern;
3079
+ }
3080
+ }
3081
+
3082
+ return null;
3083
+ }
3084
+
3085
+
3086
+
3087
+ /**
3088
+ * Validates section names in a given database collection.
3089
+ *
3090
+ * Iterates through the provided database collection and checks if the section name
3091
+ * is present using the PE.isSectionNamePresent function. If a section name is found,
3092
+ * it returns the corresponding array pattern. If no section name is found, it returns null.
3093
+ *
3094
+ * @param {Array} dbCollection - The database collection to validate, where each element is an array pattern.
3095
+ * @param {string} dbCollection[].0 - The name in the array pattern.
3096
+ * @param {string} dbCollection[].1 - The version in the array pattern.
3097
+ * @param {string} dbCollection[].2 - The section name in the array pattern.
3098
+ * @returns {Array|null} The array pattern with the valid section name, or null if no valid section name is found.
3099
+ */
3100
+ function validateSectionNames(dbCollection) {
3101
+ for (var i = 0; i < dbCollection.length; i++) {
3102
+ const
3103
+ currentIndex = i,
3104
+ currentArrayPattern = dbCollection[currentIndex];
3105
+
3106
+ const
3107
+ name = currentArrayPattern[0],
3108
+ version = currentArrayPattern[1],
3109
+ sectionName = currentArrayPattern[2];
3110
+
3111
+ if (PE.isSectionNamePresent(sectionName)) {
3112
+ return currentArrayPattern;
3113
+ }
3114
+ }
3115
+
3116
+ return null;
3117
+ }
3118
+
3119
+
3120
+
3121
+ function scanForLanguages_NET_and_Native() {
3122
+ log(logType.nothing, "Scanning to programming language has started!");
3123
+
3124
+ var c_cpp = _isLangPresent("C/C++"); // Unknown; C or C++
3125
+
3126
+ const extdb = [
3127
+ ["C++", "cpp"],
3128
+ ["Rust", "rs"],
3129
+ ["Java", "class"],
3130
+ ["JavaScript", "js"],
3131
+ ["Python", "pyd"],
3132
+ ["PureBasic", "pb"]
3133
+ ];
3134
+
3135
+
3136
+ for (var i = 0; i < extdb.length; i++) {
3137
+ const
3138
+ langName = extdb[i][0],
3139
+ langExtName = extdb[i][1];
3140
+
3141
+ if (PE.isSignaturePresent(0x00, PE.getSize(), "%% %% %% %% %% %% %% %% '." + langExtName + "' 00 00")) {
3142
+ log(logType.any, "Lines of ." + langExtName + " files (" + langName + ") detected");
3143
+ _setLangByHeur(langName);
3144
+ }
3145
+ }
3146
+
3147
+
3148
+ if (!_isLangDetected("C++") && PE.isSignaturePresent(0x00, PE.getSize(), "%% %% %% %% %% %% %% %% %% %% '.c' 00")) {
3149
+ log(logType.any, "Lines of .c files (C) detected (not a C++)");
3150
+ _setLangByHeur("C");
3151
+ }
3152
+
3153
+
3154
+ for (var i = 0; i < PE.getNumberOfResources(); i++) {
3155
+ var resourceOffset = PE.getResourceOffsetByNumber(i);
3156
+
3157
+ if (resourceOffset !== -1) {
3158
+ var resourceSignature = PE.getString(resourceOffset, 0x40);
3159
+
3160
+ if (resourceSignature.split(" ")[0] === "object" && resourceSignature.indexOf(": ") !== -1) {
3161
+ _setLangByHeur("Object Pascal");
3162
+ break;
3163
+ }
3164
+ }
3165
+ }
3166
+
3167
+
3168
+ if (!_getNumberOfResults("protector") &&
3169
+ !_getNumberOfResults("cryptor") &&
3170
+ !_getNumberOfResults("~cryptor")
3171
+ ) {
3172
+
3173
+ var isPpLibraryPresent = false,
3174
+ isCLibraryPresent = false;
3175
+
3176
+ for (var i = 0; i < PE.getNumberOfImports(); i++) {
3177
+ const libraryName = PE.getImportLibraryName(i).toLowerCase();
3178
+
3179
+ // Detect mangler
3180
+ for (var k = 0; k < PE.getNumberOfImportThunks(i); k++) {
3181
+ const functionName = PE.getImportFunctionName(i, k); // import, thunk
3182
+
3183
+ if (!isPpLibraryPresent && isFunctionMangled(functionName)) {
3184
+ log(logType.any, "Mangler detected -> \"" + libraryName + "\", at function \"" + getNameOfMangledFunction(functionName) + "\"");
3185
+
3186
+
3187
+ if (!_getNumberOfResults("compiler") && !_getNumberOfResults("~compiler")) {
3188
+ if (functionName[0] == '_') {
3189
+ _setResult("~compiler", "MinGW", String(), String());
3190
+ } else if (functionName[0] == '?') {
3191
+ _setResult("~compiler", "Microsoft Visual C/C++", String(), String());
3192
+ }
3193
+ }
3194
+
3195
+ // if (!_isLangDetected())
3196
+ isPpLibraryPresent = true; // if language is unknown
3197
+ }
3198
+ }
3199
+
3200
+
3201
+
3202
+ if (libraryName.indexOf("msvcr") !== -1) {
3203
+ log(logType.any, "C library present -> \"" + libraryName + "\"");
3204
+ isCLibraryPresent = true;
3205
+ }
3206
+
3207
+ if (
3208
+ libraryName.indexOf("++") !== -1 ||
3209
+ libraryName.indexOf("cpp") !== -1 ||
3210
+ libraryName.indexOf("msvcp") !== -1
3211
+ ) {
3212
+ log(logType.any, "C++ library present -> \"" + libraryName + "\"");
3213
+ isPpLibraryPresent = true;
3214
+ }
3215
+ }
3216
+
3217
+
3218
+
3219
+
3220
+ const rdataSection = PE.section[".rdata"];
3221
+
3222
+ if (rdataSection) {
3223
+ if (c_cpp && // if C/C++ detected by DIE
3224
+ PE.isSignaturePresent(
3225
+ rdataSection.FileOffset,
3226
+ rdataSection.FileSize,
3227
+ generateUnicodeSignatureMask("Visual C++"))) {
3228
+
3229
+ log(logType.any, "Embedded Visual C++ Runtime detected.");
3230
+ isPpLibraryPresent = true; // Visual C++ Runtime library in resources
3231
+ }
3232
+ }
3233
+
3234
+
3235
+ if (isPpLibraryPresent || (c_cpp && PE.isSignaturePresent(0x00, PE.getSize() - PE.getOverlaySize(), "' C++ '"))) {
3236
+ _setLangByHeur("C++");
3237
+ } else if (!_isLangPresent("C++") && isCLibraryPresent && (PE.isFunctionPresent("_iob") || PE.isFunctionPresent("printf") || PE.isFunctionPresent("malloc") || PE.isFunctionPresent("memset"))) {
3238
+ _setLangByHeur("C");
3239
+ } else if (PE.isLibraryPresentExp(/^api-ms-win-crt*/i) || PE.section[".msvcjmc"]) {
3240
+ _setLangByHeur("C/C++");
3241
+ } else if (!_isLangDetected() && !_getNumberOfResults("compiler") && !PE.isNET()) {
3242
+ _setLangByHeur("ASMx" + (PE.is64() ? "64" : "86"));
3243
+ }
3244
+ }
3245
+ }
3246
+
3247
+
3248
+
3249
+ /**
3250
+ * Sets the language based on heuristic analysis.
3251
+ *
3252
+ * @param {string} languageName - The name of the detected language.
3253
+ */
3254
+ function _setLangByHeur(languageName) {
3255
+ log(logType.any, languageName + " language detected!");
3256
+ _setLang(languageName, true, heurLabel);
3257
+ }
3258
+
3259
+
3260
+
3261
+ /**
3262
+ * Logs a message with a specific type and text.
3263
+ *
3264
+ * @param {number} messageTypeId - The type of the message.
3265
+ * -2: Error,
3266
+ * -1: About,
3267
+ * 1: Any,
3268
+ * 2: .NET.
3269
+ * @param {string} messageText - The text of the message to log.
3270
+ * Must not contain newline characters.
3271
+ * @throws Will throw an error if the messageText contains a newline character.
3272
+ */
3273
+ function log(messageTypeId, messageText) {
3274
+ if (!messageText) {
3275
+ return;
3276
+ } else if (messageText.indexOf("\n") != -1) {
3277
+ _error("Illegal char at log( ... )");
3278
+ }
3279
+
3280
+ var prefix = String();
3281
+
3282
+ if (messageTypeId !== -2) {
3283
+ prefix = heurLabel;
3284
+ }
3285
+
3286
+ if (messageTypeId > -2 && messageTypeId !== 0) {
3287
+ prefix += "/";
3288
+ }
3289
+
3290
+ switch (messageTypeId) {
3291
+ case -2:
3292
+ prefix = "!";
3293
+ break;
3294
+ case -1:
3295
+ prefix += "About";
3296
+ break;
3297
+ case 1:
3298
+ prefix += "Any";
3299
+ break;
3300
+ case 2:
3301
+ prefix += ".NET";
3302
+ break;
3303
+ }
3304
+
3305
+ if (typeof _log !== "undefined") {
3306
+ _log("[" + prefix + "] " + messageText);
3307
+ } else {
3308
+ _error("Unable to write log message");
3309
+ }
3310
+ }
3311
+
3312
+
3313
+
3314
+ // ALPHA v0.01
3315
+ // The module is disabled and does not work
3316
+ // You can write this yourself if you want.
3317
+
3318
+ function scanForMaciliousCode_NET_and_Native() {
3319
+
3320
+ var _CriticalProc_ntdll = false;
3321
+
3322
+ if (validateSignature("'RtlSetProcessIsCritical'")) {
3323
+ _CriticalProc_ntdll = true;
3324
+ }
3325
+
3326
+ if (_CriticalProc_ntdll) heurAvSetResult("CriticalProc_ntdll", 8);
3327
+
3328
+
3329
+
3330
+
3331
+ var _TakeScreenshot = false;
3332
+
3333
+ if (PE.isNET()) {
3334
+ if (validateNetObject("BitBlt") || validateNetObject("GetDC")) {
3335
+ _TakeScreenshot = true;
3336
+ }
3337
+ } else { // Global scan
3338
+ if (validateSignature("00'BitBlt'00") || validateSignature("00'GetDC'00")) {
3339
+ _TakeScreenshot = true;
3340
+ }
3341
+ }
3342
+
3343
+ if (_TakeScreenshot) heurAvSetResult("TakeScreenshot", 3);
3344
+ }
3345
+
3346
+
3347
+
3348
+ function heurAvSetResult(label, scores) {
3349
+ if (scores <= 10 && scores >= 0) {
3350
+ _setResult("~macilious", ("Win" + (PE.is64() ? "64" : "32") + ".") + label, "Heuristic AV", scores + "/10");
3351
+ } else {
3352
+ _error("Incorrect scores value for '" + label + "'");
3353
+ }
3354
+ }
3355
+
3356
+
3357
+ // Every time I start writing bad code I get hit with my head on the keybofewuihdsowefjfqodgsa79dowqhdsioefurogrwhuoguethuhofrwyioguqwehuf