All Projects → stonedreamforest → kar98k_public

stonedreamforest / kar98k_public

Licence: other
pwn & ctf tools for windows

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to kar98k public

pwnscripts
Very simple script(s) to hasten binary exploit creation
Stars: ✭ 66 (+175%)
Mutual labels:  pwn, ctf, ctf-tools
Lief
Authors
Stars: ✭ 2,730 (+11275%)
Mutual labels:  malware-analysis, binary-analysis, pe
Libc Database
Build a database of libc offsets to simplify exploitation
Stars: ✭ 1,122 (+4575%)
Mutual labels:  pwn, ctf, ctf-tools
nadbg
👀Dynamic memory watcher/tracer/analyzer for CTF pwn
Stars: ✭ 51 (+112.5%)
Mutual labels:  pwn, ctf, memory-analysis
soma
Cross-platform CTF problem container manager
Stars: ✭ 23 (-4.17%)
Mutual labels:  pwn, ctf, ctf-tools
Gef
GEF (GDB Enhanced Features) - a modern experience for GDB with advanced debugging features for exploit developers & reverse engineers ☢
Stars: ✭ 4,197 (+17387.5%)
Mutual labels:  pwn, ctf, malware-analysis
Pwn Sandbox
A sandbox to protect your pwn challenges being pwned in CTF AWD.
Stars: ✭ 81 (+237.5%)
Mutual labels:  pwn, ctf, ctf-tools
Asm
Assembly Tutorial for DOS
Stars: ✭ 125 (+420.83%)
Mutual labels:  x64, x86
Asm Cli Rust
interative assembly shell written in rust
Stars: ✭ 133 (+454.17%)
Mutual labels:  x64, x86
Dbgchild
Debug Child Process Tool (auto attach)
Stars: ✭ 145 (+504.17%)
Mutual labels:  x64, x86
Pwnshop
Exploit Development, Reverse Engineering & Cryptography
Stars: ✭ 167 (+595.83%)
Mutual labels:  x64, x86
Xray 16
Improved version of the X-Ray Engine, the game engine used in the world-famous S.T.A.L.K.E.R. game series by GSC Game World. Join OpenXRay! ;)
Stars: ✭ 1,806 (+7425%)
Mutual labels:  x64, x86
X64dbg
An open-source x64/x32 debugger for windows.
Stars: ✭ 37,825 (+157504.17%)
Mutual labels:  x64, x86
Eruditus
Discord CTF helper bot for CyberErudites
Stars: ✭ 34 (+41.67%)
Mutual labels:  ctf, ctf-tools
Inline Hook
simple inline-hook framework works for x86, x64, arm and thumb
Stars: ✭ 102 (+325%)
Mutual labels:  x64, x86
X86reference
X86 Opcode and Instruction Reference: http://ref.x86asm.net
Stars: ✭ 159 (+562.5%)
Mutual labels:  x64, x86
Iced
Blazing fast and correct x86/x64 disassembler, assembler, decoder, encoder for .NET, Rust, Python, JavaScript
Stars: ✭ 1,102 (+4491.67%)
Mutual labels:  x64, x86
Xray 15
X-Ray Engine 1.5 expansion. Original version was used in S.T.A.L.K.E.R.: Clear Sky.
Stars: ✭ 151 (+529.17%)
Mutual labels:  x64, x86
kasm
Assembler library for Kotlin
Stars: ✭ 40 (+66.67%)
Mutual labels:  x64, x86
oberon-07-compiler
Oberon-07 compiler for x64 (Windows, Linux), x86 (Windows, Linux, KolibriOS), MSP430x{1,2}xx, STM32 Cortex-M3
Stars: ✭ 45 (+87.5%)
Mutual labels:  x64, x86

GitHub All Releases

kar98k_public

工具概述

在分析程序过程中发现部分场景直接调试器附加分析没必要 就想着写款自动化工具尽可能在分析(尤其是前期)过程中解决某些重复操作 然后就选择脚本语言,在js、lua、python等其它不常见脚本(chaiscript、cling)中最后选择了python 原因是支持库多

