《Linux二进制分析》
狼群一一先锋
他日仙界如相见,一声道友尽沧桑。
展开
-
1——Linux二进制分析——备忘
最近在读《Linux二进制分析》一书,作者提到了很多工具,有公共的,有作者自己开发的,暂时还没有足够的时间去消化。例如昨天下载的作者开发的工具ftrace,源码已经从github上下载,只有1个.c文件,但是暂时我还没有能力完全去了解里面的实现,牵扯了太多的elf知识。所以决定把帐都记录下来,等我对linux了解差不多的时候再重读此书和这些工具。1、p1,binutils工具。这个单词见过许多...原创 2019-02-16 09:53:50 · 256 阅读 · 0 评论 -
7——Linux二进制分析——学习——使用ptrace进行代码注入
书中第三章最后讲了一个例子,十分遗憾,我暂时还没能调出最后结果。已经花费了很长时间,我觉得暂停是一个比较好的选择。如果我对系统执行elf文件的流程很了解的话,自然能够定位到原因。现在还不是时候,也许等后面再看一看书就知道这里的问题在哪里了。这个例子书中有更多的错误,尽力改了几个,但还是运行异常。我把整个进展情况和代码贴出来,其中能注释的地方我尽量添加注释,方便读者帮忙分析。如果你知道问题所在,...原创 2019-03-09 17:01:40 · 679 阅读 · 8 评论 -
payload.c详细说明——linux c编程内嵌汇编和_start启动
下面是代码和注释,我详细的讲解一下。在这之前我是不懂的,虽然在看kernel代码的时候经常看到内嵌汇编代码,但也没有认真去学习。借着这次机会查了一下,谈不上懂了,但这3个接口应该是每一行都明白了。希望以后的开发过程中我也能用一下来提高性能,高逼格操作。感谢这篇文章的作者C语言内联汇编。这个是官网的一些知识,有兴趣可以看一下GCC-Inline-Assembly//To compile: g...原创 2019-03-09 16:50:39 · 477 阅读 · 0 评论 -
如何简单的杀死频繁启动的进程
这几天在调试ptrace的时候,书中指令中用到了pidof工具,突然间想到了标题中的那种情况。我们在工作中经常会遇到这么一种情况:后台启动一个进程,现在想杀死它,除了killall name外还有一种用kill的写法:kill -9 `pidof name` 很好用,需要注意的是那个符号,是和~同一个案件的那个·,而不是‘。...原创 2019-02-27 09:21:21 · 319 阅读 · 0 评论 -
5——Linux二进制分析——学习——关于elf文件类型/-no-pie选项
《4——Linux二进制分析——学习——ptrace调试器》的补充。关于编译test的问题。我直接通过gcc test.c -o test编译,在执行的时候会报错./testshare is not an ELF executable. The type: 3.我用readelf -h test去查看头文件的时候发现test的文件格式是 DYN (Shared object file),而我想...原创 2019-02-20 09:47:30 · 5975 阅读 · 0 评论 -
4——Linux二进制分析——学习——ptrace调试器
书中第3.4节贴了一个ptrace使用方法的例子,没有过多的解释,并且test.c代码也欠缺。我用了很长的一段时间进行了反复调试,虽然还不是非常的熟悉,但应该可以写这篇文章了。gdb是我们所有嵌入式软件工程师都会用到的一个工具,我也不例外。曾经也想过看一看gdb内部是怎么实现的,大家应该都有过这种想法吧。除了gdb还有strace,它们是如何能跟踪自己写的进程呢?怎么就能看系统调用、设置断点、...原创 2019-02-20 09:34:37 · 723 阅读 · 11 评论 -
关于正常程序启动的时候Bus error的问题
今天下午在运行一个executable的时候只要一执行就报错Bus error,用gdb执行的话也是报错SIGBUS,gdb报错如下图所示。GDB执行的结果因为是在调试appweb的时候出的问题,我一度以为appweb有什么隐藏的逻辑会导致硬件错误(boa以前遇到过,非常可怕)。和同事进行了设备和程序的交互后认为还是有哪里忽略了。因为我的这个程序加我的这个设备,在同事电脑上运行的时候是正...原创 2019-02-18 17:23:39 · 1175 阅读 · 1 评论 -
6——Linux二进制分析——学习——ptrace调试器V2
这是3.5章节的内容,这个例子对上一章节的ptrace工具进行了完善,主要是添加了attach功能,也就是获取正在运行的程序的信息,gdb就有这个功能,用的应该也是这个方法。本来作者写此书的时候就已经很简略了,省去了很多详细的介绍,测试代码也没有给出。手头的中文版中的代码更是经常有错误,如果照搬书中的例子注定无法得到预期的结果。我进行了修改和调试,能够得到书中作者提到的正确的结果。这个例子只是...原创 2019-02-23 17:14:28 · 248 阅读 · 6 评论 -
3——Linux二进制分析——学习——简易ELF解析器
在第二章的结尾,作者贴上了一段ELF解析器的代码,我进行了反复的尝试,加深了对ELF格式的理解。这个其实就是一个简单的readelf,打印所有的section header名称和在可执行程序中的虚拟地址,program header的地址。为了便于理解,在某些地方我加入了自己的注释。例如mmap()处的注释,line92之前的3行对e_shstrndx的解释,还有开头对3个结构体的解释。之...原创 2019-02-16 16:16:22 · 473 阅读 · 2 评论 -
2——Linux二进制分析——学习——readelf几个简单选项
查询节头表:readelf -S <object>查询程序头表:readelf -l <object>查询符号表:readelf -s <object>查询ELF文件头数据:readelf -e <object>查询重定位入口:readelf -r <object>查询动态段:readelf -...原创 2019-02-16 09:54:48 · 302 阅读 · 0 评论 -
8——Linux二进制分析——学习——读完
用了今天一上午把剩下的两章半读完了,内存取证,作者开发的ecfs,还有kernel取证。现在感觉这本书读完前五章就可以了,后面的大概看看就行。介绍ptrace那一章才是最有用的部分,还算是扩展了一下我的视野。其他的我可以概况为两部分,一部分是作者的自我吹嘘,介绍自己开发的几个工具占用的篇幅太大。另一部分是就是一些简单的科普知识,指一个大概思路。书中提到了很多的工具源码路径,如果能研究一到两个肯...原创 2019-03-30 11:55:26 · 309 阅读 · 0 评论