binary hacks读数笔记(装载)】的更多相关文章

1.地址空间 在linux系统中,每个进程拥有自己独立的虚拟地址空间,这个虚拟地址空间的大小是由计算机硬件决定的,具体地说,是由CPU的位数决定的.比如,32位硬件平台决定的虚拟地址空间大小:0--232-1.即0x00000000--0xFFFFFFFF. 在linux系统中,整个4GB内存空间被分成两部分.其中操作系统本身用去一部分,从地址0xC0000000到0xFFFFFFFF.剩下的低地址的0x00000000到0xBFFFFFFF的3GB虚拟空间由进程使用. 装载有两种方式--覆盖装…
1.dlopen是一个强大的库函数.该函数将打开一个动态库,并把它装入内存.该函数主要用来加载库中的符号,这些符号在编译的时候是不知道的.比如 Apache Web 服务器利用这个函数在运行过程中加载模块,这为它提供了额外的能力.一个配置文件控制了加载模块的过程.这种机制使得在系统中添加或者删除一个模块时,都 不需要重新编译了. 可以在自己的程序中使用 dlopen().dlopen() 在 dlfcn.h 中定义,并在 dl 库中实现.它需要两个参数:一个文件名和一个标志. 功能:打开一个动态…
一.首先对readelf常用的参数进行简单说明: readelf命令是Linux下的分析ELF文件的命令,这个命令在分析ELF文件格式时非常有用,下面以ELF格式可执行文件test为例详细介绍: 1.readelf -v       显示版本 2.readelf -h       显示帮助 3.readelf -a test           显示test的全部信息 4.readelf -h test           显示test的ELF Header的文件头信息(就是ELF文件开始的前5…
这块将介绍一下ld链接命令的具体使用.ld的作用:ld是GNU binutils工具集中的一个,是众多Linkers(链接器)的一种.完成的功能自然也就是链接器的基本功能:把各种目标文件和库文件链接起来,并重定向它们的数据,完成符号解析.链接其实主要就是完成四个方面的工作:storage allocation.symbol management.libraries.relocation.ld可以识别一种Linker command Language表示的linker scriopt文件来显式的控…
首先我们先看两段代码: a.c extern int shared; int main(){ int a=100; swap(&a,&shared); } b.c int shared=1; void swap(int* a,int* b){ *a^=*b^=*a^=*b; } gcc  -c a.c b.c 得到a.o 与b.o 1.查看a.o: [root@tlinux misc]# objdump -h a.o a.o: file format elf64-x86-64 Sectio…
一.首先看一个简单的程序: #include<stdlib.h> int main() { while(1) { sleep(1000); } return 0; } gcc -static SectionMapping.c -o SectionMapping.elf/usr/bin/ld: cannot find -lcyum install glibc-static 查看一下静态链接之后,SectionMapping.elf的段分布情况 readelf -S SectionMapping.…
共享库从文件结构上来讲,与共享对象没什么区别.Linux下,共享库就是普通的ELF共享对象. 1.共享库命名: libname.so.x.y.z :其中最前面使用前缀lib,中间是库的名字和后缀"so".最后三个数字组成的是版本号.其中,"x"表示主版本号,"y"表示次版本号,"z"表示发布版本号. 2.SO-NAME: 共享库主版本号与次版本号决定了一个共享库的接口.对于Linux系统来说,普遍采用一种叫做SO-NAME的命…
nm命令(names):输出包含三个部分:1 符号值.默认显示十六进制,也可以指定: 2 符号类型.小写表示是本地符号,大写表示全局符号(external); 3 符号名称. 例如:nm SimpleSection.o 0000000000000000 T func1 0000000000000000 D global_init_var 0000000000000004 C global_uninit_var 0000000000000021 T main U printf 0000000000…
可以用readelf命令来查看elf文件内容,跟objdump相比,这个命令更详细. 1. readelf -h SimpleSection.o ELF Header: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 45为E 4C为L 46为F Class: ELF64 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - System V A…
一.首先看一下几个常用参数的基本含义: objdump命令是Linux下的反汇编目标文件或者可执行文件的命令,它还有其他作用,下面以ELF格式可执行文件test为例详细介绍: 1.objdump -f test       显示test的文件头信息 2.objdump -d test       反汇编test中的需要执行指令的那些section 3.objdump -D test       与-d类似,但反汇编test中的所有section 4.objdump -h test       显…
Linux od命令用于输出文件内容. od指令会读取所给予的文件的内容,并将其内容以八进制字码呈现出来 -t<输出格式>或--format=<输出格式> 设置输出格式. 实例 创建 tmp 文件: $ echo abcdef g > tmp $ cat tmp abcdef g 使用 od 命令: $ od -b tmp 0000000 141 142 143 144 145 146 040 147 012 0000011 使用单字节八进制解释进行输出,注意最左侧一列表示距…
file命令的作用是用于检验文件的类型,并打印至终端.file命令检验文件类型按以下顺序来完成: 检验文件系统(Filesystem)中支持的文件类型. 检验magic file规则. 检验文件内容的语言和字符集. 检验文件系统(Filesystem)中支持的文件类型文件系统支持的文件类型指的是通过ls -l中第一个字符表示的文件类型:-(regular):正规文件(包括文本文件(ASCII)(会打印text),可执行文件(会打印excutable),其他二进制文件(会打印data))d(dir…
1. 二叉搜索树,可以用作字典,或者优先队列. 2. 根节点 root 是树结构里面唯一一个其父节点为空的节点. 3. 二叉树搜索树的属性: 假设 x 是二叉搜索树的一个节点.如果 y 是 x 左子树里面的一个节点,则 y.key <= x.key.如果 y 是 x 右子树里面的一个节点,则 x.key <= y.key. 4. 通过一次中序遍历 ( inorder tree walk ),可以将二叉搜索树的元素按照排好的顺序输出.例子如下 INORDER-TREE-WALK(x) if x…
Hack 1.善用weightSum和layout_weight. 问题提出:尝试做一个button的宽度是父View的一半的效果. 关键词:weightSum = 1 , layout_weight=0.5 Hack 2.常用include和ViewStub 问题提出:如何减少复杂界面的绘制时间. 关键词:include复用,外部定义layout_width,layout_height:ViewStub占位,VISIBLE设置 Hack 3.自定义ViewGroup 问题提出:如何使用自定义V…
4.套接字名与DNS 讨论网络地址,描述将主机名解析为原始IP地址的分布式服务 4.1. 主机名与socket 浏览器汇总一般键入域名.有些域名标识整个机构.如,python.org,而另一些指定了主机/服务.如,www.google.com/asaph.rhodesmill.org.访问一些站点时,可以使用主机名的缩写.如,asaph,站点会自动填充主机名剩余部分.无论已经在本地进行了任何自定义设置,使用包含了顶级域名及其他所有部分的完全限定域名(fully qualified domain…
前言 第一天的算法都还没有缓过来,直接就进入了第二天的算法学习.前一天一直在整理Binary Search的笔记,也没有提前预习一下,好在Binary Tree算是自己最熟的地方了吧(LeetCode上面Binary Tree的题刷了4遍,目前95%以上能够Bug Free)所以还能跟得上,今天听了一下,觉得学习到最多的,就是把Traverse和Divide Conquer分开来讨论,觉得开启了一片新的天地!今天写这个博客我就尽量把两种方式都写一写吧. Outline: 二叉树的遍历 前序遍历t…
Android.Hacks读书笔记01 #1#权重布局之解析: LinearLayout ’s android:weightSum      LinearLayout ’s child android:layout_weight 兼容适配的时候,比较方便: Defines the maximum weight sum. If unspecified, the sum is computed by adding the layout_weight of all of the children. T…
本文分两部分,第一部分是手动计划任务的方式构建Github上的Docker程序,第二部分是用Github webhook Trigger一个自动构建任务. Jenkins采用2.5版本Docker采用1.7.1代码托管使用的Github官网系统为IBM Bluemix提供的Cent6.7,服务器地址在美国南加州 1.1 创建一个Freestyle Project, let's say jenkins-docker 1.2 Set workplace to /var/lib/jenkins/job…
一.前言 最近一个问题经常萦绕在我的脑海:一个学习电子工程的机械师如何称为优秀的程序员?(注:本文作者本科学习机械设计,研究生转到电子工程系学习,毕业后却选择了系统程序员这样的职业).经过思考,我认为阻挡我称为一个优秀程序员的障碍是计算机科学的理论知识.自然辩证法告诉我们:理论源于实践,又指导实践,她们是相辅相成的关系.虽然从业十余年,阅code无数,但计算机的理论不成体系,无法指导工程面具体技能的进一步提升. 计算机科学博大精深,CPU体系结构.离散数学.编译器原理.软件工程等等.最终选择从下…
题目链接:Balanced Binary Tree | LeetCode OJ Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more tha…
题目链接:Recover Binary Search Tree | LeetCode OJ Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing its structure. Note: A solution using O(n) space is pretty straight forward. Could you devise a constan…
题目链接:Validate Binary Search Tree | LeetCode OJ Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as follows: The left subtree of a node contains only nodes with keys less than the node's key. The right…
110.Balanced Binary Tree Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1. 很早以前做的了  准…
“矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔记下载(Academia.edu) 第3章课程讲义下载(PDF) Summary Addition of matrices Two matrices $[A]$ and $[B]$ can be added only if they are the same size. The addition i…
前言 先说一些题外的东西吧.受到春跃大神的影响和启发,推荐了这个算法公开课给我,晚上睡觉前点开一看发现课还有两天要开始,本着要好好系统地学习一下算法,于是就爬起来拉上两个小伙伴组团报名了.今天听了第一节课,说真的很实用,特别是对于我这种算法不扎实,并且又想找工作,提高自己的情况. 那就不多说废话了,以后每周都写个总结吧,就趁着这一个月好好把算法提高一下.具体就从:课堂笔记.leetcode和lintcode相关习题.hdu和poj相关习题三个方面来写吧.希望自己能够坚持下来,给大家分享一些好的东…
20135132陈雨鑫 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ” 一.预处理.编译和链接和目标文件的格式 1.可执行程序是怎么来的? 理解编译链接的过程和ELF可执行文件格式 过程: ​.c文件汇编成汇编代码.asm, 再汇编成目标码.o, 链接成可执行文件a.out, 最后可执行文件就可以加载到内存中执行. 2.目标文件的格式ELF 1)主要有三种目标文件 可重定位文…
此为个人学习笔记存档 week 7 可执行程序的装载 一.预处理.编译.链接和目标文件的格式 可执行文件的创建--预处理.编译和链接 cd Code vi hello.c gcc -E -o hello.cpp hello.c -m32 vi hello.cpp gcc -x cpp-output -S -o hello.s hello.cpp -m32 vi hello.s gcc -x assembler -c hello.s -o hello.o -m32 vi hello.o gcc -…
Linux内核分析第七周学习笔记--Linux内核如何装载和启动一个可执行程序 zl + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 由源代码生成可执行文件 预处理 => 编译 => 汇编 => 链接 gcc -E hello.c -o hello.i gcc –S hello.i –o hello.s gcc –c hello.s –o hello.o gcc…
Given a binary tree, return the preorder traversal of its nodes' values. For example:Given binary tree {1,#,2,3}, 1 \ 2 / 3 return [1,2,3]. Note: Recursive solution is trivial, could you do it iteratively? 解题:应该是很简单的一道题,纠结了好久T_T 基本思路很简单,用栈模拟就可以了.首先根节…
在原生Android下编译APK,编译没有问题,但是在运行的时候经常出现如标题所描述的异常:"Binary XML file line # : Error inflating class",然后整个程序Crash掉......     我遇到该问题常常都是因为修改了资源文件所引起,大致有以下几种方式来解决:     1. 引用类名问题:自定义了一个View,将他用于布局文件中,假设他的包名叫MyPackage,类名叫MyTestView,这个时候你在XML作为布局元素来布局的话,必须使…