2D Rotation

A 2D rotation experiment for educational purposes, illustrated with JavaScript. More

Click the '@' to begin.
\---@---\


This script uses sine and cosine to perform a 2D rotation. These are trigonometric functions to measure the ratio between the hypotenus and the adjacent, or opposed line from θ. sine and cosine can be calculated in 2 ways, either dividing lines with hypotenus, or through feeding a calculating function the θ. In this script the rotation is made around the 'would be' z-axis in a 3D environment. As we keep looping the angle θ value in radian up to 2π(6.28)(360°), sine and cosine relationship/ratio values will keep changing accordingly.

When you want to now the exact length of the θ's opposite line, you multiply hypotenus with its sine, in our case the coordinate Y. Multiply hypotenus with cosinus, and you get the actual length of the adjacent line as well, in our case the coordinate X. Hypotenus becomes the range(line) from θ to the coordinates X/Y, ie. the radius.


JavaScript

var center_x = 225;
var center_y = 295;
var x = 445;
var y = 295;
var angle = 0.03;
var speed = 50;
var x_radius = 200;
var y_radius = 200;

function start() {
	// Math.cos and Math.sin in javascript takes its value in radian, not degrees
	x = Math.round(center_x + Math.cos(angle)*x_radius);
	y = Math.round(center_y + Math.sin(angle)*y_radius);

	// Vis verdier
	document.getElementById('container').innerHTML = ''+
		'Radian = '+Math.round(100*angle)/100+'<br>'+
		'x = '+x+'<br>'+
		'y = '+y+'<br>'+
		'Speed (ms) = '+speed+'<br>'+
		'X-Radius = '+x_radius+'<br>'+
		'Y-Radius = '+y_radius+'<br>';
	
	// Gi satellitt nye koordinater
	document.getElementById('satellite').style.top = y+'px';
	document.getElementById('satellite').style.left = x+'px';
	
	// 360 grader/degree = 2PI radian
	if (angle >= 6.28) { angle = 0.01; } else { angle += 0.03; }
	setTimeout('start()',speed);
}
function Speed(speedVal) {
	// Less is faster (milliseconds delay)
	if (speed > 0) { 
		speed += speedVal;
	} else if (speed == 0 && speedVal > 0) {
		speed += speedVal;
	} else { 
		speed = 0; 
	}	
}
function XRadius(newVal) {
	if (x_radius > 0) { 
		x_radius += newVal;
	} else if (x_radius == 0 && newVal > 0) {
		x_radius += newVal;
	} else { 
		x_radius = 0; 
	}
}
function YRadius(newVal) {
	if (y_radius > 0) { 
		y_radius += newVal;
	} else if (y_radius == 0 && newVal > 0) {
		y_radius += newVal;
	} else { 
		y_radius = 0; 
	}
}

3D Rotation

A 3D rotation experiment for educational purposes, illustrated with JavaScript. More


The cube is the "world", where other objects could be put inside and be affected by the same formula by looping through all the vector points, forcing them to move in the same dimension. I've just used circles to mark the edges of the matrix. This is something I made just to illustrate and learn the basics of a 3D rotation formula.

The next time you play a 3D game you may look at it differently. Realizing that the world and all its objects spins around you every time you turn around, even though your head may tell you it's standing still. This should give better understanding for a good graphics card being important for gaming/3D work as well, since every time you move in a 3D world, it has to turn billions, maybe trillions of vectors to your wanted viewpoint, as well as showing e.g. particle explosions, lighting algorithms and more at the same time. GPUs are specially made for those kind of calculations.

Understanding the formula below and the example code (view source) should be able to inspire multiple creative uses as well as give a basic understanding of how 3D rotation and dynamic worlds works. Game development today largely happens in already-made 3D engines where all of this and SO much more is already covered, but it's still fun to learn and understand some of the lowest basics behind the curtains.

In the 2D script I used this formula to rotate around a center point:
x = Math.cos(Radian)*XRadius(hypotenus)
y = Math.sin(Radian)*YRadius(hypotenus)

By changing the radius, you can simulate x,y rotation as well, but only on a 2D plane. It would be simulation, not real 3D. Add depth with another z calculation with the above formula, and you would have the 3D effect available.

This formula gives the coordinate/vector 'x' and/or 'y' new values based on finding the radian x and y ratio through cosine and sine multiplied by hypotenus to keep the proper center point (radius). This formula could be used for simulating 3D on a 2D plane. It could even be used for real 3D calculation, but you would need to find a way to make the rotation radius/hypotenus values work together when e.g crossing a z-axis with a y-axis rotation. When e.g. the z-rotation closes in on the y-axis, the radius of z-rotation (x) would have to be shortened accordingly, start a x-rotation as well and you may have a challenge.

