alpcgo

package module
v0.0.0-...-1c722a5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 12, 2014 License: BSD-2-Clause Imports: 1 Imported by: 0

README

alpcgo

Go tools for basic ALPC hacking. Built on my fork of https://github.com/AllenDang/w32 which has additions to ntdll and avdapi32 to support the required parts of the native API

This code is not heavily tested, its purpose is primarily didactic.

Documentation

Use import "github.com/bnagy/alpcgo" in your own Go code.

Get godoc at: http://godoc.org/github.com/bnagy/alpcgo

Installation

You should follow the instructions to install Go, if you haven't already done so. Then:

$ go get github.com/bnagy/alpcgo

package alpcgo

Higher level API for basic ALPC functions like Send, Connect...

Utility Commands ( cmd/ directory )

alpcechosrv

PoC Echo Server ( part of hello world )

alpcechocli

PoC Echo Client ( part of hello world )

alpcbridge

JSON-RPC bridge with a simple API. Designed to make it easy to connect to raw ALPC ports from any language to build fuzzers or other tools.

alpcechoclij

PoC Echo Client using the jsonrpc bridge

alpcrest

A jsonrpc bridge that listens to http POST on a /rpc endpoint, for HLL clients that find that easier.

TODO

  • Add Attribute support

Bugs

  • No x86 suppport

Contributing

Fork & pullreq

License

BSD Style, See LICENSE file for details

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Accept

func Accept(
	hSrv w32.HANDLE,
	context *w32.AlpcPortContext,
	pConnReq *w32.AlpcShortMessage,
	accept bool,
) (hPort w32.HANDLE, e error)

func ConnectPort

func ConnectPort(serverName, clientName string, pConnMsg *w32.AlpcShortMessage) (hPort w32.HANDLE, e error)

func CreatePort

func CreatePort(name string) (hPort w32.HANDLE, e error)

Convenience method to create an ALPC port with a NULL DACL. Requires an absolute port name ( where / is the root of the kernel object directory )

func ObjectAttributes

func ObjectAttributes(name string) (oa w32.OBJECT_ATTRIBUTES, e error)

func Recv

func Recv(
	hPort w32.HANDLE,
	pMsg *w32.AlpcShortMessage,
	pMsgAttrs *w32.ALPC_MESSAGE_ATTRIBUTES,
	timeout *int64,
) (bufLen uint32, e error)

func Send

func Send(
	hPort w32.HANDLE,
	msg *w32.AlpcShortMessage,
	flags uint32,
	pMsgAttrs *w32.ALPC_MESSAGE_ATTRIBUTES,
	timeout *int64,
) (e error)

Types

This section is empty.

Directories

Path Synopsis
cmd

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL