Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
patchkit — 使用Python进行二进制修补 | Kitploit
工具/GitHubGitHub/lunixbochs/patchkit
逆向工程二进制分析二进制利用
GitHublunixbochs/patchkit

patchkit

使用Python进行二进制修补

查看仓库
638823年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

patchkit

使用一个或多个简单 Python 脚本对 ELF 二进制文件进行补丁。

使用方法:

root@kitploit:~
patch <二进制文件> <补丁目录|文件> [补丁目录|文件...]

patchdir

包含一个或多个 Python 补丁文件,这些文件将按字母顺序对二进制文件执行。

补丁示例

对地址进行 NOP 填充、注入汇编函数以及挂钩入口点:

root@kitploit:~
def simple_patch(pt):
    # 在入口点处 NOP 填充一个跳转指令
    pt.patch(pt.entry, hex='90' * 5)

    # 将汇编代码注入到二进制文件中并返回地址
    addr = pt.inject(asm='mov eax, 1; ret')

    # 挂钩入口点,使其调用 addr(ret 将执行原始入口点)
    pt.hook(pt.entry, addr)

替换 C 函数:

root@kitploit:~
def replace_free(pt):
    # 假设 free() 位于此地址:
    old_free = 0x804fc4

    # 注入一个用于替换 free() 的函数
    new_free = pt.inject(c=r'''
    void free_stub(void *addr) {
        printf("stubbed free(%p)\n", addr);
    }
    ''')

    # 将 free() 的开头修补为跳转到我们的新函数
    pt.patch(old_free, jmp=new_free)

API

root@kitploit:~
addr = search(data)
hook(addr, new_addr)
patch(addr, *编译参数*)
addr = inject(*编译参数*)

*编译参数* 可以是以下任意一种:
  raw='data'
  hex='0bfe'
  asm='nop'
  jmp=0xaddr
  c='void func() { int a; a = 1; }'(仅支持 inject,不支持 patch)

IDA 脚本

一些脚本位于 ida/ 路径下。按如下方式运行:

root@kitploit:~
/Applications/IDA\ Pro\ 6.8/idaq.app/Contents/MacOS/idaq64 -A -Sida/allfuncs.py a.out

以此方式调用时,allfuncs.py 将生成 a.out.funcs,该文件被加固脚本使用。

工具

目前这些工具有点偏向 CGC 和 x86 特性,但未来将移植用于通用场景。

  • explore:使用 Python CFG 和递归回溯模拟器在可执行文件中查找基本块
  • bindiff:利用 explore 运行得到的块边界,以及额外的分析,来查找并输出两个二进制文件之间的基本块差异

依赖项

  • 运行 ./deps.sh 可自动安装这些依赖。
    • Capstone Engine - https://github.com/aquynh/capstone.git
    • Keystone Engine - https://github.com/keystone-engine/keystone.git
    • Unicorn Engine - https://github.com/unicorn-engine/unicorn.git
下载工具