Here is a formula that does the proper job of 3D calculation. It respects every axis radius/hypotenus in regards to each other.

// Rotation around the X axis
xy = Math.cos(RadianX)*y - Math.sin(RadianX)*z
xz = Math.sin(RadianX)*y + Math.cos(RadianX)*z

// Rotation around the Y axis
yz = Math.cos(RadianY)*xz - Math.sin(RadianY)*x
yx = Math.sin(RadianY)*xz + Math.cos(RadianY)*x

// Rotation around the Z axis
zx = Math.cos(RadianZ)*yx - Math.sin(RadianZ)*xy
zy = Math.sin(RadianZ)*yx + Math.cos(RadianZ)*xy

Where zx(X), zy(Y), yz(Z) are the new values to use after every calculation in a 3D space of coordinated rotation.

By changing the RadianX, RadianY, RadianZ up to 2π(6.28)(360°) in this formula you control every axis rotation, and each rotation radius/hypotenus should work in harmony.

It will help to repeat the chapter in a math book on trigonometry (especially sine and cosine) to get a full grasp on the formula above. I had to myself, and will likely need to again when/if using this formula later.


JavaScript

// General variables
var center = 250;
var smooth = 0;

// Math.cos and Math.sin takes its value in radian, not degrees
var anglex = 0.00;
var angley = 0.00;
var anglez = 0.00;

// This array with vector points should make our cube move in 100x100x100 pixel space
var Points = new Array(
	new Array(-50,-50,-50),
	new Array(50,-50,-50),
	new Array(50,-50,50),
	new Array(-50,-50,50),
	new Array(-50,50,-50),
	new Array(50,50,-50),
	new Array(50,50,50),
	new Array(-50,50,50));

// Function for each cube calculation
// Loops itself once started - makes the cube move in real-time.
function runCube() {

	// Temporary function variables
	var xy, xz, yz, yx, zx, zy;
	var loop_a, x, y, z;
	
	// Loop through the vector points for new transform
	for (loop_a = 0; loop_a <= 7; loop_a++)  {
	
		// Original data from last transform calculation
		x = Points[loop_a][0];
		y = Points[loop_a][1];
		z = Points[loop_a][2];
	
		// Rotation around the X axis
		xy = Math.cos(anglex)*y - Math.sin(anglex)*z;
		xz = Math.sin(anglex)*y + Math.cos(anglex)*z;
	
		// Rotation around the Y axis
		yz = Math.cos(angley)*xz - Math.sin(angley)*x;
		yx = Math.sin(angley)*xz + Math.cos(angley)*x;
	
		// Rotation around the Z axis
		zx = Math.cos(anglez)*yx - Math.sin(anglez)*xy;
		zy = Math.sin(anglez)*yx + Math.cos(anglez)*xy;
	
		// Give points new data
		Points[loop_a][0] = zx;
		Points[loop_a][1] = zy;
		Points[loop_a][2] = yz;
	
		// Update screen representation elements with new data
		var maxScale = (Points[loop_a][2]/100)*48;
		maxScale = (maxScale<18?18:maxScale);
		document.getElementById('satellite'+loop_a).style.top = (center-70) + Points[loop_a][1]+'px';
		document.getElementById('satellite'+loop_a).style.left = center + Points[loop_a][0]+'px';
		document.getElementById('satellite'+loop_a).style.fontSize = maxScale+'px';
		document.getElementById('satellite'+loop_a).style.display = "block";
	
	}
	
	// Update screen information
	var c = document.getElementById('container');
	c.innerHTML = 'Radian X = '+Math.round(100*anglex)/100+'<br>';
	c.innerHTML += 'Radian Y = '+Math.round(100*angley)/100+'<br>';
	c.innerHTML += 'Radian Z = '+Math.round(100*anglez)/100+'<br><br>';
	c.innerHTML += 'Smoothness = '+smooth+'<br>(setTimeout, 0=best)<br ><br>';
	c.innerHTML += '1 = '+Math.round(Points[0][0])+','+Math.round(Points[0][1])+','+Math.round(Points[0][2])+'<br>';
	c.innerHTML += '2 = '+Math.round(Points[1][0])+','+Math.round(Points[1][1])+','+Math.round(Points[1][2])+'<br>';
	c.innerHTML += '3 = '+Math.round(Points[2][0])+','+Math.round(Points[2][1])+','+Math.round(Points[2][2])+'<br>';
	c.innerHTML += '4 = '+Math.round(Points[3][0])+','+Math.round(Points[3][1])+','+Math.round(Points[3][2])+'<br>';
	c.innerHTML += '5 = '+Math.round(Points[4][0])+','+Math.round(Points[4][1])+','+Math.round(Points[4][2])+'<br>';
	c.innerHTML += '6 = '+Math.round(Points[5][0])+','+Math.round(Points[5][1])+','+Math.round(Points[5][2])+'<br>';
	c.innerHTML += '7 = '+Math.round(Points[6][0])+','+Math.round(Points[6][1])+','+Math.round(Points[6][2])+'<br>';
	c.innerHTML += '8 = '+Math.round(Points[7][0])+','+Math.round(Points[7][1])+','+Math.round(Points[7][2])+'<br>';
	
	// Loop the function, let the cube move in real time
	setTimeout('runCube()',smooth);
}

