|
之前符号都很正常 知道开始做IO_FILE题目,更换glibc版本后一直找不到_IO_FILE的符号
一开始以为是glibc_all_in_one没有下载debug的glibc 然后看了一下download的输出是有的
放在了.debug目录 查了好久都说pwndbg会自己加载 然后看了pwndbg说glibc没有符号
终于找到了解决方案 看到了这位师傅的文章https://www.cnblogs.com/9man/p/17741818.html
脚本获取,配置执行vim ~/.pwndbg/gdbinit.py 然后复制下方代码到最底下,然后输入:wq回车,保存退出。
我改了一下添加的脚本
import gdb
import os
from pathlib import Path
COLOR_GREEN = "\033[32m"
COLOR_RED = "\033[31m"
COLOR_RESET = "\033[0m"
def load_symbols_recursive(folder_path):
items = os.listdir(folder_path)
for item in items:
item_path = os.path.join(folder_path, item)
if os.path.isfile(item_path):
try:
gdb.execute("add-symbol-file {}".format(item_path))
print(COLOR_GREEN + "[+] Loaded symbols " + COLOR_RESET + "from {}".format(item_path))
except gdb.error as e:
print(COLOR_RED + "[-] Failed to load" + COLOR_RESET + " symbols from {}: {}".format(item_path, e))
elif os.path.isdir(item_path):
load_symbols_recursive(item_path)
class LoadLibcDebugSymbols(gdb.Command):
def __init__(self):
super(LoadLibcDebugSymbols, self).__init__("loadlibc", gdb.COMMAND_USER)
def invoke(self, arg, from_tty):
libc_path = arg.strip()
if not libc_path:
print("Usage: loadlibc <libc_path>")
print("Example: loadlibc /home/rick/glibc-all-in-one/libs/2.35-0ubuntu3_amd64/libc.so.6")
return
if not os.path.exists(libc_path) or not os.path.isfile(libc_path):
print(COLOR_RED + "[-] Libc file does not exist: {}".format(libc_path) + COLOR_RESET)
return
libc_dir = os.path.dirname(libc_path)
debug_dir = os.path.join(libc_dir, ".debug")
if not os.path.exists(debug_dir) or not os.path.isdir(debug_dir):
print(COLOR_RED + "[-] .debug folder does not exist in: {}".format(libc_dir) + COLOR_RESET)
return
try:
gdb.execute("sharedlibrary libc.so.6")
print(COLOR_GREEN + "[+] Loaded libc.so.6 symbols" + COLOR_RESET)
except gdb.error as e:
print(COLOR_RED + "[-] Failed to load libc.so.6 symbols: {}".format(e) + COLOR_RESET)
print(COLOR_GREEN + "[*] Loading debug symbols from: {}".format(debug_dir) + COLOR_RESET)
load_symbols_recursive(debug_dir)
LoadLibcDebugSymbols()
用法:loadlibc [libc路径]
会自动查找libc路径下的.debug文件夹并且加载符号
|