www.2527.com_澳门新葡8455手机版_新京葡娱乐场网址_
做最好的网站

04安装新型,gdbserver远程调试嵌入式linux应用程序

2019-07-19 08:50 来源:未知

本文介绍在 Ubuntu 12.04 LTS版本上安装和配置最近火热的 WIFI无线网络密码恢复和破解工具 Reaver及配套的 aircrack-ng工具包。

ubuntu 12.04安装aircrack-ng和reaver

此处所讲的是基于gdb和gdbsever的远程调试方法。环境为:PC机:win7、虚拟机:10.04、下位机:飞嵌TE2440开发板。

主要步骤:
1. 下载工具软件源代码
2. 安装必要的软件依赖库和工具
3. aircrack-ng
4. reaver
5. =)

 

 

下载源码

安装aricrack-ng  

嵌入式linux应用程序的开发一般都是在linux里面编写好代码,并用交叉编译器arm-linux-gcc编译好之后再下载到板子上运行。如果建立了远程调试(能够在PC机ubuntu中调试板子中的linux应用程序),这样对于开发程序是极其方便的。

从这个网址下载 reaver源代码 wget

1.sudo apt-get install build-essential libssl-dev

 

新京葡娱乐场网址 1

2.wget

以下是摘自网络上的一些方法。其中加入了自己所遇到的一些问题,并提出了解决方法。

解压 tar -xzvf reaver-1.4.tar.gz

 

 

安装必要的软件依赖库和工具
在您编译 reaver前需要先安装 pcaplib等工具,后面还需要 aircrack-ng sudo apt-get install libpcap-dev sqlite3 libsqlite3-dev libpcap0.8-dev

3.tar -xzvf aircrack-ng-1.1.tar.gz

1、首先建立nfs文件系统,让PC机ubuntu上的文件系统这里假设路径为:/home/xxx/work/可以挂载到板子上去。方法可以见本博的另一篇文章。其中IP环境是PC机win7的IP为192.168.0.11(这个不重要,只要保证在同一个网段即可)。虚拟机中IP为:192.168.0.57。下位机中的IP为192.168.0.16。

编译和安装
配置和编译 Reaver
cd reaver-1.4 cd src ./configure make
安装 Reaver
sudo make install

4.cd aircrack-ng-1.1

 

下载 aircrack-ng 源代码并编译
从 Ubuntu 12.04版本开始 aircrack-ng不再被包含在版本软件仓库中,不过我们可以从网上下载它的源代码进行编译安装。编译安装中有个小技巧,不做的话将导致编译不成功,如下:

 

2、安装交叉编译环境arm-linux-gcc等工具。方法可以网上找。这里假设已经安装好,并且版本是3.4.1。路径为:/usr/local/arm/3.4.1/bin。并建好环境变量。

www.linuxidc.com@linuxidc:~/aircrack-ng-1.1$ make make -C src all make[1]: Entering directory `/home/johan/aircrack-ng-1.1/src’ make -C osdep make[2]: Entering directory `/home/johan/aircrack-ng-1.1/src/osdep’ Building for Linux make[3]: Entering directory `/home/johan/aircrack-ng-1.1/src/osdep’ gcc -g -W -Wall -Werror -O3 -D_FILE_OFFSET_BITS=64 -D_REVISION=0 -fPIC -I.. -c -o osdep.o osdep.c gcc -g -W -Wall -Werror -O3 -D_FILE_OFFSET_BITS=64 -D_REVISION=0 -fPIC -I.. -c -o network.o network.c gcc -g -W -Wall -Werror -O3 -D_FILE_OFFSET_BITS=64 -D_REVISION=0 -fPIC -I.. -c -o linux.o linux.c linux.c: In function ‘is_ndiswrapper’: linux.c:165:17: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable] linux.c: In function ‘linux_set_rate’: linux.c:334:22: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable] linux.c: In function ‘linux_set_channel’: linux.c:807:22: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable] linux.c: In function ‘linux_set_freq’: linux.c:896:22: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable] linux.c: In function ‘set_monitor’: linux.c:1022:22: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable] linux.c: In function ‘do_linux_open’: linux.c:1366:12: error: variable ‘unused_str’ set but not used [-Werror=unused-but-set-variable] linux.c:1352:15: error: variable ‘unused’ set but not used [-Werror=unused-but-set-variable] linux.c: In function ‘get_battery_state’: linux.c:1982:35: error: variable ‘current’ set but not used [-Werror=unused-but-set-variable] cc1: all warnings being treated as errors make[3]: *** [linux.o] Error 1 make[3]: Leaving directory `/home/johan/aircrack-ng-1.1/src/osdep’ make[2]: *** [all] Error 2 make[2]: Leaving directory `/home/johan/aircrack-ng-1.1/src/osdep’

5.编辑common.mak,修改  

 

make[1]: *** [osd] Error 2
make[1]: Leaving directory `/home/johan/aircrack-ng-1.1/src’
make: ***新京葡娱乐场网址, [all] Error 2

