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 得到一个有关这些选项的说明的简单列表.
[转载] 从正在运行的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
于是我也想试一下?。欢蚁胝乙桓鲋葱忻钪蟛煌顺龅慕袒孤训?nbsp;, 最终我想到了apache,然而必须要有客户端与apache建立TCP长连接,如果是那种5xx的错误,比如这个 , 
就会发现TCP连接建立之后马上又断开了 。
于是只能弄一个TCP长连接吧 。返回200的那种应该可以 。
结果发现还是不行 。
于是通过htop漫无目的地找吧,于是还是找apache的主进程吧 。
通过htop发信apache的主进程的PID为6900,
于是
(注意:要以root的身份启动,否则可能没有权限 。)
然后gdb就开始调试6900进程了,一顿输出啊 , 几秒之后到达gdb的命令行 。

推荐阅读