android security
文章平均质量分 52
Anciety
这个作者很懒,什么都没留下…
展开
-
arm函数调用参数传递规则
解释r0:参数1,返回时作为返回值1用,通用寄存器1r1:参数2,返回值,通用寄存器2r2:参数3,通用寄存器r3:参数4,通用寄存器r4 ~ r8:变量寄存器1,2,3,4,5r9:平台寄存器,该寄存器的意义由平台标准定义r10,r11:变量寄存器r12:内部过程调用寄存器r13:栈寄存器SPr14:link寄存器r15:PCarm的调用规则遵循 ATPCS(ARM-Thu原创 2016-05-06 00:29:17 · 2020 阅读 · 0 评论 -
Own your Android! Yet Another Universal Root CVE-2015-3636 (中文翻译) (2)
Exploitation目标到现在我们弄明白了典型的UAF漏洞和一个用户空间悬垂的文件描述符,指向了内核中可以被攻击者达到的PING sock对象。接下来,我们将会展示我们的方法,来重写sock 对象以及通过复用这个PING sock对象来调用一些东西。在那之后,我们将可以执行内核中的任意代码,并最终达到在android设备上进行特权提升。在实践中,我们使用socket对象的close函数。当clo翻译 2016-08-07 11:25:13 · 1115 阅读 · 0 评论 -
Own your Android! Yet Another Universal Root CVE-2015-3636 (中文翻译) (1)
摘要近几年来,由于linux内核漏洞极少,并且不同的供应商也在设备上做了防范措施,想要在安卓上找到一个可以广泛使用的root方法已经变得愈加困难。在这篇文章里,我们将要展示我们的一种可以广泛应用的root方案。相关的漏洞是 CVE-2015-3636,一个典型的linux内核UAF(use-after-free)漏洞,我们将深入讨论这个漏洞。由于内核allocator(分配器)的分离分配,利用这样一翻译 2016-08-07 01:21:58 · 906 阅读 · 0 评论 -
smali语法整理
数据类型smali的语法包括两种数据类型,基本类型和引用类型(这里和java一样),所有对象和数组是引用类型,其他为基本类型。基本类型基本类型由一个字母表示,他们在dex文件中也是通过这样的方式保存的,主要包括 类型 表示 备注 void V 这个类型仅用于返回值 boolean Z 布尔类型,包括true和false两种取值 byte B 字节类型,范原创 2016-10-28 11:21:50 · 1893 阅读 · 0 评论 -
android inline hook 学习笔记
hook种类GOT表hook,通过更改GOT表offset来实现hookinline hook,即内部跳转hook,替换函数开始处的地址为跳转指令,跳转到hook函数比较而言, 1.GOT表对于本so文件中不经过GOT表 2.dlsym来调用的函数不经过GOT表android inline hook难点 - ARM模式和Thumb存在区别,不像x86,需要区分处理. - 跳转指令如原创 2016-11-13 19:56:32 · 2530 阅读 · 0 评论 -
Android加固与脱壳学习之加固初步总结(1)
加固思想类比PE的加壳的加固思想,通过一段引导代码,即通过壳代码来解密,而源dex被加密后存储在一起的做法来进行加壳。加固方案1加固 http://blog.csdn.net/androidsecurity/article/details/8678399 实现 http://blog.csdn.net/androidsecurity/article/details/8809542 这种方案不原创 2016-11-13 20:36:13 · 876 阅读 · 0 评论 -
Android加固与脱壳学习之linux基础和抽取dex
文件系统暴露信息重要的几个文件系统包括: /proc/pid/maps 内存映射 /proc/pid/task 子线程 /proc/pid/mem 进程持有的内存,不可读 /proc/pid/cmdline 启动时相关 /proc/pid/status 进程状态1.可通过ps查看到pid 2.通过cat命令查看到proc文件系统对应的相关信息。 3.如果需要dump信息可以通过dd来达原创 2016-11-13 21:15:33 · 1477 阅读 · 0 评论 -
某网盘android版过签名验证
简介某网盘整体上没有采用自家的加固,混淆程度还好,会有下划线和字母混淆,可是还不是很完整,关键的一些地方依然没有混淆,采取了本地签名验证的方式来避免重新打包,但是其实并没有什么用,最核心的部分没有混淆到.现象重新打包之后可以运行云盘,但是会跳出对话框,说当前运行在非官方版本下,然后点击确认就退出了分析思路签名更改后会跳出对话框,对话框中有文字,这里就是一个突破点了,在android killer中查原创 2016-11-14 11:00:19 · 550 阅读 · 0 评论 -
Own your Android! Yet Another Universal Root CVE-2015-3636 (中文翻译) (3)
root在我们控制了内核上下文的PC寄存器之后,我们计划执行代码,来获得设备的root权限,这总是我们最终的目的。最基础的方法是重写当前任务(task)的addr_limit到0,于是达到内核空间的任意读写。在我们重写一些内核空间的重要数据结构之后提权。对于我们没有PXN存在的设备上,事情就很简单了。我们只需要将close函数指针设置为一个用户空间的虚拟地址,然后将一段用来将当前任务的addr_li翻译 2016-08-07 11:50:24 · 975 阅读 · 0 评论 -
arm逆向工程abi
/* * linux/arch/arm/kernel/armksyms.c * * Copyright (C) 2000 Russell King * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public Licen转载 2016-07-19 18:48:35 · 2092 阅读 · 0 评论 -
android studio xposed教程(含jar下载地址)
0x01 什么是xposed? Xposed是一款可以在不修改APK的情况下影响程序运行的框架服务,基于Xposed能够制作出许多功能强大的模块,且在功能不冲突的情况下同时运作。xposed是一个框架,可以通过xposed installer安装,具体安装方法我就不在这里详述了,需要的同学请自行搜索。这里我们主要介绍其hook函数的方法。其api jar包下载地址:api下载地址0x02 使用原创 2016-07-19 01:26:52 · 11994 阅读 · 0 评论 -
arm汇编中感叹号/叹号的作用
arm汇编中存在一个神奇的可选后缀“!”,一般是在寄存器或寻址方式之后,对于加了叹号的情况,访问内存时先根据寻址方式更改寄存器的值,再按照该已经更新的值访问内存。原创 2016-05-06 00:32:57 · 13153 阅读 · 3 评论 -
arm汇编中ldr指令中出现的等号作用
ldr指令的格式:LDR R0, [R1]LDR R0, =NAMELDR R0, =0X123对于第一种没有等号的情况,R1寄存器对应地址的数据被取出放入R0 对于第二种有等号的情况,R0寄存器的值将为NAME标号对应的地址。 对于第三种有等号的情况,R0寄存器的值将为立即数的值原创 2016-06-07 15:37:29 · 6501 阅读 · 0 评论 -
全国大学生信息安全竞赛writeup--珍贵资料(reverse200)
描述你无意间得到了一些珍贵资料,可惜他们看起来不知道是什么,据说解开它可以得到flag神器。 tips:flag是flag{结果}附件描述:文件名:珍贵资料.zip校验(SHA1):4EF84DF5B34C12DED8EC3F603CFBC065251864B4思路一个压缩文件,打开解压得到unknown和unknown2,unknown2是一个apk,unknown不知道是啥。安装apk得到一个登原创 2016-07-10 22:27:33 · 6976 阅读 · 0 评论 -
全国大学生信息安全竞赛writeup--暗号(reverse300)
描述 George是一名FBI特工,昨天他获得了一个命令,在今天晚上纽约林肯中心的大都会歌剧院的演唱会上,将会有恐怖分子出没。George下午结果了一名恐怖分子,在他的身上发现了一个U盘,里面有这样一个程序。George看了程序之后,决定将自己伪装成刚解决掉的恐怖分子的身份。请你帮助George获得这名恐怖分子的姓名和暗号。注:为MadFrog生成注册码tips:flag是flag{暗号}附件描述原创 2016-07-10 22:48:22 · 6185 阅读 · 0 评论 -
全国大学生信息安全竞赛writeup--拯救地球(reverse500)
描述什么?地球要爆炸了,据说拯救地球的代码就在这个程序里。使命貌似光荣又艰巨…tips:flag是flag{结果}附件描述:文件名:程序校验(SHA1):D78073A4C06468DFC95822A764D792C09A87F78A思路打开看,一个question,逆向发现加壳了,不过这个壳还好比较裸,目测通过加断点dump dex可行,不过把这个东西自动化了,直接找了一个工具就脱了。 工具地址原创 2016-07-10 22:54:28 · 4000 阅读 · 2 评论 -
逆向工程之表达式优化识别(1)-加减法
前言看了《C++反汇编与逆向》那本书,对于加了优化的表达式虽然能够理解,但是由于不常见到又可能见到,见到的时候又经常想不起来,就干脆记下来,也算是督促自己对这一块理解透彻吧。加法优化优化是在代码编译的时候加入优化选项,可以减少占用空间或者减少运行时间消耗等方面进行优化,达到最佳效率。这里我们的优化单指运行时间的优化。1 常量传播说明:即在编译期间就可以得到结果的加法,可直接将变量替换为常量。 举例原创 2016-07-04 22:03:52 · 657 阅读 · 0 评论 -
逆向工程之表达式优化识别(2)-乘法
乘法优化说明:乘法和加减法相比,优化的可能性就高了很多了,主要是因为计算机对于乘法的运算速度不如加减法或者移位运算,所以如果可以转换成简单加减法和移位运算的乘法,编译器就可以选择不使用乘法,而用加减法+移位运算代替。 额外知识点:移位运算,左移和乘2的n次方结果一样,右移分为算术右移和逻辑右移,分别对应右移时左补位补的是符号位还是0。(算术右移补符号位,逻辑右移补0)可以简单理解为算术右移针对有原创 2016-07-04 22:44:22 · 723 阅读 · 0 评论 -
逆向工程之表达式优化识别(4)-除法(下)
除法优化继续说除法,之前说了除数为正数的除法,现在再来说除数为负的除法,其实基本思路都已经差不多了,区别在于关于取整时候的定理。 这里在理解的时候其实和之前类似,讨论a的大小即可,我这里只列出了向上取整的转换,因为默认是向下取整的,我们不需要向下取整的转换。向上取整也只需要讨论a<0的情况,因为只有这样才需要转换,所以只需要举例做简单思考,基本上和上一节除法的思考过程一样。1 除数为负2的幂说原创 2016-07-05 11:02:06 · 697 阅读 · 0 评论 -
逆向工程之表达式优化识别(5)-取模
取模优化取模运算是得到除法运算之后的余数的运算,这里简单提一下其相关的优化 示例:mov eax, VALand eax, 8000001Fjns LAB1dec eaxor eax, FFFFFFE0inc regLAB1:说明:这是一取模运算的示例,VAL是被除数,and的立即数是一个掩码,用来去掉高位保留地位,根据保留的低位数量,可以得到2^k次方的k,所以这里也就是一个x%(x原创 2016-07-05 11:07:42 · 822 阅读 · 0 评论 -
逆向工程之表达式优化识别(3)-除法(上)
除法优化说明:除法相对其他几种运算的优化又要更难了,主要是其包含的数学知识(离散数学?) 由于我本人比较笨,也不喜欢深究数学,所以尽量跳过数学,以更直观的方式来解释(其实也就是我自己的理解方法了)0 取整问题取整分为向上取整和向下取整以及向0取整,我们在程序语言中的取整都是向0取整,但是有一些运算却是向下取整的,比如右移运算就是向下取整的,所以在负数的时候,为了保证向0取整,就会做一些调整。1 除原创 2016-07-05 01:32:38 · 1511 阅读 · 0 评论