// Controls the execution rate of the function, less is faster with more smooth results.
function Smooth(smoothVal) {
	if (smooth > 0) { 
		smooth += smoothVal;
	} else if (smooth == 0 && smoothVal > 0) {
		smooth += smoothVal;
	} else { 
		smooth = 0; 
	}	
}

// X, Y, Z functions deciding rotation, both speed(angle rate) and direction(positive or negative numbers)
function X(newVal) {
	anglex += newVal;
}
function Y(newVal) {
	angley += newVal;
}
function Z(newVal) {
	anglez += newVal;
}					

AutoClicker | Give your hand a rest.

AutoClicker can help you in certain games and software that requires massive amounts of clicking. More

Car Mechanic Simulator 2018 | PC Game Trainer

A basic trainer for CMS2018. More

Developed for Car Mechanic Simulator 2018 on Steam. Covers the essentials like experience and money.

Start the game entirely and buy something before using money hack. Also take off 1 part from a car before using experience hack. This is needed due to the game dynamically generating its code / JIT. Right-click and run as administrator if it doesn't find the game.

Public release updated May 3rd, 2020.

Download RAR archive

ConvertToHEVC++ A Basic 64-bit H.265/HEVC Converter for Windows

Right click on folder or file (MP4,MKV) in explorer you want to convert to H.265/HEVC. More

1 / 8
Right click on folder or file in explorer you want to convert.
2 / 8
Make selections based on your wanted result.
3 / 8
Make selections based on your wanted result.
4 / 8
Uses NVIDIA NVENC hardware acceleration via CUDA toolkit in FFmpeg.
5 / 8
Uses NVIDIA NVENC hardware acceleration via CUDA toolkit in FFmpeg.
6 / 8
Supports scaling with scale_cuda and default bicubic filter.
7 / 8
Supports multiple instances.
8 / 8
Max 2 streams using stock consumer driver.


Features

  • Hardware accelerated bulk or single conversion of x264 media
    to x265/HEVC via NVIDIA NVENC and CUDA FFmpeg toolkit.
  • Automatic recursive search for MKV and MP4 video files via
    Explorer right-click context menu on folder you select.
  • Saves all successful converted video files detected directly
    in their subfolder location where they are found.
  • Supports various quality profiles; Slow, Medium, Fast.
  • Supports scale_cuda bicubic scaling with various settings; 720, 1080, 1440, 2160.
  • Detects existing HEVC video streams in files. These files are kept original.
  • Software has been tested to load a queue of over 5000
    (suggested max) files in just a few seconds from SSD.
  • Supports multiple instances. Useful for multitasking if you have streams available.
  • Keeps a history of statistics about storage capacity gained from converting media.
  • Automatic scrolling during progression.
    Automatic saving of settings between sessions.
    Automatic start option.
  • Processed files are tagged/named HBYT(HEVC By Thronic).
    Any detected subtitles are also named to match video.
  • Original files that are smaller than the converted version,
    are kept as-is and tagged as well to be ignored on future runs.
  • Failed conversions are kept original, but not tagged.
    Making sure streams are available or updating the GPU driver may help.

Additional notes

If you have a consumer grade GeForce card, you are limited by default to 2 hardware encoding streams. Professional Quadro cards are generally unrestricted (except T1000 which is restricted to 3). Converting on a busy Plex server providing hardware accelerated encoding to users may cause conversions resulting in (Failed) and log "out of memory" errors in the ffmpeg log. This is normal. Your options are to patch the driver, do the work on a dedicated computer without other accelerated tasks interfering (gaming not included, it will use GPU not NVENC), or get a Quadro card.

The card needs to have NVENC support. I recommend any Turing based card.
This would generally mean certain GTX 1050 cards, Quadro T1000 or later.


