gdb on Android

临时需要分析一下android下一个so库的崩溃原因,因此需要一个调试环境。经典的方法是用NDK提供的环境实现,当然如果是做jni开发调试的话这个方法无可厚非,无可替代。但如果仅仅是对某个二进制的崩溃迹象进行轻量级分析的话,搞一套NDK就太劳民伤财了。原理上就是Android的gdbserver连接PC端gdb即可,折腾了一大圈,总算找到了编译好的binary,点击下载

Android端:

gdbserver :9999 yourprogram

PC端:

adb forward tcp:9990 tcp:9999

arm-linux-androideabi-gdb

(gdb) target remote:9999

Shake it baby~~

Android模拟器重启后不还原

Android自带的模拟器每次开启都会还原/system等文件系统解决方案很粗暴,但绝对有效~在sdk的目录下找到/sdk/platforms/android-X (比如我的虚拟机基于android 2.1,X取值为7) 这个目录下面的system.img和ramdisk.img就是模拟器每次启动时加载的文件系统了。只要解压他们,按意愿修改再打包,替换原有的文件就OK了


system.img
需要用到mkyaffs2image.exe和unyaffs.exe,用于打包和解包,需要在cygwin环境下使用,可以在这里下载


ramdisk.img
这个稍微麻烦一些,同样我是在cygwin下进行的操作
将ramdisk.img复制到/tmp目录,重命名为ramdisk.img.gz

gunzip ramdisk.img.gz
mkdir ramdisk
cd ramdisk
cpio -i -F ../ramdisk.img

然后开始你想要进行的修改吧,修改完事儿后

cpio -i -t -F ../ramdisk.img > list
cpio -o -H newc -O temp.img > list
gzip -c temp.img < ../ramdisk.img

这样就在/tmp目录下面生成了打包好的ramdisk.img了,替换回去即可

netcat for windows

用公司的新电脑调试一个远程的exploit,需要用到nc (netcat)。以前每次都是随便上网搜索一个版本,这次打算亲自编译一下。不过原始的代码仅考虑了Linux环境,windows没办法直接产生exe,首先想到的是使用cygwin来解决这个矛盾。但安装了包含gcc,make的环境的cygwin以后,编译仍旧失败,提示是某个源码用到的结构体缺东西。后来发现在讨论区有人给出了patch修正这个问题,修复后只要

./configure && make

netcat.exe就在源码的src目录产生了。缺点是这个netcat.exe需要cygwin三个动态链接库的支持(cygiconv-2.dll + cygintl-8.dll + cygwin1.dll),所以编译好的netcat如果需要使用就得背着这仨dll。另外一个option是找一个被人修改过,专用于windows的netcat。Rootsecure的源码直接放在VC 6.0新建的工程下面就可以编译,但需要在主文件增加

#pragma comment(lib,”ws2_32.lib”)

否则编译失败

附件里面是两种方案的源代码和编译好的可执行文件

Backtrack5 on Android

家里有台SamSung i9000,一直就没怎么折腾过,实在是有愧于Android开放的特性。折腾的最终目的就是让Backtrack5流畅的运行在掌中。刷系统升级linux,安装有关工具,拷贝Backtrack镜像到手机并启动。

如果对于刷机过程很有经验的话,下面的Update小节就可以无视了。直接跳到后面boot节。  

使用的环境和有关工具:


Android Rom: lidroid-i9000-xxjvu-v2 (2.3.6 / XXJVU)

From: http://apps.lidroid.com/rom/

Download: http://dl.lidroid.com/sgs/xxjvu/lidroid-i9000-xxjvu-v2.rar


手机连接电脑的驱动:

From: http://bbs.lidroid.com/t-22369-1-1.html

Download: http://u.115.com/file/e65xf26q


Backtrack5 ARM (modified)

From: http://blog.l-lacker.com/security-backtrack-5-on-a-galaxy-s-phone/

