elf研究记录保存

  • 分析流程图

elf头部数据

头部数据中的e_phoff和e_shoff字段

elf程序请求头

elf Session请求头

elf Session请求头2
   // 传入8009 输出 [73, 31, 0, 0]
    public static byte[] int2Byte(int number) {
        int temp = number;
        byte[] b = new byte[4];
        for (int i = 0; i < b.length; i++) {
            b[i] = new Integer(temp & 0xff).byteValue();
            temp = temp >> 8; // 向右移8位
        }
        return b;
    }

解释: 8009 二进制 0001 1111 0100 1001 ,0xff 二进制1111 1111,填充后0000 0000 1111 1111
第一步,传入8009,8009&0xff- > 保留低8位,即0100 1001 , new Integer(temp & 0xff).byteValue()的值为 73
第二步,8009右移8位,再&0xff,即0001 1111, new Integer(temp & 0xff).byteValue()的值为 31
第三步,再右移8位,全为0,第四步一样全为0

原码反码补码这三个概念

  • 对于正数(00000001)原码来说,首位表示符号位,反码 补码都是本身
  • 对于负数(100000001)原码来说,反码是对原码除了符号位之外作取反运算即(111111110),补码是对反码作+1运算即(111111111)
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 进制基本概念 什么是进制?进制是一种计数的方式,数值的表示形式 常见的进制十进制、二进制、八进制、十六进制 进制书...
    极客江南阅读 6,202评论 0 11
  • 1.编译程序(1)gcc xx.c,他会默认生成一个a.out的可执行文件,在a.out所在目录,执行./a.o...
    萌面大叔2阅读 5,090评论 0 1
  • C语言基础 编译程序 gcc xx.c,他会默认生成a.out的可执行文件,在a.out所在目录,执行./a.ou...
    帅碧阅读 3,826评论 1 3
  • 一.机器数和真值 1.机器码 在探讨三码是什么之前,先来了解一下机器码和真值是什么。一个数的二进制表示就是这个数的...
    syuhung阅读 4,567评论 0 1
  • 你有伴了吗? 我没有。 如果有,请珍惜“眼前人”。 愉快的一天过去了
    lihua看世界阅读 1,111评论 0 0