[转]android手机内核提取及逆向分析

Android手机获得Root权限,可以让/system和/data分区获得读写的权限.这两个分区的权限配置,一般在根分区的init.rc文件中,修改这个文件可永久获得root权限.

众所周知,市面上绝大部分的Android手机文件系统有三个分区,分别是/,/system,/data.根分区(/)是打包为ramdisk.img后,再与kernel的zImage打包为boot.img. boot.img在EMMC/NAND中以RAW DATA的形式存在,且除使用烧写工具外,无法读写.正因如此,根分区(/)在每次开机时都会从存储器中加载到RAM, 所以根分区(/)是难以不被刷机破解的.

阅读全文… 

[转]android一批漏洞

arm exploits 技术教程:

Learning Pentesting for Android Devices

CVE-2015-1530 ,CVE-2015-1474 两个android整数溢出漏洞 分析

An integer overflow in Android media could be exploited to get media_server permission(CVE-2015-1530)

Integer overflow leading to heap corruption while unflattening GraphicBuffer In Android(CVE-2015-1474)

 CVE-2014-0196-inux pty race condition slab overflow-漏洞分析

Exploiting CVE-2014-0196 a walk-through of the Linux pty race condition PoC

SLAB 溢出攻击 & CVE-2014-0196 exploit for Android 

http://www.phrack.org/issues/64/6.html

pty/tty设备竞争条件漏洞 (CVE-2014-0196)

 

CVE-2013-2597 adcb 驱动栈溢出漏洞分析

Stack-based buffer overflow in acdb audio driver (CVE-2013-2597)

Stack-based buffer overflow in acdb audio driver (CVE-2013-2597) 

这份利用代码关键是要理解struct nl_portid_hash 结构的成员unsigned longrehash_time;利用的时候将这个unsigned long变量当作void* 函数指针来用,这样call到nl_portid_hash ->rehash_time时pc寄存器装入rehash_time 的值,而在linux系统上,这个rehash_time变量的值是有范围的,其范围0x10000-0x130000,如果当作地址,刚好是用户空间的地址,可以由mmap申请.这样,可以将提取代码写入申请的0x10000-0x130000 范围地址内,内核溢出后调用rehash_time地址,实际上就是调用到用户空间填充的代码了.

linux kernel 本地提权漏洞CVE-2013-1763 exploit 代码分析

CVE-2015-3636 三星S6 pingpong

5月2号, Keen Team 向CVE曝出了一个非常劲爆的漏洞, 编号是CVE-2015-3636, 这个漏洞的细节可以关注这个链接

https://loudong.sjtu.edu.cn/show/CNVD-2015-02891

应该是比去年那个CVE-2014-3153还要霸道的漏洞, 几乎android设备都受到影响. 一年没出劲爆的漏洞了. android 5 以上一直都没太好的漏洞利用工具. 这下有活干了. 8号的时候又放出了一个工具.

http://forum.xda-developers.com/galaxy-s6/general/root-pingpongroot-s6-root-tool-t3103016

叫做pingpong root 看起来像是中国人弄的.

阅读全文… 

Android分区查看

android 下面没有像以前windows 那样那么方便的查看分区情况. 前两天提到说查看android 下面的分区情况. 今天好好的看了下. 发现android下面查看分区也挺简单的..

阅读全文… 

为什么会有mov edi, edi

原来一直被windows上的一些固定汇编指令搞的有点糊涂, 各种说法其实都有, 比如这个mov edi, edi. 实际这个指令是干什么用的呢? 每个人都有不同的说法, 今天了解到一种比较靠谱的说法!

阅读全文… 

Windows CrashDump

在自动化测试过程中,如果碰到应用程序崩溃,往往会弹出一个”error reporting”的对话框,如果不人工关闭这个对话框的话会导致程序无法继续进行下去。所以需要禁止弹出这个对话框并启用Windows CrashDump来收集错误日志。采用如下方法进行:

阅读全文… 

Android Linux内核编译调试

对于在Windows上写代码写习惯的人,调试是必不可少的手段,但是转到Android以后,发现调试手段异常简陋,Windows简直不是一个级别,特别是Android的内核调试,网上资料也相对较少,不过通过一段时间的倒腾,我终于找到了还算靠谱的调试方法.就是利用Emulator + Eclipse进行Android Linux内核调试.

  阅读全文… 