Download: http://l-lacker.com/bt5/BT5_ARM_Joined.zip


Quicksshd v2.0.3 (这个工具不是必须的,只是方便在PC上操作手机的命令行,特别是在Backtrack下安装工具包)

From: http://soft.shouji.com.cn/down/19283.html

用手机桌面上的力卓市场右上角的方块按钮扫描这个条码就可以下载

quicksshd

Putty.exe (运行在电脑上连接手机的ssh,不是必须的,只是方便执行手机上的命令)

From:http://www.chiark.greenend.org.uk/~sgtatham/putty/ download.html

Download: http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe


android-vnc-viewer

From: http://code.google.com/p/android-vnc-viewer/downloads/list

用手机桌面上的力卓市场右上角的方块按钮扫描这个条码就可以下载

vnc

BusyBox Pro V6.9

From: http://www.anyouhui.com/detail/5235/

用手机桌面上的力卓市场右上角的方块按钮扫描这个条码就可以下载

busybox

android-terminal-emulator

From: http://www.appbrain.com/app/android-terminal-emulator/jackpal.androidterm

用手机桌面上的力卓市场右上角的方块按钮扫描这个条码就可以下载

terminal

Update:   

由于安装Backtrack时需要Android Root权限,但这台i9000原操作系统Android 2.1update上运行z4root提权无效,遂刷机到2.3.6由力卓提供的Android。由力卓定制的这个Rom升级带来画面的改进,也直接提供了Root权限。

升级操作系统步骤:

0.备份手机上的通讯录,短信,照片等

1.下载Rom包,解压缩

2.运行解压缩文件夹内的Odin3 v1.85cn.exe,按下图配置

odin

3.拔下手机的Sim卡和外置SD卡

4.进入设置-应用程序-格式化内置SD卡

5.按下手机的组合键: home+开关+声音调小 维持6-7秒

6.手机画面进入小Android机器人挖煤的界面

7.将手机连接USB线

8.Odin第二行ID:COM变成黄色后,点击开始,直到绿色PASS出现

9.拔下USB,手机经过数分钟进行启动,并可以听见语音提示

10.手机启动,进行设置后进入系统,刷机升级完毕

20120402091124

升级完毕后配置Wifi联网,下载上述的AndroidVNC,Terminal Emulator,BusyBox。

20120402085247

 boot: 

下面就要开始为Backtrack5的运行搭建环境了。这部分我也陆续遇到了非常多的问题,各种错误,我不想一一列举在这里了。只要严格按照下述步骤操作,是不会有问题的。各种镜像文件的来源,一定不要随便下载,要严格按照提供的地址。给Android使用的Backtrack是经过裁剪的,和原版有区别。原版的Bash在运行时出现Input/Ouput error让我要死要活啊,直到换上裁剪版的BackTrack才得以解脱。Rule is Rule!

这个版本Android Rom安装后自带Busybox,存放在/bin目录,但命令并不全,即使你使用BusyBox Pro重新安装BusyBox到/system/xbin或者/system/bin,但由于环境变量中/bin在前,Backtrack运行脚本执行时仍然调用这个系统自带的残缺busybox而导致chroot失败。

所以我的解决方案如下: 

1.打开手机自带的Re 管理器,进入/bin目录,将它改成读写(原来为只读),删除掉/bin内全部文件(手机重启后该目录内容会自动恢复,所以重启后需要再次删除)。

修改前                                  修改后

20120402084534
20120402084546

2.运行busybox pro 安装最新版的busybox.

3.下载Backtrack ARM (modified), 经过层层解压,将

list

这些文件进行保留。

4.我希望在外置SD卡运行Backtrack,所以需要对原有启动脚本进行一下修改。用十六进制编辑器(UltraEdit)打开bootbt,修改第6行为

export kit=/sdcard/external_sd/BT5