工具特性

  1. 支持内存读写(当然可以dump内存 如果你愿意还可以写个自定义PythonCE
  2. 支持模块注入
  3. 支持执行shellcode
  4. 支持32、64
  5. 可同时操作多个进程互不影响 线程安全
  6. python2、3支持 (基于python-2716python-383

函数签名及作用:

__init__(...)
    __init__(self: kar98k.kar98k, arg0: str) -> None
    c++签名:kar98k(const std::wstring targetProcessName){...}
    作用: 传入目标进程名称,实例化操作目标进程对象

execute_shell_code(...)
    execute_shell_code(self: kar98k.kar98k, arg0: bytes) -> None
    c++签名:std::string get_decoding_cpp_name(const std::string & funName){...}
    作用: 执行shellcode

get_binmem_by_module(...)
    get_binmem_by_module(self: kar98k.kar98k, arg0: str) -> bytes
    c++签名:py::bytes get_binmem_by_module(std::wstring MDName){...}
    作用: 获取目标模块内存(实时

get_binmem_by_region(...)
    get_binmem_by_region(self: kar98k.kar98k, arg0: int, arg1: int) -> bytes
    c++签名:py::bytes get_binmem_by_region(size_t nAddress , size_t nSize){...}
    作用: 获取指定内存区域内存(实时

get_decoding_cpp_name(...)
    get_decoding_cpp_name(self: kar98k.kar98k, arg0: str) -> str
    c++签名:std::string get_decoding_cpp_name(const std::string & funName){...}
    作用: 获取未粉碎c++函数签名

get_mem_info(...)
    get_mem_info(self: kar98k.kar98k) -> std::vector<kar98k::_MEM_INFO,std::allocator<kar98k::_MEM_INFO> >
    c++签名:std::vector<kar98k::MEMORY_INFO> *get_mem_info(){...}
    作用: 获取进程内存页面信息 返回vector 
    MEMORY_INFO 结构:
	typedef struct _MODULE_INFO {
		MODULEENTRY32W tagModEntry; // 参考 https://docs.microsoft.com/en-us/windows/win32/api/tlhelp32/ns-tlhelp32-moduleentry32?redirectedfrom=MSDN
		std::string modName;
		std::string modPath;
	}MODULE_INFO , *PMODULE_INFO;
    --
get_mem_info_size(...)
    get_mem_info_size(self: kar98k.kar98k) -> int
    c++签名:size_t get_mem_info_size(){...}
    作用: 返回保存内存页面信息vector大小
    
get_mod_info(...)
    get_mod_info(self: kar98k.kar98k) -> std::vector<kar98k::_MODULE_INFO,std::allocator<kar98k::_MODULE_INFO> >
    c++签名:std::vector<kar98k::MODULE_INFO> *get_mod_info(){...}
    作用: 获取进程模块信息 返回vector
    MODULE_INFO 结构:
	typedef struct _MEM_INFO {
		MEMORY_BASIC_INFORMATION memBasicInfo; //参考 https://docs.microsoft.com/en-us/windows/win32/api/winnt/ns-winnt-memory_basic_information?redirectedfrom=MSDN
		std::string memInModPath;
	}MEMORY_INFO , *PMEM_INFO;
    
get_mod_info_size(...)
    get_mod_info_size(self: kar98k.kar98k) -> int
    c++签名:size_t get_mod_info_size(){...}
    作用: 返回保存模块信息vector大小
    
get_tpmem_by_module(...)
    get_tpmem_by_module(self: kar98k.kar98k, arg0: str, arg1: int) -> tuple
    c++签名:py::tuple get_tpmem_by_module(std::wstring MDName , int nBitType){...}
    作用: 以元组形式返回指定模块内存值 (nBitType:1、2、4、8分别对应:8位、16位、32位、64位整形值)
    
get_tpmem_by_region(...)
    get_tpmem_by_region(self: kar98k.kar98k, arg0: int, arg1: int, arg2: int) -> tuple
    c++签名:py::tuple get_tpmem_by_region(size_t nAddress , size_t nSize , int nBitType){...}
    作用: 以元组形式返回指定内存区域内存值 (nBitType:1、2、4、8分别对应:8位、16位、32位、64位整形值)
    
get_uint16(...)
    get_uint16(self: kar98k.kar98k, arg0: int) -> int
    c++签名:unsigned __int16 get_uint16(size_t nAddress){...}
    作用: 读取指定地址中的16位整形值
    
get_uint32(...)
    get_uint32(self: kar98k.kar98k, arg0: int) -> int
    c++签名:unsigned __int32 get_uint32(size_t nAddress){...}
    作用: 读取指定地址中的32位整形值
    
get_uint64(...)
    get_uint64(self: kar98k.kar98k, arg0: int) -> int
    c++签名:unsigned __int64 get_uint64(size_t nAddress){...}
    作用: 读取指定地址中的64位整形值
    
get_uint8(...)
    get_uint8(self: kar98k.kar98k, arg0: int) -> int
    c++签名:unsigned __int8 get_uint8(size_t nAddress){...}
    作用: 读取指定地址中的8位整形值
    
inject_dll(...)
    inject_dll(self: kar98k.kar98k, arg0: str) -> None
    c++签名:void inject_dll(const wchar_t* fullDllPath){...}
    作用: 注入模块

write_buffer(...)
    write_buffer(self: kar98k.kar98k, arg0: int, arg1: bytes) -> None
    c++签名:void write_buffer(size_t nAddress , py::bytes pyBytes){...}
    作用: 在指定地址写入一整块数据
    
write_uint16(...)
    write_uint16(self: kar98k.kar98k, arg0: int, arg1: int) -> None
    c++签名:void write_uint16(size_t nAddress , unsigned __int16 nValue){...}
    作用: 在指定地址写入16位整形值
    
write_uint32(...)
    write_uint32(self: kar98k.kar98k, arg0: int, arg1: int) -> None
    c++签名:void write_uint32(size_t nAddress , unsigned __int32 nValue){...}
    作用: 在指定地址写入32位整形值
    
write_uint64(...)
    write_uint64(self: kar98k.kar98k, arg0: int, arg1: int) -> None
    c++签名:void write_uint64(size_t nAddress , unsigned __int64 nValue){...}
    作用: 在指定地址写入64位整形值
    
write_uint8(...)
    write_uint8(self: kar98k.kar98k, arg0: int, arg1: int) -> None
    c++签名:void write_uint8(size_t nAddress , unsigned __int8 nValue){...}
    作用: 在指定地址写入8位整形值
    
get_expfun_info(...)
    get_expfun_info(self: kar98k.kar98k) -> std::vector<kar98k::_FUN_INFO,std::allocator<kar98k::_FUN_INFO> >
	c++签名:std::vector<FUN_INFO>* get_expfun_info(){...}
	作用:获取进程所有模块导出表信息
	typedef struct _FUN_INFO {
	size_t funRva;
	size_t funAddress;
	std::string funName;
	std::string funSignature;
	}FUN_INFO , *PFUN_INFO;
	
get_expfun_info_size(...)
    get_expfun_info_size(self: kar98k.kar98k) -> int
	c++签名:size_t get_expfun_info_size(){...}
	作用:获取保存导出表信息vector大小

refresh_expfun_info(...)
    refresh_expfun_info(self: kar98k.kar98k) -> None
	c++签名:void refresh_expfun_info(){...}
	作用:刷新导出表信息
	
refresh_mem_info(...)
    refresh_mem_info(self: kar98k.kar98k) -> None
	c++签名:void refresh_mem_info(){...}
	作用:刷新进程内存信息
	
refresh_mod_info(...)
    refresh_mod_info(self: kar98k.kar98k) -> None
	c++签名:void refresh_mod_info(){...}
	作用:刷新进程模块信息

get_fs_value(...)
    get_fs_value(self: kar98k.kar98k, arg0: int) -> bytes
	c++签名:py::bytes get_fs_value(unsigned char nOffset){...}
	作用: 获取目标进程fs[offset]值
	
get_gs_value(...)
    get_gs_value(self: kar98k.kar98k, arg0: int) -> bytes
	c++签名:py::bytes get_gs_value(unsigned char nOffset){...}
	作用: 获取目标进程gs[offset]值
	
	
	

功能演示

test.py: image

测试示例

test.py

下载

https://github.com/stonedreamforest/kar98k_public/releases

用法

  • 最简单的是将kar98k.pydtest.py放在同一目录 然后执行python test.py便可 image

讨论

看雪:进程内存分析操作工具

更改日志

CHANGELOG

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].