首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hacker基础之Linux篇:进阶Linux命令二

Hacker基础之Linux篇:进阶Linux命令二

作者头像
用户1631416
发布2018-07-25 11:43:50
7710
发布2018-07-25 11:43:50
举报
文章被收录于专栏:玄魂工作室玄魂工作室

今天我们进入Linux进阶的第二课

Linux C程序的调试

这里我们会解释一下怎样在Linux下调试C程序

可能有的同学会问,这和Hacker有什么关系呢?

因为吧,简单说,这其实就是Linux PWN技术的基础

<PWN>是一个黑客语法的俚语词,是指攻破设备或者系统

发音类似<砰>,对黑客而言,这就是成功实施黑客攻击的声音,砰的一声,被<黑>的电脑或手机就被你操纵了

以上抄自某度

通过二进制/系统调用等方式获得目标主机的shell

Windows上的PWN,当然也有Linux上的PWN,但是相比较Windows丰富的调试工具,Linux上就显得"寒酸"多了(我是打双引号的啊,大家别打我~~~)

Windows上有大家熟悉的OD啊,IDA啊等等,大家都很熟悉了,现在我们就介绍一下Linux上的调试工具

gdb

这个神器gdb的全称是(GNU Debugger),是一个可移植的调试器,可运行在许多类Unix系统上,可用于许多编程语言,包括AdaCC++Objective-CFree PascalFortranGoJava

他的作者Richard StallmanGNU的提出者和创建者,Linux是属于GNU的一个项目

反正很牛x就对了

如何使用gdb

首先我们要在编译的时候加入-g选项,才能很好的使用gdb,当然,不加也是可以使用的

这里我用一个C程序来演示使用gdb

这里先列出gdb的一些基本命令

break - b #设置断点

run - r #运行程序

next - n #单步调试

print var1 #查看变量的值

list - l #显示源码

info b #显示断点设置情况

ok,我们开始,假设我在本地有个1.c的程序

我们先编译它

gcc 11.c -o 11 -g -Wall

这里稍微解释一下

-o是将创建的可执行文件命令为11的意思

-g是我们要求编译的时候加入调试信息

-Wall是显示所有的错误和提醒

这对于Linux C程序猿很熟悉了我就不班门弄斧了

编译的结果是这样的,这里有个warning是因为我返回了一个局部变量

一般要在调用程序里面要专门申请一个空间传入被调用函数中

然后将返回值写入这个空间中才是比较稳妥的写法

因为这里是我N年前写的代码了,我们就不管这个warning

之后我们用gdb打开这个可执行文件11

我们可以试试我们上面的命令,比如显示源码

或者在main函数设置一个断点(bbreak的缩写)

这里就会在第六行也就是mian函数的下一行有了一个断点

更多的gdb的知识,大家可以google或者bing

pstack

pstack是个脚本工具,可显示每个进程的栈跟踪

他的功能在gdb中也有相应的实现

我们演示一下基本的使用(我们要预先用ps知道目标进程的PID

pstack 19703

starce

strace常用来跟踪进程执行时的系统调用和所介绍到的信号

Linux中,进程不能直接访问硬件设备,当进程需要访问硬件设备时(读取磁盘文件,接受网络数据等等),必须由用户态模式切换到内核态模式

然后通过系统调用访问硬件设备

strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗时间等等

strace -o out.txt -T -tt -e trace=all -p 19703

上面程序的意思是跟踪进程19703的所有的系统调用,并统计系统调用时间,以及开始时间,最后将结果记录在out.txt

执行一段时间之后我们可以打开out.txt查看

或者我们可以查看实时输出

strace -p 19703

nm

nm命令是用来列出目标文件的符号清单

拿我们刚刚的11可执行文件演示

我们看到的就是一个程序的结构

nm程序可用于列举符号和其类型和值,但是,要更仔细的研究目标文件中这些命名段的内容,我们需要使用更强大的工具,我们下一节介绍

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 玄魂工作室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档