5.上传文件的方法很多,比较推荐的方法是安装驱动后,将手机USB调试的勾去掉,然后按home键返回桌面,插上USB线。电脑会识别手机,在我的电脑中就能访问到外置和内置SD卡,大的就是外置的SD卡。

6.将上述文件传到外置SD卡的BT5目录(需要自己创建),外置SD卡在Android的挂载位置为/sdcard/external_sd

7.进入Android terminal emulator,输入

su

cd /sdcard/external_sd/BT5

sh bootbt

Backtrack就启动了

20120402090056

再输入

starvnc

等一分钟,然后按home键返回,打开AndroidVNC,配置如下

20120402085324
20120402085341

 点击连接,就进入Backtrack的图形界面了~ 

20120402090401

20120402090853

后记: 

Aircrack系列工具默认是没有装在这个裁剪的BackTrack上面的,如果需要安装,可以在Backtrack的命令行下面执行


# install dependency for libssl-dev
apt-get install zlib1g-dev 
# install libssl-dev
wget
http://launchpadlibrarian.net/64412492/libssl-dev_0.9.8k-7ubuntu8.6_armel.deb
dpkg –install libssl-dev_0.9.8k-7ubuntu8.6_armel.deb
rm libssl-dev_0.9.8k-7ubuntu8.6_armel.deb 
# get and install aircrack-ng
apt-get install source-aircrack-ng
cd /var/backtrack/sources/aircrack-ng/1.1/bt9/upstream-sources/
tar -xzf aircrack-ng.tar.gz
cd aircrack-ng/
make
make install 
# set path variable
echo “export PATH=$PATH:/usr/local/sbin” >> ~/.bashrc
export PATH=$PATH:/usr/local/sbin


但是i9000的无线网卡并不支持混杂模式,所以Aircrack系列工具并不能抓包破解Wifi~

Aircrack工具集目前在iOS(ipad,iphone)上面也由于缺少驱动,不能把网卡设为混杂。安装Backtrack意义也不大(怎么说操作起来也不如电脑方便不是)

唯一支持Backtrack良好,并且Aircrack工具集运行正常的据说就只有Nokia的N900~等我这个N86坏了,一定换台N900~

既然Backtrack不能发挥它无线破解的威力,那干嘛折腾这么几天呢~

Why,Because I can!

参考资料: 

安装Aircrack的命令: http://pastebin.com/tPM8Qshp

Aircrack工具在手机平台的支持情况: http://www.linux-backtrack.com/2012/02/aircrack-ng-on-phones-android-iphone-and-others/

Backtrack在其他手机平台的安装教程: http://www.ifans.com/forums/threads/backtrack-5-arm-debian-based.344166/

Backtrack安装到i9000的英文教程: http://blog.l-lacker.com/security-backtrack-5-on-a-galaxy-s-phone/

i9000升级i操作系统教程: http://bbs.lidroid.com/t-22369-1-1.html

光驱图标不见之修复

今天突然想看张DVD,却发现我的电脑里的光驱竟然不见了,第一反应当然是上网搜答案,答案是搜到不少,准确说是非常多,但基本都不着边,互相抄来抄去~~
打开设备管理器,看了一下,已经找不到光驱那个设备选项了,又进入我的电脑右键–>管理,然后点击可移动存储,菜单栏点击查看–>完整,点击可移动存储–>库,可以看见里面有很多左边有红色叉的库文件显示,像我这里有一些曾经插到电脑上的U盘的名字,还有光驱设备的名字。估计系统由于某种原因停用了光驱~~
删除这里看到的库文件,然后找一张可以自启动的光盘(比如系统安装盘等),插入电脑,重启,进入BIOS,设定启动顺序使光盘先启动,然后重启,如果正常进入了光盘启动,说明光驱硬件连接没有问题,接下来通常的光盘启动都有boot from hard disk 的选项,选择后启动进入正常的操作系统,发现光驱图标回来了~~
估计大概是上两种操作强制让系统重新启动了光驱设备~~希望对同样问题的遇到者有帮助