Skip to content

Instantly share code, notes, and snippets.

@hasherezade
hasherezade / main.cpp
Created July 17, 2021 16:35
A native way to enumerate processes (alternative to: EnumProcesses, CreateToolhelp32Snapshot - Process32First - Process32Next)
#include <windows.h>
#include <iostream>
#include "ntddk.h"
bool enum_processes()
{
ULONG retLen = 0;
// check length:
@hasherezade
hasherezade / buid_hh.sh
Last active December 29, 2020 14:22
Build Hollows Hunter on Linux (MinGW)
#!/bin/sh
set -e
test -d _hollows_hunter \
|| git clone --recurse-submodules https://github.com/hasherezade/hollows_hunter _hollows_hunter
cd _hollows_hunter
cmake . \
-DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc \
void TestCopy()
{
BOOL cond = FALSE;
IFileOperation *FileOperation1 = NULL;
IShellItem *isrc = NULL, *idst = NULL;
BIND_OPTS3 bop;
SHELLEXECUTEINFOW shexec;
HRESULT r;
do {
@hasherezade
hasherezade / str_ref.py
Created January 28, 2020 01:42
IDA script snippets
#IDA script to print all referenced strings along with their references
import idautils
sc = idautils.Strings()
for s in sc:
curr_str = str(s)
str_offset = s.ea
for xref in idautils.XrefsTo(s.ea):
func = idaapi.get_func(xref.frm)
@hasherezade
hasherezade / lookup.cpp
Last active January 9, 2020 23:44
Zbot - checksum lookup (v2)
#include <Windows.h>
#include <tlhelp32.h>
#include <iostream>
#include <peconv.h> // include libPeConv header (https://github.com/hasherezade/libpeconv)
#include <paramkit.h> // include ParamKit header (https://github.com/hasherezade/paramkit)
using namespace paramkit;
#define PARAM_CHECKSUM "checks"
#define PARAM_CHECKSUM_FUNC "cfunc"
@hasherezade
hasherezade / lookup.cpp
Last active January 9, 2020 06:06
Zbot - checksum to function
#include <Windows.h>
#include <tlhelp32.h>
#include <iostream>
#include <peconv.h> // include libPeConv header
DWORD get_hex_number(char *param)
{
DWORD checksum = 0;
if (sscanf(param, "%X", &checksum) == 0) {
@hasherezade
hasherezade / main.cpp
Created September 5, 2019 23:03
Flare On 2019 - task 9 - reloadered
#include <stdio.h>
#include <windows.h>
#include <peconv.h>
unsigned char encoded_val[0x34] = {
0x44, 0x29, 0x36, 0x0A, 0x29, 0x0F, 0x05, 0x1B, 0x65, 0x26, 0x10, 0x04,
0x2B, 0x68, 0x30, 0x2F, 0x00, 0x33, 0x2F, 0x05, 0x1A, 0x1F, 0x0F, 0x38,
0x02, 0x18, 0x42, 0x02, 0x33, 0x1A, 0x28, 0x04, 0x2A, 0x47, 0x3F, 0x04,
0x26, 0x64, 0x66, 0x4D, 0x10, 0x37, 0x3E, 0x28, 0x3E, 0x77, 0x1C, 0x3F,
0x7E, 0x36, 0x34, 0x2A
@hasherezade
hasherezade / main.cpp
Last active October 4, 2019 19:40
Flare-On Task 12 - string decoder
#include <stdio.h>
#include <windows.h>
#include <peconv.h>
#define EXE_PATH "Z:\\flare\\m.dll"
__int64 (__fastcall *ini_ctx)(BYTE *ctx, BYTE *key, int key_size) = nullptr;
__int64 (__fastcall *decrypt_buf)(BYTE *ctx, BYTE *in_buf, BYTE *out_buf, unsigned int size) = nullptr;
@hasherezade
hasherezade / main.cpp
Created August 27, 2019 21:54
Flare-On Task 10 - solution
#include <Windows.h>
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <ctime>
void decipher(DWORD* v, BYTE *k)
{
unsigned int num_rounds = 32;
unsigned int i;