
安卓逆向学习笔记
文章平均质量分 78
blueshell07
这个作者很懒,什么都没留下…
展开
-
安卓逆向学习笔记(9)- 使用IDA Pro进行简单的脱壳
使用dex2jar反编译Apk中的classes.dex就能获取到Apk的java层源代码。那么有什么办法可以保护classes.dex,防止Apk的源代码被偷窥呢?那就是加壳了,关于Apk加壳的技术原理,请看这篇博客Android APK加壳技术方案【1】 小弟所了解的Apk脱壳方法有两种:(1)使用脱壳神器ZjDroid进行脱壳,详细操作请看这两篇博客:Android动态逆向分析工具Z原创 2015-05-30 16:09:04 · 26866 阅读 · 4 评论 -
安卓逆向学习笔记(6)- smali注入攻击
今天,我要记录的是smali注入攻击。我们在破解某个apk时,通常的流程是这样的:先用某个工具逆向apk获取到源代码,然后再修改源代码,再用工具进行二次打包。通过前面一些文章的介绍,我们知道可以用dex2jar反编译classes.dex以获取java源代码,但是我们是无法对java源代码进行修改的。如果想要修改某个apk的源代码,我们必须先将该apk反编译,然后修改反编译所得到的smali代码,原创 2015-03-23 19:45:05 · 9298 阅读 · 5 评论 -
安卓逆向学习笔记(7)- 破解Java层的签名校验
做为Android开发者,我们应该知道没有签名的Apk是无法在真机(模拟器)上安装运行的。为了防止自己开发的Apk被别人二次打包,有些开发者会在App运行时获取当前Apk的签名信息并与正版Apk的签名信息进行比对,一旦发现不相同,就会弹出对话框提示用户当前应用是盗版或者终止App的运行,这就是Apk签名校验。开发者可以在Java层或者NDK层实现签名校验,而破解NDK层的签名校验要比破解Java层原创 2015-03-23 20:43:04 · 6963 阅读 · 2 评论 -
安卓逆向学习笔记(5) - 在JNI_Onload 函数处下断点避开针对IDA Pro的反调试
在上篇文章中,我们介绍了如何利用IDA Pro来动态调试so文件。在移动安全领域有攻就有防,为了防止apk中的so文件被动态调试,开发者往往会使用一些反调试手段来干扰黑客的动态调试。其中最常见的就是在so文件中检测TracerPid值,详情请见这篇博客:爱加密脱壳本文以2015阿里巴巴移动安全大赛中的第二道题为例,IDA Pro版本为6.5 。这里只介绍如何通过在JNI_Onload下原创 2015-02-28 22:56:33 · 9560 阅读 · 7 评论 -
安卓逆向学习笔记 (4) - 使用IDA Pro动态调试so文件
在上篇文章中,我简单介绍了使用IDA Pro静态分析so文件。今天,我将介绍一下如何使用IDA Pro动态调试so文件。本文的使用的IDA Pro版本为6.5版本,下面介绍一下动态调试so文件的流程:(1)在IDA的安装路径中找到android_server文件。(2)将android_server拷贝到手机的/data/local/tmp目录下面。(3)原创 2015-02-28 22:03:33 · 28665 阅读 · 14 评论 -
安卓逆向学习笔记 (3)- 使用IDA Pro静态分析so文件
安卓应用程序的开发语言是java,但是由于java层的代码很容易被反编译,而反编译c/c++程序的难度比较大,所以现在很多安卓应用程序的核心部分都使用NDK进行开发。关于NDK的开发知识点,请看这篇博客:Android之NDK开发。 关于NDK环境搭建的知识点,请看这篇博客:Android NDK开发篇(一):新版NDK环境搭建(免Cygwin,超级快) 使原创 2015-02-28 17:51:58 · 77806 阅读 · 9 评论 -
安卓逆向学习笔记(2)- 利用apktool反编译apk并进行二次打包
这篇文章将介绍一个apk反编译工具apktool。我们可以用apktool反编译apk,并且可以对反编译得到的文件重新打包生成新的apk。本文使用的apktool版本为v2.0.0RC3,待反编译的apk为HelloWorld.apk。我们的目标是反编译HelloWorld.apk,将apk显示的字符串“Hello world!”修改为“Hello Apktool!”。下面具体介绍原创 2015-02-28 12:23:21 · 9693 阅读 · 3 评论 -
安卓逆向学习笔记(1) - 反编译classes.dex获取apk的java源代码
在上一篇文章中,我记录了apk的文件结构,其中有一个classes.dex文件。classes.dex是apk的核心文件,其运行在安卓Dalvik虚拟机上。通过查看apk的编译生成过程,我们可以得知:Java源代码首先被编译成.class文件,然后Android SDK自带的dx工具会将这些.class文件转换成classes.dex。原创 2015-01-15 14:35:57 · 27981 阅读 · 0 评论 -
安卓逆向学习笔记(0)- HelloWorld.apk的文件结构
安卓项目的文件结构与安卓apk的文件结构存在着一一对应的关系。安卓应用开发的本质是:将源代码和各种资源文件编译整合成一个apk。安卓逆向的本质是:想办法将apk转化为源代码和资源文件。 简单来说,apk就是一个带有签名的zip格式的压缩包,签名为了保护开发者的权益和标识apk。做为android逆向学习的第一步,了解apk的文件结构和生成过程是很有必要的。原创 2015-01-11 00:54:43 · 8587 阅读 · 7 评论 -
安卓逆向学习笔记(10)- 安卓逆向学习资料
因为喜欢Android安全,而Android逆向是Android安全的一个分支,所以小弟利用业余时间自学了一点Android逆向。在学习过程中总结了一点学习资料,特此分享给大家。(1)Android安全大牛的博客: 鬼哥的博客: 听鬼哥说故事 Jack_Jia的博客: Android手机病毒分析及研究 i 简行的博客:简行之旅原创 2015-05-30 19:15:15 · 6113 阅读 · 10 评论