ELF格式探析之三:sections

2018-10-29
阅读 10 分钟
9.2k
前文链接: ELF格式探析之一:Segment和Section ELF格式探析之二:文件头ELF Header详解 今天我们讲对目标文件(可重定位文件)和可执行文件都很重要的section。 我们在讲ELF Header的时候,讲到了section header table。它是一个section header的集合,每个section header是一个描述section的结构体。在同一个ELF文件中...

ELF文件解析(二):ELF header详解

2018-10-22
阅读 6 分钟
12.6k
讲新的内容之前,先更正一个错误:上一篇中讲section header table中的条目和文件中的section是一一对应的,其实这么讲是不对的。一个section必定有一个section header来描述它,但一个section header不一定在文件中有对应的section,因为有的section是不占用文件字节的。segment也是这个道理。

ELF文件解析(一):Segment和Section

2018-10-12
阅读 5 分钟
12.6k
ELF 是Executable and Linking Format的缩写,即可执行和可链接的格式,是Unix/Linux系统ABI (Application Binary Interface)规范的一部分。

大端序和小端序

2017-04-26
阅读 1 分钟
3.7k
什么是大端序和小端序 给定一个32位整数0x1234abcd,在内存里是怎么存放的呢? 假定存放这个整数的内存起始地址是0x0001,那么内存中存放这个整数有两个可能: {代码...} 或者: {代码...} 第一种情况是高位字节在前,叫做大端序(big-endian)。第二种情况是低位字节在前,叫做小端序(little-endian)。 不同的CPU架构有不...

cut命令使用简介