Changelog

  • 2020.12.18 Initial release
    Initial release, v1.0
  • 2020.12.21 New release v1.1
    Minor bug fixes and improvements.
  • 2021.01.06 New release v1.2
    [🛠] Statistics behavior has been changed from saving to DB after full completion, to saving after every converted file. This will make sure that every converted file is a part if history, even if a batch job has been interrupted and/or cancelled.
  • 2021.01.09 New release v1.3
    [🛠] Improvements and fixes. Improved pre-existing HEVC detection by altering the regular expression used. Fixed a bug where filename searches would include directory as well, causing destination file error. Only affected by directory names containing encoding type in the name (x264, h.264 etc).
  • 2021.01.11 Update for v1.3
    [🛠] Existing HEVC files are now tagged HBYT as well, instead of being entirely skipped.
  • 2021.01.29 New release v1.4
    [🛠] Fixed a bug where if a queue had been interrupted and a 0 byte HBYT file was left behind, future processing of that file would silently fail if original was HEVC.
    [+] User requested feature: Support for 3rd argument EXITWHENDONE so it can be scheduled to run in e.g. taskschd.msc. Remember to put 2nd argument (folder or filename to convert) in quotes("") if you use this feature.
    [+] User requested feature: New checkbox for not detecting HEVC,
    for when you want to transcode it anyway (scaling etc).
    [+] New feature: New checkbox for not detecting HBYT tagged files,
    for when you want to re-process files for any reason.
  • 2021.02.01 Update for v1.4
    [🛠] Updated info text for scaling.
    [+] Added 2 new scaling presets AUTOx480, AUTOx576.
  • 2021.05.01 Latest version v1.6 released May 1st, 2021
    [+] Now has a checkbox for “Accept bigger files”. Useful when upscaling.
    [+] Self-repair code added for the database.
    A user submitted db had an invalid unsigned long long value logged.
  • 2021.05.07 Update for v1.6
    [🛠] Swapped an internal check against failed results with less than 99% saved instead of larger than 0 bytes. A user reported a rare error where a result would be a few KiB and pass previous test.
Download RAR archive

Counter Strike: Source | Aimbot

Made for fun during Christmas 2018 to play around with angle calculations, view matrix and all that stuff. More 

