随笔分类 -  android security

安卓hook技术
摘要:http://www.epubit.com.cn/book/onlinechapter/33620 阅读总结两个层面上的hook: java层:需要了解虚拟机的特性与java上反射的使用; native层:难点在于理解elf文件。关键在于如何找到函数的入口点、替换函数。对于进程附着,Android的... 阅读全文

posted @ 2016-01-11 15:43 CarrieSmile 阅读(1317) 评论(0) 推荐(0)

安卓程序动态调试方法
摘要:一、使用DDMS1.将程序使用apktool转化为smali代码,在关键代码左右注入log代码(的smali形式,如输出寄存器v0的值),之后重新打包apk,再执行时可以从 logcat 中看到输出。2.栈跟踪法:如,在关键代码左右插入new Exception("print trace").p... 阅读全文

posted @ 2016-01-10 20:56 CarrieSmile 阅读(527) 评论(0) 推荐(0)

android 原生程序 native code 的启动流程分析
摘要:原生程序有静态链接和动态链接两种,其中动态链接又分为动态链接程序和动态链接库。静态链接:需要在gcc编译参数中指定 -Bstatic,在生成可执行程序时会链接crtbegin_static.o 和 ctrend_android.o目标文件。crtbegin_static.o中定义了静态链接程序的启动... 阅读全文

posted @ 2016-01-10 20:53 CarrieSmile 阅读(727) 评论(0) 推荐(0)

安卓软件安全与逆向分析 基础知识
摘要:jvm虚拟机:指令集为零地址形式的指令集,即指令的源参数和目标参数都是隐含的,通过java虚拟机中提供的一种数据结构“求值栈”来传递。dalvik虚拟机运行时也为每个线程维护一个PC计数器和调用栈,此调用栈 维护一份寄存器列表,寄存器的数量在方法结构体的registers字段中给出,DVM根据这个值... 阅读全文

posted @ 2016-01-04 09:00 CarrieSmile 阅读(409) 评论(0) 推荐(0)

Https漏洞在安卓程序中
摘要:HTTPS在传输数据之前需要客户端(浏览器)与服务端(网站)之间进行一次握手,在握手过程中将确立双方加密传输数据的密码信息。握手过程的简单描述如下:1.浏览器将自己支持的一套加密规则发送给网站。2.网站从中选出一组加密算法与HASH算法,并将自己的身份信息以证书的形式发回给浏览器。证书里面包含了网站... 阅读全文

posted @ 2015-09-08 14:33 CarrieSmile 阅读(261) 评论(0) 推荐(0)

安卓程序防止反编译的方式
摘要:1. 加壳apk的加壳:在程序外面再包裹一层代码,保护里面的代码不被非法修改或者反编译。被保护的程序用加密算法加密,解密逻辑写在作为壳的APK中,实际执行的是被保护的程序。大多是通过DexClassLoader或者隐藏的函数openDexFile将源dex(即被保护的app)加载进来,然后动态替换A... 阅读全文

posted @ 2015-09-07 23:49 CarrieSmile 阅读(1657) 评论(0) 推荐(0)