2016-06-29
阅读 1 分钟
2.9k
0x0 cut出场 有一个字符串 var=value,怎么用shell命令取到value? 这时候cut就派上用场了。 echo "var=value" | cut -d= -f2就会得到value。 -d= 表示 =是分隔符,把字符串分割。var=value会分割成两个fields. -f2 表示输出第二个field,得到value。 echo "var=value" | cut -d= -f2将会得到var。 0x1 输出内容的选择 {...

用openssl生成CA证书

2016-06-28
阅读 1 分钟
4.5k
生成密钥对 {代码...} 生成CA证书 {代码...} cs2c-ca.crt 就是CA证书,可以用它为其它证书请求签发证书。 假设要为你的usbkey生成一个证书,假设该Ukey的Token name是 secure2. 先生成一个密钥对。 {代码...} 生成CSR (证书签发请求)文件 {代码...} CSR文件必须有CA的签名才可形成证书,利用上面生成的CA证书对该csr文件...

搭建本地git仓库

2016-04-21
阅读 1 分钟
4.1k
0x0 开启ssh服务 首先开启ssh服务,允许其它人通过ssh访问你在本地搭建的git仓库。 在Debian/Ubuntu下,安装 openssh-server,然后用 systemctl start ssh 来开启ssh服务。 0x1 建立本地仓库 可以建一个名为git的用户,以root权限运行 {代码...} 系统会自动创建 /home/git 为 git 的家目录,并提示你设定git的密码。 su ...

sqlite3使用sqlite2创建的数据库

2016-03-24
阅读 1 分钟
3.1k
用 sqlite 2.8.17 创建了一个数据库 heroes.db。其中创建了一个表 heroes,这张表中存储的是魔兽争霸中英雄的技能数据。select * from heroes;会得到:

程序的版本号管理

2016-03-22
阅读 1 分钟
3.5k
MINOR version when you add functionality in a backwards-compatible manner,

python程序的调试

2016-01-21
阅读 1 分钟
2.4k
python是自带调试器的。比如你写了一个python程序,名叫test.py。你想调试一下这个程序,你可以执行 python -m pdb test.py,就会进入test.py的调试。

通过vnc访问无显卡服务器的图形环境

2015-10-27
阅读 1 分钟
4.4k
最近在一台没有显卡的 Power 服务器上,安装了Fedora 22,因为没有显卡,所以不能在本机启动Xserver,于是想通过vnc的方式远程访问服务器的图形环境。

Emacs将文件加密保存

2015-05-08
阅读 1 分钟
2.7k
为Emacs安装ps-ccrypt插件. 如果你在使用elpa(Emacs的一个插件管理器), 可以M-x list-packages, 从插件列表中找到 ps-ccrypt, 在该项上按i将其标记为待安装,然后按x执行安装。

Linux下用汇编输出Hello, world

2015-04-20
阅读 1 分钟
6k
下列是Intel汇编语法实现的 Hello, world!程序。 {代码...} 在Linux下可以用nasm编译成ELF格式的目标文件,然后链接成可执行文件。 {代码...} 执行./hello就能看到"Hello, world!"的输出了。

自制操作系统:引导扇区的实现

2015-04-10
阅读 3 分钟
8.8k
本书依靠的教材是于渊的《Orange'S:一个操作系统的实现》 实验环境及工具 ArchLinux(windows也可以) 代码编辑器Emacs(你尽情使用自己喜欢的编辑器) nasm (一个开源的汇编器,可以从sourceforge下载,也可以从Linux发行版的软件仓库安装) 思路: 写一段汇编代码,输出 Hello, World 将该段代码写入软盘镜像的第一个...

C++的enum hack

2015-03-30
阅读 1 分钟
3.5k
从一个例子开始吧 {代码...} 对于支持类内初始化的C++编译器,这段代码可以编译通过。 但是较老的C++编译器,可能不支持类内初始化,这样我们的静态常量,必须要在类外初始化。如下: {代码...} 如果没有int scores[GameTurn];,这段代码就可以用不支持类内初始化的编译器通过了。 但因为 int scores[GameTurn]; 用到了G...

C标准库函数中复杂的函数声明

2015-03-27
阅读 1 分钟
2.8k
向右看,(int sig, void (*handler)(int)),括号和参数,说明signal是一个函数。 第一个整形参数sig不用多讲,第二个参数比较复杂 void (*handler)(int),这是一个函数指针,它指向的函数接收一个整形参数,没有返回值。

Android工程的目录结构

2015-03-04
阅读 1 分钟
2.9k
AndroidManifest.xml,项目清单文件,设置应用名称、图标等属性。Android应用中的Activity, Service, ContentProvider和BroadcastReceiver都要在该文件中设置。

设置环境变量ANDROID_SDK_HOME有什么用?

2015-02-28
阅读 1 分钟
12.5k
如果用windows XP,其路径就是 C:\documents and settings\<your_user_name>\.android。(win7和win8略有不同)。

Android系统Dalvik和Jvm的区别

2015-02-28
阅读 1 分钟
3.5k
JVM运行的Java字节码,它从.class文件或Jar包中加载字节码然后执行; Dalvik 运行的是 dex 文件(Dalvik Executable),生成APK时,Dx工具把所有.class文件编译成一个 dex 文件。

是否使用TDD(测试驱动开发)进行UI开发

2015-02-12
阅读 1 分钟
3.5k
问题 StackOverflow上有一则是否使用TDD(测试驱动开发)进行UI开发 的提问。 JacobE问: 对于是否使用TDD进行开发UI这件事,我想了很久,但难以决定。我想听听你们的意见。 回答 kdgregory的回答(23票赞同) 试图测试UI组件的放置是没有意义的,首先因为UI布局是主观的,所以应该由人来测试。其次,随着UI改动,你要不...

用phpunit进行TDD入门

2015-02-10
阅读 5 分钟
5.4k
在工程目录下建立两个目录, src和test,在src下建立文件 BankAccount.php,在test目录下建立文件BankAccountTest.php。

phpunit 安装

2015-02-10
阅读 2 分钟
4.5k
官方指引 很遗憾, phpunit还没有在ArchLinux的仓库里。 所以使用下载安装的方式。按照官方的指引: {代码...} 结果得到下面的错误: {代码...} 启用phar扩展 先解决Fatal error: Class 'Phar' not found。 {代码...} 发现有 phar.so,说明Phar的扩展已经安装,那么是不是该扩展没有Enable呢? 打开 /etc/php/php.ini搜...

Json入门

2015-01-29
阅读 2 分钟
2.9k
{...}中包围的是对象,对象的多个键值对用,分隔。[...]中包围的是序列(理解为数组即可),对象之间用,分隔。当你的值要用字符串来索引时,就把数据组织成对象。当你的值要用整数来索引时,就把数据组织成序列。

django入门

2015-01-16
阅读 1 分钟
3.1k
配置环境 安装python 2.7.x 安装pip pip install django 创建项目 django-admin.py startproject mysite 启动服务器: 进入项目目录, ./manage.py runserver 在浏览器内访问 http://127.0.0.1:8000 创建应用 ./manage.py startapp xxx. 未完待续

java中字符串的比较

2014-12-12
阅读 1 分钟
2.3k
运行: java -ea StringCompareTest, -ea 表示启用断言 (enable assertion),java虚拟机默认是关闭断言的。

android开发:使用strings.xml中的字符串

2014-12-10
阅读 1 分钟
5.4k
strings.xml位于项目目录 res/values 下面。内容如下: {代码...} 我们可以在里面添加新的string. 在layout的xml中引用,用@string/<string_name>,如下: {代码...} 如何在程序中引用strings.xml中的字符串? {代码...}

android应用构建: Could not reserve enough space for object heap

2014-12-09
阅读 1 分钟
3.9k
windows下在命令行打包android程序,ant debug出错。 {代码...} 修改 dx.bat,位置在sdk目录下的 build-tools\android-4.3,找到 {代码...} 改为 {代码...} 重新 ant debug 就可以重新构建了。

Windows上安装QT4后更改MinGW的路径

2014-06-11
阅读 1 分钟
2.7k
在windows上安装使用MinGW的QT4时,并不会一起安装MinGW。 在安装过程中,会让你指定已经安装的MinGW的路径。 当你使用QT4时,将使用你指定的MinGW的路径下的g++来编译构建程序。

为FreeBSD安装adobe flash插件

2014-05-20
阅读 1 分钟
3.7k
pkg install nspluginwrappernspluginwrapper 是一个辅助安装配置 NetScape Plugin的工具。 可以为NetScape家族的浏览器安装在其它系统上构建的插件,比如安装在Linux上编译的flash plugin。

探索Emacs SpeedBar

2014-05-16
阅读 3 分钟
8.9k
M-x speedbar 会打开一个窄而高的导航窗口,里面显示的是文件列表,点击每个文件前的 +,能展开文件内的索引。 有的索引项还能够进一步展开,点击不能在展开的索引项,就能跳转到文件内对应的位置。 用鼠标用 speedbar 还是很方便的。