Aim Lock with Reduced Recoil (skull/head bone, mbutton5 within a 9 ° angle / funnel, priority determined by distance and visibility. Simple 3D radar/ESP Overlay (transparent double buffered GDI, no writing or interference of internal performance or graphics).


Extended information and illustration

I have created a JavaScript illustration to the right that uses the same math and partly the same formulas as I do in the program (open in a new window and view its source for more information). Without this sight, the siege would only jump between the enemies. This gives a certain combination of having to aim in a general direction first and the software becomes more of a strong snap-to-target assistant and a little more subtle than just auto aiming everywhere.

Trigonometry math obviously plays a huge part when dealing with aimbots. Normalizing all direction vectors to units makes it practical to take the dot product from those units to calculate the angle difference between the forward player direction vector and enemy location vector. Then it becomes easy to check the 9° funnel. Aiming itself was done using pythagoras theorem (hypotenuse to enemies) with asin and atan functions to find the pitch/yaw angles (I found atan2f in math.h does the heavy lifting of figuring out positive/negative quadrants, atanf doesn't).

Using various public forums, I got enough information to track down the latest memory pointers for critical things needed to create this, there are multiple things I would likely not have been able to reverse on my own. Games based on valve engines are slightly easier than other games, as they provide much debug info via the console and are well documented.

Download N/A - outdated, may update later with new offsets or take a look at CS:GO instead.

My own trigonometry notes in norwegian during development.
Trig notater | Trig notater 2 (synsvinkler)

Disassembler (Standalone CMD/PHP based)

Standalone/Portable PHP x86/x64 Disassembler Script. More



A batch driven PHP script that attempts to disassemble a string of hex/bytes and/or string literal into opcode with intel syntax by using the included objdump executable. Helpful during the creation of software that’s utilizing string literals and byte arrays. Such as memory searching and/or shellcode/codecave injections.

By pasting bytes found in any debugger, you get formatted strings ready to copy and paste into your code. Also useful for tweaking existing bytecode.

Bonus download added as well (FileToByteArray.exe) that can convert an entire file to bytes, if you for example want to dynamically create the file from within your own software so you can distribute a single file.

Download RAR archive

Far Cry 5 | PC Game Trainer

A rushed trainer, just the essentials. Health, Stamina, Endless Resources. More 

While there was multiple easy hacks available like no reload, money, etc, I didn’t want to ruin the game with this, somewhat based on what my son wanted: An immersive experience + still wanting to work for some of it without it being a grind.


Confirmed working at March 6, 2021.

Download RAR archive

GrafJS

A graph system I created with the HTML5 canvas tag, CSS and JavaScript. More

I tried implementing 3rd party frameworks instead to save time, but they ate too much CPU and would even crash the browser after while. GrafJS supports a configurable number of values and graphs. Dynamic width resizing. Percentage based (or any 1-100 values). Minimal performance hit on the browser. Created for psRadar from version 1.0.5.

Example

Download RAR archive

Grim Dawn | PC Game Trainer

A basic trainer for Grim Dawn. More

1 / 5
A basic trainer for Grim Dawn.
2 / 5
Endless Attribute Points and Money.
3 / 5
Endless Skill Points.
4 / 5
Endless Skill Points.
5 / 5
Endless Devotion Points.


Developed and tested for GOG release v1.1.6.2(x64) with all DLCs installed.
Last confirmed working OK with GOG release v1.1.9.0(x64) on March 6, 2021.

Purely AOB based (no static pointers) for increased compatibility with future versions.

Covers the essentials like Health and Mana. Endless Attribute, Devotion and Skill Points.
A x100 Modifier for Experience Gain. Endless Money. Tested to lvl 100 across all DLCs in single player.

Download RAR archive

GTA V | PC Game Trainer

God Mode (persistent), 1000% XP/RP, Endless Ammo, Remove Wanted. More 

Tested working March 6, 2021. Except for remove wanted.


Download RAR archive

IdleGuard | Stays awake while you’re not.

Presses spacebar every 5 minutes in programs that have focus, eg. in a game to avoid idle kick. More

Just Cause 4 | PC Game Trainer

Developed and tested for Epic Games Launcher release when it was free in April 2020.
Purely AOB based (no static pointers) for increased compatibility with future versions. More

Covers the essentials like health and ammo.
Start the game entirely and activate cheats.

Public release updated April 26th, 2020.
Confirmed working OK on March 6, 2021.

Download RAR archive

KeyGuard

A Keylogging Software Suite. More

1 / 4
Server receiving connections from client(s).
2 / 4
Server receiving connections from client(s).
3 / 4
Non malicious visibility.
4 / 4
Removal tool for client.


KeyGuard logs 0-9, a-z, A-Z, Caps Lock, Space, [Enter], [Tab], Backspace(<), Period, Comma, and related window titles. There is no attempts to hide in taskmgr, and uninstalls easily by using the removal tool for clearing its files and registry keys.

Download RAR archive

KiKi Trix

A Tetris Clone. More


Instruksjoner

Klikk Start for å starte et nytt spill. Piltaster kontrollerer brikkene. Pause spillet med P. Last siden på nytt for omstart.

KiKi Trix - En Tetris-klone.
©2007 Dag J Nedrelid

Poengtavle
(Ny)

Kjeksestikk

A Basic DLL Injector. More 

1 / 2
64-bit
2 / 2
32-bit.


Kjeksestikk is a basic (CreateRemoteThread/LoadLibrary w/allocated path buffer) DLL injector.
Kjeksestikk was created during the experimentation and learning of manipulating processes internally.



Demo


Download RAR archive

Knusenarr - Play a prank on a gamer

Play a joke on a gamer you know who uses WASD a lot. More



At certain unavoidable moments, A+W+D will be simultaneously pressed, triggering a visual and audio crack on the users screen every time it occurs. To shut down the harmless executable and all visual cracks, just press L+O+V instead which will confirm shutdown.

A batch file for putting the executable in the users startup folder is included, but not needed. The executable is signed to prevent false AV positives, but may still cause warnings for heuristic reasons.

Download RAR archive

ProcMemInterface.dll (64 & 32-bit)

ProcMemInterface is a foundation library I created for making quick game trainers in C#. More

Exported Functions

  • CreateCave(uintptr_t TargetPtr, SIZE_T AllocSize)
  • WriteMem(bool AddBaseAddr, uintptr_t WriteAddr, unsigned char* WriteBuf, SIZE_T BufSize)
  • ReadMem(bool AddBaseAddr, uintptr_t ReadAddr, unsigned char* ReadBuf, SIZE_T BufSize)
  • PrepProcess(const wchar_t* ExeProcessFileName)
  • AobScan(const unsigned char* Pattern, const char* Mask)
  • GetModBaseAddr(const wchar_t* NameOfModule, bool EndAddrInsteadOfBaseAddr)
SmartHook(
  const unsigned char* ByteSearchPattern,
  const char* ByteSearchMask,
  unsigned char CaveBytes[],
  int CaveBytesLength,
  int ByteSearchJumpOffset, (Startindex=0, offset in AOB to insert jump).
  int ByteSearchJumpInjectStopOffset (Startindex=1, ByteSearchJumpOffset + 5 + NOP count).
)

Where the last one, SmartHook, is the heart and motivation of the project.
While the other functions are also exported and can be used for manual hooking.
Process handle and debug rights is automatically sorted by PrepProcess().

Multithreaded and optimized memory scanning added late April 2020
Resulting in very fast AOB search results (w/mask), e.g. when turning hacks on and off.
Even in modern games (32 & 64-bit) with very large data allocations (4GB+ RAM usage).



General Information

Made for C# GUI projects.

I called it "Smart" hooking because it does a few things automagically that saves me time and effort from having to redo jump and hook management manually every time I want to hack a game. It remembers addresses for jumps and caves as well as original bytes that was replaced in an internal register so it can turn hooks on/off easily. The register supports up to 100 hacks by default. An arbitrary number, easily adjusted.

It will automatically scan the entire game (and its modules) for AOB patterns and register these locations for instant use thereafter. It always reuses individual code caves. It automatically calculates near E9 jumps from/back between hooks and caves, and makes sure the jump is never more than 32-bit long, even in 64-bit processes (Code caves generated from CE may have multiple short 5-byte jumps, this means we would be risking the skew of byte count if replacing return jumps with 64-bit/near 12-14 byte jumps, unnecessarily complicating things. So it sticks strictly to 32-bit near jumps, with guaranteed integrity).



P/Invokes

[DllImport("ProcMemInterface.dll")]
public static extern UIntPtr CreateCave(
  UIntPtr TargetPtr,
  ulong AllocSize
);

[DllImport("ProcMemInterface.dll")]
public static extern UIntPtr AobScan(
  byte[] Pattern,
  string Mask
);

[DllImport("ProcMemInterface.dll")]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool WriteMem(
  bool AddBaseAddr,
  UIntPtr TargetPtr,
  byte[] WriteBuf,
  UIntPtr BufSize
);

[DllImport("ProcMemInterface.dll")]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool ReadMem(
  bool AddBaseAddr,
  UIntPtr TargetPtr,
  byte[] ReadBuf,
  UIntPtr BufSize
);

[DllImport("ProcMemInterface.dll")]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool PrepProcess(
  [MarshalAs(UnmanagedType.LPWStr)] String ExeProcessFileName
);

[DllImport("ProcMemInterface.dll")]
public static extern UIntPtr GetModBaseAddr(
  [MarshalAs(UnmanagedType.LPWStr)] String NameOfModule,
  bool EndAddrInsteadOfBaseAddr
);

[DllImport("ProcMemInterface.dll")]
[return: MarshalAs(UnmanagedType.I1)]
public static extern bool SmartHook(
  byte[] ByteSearchPattern,
  string ByteSearchMask,
  byte[] CaveBytes,
  int CaveByteLength,
  int ByteSearchJumpOffset,
  int ByteSearchJumpInjectStopOffset
);


Download RAR archive

psRadar Direct

A Plex, Sonarr and HW monitor. More

1 / 9
Monitor your Windows server via Web and/or Android.
2 / 9
Simple install and usage.
3 / 9
And/Or via Android.
4 / 9
Android App.
5 / 9
Just enter your host and PIN (friends use Public PIN, only for Calendar).
6 / 9
Friends with Public PIN can only access the Sonarr Calendar.
7 / 9
Sonarr Calendar (both Private og Public PIN can access this).
8 / 9
Hardware Monitoring (only via Private PIN)
9 / 9
Plex Media Server Monitoring (only via Private PIN)


Monitors Plex.tv and Sonarr.tv services via their local API.
It also acts as a hardware monitor, including GPU statistics.

Only a few megabytes in an isolated application folder.
No bloat (shared files, services or third-party software).
A local URL is specified in the Guide page of the program.

[ psRadarDirectSetup.exe | psRadarDirect.apk ]
Android app is also available via Google Play.

Big thanks and improvement credits to Nightwaker for extensive testing!



DISCLAIMER

This software IS NOT affiliated with Plex.tv or Sonarr.tv in ANY WAY.
This software DOES NOT PROVIDE STREAMING, PLAYING OR DOWNLOADING OF MEDIA.
This software is strictly a service-monitoring tool for Plex/Sonarr server managers.
Users of this software are fully responsible for their own server(s) and their content.



Changelog

  • 2018.03.16 Initial Release Windows 1.0.0 and Android app 2.2
    [🛠] Moving away from the online psRadar service, psRadar Direct is a 100% self-hosted and standalone software with new and improved core functionality based on the agent and app for the online version. Continued development will be focused on this Direct version (as in direct-to-your-server, not online-hosted). It also replaces the older Plex Activity Logger.
  • 2018.03.24 Windows Release 1.0.1
    [🛠] Bugfix: Top user activity would show 20 instead of 10.
    [🛠] UI change: Very long titles truncated to 25, floating UI layers will no longer be pushed down by a long title.
  • 2018.05.16 Windows Release 1.0.2
    [🛠] Bugfix: Clients with empty titles (e.g. PS4) now falls back on product and profile, respectively. N/A as a last resort.
  • 2018.06.05 Windows Release 1.0.3
    [🛠] Bugfix: HW transcoding could cause a handled exception, failing to report activity. This has been fixed.
  • 2018.06.27 Windows Release 1.0.4
    [🛠] Bugfix: Browser could freeze over time. This should now be fixed with graph library updates.
    [🛠] Bugfix: Improved transcoding type detection and reporting.
  • 2018.07.05 Windows Release 1.0.5
    [🛠] UI: Third party JavaScript libraries (vis.js and justgage) removed due to performance and instability issues. A custom library Graf.js has been created specifically for psRadar from scratch, and is also freely available for any other recreational use.
  • 2018.07.08 Windows Release 1.0.7
    [🛠] UI++: A server-side buffer has been created as a major boost to the graph. Server maintains history data up to 4K resolution browser widths (5 sets of 3840 points of data).
  • 2018.07.26 Windows Release 1.0.8
    [🛠] Hardware statistics: Moved from OHM to latest LHM DLL for better Ryzen support.
  • 2019.02.16 Windows Release 1.0.10
    [🛠] Misc: Added support for SSL. In this version you also need to copy user.config in appdata from local\Thronic.com to local\Dag_J_Nedrelid to regain config, or just fill and save hosts, ports and pin again. DB is not touched.
  • 2019.04.13 Windows Release 1.0.11
    [🛠] Bugfix: Modifications to the startup system, no longer registry based but a scheduled task for elevation reasons.
  • 2019.05.03 Windows Release 1.0.12
    [🛠] Bugfix: Big optimizations to CPU load. A few bug fixes.
  • 2019.08.06 Windows Release 1.0.13
    [🛠] Bugfix: Fixed a localization datetime database bug.
  • 2020.03.11 Update
    [🛠] Improvement: GPU load will now detect and show the highest value between GPU Core and GPU Video Engine. OHM library updated.
Download RAR archive

RunGuard

RunGuard is a portable software that manages a system's run policy
All changes have immediate effect, no reboots required. More





Who needs something like this?

Environments where people are sharing a single computer and should be restricted to only specific software. To prevent torrenting, installing malware, and effectively slowing down a computer and/or productivity. Like shops, schools, kids or just computer illiterate users. This program works best if the user doesn't know about it, to avoid getting the idea of just renaming executables. The messages from the system will not make that obvious by itself.





Usage

Run on the system you want to protect and set a PIN code. A uniquely named admin-client will be created (do NOT change its name!) located in C:\RunGuard\ and is protected by the PIN. You will always be able to run this for future administration. You can delete the local copy as long as you keep a copy of it somewhere else! You can run it from a USB drive. TIP: Programs starting automatically at boot via HKLM & HKCU also need white listing.



Removal

Simply click uninstall in the client, it will delete the local content.
It require the generation of a new admin-client if you ever use it again.



Suspicious mode, forgotten PIN or lost admin-client

RunGuard will go into a suspicious mode if the local encrypted settings are deleted. You can manually remove %program data%\RgPrevInst.tag to set a new PIN code. If you have lost the uniquely named and whitelisted admin-client, you can in a worst case no-access scenario boot from eg. an OS installation media and mount HKCU / ntuser.dat in %userprofile% temporarily under HKLM to manually edit explorer GPO.



Changelog

  • 2018.11.09 Initial Release 1.0.10
    [🛠] Stability and bug testing performed on Windows 10 Home and Pro.
Download RAR archive

Self Signed Cert (.pfx and .pem)

Script for creating a self-signed PKCS #12 / .pfx certificate along with its PEM for making cert/key files with e.g. notepad. Originally created for use with Sonarr, Radarr and NzbGet for simple SSL setup. More

Just run the cmd script as admin and follow its instructions.

Download RAR archive

SRT Renamer

A script I use for renaming bulks of SRT files instead of doing them one-by-one. More

1 / 2
Looks for files to rename.
2 / 2
After renaming. English assumption is hardcoded.


Put all 3 files in the same directory as the media files and srt files. The script should figure out and also propose before doing any changes, how to rename the SRT files. As long as they are in addic7ed (00x00) or subscene (S00E00) format, and episodes have S00E00 in their name.

Download the script HERE, PHP parser is included. MSDOS Batch based, if you have Linux you can just run the php files without parameters first to preview changes, and with "takeaction" as parameter afterwards.

Download RAR archive

The Forest | PC Game Trainer

Eternal Life, Energy, Perseverance, No Hunger, Endless Stands & Backpack. More 

Last confirmed working March 6, 2021.
JIT game. Let it run and load a bit before activating cheats.


Download RAR archive

Torchlight 2 | PC Game Trainer

Items, Health, Mana, Skills, Attributes and Run Speed. More 

It was mainly a quick project while creating and testing a new DLL framework.


Download RAR archive

VPN Bypass

VPN Bypass can bypass local VPN and have specific domains use the local gateway instead
like it usually would when VPN is not active. For normal routing solutions, not system hooks. More



VPN providers that implement their own traffic inspection and firewall filter will not be bypassed by this software. Any existing antivirus solution must also accept automatic hosts file changes for VPN Bypass to work optimally.

Tested with TigerVPN, OpenVPN (should work with providers supporting and using it) and F-Secure FREEDOME. Originally made for Plex, which uses Amazon CDN and rotating/load balancing IP addresses.

This software installs/removes an added service via the user interface that keeps all hosts in the list updated. (Version 1.2.0+ now also supports round-robin / load balancing where a single domain may point to multiple IP adresses).

If your VPN metric is lower than default Bypass routes, just turn off automatic metric in your NIC and set it to 1. This is a setting available in ncpa.cpl > NIC Properties > TCP/IPv4 properties > Advanced.



Changelog

  • 2015.11.13: Updated Linux Release 0.9.0.1
    [+] Log now has timestamps and is more relaxed and clear.
    [+] New system command: VPBN will show aggregated status.
    [+] Wrapped install/uninstall into single script.
    [🛠] Better survival through network crashes/disconnects.
    [🛠] Better updating algorithm to avoid possible interrupts.
    [+] New datafile that will help to perform proper cleanups.
    [+] Uses dig instead of .NET/Mono to avoid any caching.
  • 2015.12.11: Updated Windows Release 1.0.0.38
    [🛠] Better survival through network crashes/disconnects.
    [🛠] Better updating algorithm to avoid possible interrupts.
    [+] New datafile that will help to perform proper cleanups.
    [🛠] Now accepts and handles dns balancing much better.
  • 2016.03.30: Updated Linux Release 0.9.0.2
    [🛠] Improved explicit outgoing scope on incoming traffic.
    [🛠] Improved custom routing rules cleanup on removal.
  • 2018.02.12: Updated Linux Release 1.0 final!
    [🛠] Misc improvements and testing for Debian 9 and Ubuntu 16.04.
  • 2018.03.04: Updated Windows Release 1.1.0
    [🛠] Improved DNS cache handling.
    [🛠] Cleaned up the service log format a bit.
    [🛠] Made some changes on GUI and ease of use.
    [🛠] Misc. optimizations and bug fixes.
    [+] New icon.
  • 2019.05.02: Updated Windows & GNU/Linux Release 1.2.0
    [+] Upgraded DNS handling with support for round-robin A records.


[ Download RAR archive for Windows ]
The installer executable for Windows.

[ Download RAR archive for Linux ]
A ZIP archive of the GNU/Linux version.
(will install Mono if needed).


Big thanks and improvement credits to Nightwaker for extensive testing!

Valheim | PC Game Trainer

Godmode, Weapon & Armor Condition, Loot Divider(gain more on split). More 

Updated March 16,2021 – Godmode now also increases stamina, max weight, runspeed and damage – all in one.


Usage

Let the game fully load. Run around a little and do the things you try to cheat to activate the game’s dynamic JIT code. Press F1 to activate the cheat. Then enter a numeric menu option and press ENTER to try (de)activating it.



Disclaimer

There’s currently a chance the game will crash right after activation sometimes, but should be rare.


Download RAR archive

Web Galaxy

Web Galaxy is a simplistic multiplayer browser game created in February 2010 (9th to 15th).
It was a very short and loose solo project to try out some new things for fun. More

1 / 5
Build your homebase.
2 / 5
Explore the galaxy and expand your empire.
3 / 5
Conquer other settlements.
4 / 5
... By wiping them out.
5 / 5
Take over!


Open in a new window

Webcam Motion Detector

Javascript for using webcam as a motion detector. More

A simple script for creating a WiFi Hotspot

Edit the script for the desired SSID and password, save and run as administrator. More

It will first show you if your computer supports hotspot at all, then press enter to attempt creating one.
Script will halt when done. Press any key again to close the hotspot and clean up.

Download RAR archive

WiFi Jitter Analyzer

This software analyzes your connection for packet latency and connection stability. More



Mainly created to test gaming setups for a stable flow of packets when logged into a massive online world where things happen in real-time and there's no time for buffering. A steady stream of packets is ultra important for all real-time online experiences and is without a doubt best covered by a physical connection, but this isn't always available, so it can be very useful to test your wireless quality. Packet loss is less important for recorded streaming services like YT, Netflix, etc. that can be buffered. But you want a good score for video chatting, online gaming, etc.

Download RAR archive