Skip to content

Instantly share code, notes, and snippets.

View sevaa's full-sized avatar

Seva Alekseyev (he/him) sevaa

View GitHub Profile
@sevaa
sevaa / MovieView.java
Last active April 3, 2021 03:47
Animated GIF support on Android.
package com.mypackage;
import java.util.ArrayList;
import java.util.Date;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
@sevaa
sevaa / FromUTF8.sql
Last active November 7, 2021 21:28
Converting a VARBINARY data block in UTF-8 to a NVARCHAR string in pure Transact-SQL
create function dbo.FromUTF8(@s varbinary(max))
returns nvarchar(max)
as
begin
declare @i int = 1, @n int = datalength(@s), @r nvarchar(max) = N''
declare @c int, @c2 int, @c3 int, @c4 int, @u int
while @i <= @n
begin
set @c = ascii(substring(@s, @i, 1))
@sevaa
sevaa / Dispatcher.cpp
Created November 2, 2017 14:50
Native process isolation using COM and ROT
#include <windows.h>
#include <process.h>
#include <comdef.h>
#include "..\\Worker\\Protocol.h"
#include <string>
using namespace std;
volatile static unsigned int s_CookieGen = 0;
#define INITGUID
#include <SDKDDKVer.h>
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include <mfidl.h>
#include <mfapi.h>
#include <evr.h>
#include <cguid.h>
#include <propvarutil.h>
#include <comdef.h>
@sevaa
sevaa / Delta.cs
Created October 18, 2019 14:48
C# wrapper around MSDelta's ApplyDeltaB API
class Delta
{
[StructLayout(LayoutKind.Sequential)]
private struct DELTA_INPUT
{
public IntPtr lpcStart;
public UIntPtr uSize;
[MarshalAs(UnmanagedType.Bool)]
public bool Editable;
}
using Microsoft.Win32.SafeHandles;
using System.Diagnostics;
using System.Text;
using System;
using System.Threading;
namespace COMNET
{
public class Program
{
@sevaa
sevaa / GoogleIAPSignatureCheck.java
Last active November 7, 2022 19:19
Hand-checking the digital signature of Android in-app purchase against the Google public key
//The modulus of the IAP public key, as Base64.
//The public exponent is 65537, we'll hard-code it.
private static final String GMOD = "APXj+9V6Mrp7DwDVLP2yIDhuMiB30R+NQ9JO14jg42S3TcJFhURQZ2RD21GIbp5S7RLy7YDcxOjH765HM7FWUJgJegvL01lYtzFkXv0XRcnL05m5sgTp58i9fYOJt1QKar2k4FI/a6iv7sjT4qGLOcX3drjDx6WKwZdnu6q5rA94rycHoe+BdELsy1eKBp/iI4KIe/Y3WePYfVgynL4mrJOHutf1tvy6WL04zG61yl3PBlwh6uy1K+RBqEXeiznS0ee4Xq3fe3puq6HgEZKw8PQIihxk8odbg1lneqAk51JZ8vuQi9WEZMdvqWK+p4jT+q7mTYQO18NH1MP5y2/fj8k=";
//d is the value of the IAP result intent's string extra "INAPP_PURCHASE_DATA"
//s is the value of the IAP result intent's string extra "INAPP_DATA_SIGNATURE"
private static boolean PowModThenCheck(String d, String c)
{
try
@sevaa
sevaa / MSISetProp.ps1
Created December 20, 2022 16:58
A Powershell script to change a property value in an MSI file
param($Path, $Property, $Value)
$i = New-Object -COM "WindowsInstaller.Installer"
$db = $i.OpenDatabase($Path, 2)
$r = $i.CreateRecord(2)
$r.StringData(1) = $Value
$r.StringData(2) = $Property
$vw = $db.OpenView("update Property set Value=? where Property=?")
$vw.Execute($r)
$r = $null
@sevaa
sevaa / a.cpp
Created March 2, 2023 14:38
COM double hop test
#include <windows.h>
static const GUID CLSID_B =
{ 0x51addb47, 0xd26a, 0x4f69, { 0xb9, 0x7b, 0x7e, 0x30, 0x62, 0x8d, 0xcf, 0x5b } };
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
_In_opt_ HINSTANCE hPrevInstance,
_In_ LPWSTR lpCmdLine,
_In_ int nCmdShow)
@sevaa
sevaa / ll.py
Last active November 15, 2023 16:50
Test gist for debugging location list parsing
from sys import argv
from elftools.common.exceptions import ELFParseError
from elftools.dwarf.locationlists import LocationLists, LocationListsPair, LocationParser
from elftools.elf.elffile import ELFFile
from inspect import getframeinfo
from elftools.dwarf.dwarfinfo import DWARFInfo
def location_lists(self):
""" Get a LocationLists object representing the .debug_loc/debug_loclists section of
the DWARF data, or None if this section doesn't exist.