
正文
linuxgdb命令 linux dbg
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
Linux 里面的gdb到底是个什么东西?
分类: 电脑/网络 操作系统/系统故障
问题描述:
第一次在Linux上工作,要用到一个什么gdblinuxgdb命令的东东。gdb到底是什么呢,各位老大?
解析:
Linux 包含linuxgdb命令了一个叫 gdb 的 GNU 调试程序. gdb 是一个用来调试 C 和 C++ 程序的强力调试器. 它使你能在程序运行时观察程序的内部结构和内存的使用情况. 以下是 gdb 所提供的一些功能:
它使你能监视你程序中变量的值.
它使你能设置断点以使程序在指定的代码行上停止执行.
它使你能一行行的执行你的代码.
在命令行上键入 gdb 并按回车键就可以运行 gdb linuxgdb命令了, 如果一切正常的话, gdb 将被启动并且你将在屏幕上看到类似的内容:
GDB is free sofare and you are wele to distribute copies of it
under certain conditions; type "show copying" to see the conditions.
There is absolutely no warranty for GDB; type "show warranty" for details.
GDB 4.14 (i486-slakware-linux), Copyright 1995 Free Sofare Foundation, Inc.
(gdb)
当你启动 gdb 后, 你能在命令行上指定很多的选项. 你也可以以下面的方式来运行 gdb :
gdb fname
当你用这种方式运行 gdb , 你能直接指定想要调试的程序. 这将告诉gdb 装入名为 fname 的可执行文件. 你也可以用 gdb 去检查一个因程序异常终止而产生的 core 文件, 或者与一个正在运行的程序相连. 你可以参考 gdb 指南页或在命令行上键入 gdb -h 得到一个有关这些选项的说明的简单列表.
相关问答
Q1: [转载] 从正在运行的Linux进程中dump出内存内容
最近看到有个CTF题感觉挺有意思,就是从一个bin中找到一个secret key,然后用来签名session cookies用来怼一个使用go的Web服务器。通常这种类型题的flag都比较直接。可以直接用strings怼这个bin就可以了,然而这次的这个题目中的bin不同,因为有太多杂碎(noise)要过滤了。于是在此我就来展示一下如何用一些基本的Linux命令配合gdb从进程中dump出内存中的信息。
先file一下,
发现是64位的Linux可执行文件。
然后strings一下,
发现字符串太多,还是先不看,再研究深一点吧。
然后先运行一下程序,
然后再另一个终端找到这个进程的PID
然后cat一下它的内存(太长不看TL;DR)
似乎太多了有点可怕,但是不用害怕。
然后启动gdb,将改进程attach到gdb上。
然后就是gdb命令
解释一下语法:
然后就是用strings命令找出刚才dump出的文件的字符串,我喜欢最少10个长度的字符串(-n 10)来过滤掉一些无用的信息(noise)。
结果如下:
可以看到好像有个hash值,为了不泄露CTF题的答案,我已经把hash值改了。
总结
好了,你已经找到运行的进程的PID,dump出了那个进程的内存内容,然后用gdb,strings命令找出了有用的数据。
以上翻译自:
Let’s get your hands dirty
Down to business
于是我也想试一下啊,然而我想找一个执行命令之后不退出的进程还蛮难的,最终我想到了apache,然而必须要有客户端与apache建立TCP长连接,如果是那种5xx的错误,比如这个,
就会发现TCP连接建立之后马上又断开了。
于是只能弄一个TCP长连接吧。返回200的那种应该可以。
结果发现还是不行。
于是通过htop漫无目的地找吧,于是还是找apache的主进程吧。
通过htop发信apache的主进程的PID为6900,
于是
(注意:要以root的身份启动,否则可能没有权限。)
然后gdb就开始调试6900进程了,一顿输出啊,几秒之后到达gdb的命令行。
然后dump出heap中的内容。
然后在/root目录找到了那两个dump出来的文件,
从任意一个dump中找出10个字符以上的字符串吧。
————————————————
原文链接:
Q2: linux禁止gdb调试
禁止在 Linux 中 gdb 调试的方法有许多linuxgdb命令,以下是其中的一种方法linuxgdb命令:
1. 禁用 core dumplinuxgdb命令:可以通过以下命令将 core dump 禁用:
```
ulimit -c 0
```
这将确保应用程序在崩溃时不会生成任何 core dump 文件。gdb 通常需要访问 core dump 文件来执行调试操作linuxgdb命令,因此禁用它们可以帮助防止调试。
2. 使用 ptrace:ptrace 系统调用可以被用来执行程序间的跟踪和调试,因此禁用它可以防止 gdb 调试。为了禁用 ptrace,可以在 /etc/sysctl.conf 文件中添加以下内容:
```
kernel.yama.ptrace_scope = 1
```
然后更新 sysctl.conf 文件,使设置生效:
```
sudo sysctl -p
```
这将限制 ptrace 仅在其父进程和子进程之间(或在具有适当权限的特权用户之间)进行。这样可以防止普通用户使用 gdb 调试其linuxgdb命令他用户、系统进程或其他特权进程。
请注意,以上方法仅仅是防止 gdb 调试的其中一种方法,还有其他方法可以绕过这些限制。因此,禁止 gdb 调试并不能完全保证系统的安全性和机密性。如果您对系统安全性有更高的要求,建议请咨询专业安全人员提供更加严格的安全策略。
Q3: linux 如何更新gdb
linux gdb安装步骤如下linuxgdb命令:
1. 首先可以使用命令“ rpm -qa |grep gdb"查询系统中是否安装了gdb软件包linuxgdb命令,如果安装了linuxgdb命令,应该显示如下:
[root@localhost ~]# rpm -qa |grep gdb
gdbm-1.8.0-26.2.1
gdb-6.8-37.el5
gdbm-devel-1.8.0-26.2.1
2. 如果系统没有安装gdb软件包,需要先准备好gdb对应的软件包,通常在系统光盘Server文件夹下linuxgdb命令;3. 使用命令“rpm -ivh gdb-6.8-37.el5.rpm”或者类似的操作回车即可安装;4. 安装结束后,再使用命令“rpm -qa |grep gdb"查询,如果成功安装了,应该显示如下:[root@localhost ~]# rpm -qa |grep gdbgdb-6.8-37.el55. 如果安装不成功,检查一下错误信息,有可能是因为少安装了一些关联软件,根据提示安装即可。
关于linuxgdb命令和linux dbg的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







