libpince package

Submodules

libpince.debugcore module

libpince.regexes module

Copyright (C) 2016-2017 Korcan Karaokçu <korcankaraokcu@gmail.com>

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

libpince.regexes.gdb_command_source(command_file)[source]
Return type:

Pattern[str]

libpince.typedefs module

Copyright (C) 2016-2017 Korcan Karaokçu <korcankaraokcu@gmail.com>

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

class libpince.typedefs.ATTACH_RESULT[source]

Bases: object

ALREADY_DEBUGGING = 4
ALREADY_TRACED = 5
ATTACH_SELF = 1
PERM_DENIED = 6
PROCESS_NOT_VALID = 3
SUCCESSFUL = 2
class libpince.typedefs.AllocatedMemory(address, size, identity=None)[source]

Bases: object

class libpince.typedefs.BREAKPOINT_MODIFY[source]

Bases: object

CONDITION = 1
DISABLE = 3
ENABLE = 2
ENABLE_COUNT = 5
ENABLE_DELETE = 6
ENABLE_ONCE = 4
class libpince.typedefs.BREAKPOINT_ON_HIT[source]

Bases: object

BREAK = 1
FIND_ADDR = 3
FIND_CODE = 2
TRACE = 4
class libpince.typedefs.BREAKPOINT_TYPE[source]

Bases: object

HARDWARE = 1
SOFTWARE = 2
class libpince.typedefs.BitFieldValueType(bits=1, start_bit=0, *, value_repr=0)[source]

Bases: ValueType

decode(data)[source]
Return type:

str | int

encode(value)[source]
Return type:

bytes | None

encode_into(current, value)[source]
Return type:

bytes | None

parse(text)[source]
Return type:

int | None

property read_size: int

Number of bytes required for a memory read.

serialize()[source]
Return type:

tuple[int, int, int, int]

text()[source]
Return type:

str

class libpince.typedefs.ByteArrayValueType(length=10)[source]

Bases: ValueType

decode(data)[source]
Return type:

str

encode(value)[source]
Return type:

bytes | None

parse(text)[source]
Return type:

list[int] | None

property read_size: int | None

Number of bytes required for a memory read.

text()[source]
Return type:

str

class libpince.typedefs.ENDIANNESS[source]

Bases: object

BIG = 2
HOST = 0
LITTLE = 1
class libpince.typedefs.FREEZE_TYPE[source]

Bases: object

ALLOW_DECREMENT = 2
ALLOW_INCREMENT = 1
DEFAULT = 0
class libpince.typedefs.FloatValueType(bits=32, *, endian=0)[source]

Bases: ValueType

decode(data)[source]
Return type:

float

encode(value)[source]
Return type:

bytes | None

parse(text)[source]
Return type:

float | None

property read_size: int

Number of bytes required for a memory read.

text()[source]
Return type:

str

class libpince.typedefs.Frozen(value, freeze_type=0)[source]

Bases: object

exception libpince.typedefs.GDBInitializeException(message='GDB not initialized')[source]

Bases: Exception

class libpince.typedefs.INFERIOR_ARCH[source]

Bases: object

ARCH_32 = 1
ARCH_64 = 2
class libpince.typedefs.INFERIOR_STATUS[source]

Bases: object

RUNNING = 1
STOPPED = 2
class libpince.typedefs.IntegerValueType(bits=32, *, value_repr=0, endian=0)[source]

Bases: ValueType

decode(data)[source]
Return type:

str | int

encode(value)[source]
Return type:

bytes | None

parse(text)[source]
Return type:

int | None

property read_size: int

Number of bytes required for a memory read.

text()[source]
Return type:

str

class libpince.typedefs.KeyboardModifiersTupleDict(OrderedDict_like_list)[source]

Bases: Mapping

class libpince.typedefs.PATHS[source]

Bases: object