CFLAGS          ?= -g -W -Wall -Werror -O3

3、下面我们就来测试一个简单的例子。

下面是在 Ubuntu 12.04中编译安装 aircrack-ng的步骤 sudo apt-get install build-essential
sudo apt-get install libssl-dev
wget
tar -zxvf aircrack-ng-1.1.tar.gz
cd aircrack-ng-1.1
用 vi编辑器打开文件 common.mak vi common.mak
找到下面这一行
CFLAGS ?= -g -W -Wall -Werror -O3
去掉 “-Werror”选项,去掉后这一行如下: CFLAGS ?= -g -W -Wall -O3
保存文件,接下来编译和安装
make
sudo make install

    为

/*Hello.c*/
#include 
int main()
{
printf(“hello word!n”);
return 0;
}
程序输好以后确认无误,保存。进入程序文件所在目录
# arm-linux-gcc hello.c –o hello

运行
现在已经安装完毕可以用了。您需要先将无线网卡用刚才安装的 aircrack-ng工具包里面的 airmon-ng 设置成监听模式。
首先设置无线网卡的监听模式
sudo airmon-ng start wlan0
运行 Reaver
sudo reaver -i mon0 -b 00:00:00:00:00:00
用您的目标 AP SSID MAC替换上面的 00:00:00:00:00:00后即可开始破解。本方法经我验证同样适合 reaver 1.3版本的安装。

CFLAGS          ?= -g -W -Wall -O3

将hello文件放入nfs共享目录中/home/xxx/work/中,并在串口终端中执行hello程序./hello。

更多Ubuntu相关信息见Ubuntu 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=2

6.make

 

新京葡娱乐场网址 2

 

4、安装gdb和gdbserver

7.sudo make install  

要经行gdbserver远程调试,还必须安装gdb远程调试工具:
gdb的源代码包可以从http: //ftp.cs.pu.edu.tw/Linux/sourceware/gdb/releases/下载,我下载的是gdb-6.6。下载到某个目录,笔者下载到自己的用户目录
下载完后,进入该目录,配置编译步骤如下:
#tar jxvf gdb-6.6-tar-bz2
#cd gdb-6.6
#./configure --target=arm-linux --prefix=/usr/local/arm-gdb -v
#make

安装reaver

执行到此步之后我出现了如下的错误

1.到

cc1: warnings being treated as errors
/root/tools/gdb-6.6/bfd/elf32-arm.c: In function 'find_thumb_glue':
/root/tools/gdb-6.6/bfd/elf32-arm.c:2452: error: ignoring return value of 'asprintf', declared with attribute warn_unused_result
/root/tools/gdb-6.6/bfd/elf32-arm.c: In function 'find_arm_glue':
/root/tools/gdb-6.6/bfd/elf32-arm.c:2485: error: ignoring return value of 'asprintf', declared with attribute warn_unused_result

2.sudo apt-get install libpcap-dev sqlite3 libsqlite3-dev libpcap0.8-dev

这个由于返回值没有被接收 导致编译中断 这是因为makefile中加入了-Werror导致将警告当成了错误

 

