zoukankan      html  css  js  c++  java
  • 学习记录:交叉编译环境配置(buildroot and gdb&gdbserver)【转】

    本文转载自:https://blog.csdn.net/zhy025907/article/details/52332528

    1,背景

    因为参加公司的路由器逆向培训,首先需要的就是环境的配置准备工作,本文主要介绍的是交叉编译环境配置和交叉编译gdb

    2,配置交叉编辑环境build root

    这里仅仅是简单的配置过程,如果需要进一步研究,请移步:https://buildroot.org/docs.html

    安装依赖包,否则会报错:

    apt-get install gcc build-essential bison flex gettext tcl sharutils libncurses-dev zlib1g-dev exuberant-ctags g++ texinfo patch vim libtool bc


    2.1 下载buildroot 解压

    tar xvf buildroot-2016.08-rc2.tar 



    2.2 编译(提醒:要最大化terminal,否则会分辨率问题会报错)

    因为:要逆向的路由器为大端系统,并且为mips固件,因此编译使用的是mips32,如下,查看固件中的文件格式

    因此使用:

    make menuconfig
    


    保持往来良好最后执行:

    make

    第一次编译会非常慢,请慢慢喝茶等待,因为要更新并下载新的版本,

    一个小时后,差不多完成

    或者提前使用这个命令下载所有源代码备用:

    make source

    编译完成界面如下:

    生成的文件为上述文件夹

    但是,我们需要的交叉编译链在这个目录下:

    2.3 将生成的交叉编译工具,设置为环境变量(根据自己的sh修改):

    vi ~/.zshrc
    export PATH=$PATH::/root/routerpwn/tools/buildroot-2016.08-rc2/output/host/usr/bin/
    source ~/.zshrc

    3,配置交叉编译GDB&GDBserver

    3.1 下载gdb源码

    http://www.gnu.org/software/gdb/download/

    下载gz或者是xz的包,这里下载的是gdb7.11.tar.xz 最新版本

    3.2  编译mips版本的gdb和gdbserver

    解压:

    tar xvf gdb-7.11.tar.xz

    配置:

    ./configure --target=mips-linux --host=mips-linux --program-prefix=mips-linux CC=/root/routerpwn/tools/buildroot-2016.08-rc2/output/host/usr/bin/mips-linux-gcc


    编译(为了移植方便,使用静态编译的方法,CXX是因为依赖g++的原因):

    make CFLAGS="-g -O2 -static" CXXFLAGS="-g -O2 -static"
    

    大约一刻钟左右,编译完成:

    注意上文中红色部分为gdbserver的目录

    4,减小gdb 和gdbserver的体积

    因为:路由的空间有限,gdb和gdbserver的空间太大,无法上传,需要降低gdb和gdbserver的体积

    使用strip命令减小gdb和gdbserver的体积

    同理将gdbserver 减小

    1.  
      cd gdbserver
    2.  
      mips-linux-strip gdbserver | ls -alh gdbserver

    如此完成了简单的环境配置工作

    已经3点多了,改天完成binwalk和qemu的博客(咖啡果然要少喝,还是神经太敏感)

  • 相关阅读:
    爬虫笔记之JS检测浏览器开发者工具是否打开
    上海租房@8群
    在Windows中玩转Docker Toolbox(镜像加速)
    Docker 清理命令 删除所有的镜像和容器
    修改docker安装的machine位置
    Sass @mixin 与 @include
    webpack之SourceMap
    c#中Indexof()和Split()的用法
    《MVC+EF》——用DBFirst创建ADO.NET实体数据模型和对象关系映射
    sql server 用户'sa'登录失败(错误18456)
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/9626709.html
Copyright © 2011-2022 走看看