Skip to content

Instantly share code, notes, and snippets.

@valinet
Last active November 24, 2020 23:06
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save valinet/5df342b822ab1376270cf06479cee2ca to your computer and use it in GitHub Desktop.
Save valinet/5df342b822ab1376270cf06479cee2ca to your computer and use it in GitHub Desktop.
Overview

Welcome to my Git repo. Bellow you can find a list of projects I am working on, sorted chronologically by date of last 'commit':

  • EtherCard-MDNS - Simple multicast DNS name resolution and service discovery library for EtherCard library that works with the ENC28J60 module.

  • homepi+ - homepi+ is an Arduino based implementation of a home control system. . It interfaces and communicates with various hardware devices in order to provide a single point of control for all of them. It is used to control all the electric and electronic equipment in my study room, from light fixtures to computers and laptops. The user interacts with the service using a simple web application which is accessible from any device which has a browser, so pretty much any modern smart device, and can control it not only from the local network, but also from the larger Internet using a robust and secure security mechanism.

  • homepi-android-client - A simple Android web wrapper for the interface of homepi or homepi+.

  • libvalinet - libvalinet is a header-only collection of generic implementations shared between multiple projects. In order to avoid duplicating code between various projects I have, I will reference this library into all of them, and maintaing this single shared instance instead.

  • ThinkPad Keyboard Backlight Manager - ThinkPad Keyboard Backlight Manager is a simple Windows service that maintains keyboard backlight across reboots and temporarily shuts it off when a full screen application is in use

  • Get dark command windows all the time in Windows - This short write-up provides information on how to combine a series of techniques in order to correctly patch an executable. It provides an overview of a couple of operating systems concepts, and how to approach analyzing a similar problem. Although showcased on Windows, the principles mentioned here apply to any modern operating system.

  • Fix Task Manager blurriness on different DPI monitors in Windows 10 - Task Manager on Windows 10 is blurry on secondary monitors if they have a different DPI from the primary monitor. Let's fix that!

  • WinOverview2 - reimplements the classic Task View from earlier builds of Windows 10 that showed the windows around the center of the screen, without a timeline, and most importantly, lag free.

  • ShutdownDaemon - implements a mechanism to find whether the system is shutting down or rebooting in Windows

    This example presents the following concepts:

    • Creating a Windows service
    • Exploring UIs of other applications using UI Automation
    • Using named pipes as a basic IPC mechanism
    • Making web requests (e.g. POST) using WinINet
  • AudioPot - Provides Arduino code for reporting potentiometer values and a Windows service for interpreting and acting on the received data

    This example presents the following concepts:

    • Reading potentiometer values from an analog pin on Arduino and reporting on serial port
    • Creating a Windows service that reads the data and changes the system volume
  • Get browser forward gesture on Android 10 Pixel Experience Plus ROM for Poco F1

    This example shows opcode patching on compiled Android binaries

  • RunPE for x64 - a classic implementation of RunPE, for Windows running on amd64 based systems

  • Convert files to PDF using Puppeteer (Chromium).js

  • WinCenterTitle - a library that is injected into DWM and centers the title bar text in Windows 10

    This example presents the following concepts:

    • Injecting a DLL into a remote process using the classic LoadLibrary/CreateRemoteThread technique
    • Setting up a trampoline using a specialized library
  • homepi - a set of configuration data and front end files for the Raspberry Pi that automates my home office setup

    This example presents the following concepts:

    • Server-side basic coding using PHP
    • Setting up systemd services (like nginx, cups, lircd etc)
    • Creating an asynchronous mechanism for applying settings from the frontend to a (sometimes slow) backend
    • Implementing a high performance server-client solution, using epoll on Linux, and overlapped I/O (CompletionPorts) on Windows
  • WinOverview - a port of the GNOME Activities overview to Windows 10

    This example presents the following concepts:

    • Capturing and presenting live window data
    • Creating windows in bands reserved for the operating system
    • Spawning a process with a lowered token by CreateRemoteThread of WinExec in remote process with lower token
  • Trivial Network Load Balancer - a user-space daemon for balancing traffic across multiple routes which lead to the Internet for Windows 10

    This example presents the following concepts:

    • Using Windows Management Instrumentation to monitor for events:
      • Process creation
      • Performance data, specifically network adapters load information
    • Injecting a DLL into a remote process using classic LoadLibrary/CreateRemoteThread technique; besides injecting an amd64 DLL into an amd64 process from an amd64 process, this shows how to inject an IA-32 DLL into an IA-32 process running under WoW64 (Window on Windows) from an amd64 process - includes parsing the PE header of the DLL and identifying the addresses of relevant functions
    • Setting up a trampoline manually, by statically analyzing the injected function ahead of time
  • ThinkPad LED Control - a Microsoft Windows application that allows controlling the various LEDs present on ThinkPad laptops and linking them to various system events (disk activity, key presses etc.).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment