diff --git a/Unofficial/CSharp/Scam Breaker/.gitignore b/Unofficial/CSharp/Scam Breaker/.gitignore
new file mode 100644
index 0000000..1e9abf7
--- /dev/null
+++ b/Unofficial/CSharp/Scam Breaker/.gitignore
@@ -0,0 +1,329 @@
+## Ignore Visual Studio temporary files, build results, and
+## files generated by popular Visual Studio add-ons.
+##
+## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
+
+# User-specific files
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# User-specific files (MonoDevelop/Xamarin Studio)
+*.userprefs
+
+# Build results
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+bld/
+[Bb]in/
+[Oo]bj/
+[Ll]og/
+
+# Visual Studio 2015/2017 cache/options directory
+.vs/
+# Uncomment if you have tasks that create the project's static files in wwwroot
+#wwwroot/
+
+# Visual Studio 2017 auto generated files
+Generated\ Files/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+# NUNIT
+*.VisualState.xml
+TestResult.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+# Benchmark Results
+BenchmarkDotNet.Artifacts/
+
+# .NET Core
+project.lock.json
+project.fragment.lock.json
+artifacts/
+
+# StyleCop
+StyleCopReport.xml
+
+# Files built by Visual Studio
+*_i.c
+*_p.c
+*_i.h
+*.ilk
+*.meta
+*.obj
+*.iobj
+*.pch
+*.pdb
+*.ipdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+*.VC.db
+*.VC.VC.opendb
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+*.sap
+
+# Visual Studio Trace Files
+*.e2e
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# JustCode is a .NET coding add-in
+.JustCode
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# DotCover is a Code Coverage Tool
+*.dotCover
+
+# AxoCover is a Code Coverage Tool
+.axoCover/*
+!.axoCover/settings.json
+
+# Visual Studio code coverage results
+*.coverage
+*.coveragexml
+
+# NCrunch
+_NCrunch_*
+.*crunch*.local.xml
+nCrunchTemp_*
+
+# MightyMoose
+*.mm.*
+AutoTest.Net/
+
+# Web workbench (sass)
+.sass-cache/
+
+# Installshield output folder
+[Ee]xpress/
+
+# DocProject is a documentation generator add-in
+DocProject/buildhelp/
+DocProject/Help/*.HxT
+DocProject/Help/*.HxC
+DocProject/Help/*.hhc
+DocProject/Help/*.hhk
+DocProject/Help/*.hhp
+DocProject/Help/Html2
+DocProject/Help/html
+
+# Click-Once directory
+publish/
+
+# Publish Web Output
+*.[Pp]ublish.xml
+*.azurePubxml
+# Note: Comment the next line if you want to checkin your web deploy settings,
+# but database connection strings (with potential passwords) will be unencrypted
+*.pubxml
+*.publishproj
+
+# Microsoft Azure Web App publish settings. Comment the next line if you want to
+# checkin your Azure Web App publish settings, but sensitive information contained
+# in these scripts will be unencrypted
+PublishScripts/
+
+# NuGet Packages
+*.nupkg
+# The packages folder can be ignored because of Package Restore
+**/[Pp]ackages/*
+# except build/, which is used as an MSBuild target.
+!**/[Pp]ackages/build/
+# Uncomment if necessary however generally it will be regenerated when needed
+#!**/[Pp]ackages/repositories.config
+# NuGet v3's project.json files produces more ignorable files
+*.nuget.props
+*.nuget.targets
+
+# Microsoft Azure Build Output
+csx/
+*.build.csdef
+
+# Microsoft Azure Emulator
+ecf/
+rcf/
+
+# Windows Store app package directories and files
+AppPackages/
+BundleArtifacts/
+Package.StoreAssociation.xml
+_pkginfo.txt
+*.appx
+
+# Visual Studio cache files
+# files ending in .cache can be ignored
+*.[Cc]ache
+# but keep track of directories ending in .cache
+!*.[Cc]ache/
+
+# Others
+ClientBin/
+~$*
+*~
+*.dbmdl
+*.dbproj.schemaview
+*.jfm
+*.pfx
+*.publishsettings
+orleans.codegen.cs
+
+# Including strong name files can present a security risk
+# (https://github.com/github/gitignore/pull/2483#issue-259490424)
+#*.snk
+
+# Since there are multiple workflows, uncomment next line to ignore bower_components
+# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
+#bower_components/
+
+# RIA/Silverlight projects
+Generated_Code/
+
+# Backup & report files from converting an old project file
+# to a newer Visual Studio version. Backup files are not needed,
+# because we have git ;-)
+_UpgradeReport_Files/
+Backup*/
+UpgradeLog*.XML
+UpgradeLog*.htm
+ServiceFabricBackup/
+*.rptproj.bak
+
+# SQL Server files
+*.mdf
+*.ldf
+*.ndf
+
+# Business Intelligence projects
+*.rdl.data
+*.bim.layout
+*.bim_*.settings
+*.rptproj.rsuser
+
+# Microsoft Fakes
+FakesAssemblies/
+
+# GhostDoc plugin setting file
+*.GhostDoc.xml
+
+# Node.js Tools for Visual Studio
+.ntvs_analysis.dat
+node_modules/
+
+# Visual Studio 6 build log
+*.plg
+
+# Visual Studio 6 workspace options file
+*.opt
+
+# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
+*.vbw
+
+# Visual Studio LightSwitch build output
+**/*.HTMLClient/GeneratedArtifacts
+**/*.DesktopClient/GeneratedArtifacts
+**/*.DesktopClient/ModelManifest.xml
+**/*.Server/GeneratedArtifacts
+**/*.Server/ModelManifest.xml
+_Pvt_Extensions
+
+# Paket dependency manager
+.paket/paket.exe
+paket-files/
+
+# FAKE - F# Make
+.fake/
+
+# JetBrains Rider
+.idea/
+*.sln.iml
+
+# CodeRush
+.cr/
+
+# Python Tools for Visual Studio (PTVS)
+__pycache__/
+*.pyc
+
+# Cake - Uncomment if you are using it
+# tools/**
+# !tools/packages.config
+
+# Tabs Studio
+*.tss
+
+# Telerik's JustMock configuration file
+*.jmconfig
+
+# BizTalk build output
+*.btp.cs
+*.btm.cs
+*.odx.cs
+*.xsd.cs
+
+# OpenCover UI analysis results
+OpenCover/
+
+# Azure Stream Analytics local run output
+ASALocalRun/
+
+# MSBuild Binary and Structured Log
+*.binlog
+
+# NVidia Nsight GPU debugger configuration file
+*.nvuser
+
+# MFractors (Xamarin productivity tool) working folder
+.mfractor/
diff --git a/Unofficial/CSharp/Scam Breaker/README.md b/Unofficial/CSharp/Scam Breaker/README.md
new file mode 100644
index 0000000..64c3321
--- /dev/null
+++ b/Unofficial/CSharp/Scam Breaker/README.md
@@ -0,0 +1,25 @@
+# Scam Breaker - By [Twitter.com/0x000T](https://www.twitter.com/0x000T)
+## Made for scambaiters who wanna waste scammers time trying to type.
+### Use on a VM, do not use on your real computer.
+#### Requires .NET 4.6.2 - Download [.NET 4.6.2](https://www.microsoft.com/en-us/download/details.aspx?id=53344)
+
+This is a simple program, that runs in the background.
+It will detect if a notepad is open, and then it will scan for keywords that match.. **Customizable keywords**
+You can edit the keywords using **Breaker_config.json**. If it detects a keyword, it will lock the entire notepad.
+And change the text inside, title of the notepad window. It takes minimal CPU.
+
+### To be added
++ On exit it will run again.. (If not crashed).
++ GUI for easy config editing.
++ Hooks into Command Prompt (cmd.exe).
+
+### Screenshot
+
+
+For now you'll need to edit the **Breaker_config.json**, which will be generated inside **C:\Windows\Breaker_config.json**
+I'm going to make a GUI editor for the easy edit.
+
+Most contents of this program is originally made by Raffael, [en.code-bude.net](https://en.code-bude.net/2014/12/04/manipulate-any-program-by-using-c/)
+Modified to make it fun for scambaiters.
+I really hope [Kitboga](https://www.twitch.tv/kitboga) uses this for his scambaits.
+I hope you enjoy some fun times with this lil' program.
diff --git a/Unofficial/CSharp/Scam Breaker/Source/Scam Breaker.sln b/Unofficial/CSharp/Scam Breaker/Source/Scam Breaker.sln
new file mode 100644
index 0000000..a587645
--- /dev/null
+++ b/Unofficial/CSharp/Scam Breaker/Source/Scam Breaker.sln
@@ -0,0 +1,22 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.40629.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Scam Breaker", "Scam Breaker\Scam Breaker.csproj", "{F603E9C1-09D6-4F90-ABA2-776EFC6DE5EE}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Release|Any CPU = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {F603E9C1-09D6-4F90-ABA2-776EFC6DE5EE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {F603E9C1-09D6-4F90-ABA2-776EFC6DE5EE}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {F603E9C1-09D6-4F90-ABA2-776EFC6DE5EE}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {F603E9C1-09D6-4F90-ABA2-776EFC6DE5EE}.Release|Any CPU.Build.0 = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/Unofficial/CSharp/Scam Breaker/Source/Scam Breaker/App.config b/Unofficial/CSharp/Scam Breaker/Source/Scam Breaker/App.config
new file mode 100644
index 0000000..1e2716b
--- /dev/null
+++ b/Unofficial/CSharp/Scam Breaker/Source/Scam Breaker/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/Unofficial/CSharp/Scam Breaker/Source/Scam Breaker/Iconbest-Helldesign-Devil-mad.ico b/Unofficial/CSharp/Scam Breaker/Source/Scam Breaker/Iconbest-Helldesign-Devil-mad.ico
new file mode 100644
index 0000000..9042c55
Binary files /dev/null and b/Unofficial/CSharp/Scam Breaker/Source/Scam Breaker/Iconbest-Helldesign-Devil-mad.ico differ
diff --git a/Unofficial/CSharp/Scam Breaker/Source/Scam Breaker/Program.cs b/Unofficial/CSharp/Scam Breaker/Source/Scam Breaker/Program.cs
new file mode 100644
index 0000000..d3d136d
--- /dev/null
+++ b/Unofficial/CSharp/Scam Breaker/Source/Scam Breaker/Program.cs
@@ -0,0 +1,498 @@
+using Newtonsoft.Json;
+using Newtonsoft.Json.Linq;
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Linq;
+using System.Reflection;
+using System.Runtime.InteropServices;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+using NotepadBreaker.Client;
+
+namespace Scam_Breaker
+{
+ public class Program
+ {
+ [DllImport("user32.dll")]
+ private static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count);
+
+ [DllImport("user32.dll")]
+ private static extern IntPtr GetMenu(IntPtr hWnd);
+
+ [DllImport("user32.dll")]
+ private static extern bool InsertMenu(IntPtr hMenu, Int32 wPosition, Int32 wFlags, Int32 wIDNewItem, string lpNewItem);
+
+ [DllImport("user32.dll")]
+ private static extern int GetMenuItemCount(IntPtr hMenu);
+
+ [DllImport("user32.dll")]
+ private static extern bool DrawMenuBar(IntPtr hWnd);
+
+ [DllImport("user32.dll", SetLastError = true)]
+ private static extern IntPtr FindWindowEx(IntPtr hwndParent,
+ IntPtr hwndChildAfter, string lpszClass, IntPtr lpszWindow);
+
+ [DllImport("user32.dll", EntryPoint = "SendMessage")]
+ private static extern IntPtr SendMessageGetTextW(IntPtr hWnd,
+ uint msg, UIntPtr wParam, StringBuilder lParam);
+
+ [DllImport("User32.dll", EntryPoint = "SendMessage")]
+ private extern static int SendMessageGetTextLength(IntPtr hWnd,
+ int msg, IntPtr wParam, IntPtr lParam);
+
+ [DllImport("user32.dll")]
+ [return: MarshalAs(UnmanagedType.Bool)]
+ private static extern bool SetForegroundWindow(IntPtr hWnd);
+
+ [DllImport("user32.dll")]
+ private static extern IntPtr SetWinEventHook(uint eventMin, uint eventMax, IntPtr
+ hmodWinEventProc, WinEventDelegate lpfnWinEventProc, uint idProcess,
+ uint idThread, uint dwFlags);
+
+ [DllImport("User32.dll", CharSet = CharSet.Unicode)]
+ public static extern int MessageBox(IntPtr h, string m, string c, int type);
+
+ [DllImport("user32.dll")]
+ private static extern bool UnhookWinEvent(IntPtr hWinEventHook);
+
+ public delegate void WinEventDelegate(IntPtr hWinEventHook, uint eventType,
+ IntPtr hwnd, int idObject, int idChild, uint dwEventThread, uint dwmsEventTime);
+
+ [DllImport("user32.dll", SetLastError = true)]
+ private static extern IntPtr SetParent(IntPtr hWndChild, IntPtr hWndNewParent);
+
+ //Sets window attributes
+ [DllImport("USER32.DLL")]
+ public static extern int SetWindowLong(IntPtr hWnd, int nIndex, int dwNewLong);
+
+ [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
+ public static extern bool SetWindowText(IntPtr hwnd, String lpString);
+
+ private const int MF_BYCOMMAND = 0x00000000;
+ public const int SC_CLOSE = 0xF060;
+ public const int SC_MINIMIZE = 0xF020;
+ public const int SC_MAXIMIZE = 0xF030;
+
+ [DllImport("user32.dll")]
+ private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
+
+ [DllImport("user32.dll")]
+ private static extern bool DeleteMenu(IntPtr hMenu, uint uPosition, uint uFlags);
+
+ [DllImport("user32.dll", EntryPoint = "ShowWindow", SetLastError = true)]
+ private static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
+
+ public static WinEventDelegate procDelegate;
+
+ public static IntPtr hhook;
+
+ private const uint EVENT_OBJECT_INVOKED = 0x8013;
+ private const uint WINEVENT_OUTOFCONTEXT = 0;
+ private const Int32 _CustomMenuID = 1000;
+ private const Int32 MF_BYPOSITION = 0x400;
+ private const Int32 WM_SYSCOMMAND = 0x112;
+
+ private const int SW_HIDE = 0;
+
+ private const int SW_RESTORE = 9;
+
+ public static Process ThisProcess;
+ public static Configuration config;
+ public static bool NeedsRefresh = false;
+
+ public class Configuration
+ {
+ public bool TaskManagerKiller = false;
+ public bool ForceShutdown = false;
+ public bool HookToNotepad = true;
+ public bool eventLogClear = false;
+ public int Interval = 500;
+ public TaskManagerMessage _TaskManagerMessage;
+ public NotepadRows Rows = new NotepadRows() { rows = new List() { new NotepadMessage() { RowMessage = "Scam breaker By @0x000T" } } };
+ public List NotepadKeywords = new List() { new NotepadKeyword() { Keyword = "Customer", message = new TaskManagerMessage() { Message = "Scammer!", Title = "Scammer! xD" } } };
+ }
+
+ public class TaskManagerMessage
+ {
+ public string Message;
+ public string Title;
+ }
+
+ public class NotepadRows
+ {
+ public List rows = new List();
+ }
+
+ public class NotepadMessage
+ {
+ public string RowMessage;
+ }
+
+ public class NotepadKeyword
+ {
+ public string Keyword;
+ public bool Caps_Sensitive = false;
+ public TaskManagerMessage message;
+ }
+
+ private static void Main(string[] args)
+ {
+ CreateConfigFile();
+ ReadConfig();
+ CreateWatcher();
+ AppDomain.CurrentDomain.ProcessExit += new EventHandler(CurrentDomain_ProcessExit);
+ Task.Run(async () => await PerformActions());
+ ThisProcess = Process.GetCurrentProcess();
+ Console.WriteLine("hey");
+ wait:
+ IdefiniteAsync().Wait();
+ goto wait;
+ }
+
+ public static async Task IdefiniteAsync()
+ {
+ await Task.Delay(-1);
+ }
+
+ public static void CreateWatcher()
+ {
+ var watch = new FileSystemWatcher();
+ watch.Path = @"C:\Windows";
+ watch.NotifyFilter = NotifyFilters.LastWrite;
+ watch.Changed += new FileSystemEventHandler(OnChanged);
+ watch.EnableRaisingEvents = true;
+ }
+
+ public static List handlesNp = new List();
+ public static Dictionary handlesNpEdit = new Dictionary();
+
+ public static string getNotepadText(IntPtr npHandle)
+ {
+ return GetWindowText(FindWindowEx(npHandle, IntPtr.Zero, "Edit", IntPtr.Zero));
+ }
+
+ private static bool IsValidJson(string strInput)
+ {
+ strInput = strInput.Trim();
+ if ((strInput.StartsWith("{") && strInput.EndsWith("}")) || //For object
+ (strInput.StartsWith("[") && strInput.EndsWith("]"))) //For array
+ {
+ try
+ {
+ var obj = JToken.Parse(strInput);
+ return true;
+ }
+ catch (JsonReaderException jex)
+ {
+ //Exception in parsing json
+ Console.WriteLine(jex.Message);
+ return false;
+ }
+ catch (Exception ex) //some other exception
+ {
+ Console.WriteLine(ex.ToString());
+ return false;
+ }
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ public static List ShownMsg = new List();
+
+ public static bool IsConfig(IntPtr Handle)
+ {
+ return GetProcessByHandle(Handle).MainWindowTitle.Contains("Breaker_config.json");
+ }
+
+ public static void HookNotepad(List Names)
+ {
+ handlesNp.Clear();
+ handlesNpEdit.Clear();
+ ShownMsg.Clear();
+
+ handlesNp = Process.GetProcessesByName("notepad").Select(x => x.MainWindowHandle).ToList();
+
+ foreach (var npHandle in handlesNp.Select((x, i) => new { Handle = x, Index = i }))
+ {
+ handlesNpEdit.Add(npHandle.Handle, FindWindowEx(npHandle.Handle, IntPtr.Zero, "Edit", IntPtr.Zero));
+ var sysMenu = GetMenu(npHandle.Handle);
+
+ if (config != null)
+ {
+ var text = GetWindowText(FindWindowEx(npHandle.Handle, IntPtr.Zero, "Edit", IntPtr.Zero));
+ foreach (NotepadKeyword key in config.NotepadKeywords)
+ {
+ if (key.Caps_Sensitive)
+ {
+ if (text.Contains(key.Keyword))
+ {
+ if (!IsConfig(npHandle.Handle) && !ShownMsg.Exists(x => x == npHandle.Handle))
+ {
+ ShownMsg.Add(npHandle.Handle);
+ {
+ try
+ {
+ SetWindowText(npHandle.Handle, "REKT by Scam Breaker!");
+ GetProcessByHandle(npHandle.Handle).SetText(key.message.Message);
+ {
+ SetWindowLong(handlesNpEdit.ElementAt(npHandle.Index).Value, 0, 0);
+ }
+ IntPtr menu = GetSystemMenu(npHandle.Handle, false);
+ if (menu != IntPtr.Zero)
+ {
+ DeleteMenu(menu, SC_CLOSE, MF_BYCOMMAND);
+ DeleteMenu(menu, SC_MAXIMIZE, MF_BYCOMMAND);
+ DeleteMenu(menu, SC_MINIMIZE, MF_BYCOMMAND);
+ }
+ }
+ catch
+ {
+ }
+ }
+ }
+ }
+ }
+ else if (!key.Caps_Sensitive)
+ {
+ if (text.ToLower().Contains(key.Keyword.ToLower()))
+ {
+ if (!IsConfig(npHandle.Handle) && !ShownMsg.Exists(x => x == npHandle.Handle))
+ {
+ ShownMsg.Add(npHandle.Handle);
+ {
+ try
+ {
+ SetWindowText(npHandle.Handle, "REKT by Scam Breaker!");
+ GetProcessByHandle(npHandle.Handle).SetText(key.message.Message);
+ {
+ SetWindowLong(handlesNpEdit.ElementAt(npHandle.Index).Value, 0, 0);
+ }
+ IntPtr menu = GetSystemMenu(npHandle.Handle, false);
+ if (menu != IntPtr.Zero)
+ {
+ DeleteMenu(menu, SC_CLOSE, MF_BYCOMMAND);
+ DeleteMenu(menu, SC_MAXIMIZE, MF_BYCOMMAND);
+ DeleteMenu(menu, SC_MINIMIZE, MF_BYCOMMAND);
+ }
+ }
+ catch
+ {
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if (GetMenuItemCount(sysMenu) < 6)
+ {
+ int total = GetMenuItemCount(sysMenu);
+ for (int i = 0; i < Names.Count; i++)
+ {
+ InsertMenu(sysMenu, total + i, MF_BYPOSITION, _CustomMenuID, Names[i]);
+ }
+
+ DrawMenuBar(npHandle.Handle);
+ }
+ }
+
+ hhook = SetWinEventHook(EVENT_OBJECT_INVOKED, EVENT_OBJECT_INVOKED, IntPtr.Zero,
+ procDelegate, 0, 0, WINEVENT_OUTOFCONTEXT);
+ }
+
+ public static Process GetProcessByHandle(IntPtr handle)
+ {
+ try
+ {
+ return Process.GetProcesses().Where(x => x.MainWindowHandle == handle).First();
+ }
+ catch
+ {
+ return null;
+ }
+ }
+
+ public static void DeleteEventLogs()
+ {
+ foreach (var eventLog in EventLog.GetEventLogs())
+ {
+ eventLog.Clear();
+ eventLog.Dispose();
+ }
+ }
+
+ public static string GetWindowText(IntPtr hwnd)
+ {
+ int len = SendMessageGetTextLength(hwnd, 14, IntPtr.Zero, IntPtr.Zero) + 1;
+ StringBuilder sb = new StringBuilder(len);
+ SendMessageGetTextW(hwnd, 13, new UIntPtr((uint)len), sb);
+ return sb.ToString();
+ }
+
+ private static async void OnChanged(object source, FileSystemEventArgs e)
+ {
+ FileSystemWatcher fsw_ = (FileSystemWatcher)source;
+
+ try
+ {
+ fsw_.EnableRaisingEvents = false;
+ if (e.Name == "Breaker_config.json")
+ {
+ await Task.Run(() => ReadConfig());
+ Console.WriteLine("Config Refreshed!");
+ }
+ }
+ finally
+ {
+ fsw_.EnableRaisingEvents = true;
+ }
+ }
+
+ public static bool IsFileLocked(FileInfo file)
+ {
+ FileStream stream = null;
+
+ try
+ {
+ stream = file.Open(FileMode.Open, FileAccess.Read, FileShare.None);
+ }
+ catch (IOException)
+ {
+ return true;
+ }
+ finally
+ {
+ if (stream != null)
+ stream.Close();
+ }
+
+ return false;
+ }
+
+ public static void ReadConfig()
+ {
+ if (File.Exists(@"C:\Windows\Breaker_config.json") && !IsFileLocked(new FileInfo(@"C:\Windows\Breaker_config.json")))
+ {
+ config = JsonConvert.DeserializeObject(File.ReadAllText(@"C:\Windows\Breaker_config.json"));
+ Console.WriteLine("Config Read!");
+ NeedsRefresh = false;
+ }
+ else
+ {
+ NeedsRefresh = true;
+ }
+ }
+
+ public static async Task PerformActions()
+ {
+ while (true)
+ {
+ try
+ {
+ if (!File.Exists(@"C:\Windows\Breaker_config.json"))
+ {
+ CreateConfigFile();
+ }
+
+ if (config.ForceShutdown)
+ {
+ Console.WriteLine("Shutting down!");
+ Environment.Exit(0);
+ }
+
+ if (config != null && config.TaskManagerKiller)
+ {
+ if (Process.GetProcessesByName("Taskmgr").Length > 0)
+ {
+ foreach (var proc in Process.GetProcessesByName("Taskmgr"))
+ {
+ proc.Kill();
+ }
+ }
+ }
+
+ if (config != null && config.eventLogClear)
+ {
+ DeleteEventLogs();
+ }
+
+ if (config != null && config.HookToNotepad)
+ {
+ if (config != null)
+ {
+ List str = new List();
+ config.Rows.rows.ForEach(x => { if (str.Contains(x.RowMessage)) { return; } str.Add(x.RowMessage); });
+ if (str.Count > 0)
+ {
+ HookNotepad(str);
+ }
+ }
+ else
+ {
+ HookNotepad(new List() { "Scam Breaker By 0x000T" });
+ }
+ }
+
+ if (NeedsRefresh)
+ {
+ ReadConfig();
+ }
+ if (config == null && config.Interval == 0)
+ {
+ await Task.Delay(500);
+ }
+ else if (config.Interval > 0)
+ {
+ await Task.Delay(config.Interval);
+ }
+ }
+ catch
+ {
+ Console.WriteLine("App Exception");
+ }
+ }
+ }
+
+ public static void CreateConfigFile()
+ {
+ if (!File.Exists(@"C:\Windows\Breaker_config.json"))
+ {
+ using (StreamWriter sw = File.CreateText(@"C:\Windows\Breaker_config.json"))
+ {
+ var msg = new TaskManagerMessage
+ {
+ Message = "Messagebox Message",
+ Title = "Title",
+ };
+
+ var cfg = new Configuration
+ {
+ ForceShutdown = false,
+ TaskManagerKiller = true,
+ _TaskManagerMessage = msg,
+ };
+ string json = JsonConvert.SerializeObject(cfg, Formatting.Indented);
+ sw.WriteLine(json);
+ sw.Close();
+ }
+ }
+ }
+
+ private static void CurrentDomain_ProcessExit(object sender, EventArgs e)
+ {
+ if (!config.ForceShutdown)
+ {
+ string codeBase = Assembly.GetExecutingAssembly().CodeBase;
+ ProcessStartInfo info = new ProcessStartInfo(codeBase);
+ Process proc = Process.Start(info);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Unofficial/CSharp/Scam Breaker/Source/Scam Breaker/Properties/AssemblyInfo.cs b/Unofficial/CSharp/Scam Breaker/Source/Scam Breaker/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000..efdaf93
--- /dev/null
+++ b/Unofficial/CSharp/Scam Breaker/Source/Scam Breaker/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("Scam Breaker")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("Scam Breaker")]
+[assembly: AssemblyCopyright("Copyright © 2018")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("6685ea5e-c838-42fc-a927-5a80f1637685")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Unofficial/CSharp/Scam Breaker/Source/Scam Breaker/Scam Breaker.csproj b/Unofficial/CSharp/Scam Breaker/Source/Scam Breaker/Scam Breaker.csproj
new file mode 100644
index 0000000..fa95d83
--- /dev/null
+++ b/Unofficial/CSharp/Scam Breaker/Source/Scam Breaker/Scam Breaker.csproj
@@ -0,0 +1,123 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {F603E9C1-09D6-4F90-ABA2-776EFC6DE5EE}
+ WinExe
+ Properties
+ Scam_Breaker
+ Scam Breaker
+ v4.6.2
+ 512
+ true
+
+ false
+ publish\
+ true
+ Disk
+ false
+ Foreground
+ 7
+ Days
+ false
+ false
+ false
+ false
+ 1
+ 1.0.0.%2a
+ false
+ true
+ true
+
+
+ AnyCPU
+ true
+ full
+ false
+ bin\Debug\
+ DEBUG;TRACE
+ prompt
+ 4
+ false
+
+
+ AnyCPU
+ pdbonly
+ true
+ bin\Release\
+ TRACE
+ prompt
+ 4
+ false
+
+
+
+
+
+ Iconbest-Helldesign-Devil-mad.ico
+
+
+ 54C1FE480131F196C9CBC27C9E75FBEF1A640707
+
+
+ Scam Breaker_TemporaryKey.pfx
+
+
+ true
+
+
+ true
+
+
+
+ ..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll
+ True
+
+
+ ..\..\..\Crypto Obfuscator Projects\Notepad Breaker\CryptoObfuscator_Output\NotepadBreaker.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ False
+ .NET Framework 3.5 SP1 Client Profile
+ false
+
+
+ False
+ .NET Framework 3.5 SP1
+ false
+
+
+
+
+
\ No newline at end of file
diff --git a/Unofficial/CSharp/Scam Breaker/Source/Scam Breaker/packages.config b/Unofficial/CSharp/Scam Breaker/Source/Scam Breaker/packages.config
new file mode 100644
index 0000000..07e3593
--- /dev/null
+++ b/Unofficial/CSharp/Scam Breaker/Source/Scam Breaker/packages.config
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file