工作原因有时候会用python写写测试工具,感受到其快速实现应用的便利,但由于偏底层开发,主力语言依然是C。对于开发语言没有什么优劣概念,在特定的情景下哪种实现更佳就用哪种,工具合适才是最好的。
每个目标文件都有好多个段,目标文件在被链接成可执行文件时,输入目标文件中的各个段如何被合并到输出文件?
介绍u-boot启动流程中和具体版型(board)有关的部分,也即board_init_f/board_init_r所代表的、board有关初始化过程。该过程将持续u-boot的整个生命周期,直到main_loop(即传说中的命令行)。
重定向是计算机技术中非常底层的概念和操作。它指的是将程序中涉及到的变量名与变量在计算机内存中的位置关联起来。当在代码中执行类似x=1;的语句时,编译器需要通过重定向信息找到变量x对应的内存位置,然后将数值1写入该内存,因此重定向既跟程序的加载链接有关,又与编译原理有关,因此对计算机体系结构不了解,或只关注上层应用开发,对底层技术理解不多的同学对它进行掌握就会有些困难。
首先做一些准备工作,先把centos7的防火墙更换成iptables,可以参见如下链接
上一期主要讲解了shdr计算更新的部分以及osec offset的设置,这期则是做链接最后的工作。上期在对段shrink的时候也提到部分synthetic的符号值还未固定,本期就会从这部分的值提起,之后则是对debug_section进行压缩,同时文件的大小也会产生变化,到了这里整个文件内部的layout以及文件的大小也就固定了。
之前几篇介绍exploit的文章, 有提到return-to-plt的技术. 当时只简单介绍了 GOT和PLT表的基本作用和他们之间的关系, 所以今天就来详细分析下其具体的工作过程.
打开uboot.lds,发现链接地址为0,所以新的uboot只能在nor flash运行。运行开始文件为start.o。
用“-Wl,-Bstatic”指定链接静态库,使用“-Wl,-Bdynamic”指定链接共享库,使用示例: -Wl,-Bstatic -lmysqlclient_r -lssl -lcrypto -Wl,-Bdynamic -lrt -Wl,-Bdynamic -pthread -Wl,-Bstatic -lgtest ("-Wl"表示是传递给链接器ld的参数,而不是编译器gcc/g++的参数。) 1) 下面是因为没有指定链接参数-lz(/usr/lib/libz.so,/usr/lib/libz.a ) /usr/local/mysql/lib/mysql/libmysqlclient.a(my_compress.c.o): In function `my_uncompress': /home/software/mysql-5.5.24/mysys/my_compress.c:122: undefined reference to `uncompress' /usr/local/mysql/lib/mysql/libmysqlclient.a(my_compress.c.o): In function `my_compress_alloc': /home/software/mysql-5.5.24/mysys/my_compress.c:71: undefined reference to `compress' 2) 下面是因为没有指定编译链接参数-pthread(注意不仅仅是-lpthraed) /usr/local/mysql/lib/mysql/libmysqlclient.a(charset.c.o): In function `get_charset_name': /home/zhangsan/mysql-5.5.24/mysys/charset.c:533: undefined reference to `pthread_once' 3) 下面这个是因为没有指定链接参数-lrt /usr/local/thirdparty/curl/lib/libcurl.a(libcurl_la-timeval.o): In function `curlx_tvnow': timeval.c:(.text+0xe9): undefined reference to `clock_gettime' 4) 下面这个是因为没有指定链接参数-ldl /usr/local/thirdparty/openssl/lib/libcrypto.a(dso_dlfcn.o): In function `dlfcn_globallookup': dso_dlfcn.c:(.text+0x4c): undefined reference to `dlopen' dso_dlfcn.c:(.text+0x62): undefined reference to `dlsym' dso_dlfcn.c:(.text+0x6c): undefined reference to `dlclose' 5) 下面这个是因为指定了链接参数-static,它的存在,要求链接的必须是静态库,而不能是共享库 ld: attempted static link of dynamic object 如果是以-L加-l方式指定,则目录下必须有.a文件存在,否则会报-l的库文件找不到:ld: cannot find -lACE 6) GCC编译遇到如下的错误,可能是因为在编译时没有指定-fPIC,记住:-fPIC即是编译参数,也是链接参数 relocation R_x86_64_32S against `vtable for CMyClass` can not be used when making a shared object 7) 下面的错误表示gcc编译时需要定义宏__STDC_FORMAT_MACROS,并且必须包含头文件inttypes.h test.cpp:35: error: expected `)' before 'PRIu64' 8) 下面是因为在x86机器(32位)上编译没有指定编译参数-march=pentium4 ../../src/common/libmooon.a(logger.o): In function `atomic_dec_and_test': ../../include/mooon/sys/atomic_gcc.h:103: undefined reference to `__sync_sub_and_fetch_4' 9) 下列错误可能是因为多了个“}” error: expected d
系统环境版本 [root@db02 ~]# cat /etc/redhat-release CentOS release 6.9 (Final) [root@db02 ~]# uname -a Linux db02 2.6.32-696.el6.x86_64 #1 SMP Tue Mar 21 19:29:05 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 首先部署mysql数据库 二进制包方式安装mysql数据库软件 下载解压mysql软件 wget https://d
IIC EEPROM,采用的是IIC通信协议。 IIC通信协议具有的特点: 【1】简单的两条总线线路,一条串行数据线(SDA),一条串行时钟线(SCL); 【2】串行半双工通信模式的8位双向数据传输,位速率标准模式下可达100Kbit/s; 【3】一种电可擦除可编程只读存储器,掉电后数据不丢失,由于芯片能够支持单字节擦写,且支持擦除的次数非常之多,一个地址位可重复擦写的理论值为100万次,常用芯片型号有 AT24C02、FM24C02、CAT24C02等,其常见的封装多为DIP8,SOP8,TSSOP8等;
本文介绍了如何通过配置Nginx实现反向代理,以保护后端MySQL服务器。作者首先介绍了如何配置Nginx,创建一个简单的Web服务器,然后使用Nginx反向代理功能将请求转发到后端MySQL服务器。为了防止直接访问MySQL服务器,作者还使用了Nginx的location块和访问控制策略。最后,作者通过一些测试验证了Nginx反向代理功能的正确性和稳定性。
从start_armboot开始,在startup.c中有包含#include <config.h>
介绍 memcache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显著。
根据PHP官方手册所说,整型数的字长和平台有关,尽管通常最大值是大约二十亿(32 位有符号)。64 位平台下的最大值通常是大约 9E18。PHP 不支持无符号整数。Integer 值的字长可以用常量 PHP_INT_SIZE来表示,自 PHP 4.4.0 和 PHP 5.0.5后,最大值可以用常量 PHP_INT_MAX 来表示。
初始化密码登录MySQL后只能执行修改密码的操作,其它任何操作是不能执行的,使用以下命令修改密码
不然修改密码之后密码会过期,会提示让你重新设置密码 You must reset your password using ALTER USER statement before executing this statement/usr/local/mysql/bin/mysql -uroot -p #登录MySQLuse mysql #切换MySql数据库
最近在一直在做uboot的移植工作,uboot中有很多值得学习的东西,之前总结过uboot的启动流程,但uboot一个非常核心的功能没有仔细研究,就是uboot的relocation功能。
Mach-O 的全称是 Mach Object File Format。可以是可执行文件,目标代码或共享库,动态库。Mach 内核的操作系统比如 macOS,iPadOS 和 iOS 都是用的 Mach-O。Mach-O 包含程序的核心逻辑,以及入口点主要功能。
# rpm -qa | grep Java # yum remove java-1.8.0-openjdk # yum remove java-1.8.0-openjdk-headless
修改root密码 因为在mysql8中,在安装数据库时会设置默认密码。我们可以利用下面命令查看默认密码
跟多详细配置参考:https://www.zybuluo.com/phper/note/89081
程序员编写的是源代码,而计算机运行的则是CPU能识别的机器指令,因此必须要有一系列工具或程序来将源代码转化为机器指令,这个转化的过程需要经历编译和链接两个主要阶段。所谓编译就是将源代码文件转化为中间的目标文件(Object file)。目标文件的后缀一般为.o。iOS系统的目标文件也是一种mach-o格式的文件,mach-o文件的头部结构体:struct mach_header中的filetype成员字段用来描述当前文件的类型,目标文件所对应的类型是MH_OBJECT。目标文件中的布局结构和内容和可执行文件中的布局结构和内容非常相似,编译后形成的目标文件中的代码段(__TEXT Segment)中的节(__text Section) 中的内容存放的是已经被编译为机器指令的二进制代码了。下面就是一个目标文件的布局结构:
本来不想写这篇的,因为网上都有,但是最近问关于这些环境配置的朋友有点多,于是整理一番,全部都是本人实战验证过的。
Server和ServerActive分别代表zabbix的被动模式和主动模式,这里都填server端的IP 最后一行是开启脚本采集数据
本文翻译自 2016 年 Daniel Borkman 在 NetdevConf 大会上的一篇文章:On getting tc classifier fully programmable with cls_bpf[1]。
前两天网上投递了简历,面试了一家C++公司,然后对面负责人给我发了一份笔试题,题目是:
CentOS 6.4 + nginx-1.2.5 + php-5.4.15 + MySQL-5.5.31 摘要 在工作中,需要经常为新系统安装软件,重复而简单,但又不得不作,我将过去几年中工作中临时写的脚本这里了一下,能够实现半自动化安装标本,只需要Ctrl+C, Ctrl+V 快速粘贴复制,即可快速完成安装 我的系列文档 Netkiller Architect 手札 Netkiller Developer 手札 Netkiller PHP 手札 Netkiller Python 手札 Ne
那么web服务器如何执行程序并将结果返回给客户端呢?下面通过一张图来说明一下web服务器如何处理客户端的请求
LAMP是Linux Apache MySQL PHP的简写,即把Apache、MySQL以及PHP安装在Linux系统上,组成一个环境来运行PHP的脚本语言,通常是网站。
Zabbix是一个非常强大的监控系统,是企业级的软件,来监控IT基础设施的可用性和性能.它是一个能够快速搭建起来的开源的监控系统,Zabbix能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位解决存在的各种问题,Zabbix系统几乎可用于任何系统的监控过程
环境 [root@cache01 ~]# cat /etc/redhat-release CentOS Linux release 7.4.1708 (Core) [root@cache01 ~]# uname -a Linux cache01 3.10.0-693.el7.x86_64 #1 SMP Tue Aug 22 21:09:27 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux 前言:转载请注明出处。。。 memcached介绍 官方:http://mem
LAMP是Linux Apache MySQL PHP 的简写,即把Apache 、MySQL以及PHP安装在Linux系统上,组成一个环境来运行PHP的脚本语言,通常是网站。我们可以把Apache+PHP安装在一台机器上,再把MySQL安装在另外一台机器上,也可以把它们三个安装在一台机器上。但Apache和PHP需要在同一台机器上,这是因为PHP是作为Apache的一个模块存在的,它们必须在一起。
对于大型的工程项目,依赖许多人的配合,包含大量不同的代码库与服务,有的我们能够访问程序的源代码,有的可以访问程序的可重定位文件,有的可以访问到可执行文件及其环境,假如我们想在在不同的层面改变或者添加一些逻辑,操作系统、编译器以及程序语言、代码库等都提供了 一些机制使得 开发者可以 方便的 增加或替换代码逻辑,对于逻辑调试、测试、性能分析、版本兼容等都有比较好的效果。
本文介绍一种比较便捷的安装PHP环境的方法-yum安装,这种安装方式相比源码安装PHP,更加方便快捷。
信标对象文件 (BOF) 是一个已编译的 C 程序,按照约定编写,允许在信标进程中执行并使用内部信标 API。
LAMP发展 LAMP这个特定名词最早出现在1998年,是Linux操作系统、Apache网页服务器、MySQL数据库管理系统和PHP程序模块,四种技术名称开头字母缩写组成的。是一组常用来搭建动态网站或者服务器的开源软件组合, 本身都是各自独立的软件,但是因为常被结合在一起使用,并拥有越来越高的兼容度,共同组成了一个强大的Web应用程序平台。
yum install pcre pcre-devel openssl openssl-devel -y
博客地址 : http://blog.csdn.net/shulianghan/article/details/42462795
将OutputSection以及Got中的relocations以压缩的形式存储到relr.dyn,在这之后rel段的大小和layout就固定了。
动态链接库与普通的程序相比而言,没有main函数,是一系列函数的实现。通过shared和fPIC编译参数生产so动态链接库文件。程序在调用库函数时,只需要连接上这个库即可。例如下面实现一个简单的整数四则运输的动态链接库,定义的caculate.h和caculate.c两个文件,生产libcac.so动态链接库。
查看Swap分区的大小以及使用情况,一般使用free命令即可,如下所示,Swap大小为512M,目前没有使用Swap分区
GCC编译遇到如下的错误,可能是因为在编译时没有指定-fPIC,记住:-fPIC即是编译参数,也是链接参数:
在完成空间与地址的分配步骤之后,链接器就进入了符号解析与重定位的步骤,这也就是静态链接的核心作用; 在分析符号解析和重定位之前,首先让我们来看看“a.o”里面是怎么使用这两个外部符号,也就是说我们在“a.c”源程序里面使用了“shared”变量和“swap”函数,那么编译器在将“a.c”编译成指令时,它如何访问“shared”变量?如何调用“swap”函数? 使用objdump的-d参数可以看到“a.o”的代码反汇编结果: objdump -d a.o
FileRun是由PHP编写的文件管理器和文件共享程序,可帮助您访问,整理,查看和编辑文件。您可以将其与Office文档,照片,音乐等文件一起使用。在本教程中,我们将在CentOS 7服务器上安装FileRun。
一、检查php是否已经安装,使用php -v,是否能够看到版本号,或者使用rpm -qa | grep php查看是否安装过。
本文介绍了ELF的基本结构和内存加载的原理,并用具体案例来分析如何通过ELF特性实现HIDS bypass、加固/脱壳以及辅助进行binary fuzzing。
领取专属 10元无门槛券
手把手带您无忧上云