将下列文件中的-Werror选项删除后保存即可重新编译成功
bfd/Makefile:185:WARN_CFLAGS = -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Werror
opcodes/Makefile:175:WARN_CFLAGS = -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Werror

3.解压并进入src目录

接下来执行:

  1.  ./configure

#make install
#export PATH=$PATH:/usr/local/arm-gdb
进入gdbserver目录(在gdb目录下):
#./configure --target=arm-linux –host=arm-linux
#make CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc
(这一步要指定arm-linux-gcc的位置,可能跟你的不一样)

5.make

这时,可能又会遇到一个错误:

6.sudo make install

/usr/local/arm/3.4.1/bin/arm-linux-gcc -c -Wall -g -O2    -I. -I. -I./../regformats -I./../../include -I../../bfd -I./../../bfd linux-arm-low.c

 

linux-arm-low.c:35:21: sys/reg.h: No such file or directory

12.04安装aircrack-ng和reaver 安装aricrack-ng 1.sudo apt-get install build-essential libssl-dev 2.wget 3.tar -xzvf...

因为sys/reg.h在ubuntu中 /usr/include/sys/reg.h目录中,所以可以加上 -I/usr/include

然后单独运行:/usr/local/arm/3.4.1/bin/arm-linux-gcc -c -Wall -g -O2    -I. -I. -I./../regformats -I./../../include -I../../bfd -I./../../bfd -I/usr/include linux-arm-low.c

OK!!!!!

再运行一遍

#make CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc

没有错误的话就在gdbserver目录下生成gdbserver可执行文件,把它烧写到flash的根文件系统分区,或通过nfs mount的方式都可以。只要保证gdbserver能在开发板上运行就行。

 

5、安装必要的库libthread_db-1.0.so

如果你的嵌入式linux没有安装libthread_db-1.0.so这个库的话,在板子中运行gdbserver会提示错误。解决方法如下:

将你的arm-linux-gcc的交叉编译环境中的/usr/local/arm/3.4.1/arm-linux/lib下的libthread_db-1.0.so文件拷贝到下位机TE2440开发板的根目录下的/lib中去(可以先放入nfs共享文件夹中然后再在串口终端中输入拷贝命令)。并在/lib目录建立一个一个指向libthread_db-1.0.so的软链接libthread_db.so.1。

命令如下:#ln -s libthread_db-1.0.so libthread_db.so.1

执行完之后,再次运行gdbserver  ./gdbserver之后不会再提示找不到库了。

 

6、调试hello程序

要进行gdb调试,首先要在目标系统上启动gdbserver服务。在gdbserver所在目录下输入命令:(串口终端中)
#cd /tmp
#./gdbserver 192.168.2.57:2345 hello
192.168.2.57为宿主机IP,在目标系统的2345端口开启了一个调试进程(避免使用1024以下的端口号),hello为要调试的程序。
出现提示:
Process /tmp/hello created: pid="80"
Listening on port 2345

在虚拟机ubuntu中的终端里面输入

#cd /

#export PATH=$PATH:/usr/local/arm-gdb/bin
#arm-linux-gdb hello
(gdb) target remote 192.168.2.223:2345
(192.168.2.223为开发板IP)
出现提示:
Remote debugging using 192.168.2.223:2345
[New thread 80]
[Switching to thread 80]
0x40002a90 in ??()
同时在串口中终端下提示:
Remote debugging from host 192.168.2.100
(gdb)
连接成功,这时候就可以输入各种gdb命令如list、run、next、step、break等进行程序调试了。

至于出现了0x40002a90 in ??()的问题是因为arm-linux-gdb的共享库路径没有进行设置。找不到库文件。通过输入下列语句可以解决问题。

set solib-absolute-prefix /usr/local/arm/4.4.3/arm-none-linux-gnueabi/sys-root/

 

TAG标签:
版权声明:本文由澳门新葡8455手机版发布于新京葡娱乐场网址,转载请注明出处:04安装新型,gdbserver远程调试嵌入式linux应用程序