liunx逆向分析学习(一)

admin 2023年8月21日14:28:11评论54 views字数 2275阅读7分35秒阅读模式

环境与需要的工具准备与介绍

前言

学习的重点就是如何利用一些linux自带的一些通用的本地工具和一些自带的binutils工具还有一些需要的大众linux调试工具对linux的二进制软件如何进行分析,在学习的途中我们不会使用到在CTF中逆向或者pwn,还有现实生活中的二进制漏洞挖掘通用神器IDA进行使用。

Gdb

Gdb调试器不仅可以用来调试有bug或者漏洞的linux二进制文件,他也可以用来研究改变一个程序的控制流,也可以用来修改代码,寄存器,数据结构,对于一个研究二进制漏洞挖掘的黑客来讲,这个工具是非常常见的,他的主要作用就是用来分析ELF格式的二进制文件和linux的一些进程,是linux黑客必备的一个工具,在后续的文章中我们会不断的使用gdb

以下是gdb一下常用的命令介绍

r/run

运行我们当前调试的软件

c/continue

暂停运行的程序继续运行

n/next

运行下一行

s/step

单步执行,遇到函数会进入

u/until

运行到指定行停止

fi/finish

结束当前调用的函数,回到上一层调用的函数

retrn

结束当前调用的函数,返回指定的值到上一层函数调用的地方

j/Jump

将当前程序执行流跳转到指定行或地址

p/print

打印变量或者寄存器的值

Bt/backtrace

查看当前线程调用的堆栈

f/frame

切换到当前调用线程的指定堆栈

thread

切换到指定线程

b/break

添加断点

tb/tbreak

添加临时断点

d/delete

删除断点

enable

启用某个断点

disable

禁用某个断点

watch

监视某个变量或者内存地址是否发生变化

l/list

显示源码

i/info

查看断点/线程等信息

ptype

查看变量类型

dis/disassemble

查看汇编代码

set args

设置程序启动命令行参数

show args

查看设置的命令行参数

Object dump(objdump)

Objdump是一个对代码进行快速反编译的方案,在反编译简单的或者没有被篡改的二进制文件是非常有用的,但是我们要进行任何有挑战性的反编译任务的时候,特别是对恶意软件,Objdump就显示出了他的局限性,他的最主要的缺陷就是需要依赖ELF节头,如果反编译文件没有节头那么使用Objdump就没办法正确的反编译二进制文件中的代码,甚至都不可能打开二进制文件,用来反编译平常的任务,比如反编译没有加固,精简或者任何方式混淆的普通二进制文件就足以,下面是一些使用方法:

查看所有符号

         liunx逆向分析学习(一)

只查看ELF文件中的程序代码

liunx逆向分析学习(一)


查看ELF文件中所有节的数据或代码liunx逆向分析学习(一)

object copy

objcopy被用来复制一个目标文件的内容到另一个文件中,可以使用不同于源文件的格式来输出目的文件,即可以进行格式转换。他还可以用来分析和修改任意类型的ELF目标文件,甚至他还可以修改ELF节,或者将ELF节复制到ELF二进制中(还可以从ELF二进制中复制ELF节)命令需要参考objcopy的使用手册

后续我们也有可能会用到建议先参考学习

参考链接:

zhuanlan.zhihu.com/p/115834422

或者-help

system call trace(strace)

按照strace官网的描述, strace是一个可用于诊断、调试和教学的Linux用户空间跟踪器。我们用它来监控用户空间进程和内核的交互,比如系统调用、信号传递、进程状态变更等。

strace底层使用内核的ptrace特性来实现其功能。

在运维的日常工作中,故障处理和问题诊断是个主要的内容,也是必备的技能。strace作为一种动态跟踪工具,能够帮助运维高效地定位进程和服务故障。它像是一个侦探,通过系统调用的蛛丝马迹,告诉你异常的真相。命令:

使用strace跟踪一个基本的程序

strace /bin/ls -o cd.out

使用strace命令来附加到一个现存的程序

strace -p-o ls.out

我们还可以使用-e write=fd命令查看写入的数据,这个工具是一个非常有用的工具

Ltrace

library  traceltrace,库追踪)是另外一个简洁的小工具,与strace非常类似。ltrace会解析共享库,即一个程序的链接信息,并打印出用到的库函数。建议参考用户手册学习

         

readelf

readelf命令是一个非常有用的解析ELF二进制文件的工具。在进行反编译之前,需要收集目标文件相关的信息,该命令能够提供收集信息所需Linux工具5要的特定于ELF的所有数据。我们将会他使用readelf命令收集符号、段、节、重定向入口、数据动态链接等相关信息。readelf命令是分析ELF二进制文件的利器,下面是几个常用的标记命令

查询节头表:    readelf –S            


查询程序头表:    readelf –l                


查询符号表:    readelf -s                        


查询ELF文件头数据:    readelf –e                            


查询重定位入口:    readelf –r                                    


查询动态段:    readelf –d                                        


有用的设备和linux文件

/proc//maps

/proc/kcore

/boot/System.map

/proc/kallsyms

/proc/iomem

ECFS

链接器相关环境指针

LD_PRELOAD 环境变量

LD_SHOW_AUXV 环境变量

链接器脚本

以上文件和设备百度均可百度到







原文始发于微信公众号(Kone安全):liunx逆向分析学习(一)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年8月21日14:28:11
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   liunx逆向分析学习(一)http://cn-sec.com/archives/1966402.html

发表评论

匿名网友 填写信息