FROM_PINCE = '/from_PINCE'
GDB = '/bin/gdb'
IPC = '/dev/shm/PINCE_IPC/'
TMP = '/tmp/PINCE/'
TO_PINCE = '/to_PINCE'
class libpince.typedefs.PointerChainRequest(base_address, offsets_list=None)[source]

Bases: object

base_address: str | int
get_base_address_as_str()[source]

Returns the text representation of this pointer’s base address

Return type:

str

offsets_list: list[int]
serialize()[source]
Return type:

tuple[str | int, list[int]]

class libpince.typedefs.PointerChainResult[source]

Bases: object

get_final_address()[source]
Return type:

int | None

get_final_address_as_hex()[source]

Returns the hex representation of this pointer chain’s final/destination address

Return type:

str | None

get_pointer_by_index(index)[source]
Return type:

int | None

pointer_chain: list[int]
class libpince.typedefs.REGISTERS[source]

Bases: object

FLAG = ['cf', 'pf', 'af', 'zf', 'sf', 'tf', 'if', 'df', 'of']
class FLOAT[source]

Bases: object

ST = ['st0', 'st1', 'st2', 'st3', 'st4', 'st5', 'st6', 'st7']
XMM_32 = ['xmm0', 'xmm1', 'xmm2', 'xmm3', 'xmm4', 'xmm5', 'xmm6', 'xmm7']
XMM_64 = ['xmm0', 'xmm1', 'xmm2', 'xmm3', 'xmm4', 'xmm5', 'xmm6', 'xmm7', 'xmm8', 'xmm9', 'xmm10', 'xmm11', 'xmm12', 'xmm13', 'xmm14', 'xmm15']
GENERAL_32 = ['eax', 'ebx', 'ecx', 'edx', 'esi', 'edi', 'ebp', 'esp', 'eip']
GENERAL_64 = ['rax', 'rbx', 'rcx', 'rdx', 'rsi', 'rdi', 'rbp', 'rsp', 'rip', 'r8', 'r9', 'r10', 'r11', 'r12', 'r13', 'r14', 'r15']
SEGMENT = ['cs', 'ss', 'ds', 'es', 'fs', 'gs']
class libpince.typedefs.RegisterQueue[source]

Bases: object

broadcast_message(message)[source]
Return type:

None

delete_queue(queue_instance)[source]
Return type:

None

queue_list: list[Queue]
register_queue()[source]
Return type:

Queue

class libpince.typedefs.SCAN_INDEX[source]

Bases: object

ANY = 8
AOB = 10
FLOAT32 = 6
FLOAT64 = 7
FLOAT_ANY = 5
INT16 = 2
INT32 = 3
INT64 = 4
INT8 = 1
INT_ANY = 0
STRING = 9
class libpince.typedefs.SCAN_MODE[source]

Bases: object

NEW = 0
ONGOING = 1
class libpince.typedefs.SCAN_TYPE[source]

Bases: object

BETWEEN = 8
CHANGED = 9
DECREASED = 4
DECREASED_BY = 5
EXACT = 0
INCREASED = 2
INCREASED_BY = 3
LESS = 6
MORE = 7
NOT = 1
UNCHANGED = 10
UNKNOWN = 11
static get_list(scan_mode, value_type)[source]
Return type:

list[int]

class libpince.typedefs.STEP_MODE[source]

Bases: object

SINGLE_STEP = 1
STEP_OVER = 2
class libpince.typedefs.STOP_REASON[source]

Bases: object

DEBUG = 2
PAUSE = 1
class libpince.typedefs.ScriptEntry(script='')[source]

Bases: object

An address table row that runs a Libpince Engine script when toggled instead of freezing a value.

Only the script is serialized to the cheat table. Namespace is built on first enable and kept so variables set by the [ENABLE] section survive into a later [DISABLE] run within the same session.

namespace: dict[str, Any] | None
class libpince.typedefs.Signal[source]

Bases: object

callbacks: list[Callable]
connect(callback)[source]
Return type:

None

disconnect(callback)[source]
Return type:

None

emit(*args, **kwargs)[source]
Return type:

None

