摘要:
GDB 是我们平时调试 c/c++程序的利器, 查起复杂的 bug 问题,比打印大法要好的多,但是也不得不说, gdb 在默认情况下用起来并不是很好用,最近学习到几个高级点的技巧,分享下: 一 美化打印 先上个例子: #include <stdio.h>typedef struct { int i 阅读全文
摘要:
内存是计算机中的珍贵的稀有资源,所以为了精细管理,内存管理非常复杂的,一台计算机会同时运行很多应用,为了防止这些应用程序争抢内存,内存的管理是通过操作系统来管理的,操作系统为了方便管理内存,也为了降低应用使用内存的复杂性,引入了虚拟内存的概念( 还是那句话,解决不了的问题引入一个中间层)。 一 虚拟 阅读全文
摘要:
一 以有限对无限 这个世界很多东西是无限的,比如可以创造无限的小说,可以创造无限个程序。但是小说虽然无限,小说中的字数却是有限,拿汉字来说,我查到的最高记录也就9万多个,常用的就五六千个。程序虽然有限,但是CPU的指令条数却是有限。 从有限到无限给了我们极大的灵活性,像乐高积木,积木种类不多,却可以 阅读全文
摘要:
在公众号分享两份资料一份是面试资料整理,面试资料针对Java方向,从JVM虚拟机到机器学习,云计算都有涉及,虽然机器学习有些内容比较简单,但是整体的知识框架还是列出来了,总结的非常牛逼;另一份为<逆向工程权威指南>。 一 Java方向面试资料 大家可以看看目录,内容记录的非常翔实,面试前看看,突击下 阅读全文
摘要:
一 背景 索引这玩意太常见了,计算机只做两件事情,一是把信息存入电脑,二是把信息从电脑中取出来,所以搜索占了计算机功能的一半,当然很重要,而要加快搜索,索引又是必须的;索引的本质是什么,我理解索引就是可以将我们搜索问题的空间缩小,从而在一个很小的范围内快速找到要的数据。 一切可以减少搜索空间的手段都 阅读全文
摘要:
一 背景 也许大家都遇到过这种场景,就是有二进制代码,比如深度分析下此文件到底是什么格式的图片等,这篇文章就记录我分析下二进制可执行文件的过程,已经自己读写二进制文件的一些坑。分析的二进制执行文件为linux下的可执行文件。 二 常用二进制文件静态分析命令 2.1 file基本信息查看 linux下 阅读全文
摘要:
一 背景 现实总有些奇葩的需求,比如你需要占用 50%的 cpu,或者你需要占用 80%的 cpu 的程序,这个程序没有其他作用,仅仅是为了占用 cpu,空跑,但是其实还隐藏一个需求就是不能影响正常的程序的运行,所以最好要有动态调节的功能。 应用场合多是,现场申请的资源多了,甲方又要根据资源情况来回 阅读全文
摘要:
一 背景 本来以为通过上周的学习,已经对整个流程已经比较熟悉了,但是没想到还是遇到undefined reference to问题,虽然很快通过添加依赖的类库解决了,但是为什么生成的Makefile没有引入库,还是需要分析下configure.ac,本着不能错误进步机会,留下知识盲点的原则,还是进一 阅读全文
摘要:
希望这篇文章可以理清这个工具,了解其使用。 前言 说真的,autotools工具让我很头疼,各种类似的工具autolocal ,automake 以及生产各种相似的文件Makefile.in , Makefile.am 想生成个Makefile 真是麻烦啊,但是很多开源软件的C或C++代码,很多都采 阅读全文
摘要:
一 背景 曾经在相当长的一段时间内认为抓包就必须是root用户,直到后面了解到了setsid和capability,这篇文章算是个总结。 二 特殊权限位 2.1 SET位权限 在linux中,有些命令,比如passwd修改密码命令,本身是属于root用户的,执行的时候需要操作只有root才可以操作的 阅读全文