精华内容
下载资源
问答
  • /bin/bash#Purpose:管理mysql二进制日志,每小时刷新二进制日志,并将日志复制到nfs服务器上,方便以后恢复和问题分析!#Author:carl_zhang#Date:2012-5-15#some variables 一些参数#定义数据库的相关信息USERNAME=...

    #!/bin/bash

    #Purpose:管理mysql二进制日志,每小时刷新二进制日志,并将日志复制到nfs服务器上,方便以后恢复和问题分析!

    #Author:carl_zhang

    #Date:2012-5-15

    #some variables 一些参数

    #定义数据库的相关信息

    USERNAME=root

    PASSWORD=zhang@123

    HOSTIP=localhost

    MYSQL=/usr/local/mysql/bin/mysql

    #设置二进制日志的路径

    BIN_LOG_DIR=/data/dbdata

    #设置二进制日志备份的路径

    BIN_LOG_BACKUP_DIR=/data/binlog_backup

    #定义一个常量来跳过最后一个日志文件

    COUNT=0

    #定义一个日志文件

    LOGFILE=/data/binlog_backup/binlog_backup.log

    #找出二进制日志的名称前缀

    BINLOG_PREFIX=`grep "log-bin=" /etc/my.cnf | awk -F'=' '{print $2}'`

    #比较二进制日志文件列表和已备份的二进制文件列表

    if [ ! -f "$BIN_LOG_BACKUP_DIR/backup.file" ];then

    touch $BIN_LOG_BACKUP_DIR/backup.file

    fi

    #运行文件比较之前先执行一下flush logs

    $MYSQL -u$USERNAME -p$PASSWORD -h$HOSTIP -e "flush logs"

    FILE_LIST=`comm -23 $BIN_LOG_DIR/$BINLOG_PREFIX.index $BIN_LOG_BACKUP_DIR/backup.file`

    #统计日志文件的个数

    FILE_COUNT=`comm -23 $BIN_LOG_DIR/$BINLOG_PREFIX.index $BIN_LOG_BACKUP_DIR/backup.file|wc -l`

    #程序正文

    #开始备份二进制日志文件

    for file in $FILE_LIST

    do

    BINLOG_NAME=`basename $file`

    let COUNT=$COUNT+1

    if [ $COUNT -eq $FILE_COUNT ];then

    #跳过最新的那个二进制日志文件

    echo "skip the lastest binlog file" >> $LOGFILE

    else

    cp $BIN_LOG_DIR/$BINLOG_NAME $BIN_LOG_BACKUP_DIR/

    if [ $? -eq 0 ];then

    echo "`date -d "today" +%Y-%m-%d-%H-%M-%S` $BINLOG_NAME backup success" >> $LOGFILE

    else

    echo "`date -d "today" +%Y-%m-%d-%H-%M-%S` $BINLOG_NAME backup faild, Please check it out" >> $LOGFILE

    exit 5

    fi

    #对二进制日志进行压缩存放

    gzip $BIN_LOG_BACKUP_DIR/$BINLOG_NAME

    if [ $? -eq 0 ];then

    echo "`date -d "today" +%Y-%m-%d-%H-%M-%S` $BINLOG_NAME gzip success" >> $LOGFILE

    else

    echo "`date -d "today" +%Y-%m-%d-%H-%M-%S` $BINLOG_NAME gzip faild, Please check it out" >> $LOGFILE

    exit 5

    fi

    echo ./$BINLOG_NAME >> $BIN_LOG_BACKUP_DIR/backup.file

    fi

    done

    展开全文
  • 除了一些开始符(carriage return)结束符(line feed)的问题,每一个读到C/C++中的文件都是二进制文件。事实上,C/C++ 只知道二进制文件,以及如何让二进制文件像文本文件一样。当我们使用的语
  • angr是新一代二进制文件分析框架,旨在解决下列问题: 载入二进制文件到分析程序中; 将二进制文件翻译成中间表示; 执行真正的分析,可能是: 一部分或全程序的静态分析; 一种程序状态空间的符号搜索; 以上...

    angr是新一代二进制文件分析框架,旨在解决下列问题:

    • 载入二进制文件到分析程序中;
    • 将二进制文件翻译成中间表示;
    • 执行真正的分析,可能是:
      一部分或全程序的静态分析;
      一种程序状态空间的符号搜索;
      以上方法的部分结合使用。

    • 二进制的载入:CLE

    • 中间表示:VEX(使angr实现跨底层结构分析二进制文件)
    • 求解程序引擎:约束求解和其它计算需求由angr子模块 Claripy提供
    • 程序状态集:angr提供仿真机器状态的接口。理解这是成功使用angr的必要。
    • 程序路径:程序可以由执行过程可能经过的路径进行分析。angr显示了路径执行过程中的信息。
    • 语义表示:angr一个强大的特性展示基本块及其在程序状态中的影响。angr可以说明基本块的作用,该功能由SimuVEX子模块实现。
    • 符号执行:angr提供符号执行引擎。及该引擎的接口,以及如何使用。
    • 全程序分析:以上所有组件结合起来进行复杂的,全程序的分析。
    展开全文
  • Linux系统ELF文件二进制格式分析(三)

    千次阅读 2015-03-17 20:03:00
    本文接着《Linux系统ELF文件二进制格式分析(二)》进行分析 四、符号表 符号表保存了程序实现或使用的所有变量函数,在一定程度上,变量函数都可以认为是一种符号。如果一个目标文件当中使用了自身未定义的符号...

    本文接着《Linux系统ELF文件二进制格式分析(二)》进行分析

    四、符号表

    符号表保存了程序实现或使用的所有变量和函数,在一定程度上,变量和函数都可以认为是一种符号。如果一个目标文件当中使用了自身未定义的符号,则这个符号是未定义符号。这种符号必须在链接过程中解决其定义问题,可以是静态链接时在其他的目标文件或者库当中获取其定义,也可以是在加载时通过动态链接在共享库当中获取定义。

    符号表在ELF文件中有专门的节来存储,节的名称为.symtab,类型为SHT_SYMTAB,如上一节当中readelf运行结果的截图所示。目标文件和可执行文件当中都存在相应的节来存储符号表。每个符号都用相同的数据结构来存储和它有关的信息。

    1.      数据结构

    typedef struct elf32_sym{
        Elf32_Word		st_name;
        Elf32_Addr		st_value;
        Elf32_Word		st_size;
        unsigned char	st_info;
        unsigned char	st_other;
        Elf32_Half		st_shndx;
    } Elf32_Sym;

    (1)    st_name指明了符号的名称,他存储的是符号在字符串表(名称为.strtab的节)当中的位置。

    (2)    st_value指明了符号的值。可能是绝对值也可能是地址。

    (3)    st_size指明了对象长度。如一个指针长度或strcut对象的字节数,如果长度未知则该值为0。

    (4)    st_info指明了符号的确切用途,它分为两个部分:绑定属性和符号类型。

    绑定类型有如下值:

    #define STB_LOCAL  0
    //局部符号STB_LOCAL表明这个符号只在目标文件内部可见,链接时与程序其他部分合并时是不可见的。因此如果几个目标文件都存在同名的这种类型的符号是可以接受的,他们不会互相干扰。
    
    #define STB_GLOBAL 1
    //全局符号STB_GLOBAL符号不仅在目标文件内部可见,也可以由构成程序的其他目标文件引用。一个程序内部不能出现同名的这种类型符号,否则链接器会报错。
    
    #define STB_WEAK   2
    //类型STB_WEAK符号在整个程序内可见,也可以有多个定义。如果程序中的一个全局符号和一个局部符号名称相同,则全局符号优先处理。

     符号类型有如下值:

    #define STT_NOTYPE  0
    //STT_NOTYPE该符号的类型没有指定,用于未定义引用。
    
    #define STT_OBJECT  1
    //STT_OBJECT该符号和一个数据对象相关,如变量、数组、指针等。 
    
    #define STT_FUNC    2
    //STT_FUNC 表示该符号和一个函数或其他可执行代码相关。 如果这个值出现在共享文件的符号表的某个符号当中时,表明该符号有特殊意义。当其他的目标文件从一个共享文件中引用一个函数时,链接器自动的为引用符号创建一个链接表。不是这个值,共享的目标符号将不会自动的通过链接表引用。 
    
    #define STT_SECTION 3
    //STT_SECTION该符号和一个节相关。这种类型的符号表入口主要是为了重定位,一般同时具有STB_LOCAL特性。 
    
    #define STT_FILE    4
    //STT_FILE 表明该符号给出了和目标文件相关的源文件名称,且具有STB_LOCAL特性,st_shndx字段为SHN_ABS ,并且它优先于对应该源文件的其他 STB_LOCAL 符号。

    如果一个符号涉及到一个节的重定位,则st_shndx 将保留一个到该节头的索引。当该节在重定位过程中不断移动时,符号的值也相应变化,而该符号的引用在程序中指向同样的重定位位置。

    绑定类型和符号类型定义的值是有重叠的,st_info大小为1个字节8位,且两种类型值的数量都不超过16,因此类型存储方式为:绑定类型占用st_info的高4位,符号类型占用st_info的低4位。两者通过下面的宏合并为一个字节。

    #define ELF32_ST_INFO(b, t) (((b)<<4)+((t)&0xf)) 

    或通过下面的宏从st_info提取各类型的相应值。

    #define ELF32_ST_BIND(i) ((i)>>4) 
    #define ELF32_ST_TYPE(i) ((i)&0xf) 

    (5)    st_other该值目前未用到

    (6)    sh_shndx保存了一个节在节头表中的索引,符号绑定到该节,该符号通常定义在此节的代码当中。但以下两个值有特殊的含义:

    #define SHN_UNDEF	0
    //标识未定义符号,表明该符号必须通过外部来源解决,如其他目标文件或者库
    
    #define SHN_ABS		0xfff1
    //指定符号是绝对值,不因重定位而改变

    2. 目标文件中的符号表

    源文件的名称存储为一个绝对值,索引为SHN_ABS,不随重定位而改变。类型为STT_FILE,标识该目标文件是关联到哪个源文件的。

    文件中定义的两个函数:main和add,类型为STT_FUNC类型的全局符号。两个符号都指向节1,即.text节,保存了这两个函数的机器代码。

    printf、exit和puts属于未定义引用,索引为SHN_UNDEF。因此程序链接时它们必须关联到标准库中的函数,或者其他库中以改名定义的符号。因为编译器不知道这些符号的类型,因而类型为STT_NOTYPE。


    3. 可执行文件中的符号表

    可执行文件中,printf、puts和exit(上图上半部分.dynsym符号表中)仍然是未定义的,但同时增加了一些信息,指示了函数依赖的库的名称和最低版本,“@@”符号之后的“GLIBC”是库的名称,“_”符号之后的“2.0”是库最低要求版本。程序自己定义的add和main符号已经移到虚拟地址空间的固定位置,文件加载时,对应代码将映射到这些位置,因此不会显示在可执行文件当中。


    五、字符串表

    .symtab和.strtab都在上面提到过了,.symtab表的st_name保存的不是实际的名称字符串,而是名称字符串在.strtab中的索引,而.hash保存了一个散列表,以帮助快速查找符号。.shstrtab这个字符串表存放了各个节的名称,如“.text”、“.data”等,节头表结构中sh_name成员存储的即为字符串在字符串表中的索引。

    字符串表没有固定的格式,内核不能提供一个固定的数据结构,因此必须手工分析,字符串表在ELF中存储格式如下:


    上图中每个单元格表示一个字节,字符串表中第一个字节为0,各个字符串也通过0字节进行分割。字符串索引即为字符串第一个字符在该区域当中的偏移值,如图中“add”的索引为1,“main”的索引为17。


    ELF的重定位节及重定位问题将在《Linux系统ELF文件二进制格式分析(四)》中介绍

    展开全文
  • Falcon是Rust中的正式二进制分析框架。 基于表达式的IL,受RREIL的LLIL影响很大。 32/64位x86,MipsMipsel的语义等效二进制转换器。 ELFPE通过。 定点引擎,用于数据流分析和抽象解释。 用于分析的性能...
  • 问题1:c反汇编是什么意思呢? 回答: 反汇编(Disassembly):把目标代码转为汇编代码的过程,...学习理解反汇编语言对软件调试、漏洞分析、OS的内核原理及理解高级语言代码都有相当大的帮助,在此过程中我们可以领
    问题1:c反汇编是什么意思呢?
    回答:
    反汇编(Disassembly):把目标代码转为汇编代码的过程,也可以说是把机器语言转换为汇编语言代码、低级转高级的意思,常用于软件破解(例如找到它是如何注册的,从而解出它的注册码或者编写注册机)、外挂技术、病毒分析、逆向工程、软件汉化等领域。学习和理解反汇编语言对软件调试、漏洞分析、OS的内核原理及理解高级语言代码都有相当大的帮助,在此过程中我们可以领悟到软件作者的编程思想。总之一句话:软件一切神秘的运行机制全在反汇编代码里面。
    补充:
    C反汇编过来就不再是C了,变成汇编语言程序了,这个目前较高水平的人应该是求伯君,此人汇编水平在苹果、微软、google为之震撼。


    问题2:将十进制数25.7转换成等值的二进制数和十六进制数为多少?
    如果是浮点
    十六进制:41CD999A
    二进制:01000001110011011001100110011010
    具体算法可参考IEEE745标准
    展开全文
  • 前言在当下对应用软件进行漏洞挖掘主要有两种方法:静态分析和动态分析。现在大家更倾向于结合使用这两种方法,每种方法解决不同的问题。但有时候,静态分析的使用是很受限制的,比如:没有源码的情况下。在本文中,...
  • /bin/bash#Purpose:管理二进制日志,每小时刷新二进制日志,并将日志复制到nfs服务器上,方便以后恢复和问题分析!#Author:carl_zhang#Date:MYSQL二进制日志管理脚本脚本原理是每小时对进行flush生成新的二进制日志...
  • 上节说到关于序列化,我们或许已经发现了其诟病,其实说到底二进制序列化并没有问题,只是我们的编码习惯不正确而已,那么接下来让我们来彻底优化二进制序列化,BinaryFormatter走起。。。。 文章目录回顾上节分析...
  • 我前两天在NetOA方面确实是有点懈怠了。不为别的,正是为了这篇将提到的脚本的分析。虽然没把分析做彻底,不过我觉得现在已经足够...汉公解决破解的棘手问题,而明大主要完成打包问题,也兼做脚本编辑器,视具体分工...
  • 最近使用开发的过程中出现了一个小问题,顺便记录一下原因和方法--数据二进制  python-bitstring 3.1.0 是一个小更新版本,含包... bitstring 是一个 Python 块模用来简化创建和分析二进制数据的操纵,BitStrin...
  • public class test { public static void main(String[] args) { short a = (short) 0; System.out.println(~a); } }结果输出 -1分析:a=0x0000, ~a=0xffff,二进制为1111 1111 1...
  • 问题描述】 L1-003 个位数统计 (15 分) 给定一个 k 位整数 ,请编写程序统计每种不同的个位数字出现的次数。例如:给定 N=100311,则有 2 个 0,3 个 1, 1 个 3。 输入格式: 每个输入包含 1 个测试用例,即...
  • Informix下大对象(BLOBCBLOB)的处理机问题的解决办法Informix下大对象(BLOBCBLOB)的处理机问题的解决办法在informix数据库中大对象BLOBCBLOB处理出错的分析和解决办法:1:分析:Informix数据库中大对象存储在...
  • 获取一个数二进制序列中所有的偶数位奇数位, 分别输出二进制序列。 问题分析: 方法一: 1、从键盘读入一个数; 2、换算成二进制并把二进制序列存进数组; 3、i=0;i+=2;循环从数组取得偶数位; 4、i=1;i...
  • 内存中的数据对象只有转换为二进制流才可以进行数据持久化网络传输。将数据对象转换为二进制流的过程称为对象的序列化(Serialization)。反之,将二进制流恢复为数据对象的过程称为反序列化(Deserialization)。...
  • 看似问题简单,好多人搞不懂真正的区别,下面我们从底层的角度给大家分析一下从C语言的角度来看,所有的文件都可简单的分为两类:一类是文本文件,另外一类是二进制文件。1、文本文件:所谓的文本文件,就是按照字符...
  • 给定两个二进制字符串,返回他们的(用二进制表示) 题目解析: 本题考察数字电路中的进位加法问题,比较简单,关键在于如何处理字符数字之间的加减法问题以及如何处理进位问题。 class Solution { public...
  • 通过对CrossBit二进制翻译器的性能进行的研究,分析动态二进制翻译器性能提升中所必须解决的若干问题,并通过定量的分析总结了一些二进制翻译系统的在不同的配置负载下系统优化手段的执行时策略。
  •  2、编一程序,实现将输入的...说明:计算机模拟人工是编程中常用的方法,这种方法要求编程者首先分析在人工方式下解决问题的过程,从中找出步骤规律,然后编写程序,按照人工解决问题的步骤规律进行操作。
  • 看似问题简单,好多人搞不懂真正的区别,下面我们从底层的角度给大家分析一下从C语言的角度来看,所有的文件都可简单的分为两类:一类是文本文件,另外一类是二进制文件。1、文本文件:所谓的文本文件,就是按照字符...
  • 关键词:电路板,协议,二进制,逆向 协议设计的三要素,即协议语法,语义时序。参考《协议规范挖掘综述》   1. 搜索固定字段,频繁序列 分割数据流,解决帧的定界问题。   2. 数据挖掘,特征序列...
  • 二进制求和

    2019-10-06 08:08:54
    给定两个二进制字符串,返回他们的。 (输入为非空字符串且只包含数字 1 0,输出二进制形式的字符串) 示例 1: 输入: a = “11”, b = “1” 输出: “100” 示例 2: 输入: a = “1010”, b = ...
  • 亲爱的,关注我吧8/31文章共计3165个词今天的内容有一些图,流量用户注意哦我一起阅读吧0本文是本系列的第二篇,将对面向二进制程序的静态漏洞挖掘技术进行介绍与分析。面向二进制程序的静态漏洞的挖掘技术由于缺少...
  • 二进制转换

    2013-12-02 13:40:31
    /* * 程序的版权版本声明部分 ... * All rightsreserved. * 作 者:马广明 * 完成日期: 2013 年 12 月 2 日...* 问题描述:二进制转换 * 程序输入:十进制形式 * 程序输出:二进制形式 * 问题分析: */ #inc
  • /bin/bash#Purpose:管理mysql二进制日志,每小时刷新二进制日志,并将日志复制到nfs服务器上,方便以后恢复和问题分析!#Author:carl_zhang#Date:2012-5-15#some variables 一些参数#定义数据库的相关信息USERNAME=...
  • 他将自己的想法编成书,即《逻辑的数学分析《思维规律的研究》,详细阐述了如何将逻辑问题转换成数学公式。 布尔代数中只有两个值:10;三种运算:逻辑加、逻辑乘逻辑非。这里的10并不是数字意义上的10...
  • 模块化反演二进制算法的复杂度分析 该仓库由两个文件夹组成-“ src原始算法”“计数操作”。 src原始算法 该文件夹包含本文中通过设计实现的原始算法。 他们只是在很小的数量上进行了测试,以确保实现的质量。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,190
精华内容 476
关键字:

二进制和分析问题