class libpince.typedefs.StringValueType(encoding, *, length=10, zero_terminate=True, endian=0)[source]

Bases: ValueType

decode(data)[source]
Return type:

str

encode(value)[source]
Return type:

bytes | None

parse(text)[source]
Return type:

str | None

property read_size: int | None

Number of bytes required for a memory read.

text()[source]
Return type:

str

class libpince.typedefs.StructValueType[source]

Bases: ValueType

decode(data)[source]
Return type:

None

encode(value)[source]
Return type:

None

parse(text)[source]
Return type:

None

property read_size: None

Number of bytes required for a memory read.

text()[source]
Return type:

str

class libpince.typedefs.Structure(name, members=None)[source]

Bases: object

A named, ordered list of StructureMembers. Offsets are explicit and relative to a base.

classmethod deserialize(data)[source]
Return type:

Structure

serialize()[source]
Return type:

tuple

class libpince.typedefs.StructureMember(name, offset, value_type=None, struct_ref=None, is_pointer=False)[source]

Bases: object

One field of a Structure: a value at an offset or a link to another structure.

Exactly one of value_type / struct_ref is set. Nested members (struct_ref set) are pointer members when is_pointer else inline/embedded.

classmethod deserialize(data)[source]
Return type:

StructureMember

serialize()[source]
Return type:

tuple

class libpince.typedefs.TOGGLE_ATTACH[source]

Bases: object

ATTACHED = 1
DETACHED = 2
class libpince.typedefs.TRACE_STATUS[source]

Bases: object

FINISHED = 3
IDLE = 1
TRACING = 2
class libpince.typedefs.USER_PATHS[source]

Bases: object

CONFIG = '.config/'
GDBINIT = '.config/PINCE/gdbinit'
GDBINIT_AA = '.config/PINCE/gdbinit_after_attach'
PINCEINIT = '.config/PINCE/pinceinit.py'
PINCEINIT_AA = '.config/PINCE/pinceinit_after_attach.py'
ROOT = '.config/PINCE/'
static get_init_files()[source]
Return type:

tuple[str, str, str, str]

class libpince.typedefs.VALUE_REPR[source]

Bases: object

HEX = 2
SIGNED = 1
UNSIGNED = 0
class libpince.typedefs.ValueType[source]

Bases: object

decode(data)[source]
Return type:

Any

static deserialize(data)[source]
Return type:

ValueType

encode(value)[source]
Return type:

bytes | None

parse(text)[source]
Return type:

Any | None

property read_size: int | None

Number of bytes required for a memory read.

serialize()[source]
Return type:

tuple[int, ...]

text()[source]
Return type:

str

class libpince.typedefs.WATCHPOINT_TYPE[source]

Bases: object

BOTH = 3
READ_ONLY = 2
WRITE_ONLY = 1
class libpince.typedefs.gdb_output_mode(async_output, command_output, command_info)

Bases: tuple

async_output

Alias for field number 0

command_info

Alias for field number 2

command_output

Alias for field number 1

class libpince.typedefs.tuple_breakpoint_info(number, breakpoint_type, disp, enabled, address, size, on_hit, hit_count, enable_count, condition)

Bases: tuple

address

Alias for field number 4

breakpoint_type

Alias for field number 1

condition

Alias for field number 9

disp

Alias for field number 2

enable_count

Alias for field number 8

enabled

Alias for field number 3

hit_count

Alias for field number 7

number

Alias for field number 0

on_hit

Alias for field number 6

size

Alias for field number 5

class libpince.typedefs.tuple_examine_expression(all, address, symbol)

Bases: tuple

address

Alias for field number 1

all

Alias for field number 0

symbol

Alias for field number 2

class libpince.typedefs.tuple_region_info(start, end, perms, file_name, region_index)

Bases: tuple

end

Alias for field number 1

file_name

Alias for field number 3

perms

Alias for field number 2

region_index

Alias for field number 4

start

Alias for field number 0

libpince.utils module

Module contents