android 刷机

1. 刷一个合适的Recovery
Clockwork Recovery
http://www.clockworkmod.com/rommanager/

adb reboot bootloader // 启动进入bootloader模式
fastboot flash recovery recovery_package // 刷入recovery

阅读全文… 

IDA 6.6中文字体解决办法

这个是编码问题,需要手动添加GBK编码之类。先找到Options->ASCII String Style..。选择Change Encoding。打开的窗口中有至少四个选项:<default>,<no conversion>,UTF8,UTF16LE。很显然是没有GBK什麽的。在列表上右键,选择Insert。添加编码的名字,如GBK,OK。编码加入后需要选中他。ASCII String Style的窗体上,Change Encoding右侧有Set Default Encodings。8位宽的选择对应的OEM集,如刚刚加入的GBK,16位宽的选择UTF16LE之类或者保持no Convertion不变。这个办法刚纔个人在IDA65上测试通过。

Ida 调试so文件

Eclipse配合NDK写so文件不错, 但是调试是个麻烦事, 老是报错. 一会这样一会那样. 目前可能用NDK写so并且调试的毕竟还是太少啊. 调试体验非常差, 所以如果在有源码的情况下, 我一般还是用VisualGDB这个软件来写so文件, 这个软件的调试体验比Eclipse好多了. 而且是用Visual Studio来写, 更习惯些.

在没有源码的情况下, 一般就是使用ida 来进行调试, ida的6.6已经可以支持调试apk了, 不过现在我手上还没有拿到. 目前只能用网上泄露的6.5, ida 6.5调试android 的so文件已经是非常好的体验了. 使用6.1的时候老是有莫名其妙的错误. 其实调试so文件也分成两种情况, 一种是apk运行起来以后慢慢才会调用so文件中的函数, 比如按钮单击什么的. 一种是在程序初始化的时候就调用so文件. 这种麻烦一些.

阅读全文… 

ARM汇编联合C语言

GUN arm汇编不能像MASM那样支持类C那样的函数写法. 也不支持结构体, 所以注定了GUN汇编不能像MASM那样写大型的程序, 不能像Windows下面那样, 用MASM来写较大型的程序, 所以用C和汇编联合成了一个妥协的办法. 所以这篇写一点GCC和和GUN汇编联合的问题.

联合的话,我们直接可以使用ndk-build进行编译了, 不用再输入arm-linux-androideabi-as.exe这么长的命令. 另外一个调试也可以使用ida来调试了. 最近ida 6.5 泄露出来了, 可以很方便的调试android的arm汇编代码, 不用再用gdb进行调试了. gdb调试真恶心.

阅读全文… 

ARM汇编HelloWorld

在Windows上习惯了, 感觉一切都是那么自然, 一切都应该就是这样, 会不会在Linux下习惯了, 也会觉得Windows上的一切都不习惯? 我记得我刚开始Windows编程的时候, 是从汇编开始学的, 从汇编开始学, 虽然慢, 但是每一行代码做什么的都比较清楚. 这样慢慢的深入学习感觉一切都那么自然, 现在搞Android就不是这样了, 上来就有很多东西学, 但是总是感觉吃不透.有细节没理清楚. 我觉得Android学习也应该从汇编开始.

阅读全文… 

Windbg Version

windbg 的版本现在让人越来越糊涂了. 我原来一直以为6.12 比6.3版本高.. 按说, 这是当然的事情. 最近仔细看老外总结的一篇文章, 发现我错了. 微软真实恶心, 官方也没有看到一个windbg的发布纪事. 都不知道发布了多少windbg版本.. 这边转一下老外的文章.

http://debugging.wellisolutions.de/windbg-versions/

阅读全文… 

windbg 命令收集

 

windbg的命令非常多. 有很多漂亮的命令, 用一次以后突然会忘记. 还是记下来比较合适啊.

阅读全文… 

windows API操作链表

今天逆向的时候, 又看到有人用了几个api函数, 记录下. IsProcessorFeaturePresent判断系统的一些特性. 还有下面这个链表使用例子, 原来在windows SDK上也是有链表操作的. 以后要多看看微软这个simple

http://msdn.microsoft.com/en-us/library/windows/desktop/ms686962(v=vs.85).aspx