Android逆向-Android基础逆向(2-3补充篇)

0x00 前言

不知所以然,请看

Android逆向-Android基础逆向(1)

Android逆向-Android基础逆向(2)

Android逆向-Android基础逆向(2-2)

以及java系列:

Android逆向-java代码基础(1)

Android逆向-java代码基础(2)

Android逆向-java代码基础(3)

Android逆向-java代码基础(4)

Android逆向-java代码基础(5)

Android逆向-java代码基础(6)

Android逆向-java代码基础(7)

Android逆向-java代码基础(8)

学习内容

(1)APK文件伪加密 √

(2)资源文件防反编译 √

(3)apk打包流程 √

(4)apk反编译流程 √

(5)apk回编译流程 √

说明

由于篇幅问题所以将这个系列分成了好几个块来进行学习。

0x01 资源文件防反编译

上一个主题里说说明了xml文件的一些机构问题。这次来进行简单的手动加固尝试与理论分析。

1.理论说明

在apk安装的过程中,并不会对一些Android本身没有的内容进行识别,但是在Android killer进行反编译的时候就会对这些文件进行处理。因为没有相对应的模块所以就会进行报错。可能是因为Android killer 少了一个过滤的模块吧。

2.实践。

这里参考了http://www.cnblogs.com/wanyuanchun/p/4084292.html。
加固思路就是添加一些没有用的名称索引以及一些假的索引,用来针对反编译软件进行加固。这里不进行了。之后如果有时间的话就再回来做尝试。

如果进行反编译,哪里报错修改哪里,然后把出错的地方进行修改就可以了。

0x02 APK打包流程

说明

APK打包流程,这里只是做一个简单的了解。
首先来看一张图

打包一共分为7步,我们分为7个模块然后一个一个进行讲解。

1.第一步,打包资源文件

第一步就是打包资源文件,生成R.java文件
使用工具 aapt
二进制文件采取字符串池进行保存,通过索引来进行缩小文件的大小。
具体可参考:http://blog.csdn.net/luoshengyang/article/details/8744683

2.第二步,处理AIDL文件

处理AIDL文件,生成对应的,java文件。
使用工具:aidl

3.第三步,编译java文件

编译java文件,生成对应的.class文件
使用工具 javac 这个工具我们应该使用了很多次了吧,但是主要还是使用的是最基本的工具。

4.第四步,把.class文件转化.dex文件

这一步是不是也很熟悉呢,是不是也在之前见过一些呢。我们在之前练习smali文件的时候见过这些操作。如果想要具体了解,请查看java系列。

5.第五步,生成未签名的apk文件

使用apkbuilder工具,生成未签名的apk文件。

6.第六步,签名

工具:jarsigner进行软件的签名工作。

7.对其整理

对签名后的.apk文件进行对其整理,如果不整理是不能发布到Google Market的。
使用工具:zipalign工具。

结束语

以上就是一个apk进行的简单的流程了。

0x03 反编译流程

第一步,解压apk,等到dex,和其他资源文件

这里的资源文件我们只是自己分析了一个axmld格式,虽然可能代码没有其他大神写的那么好,但是都是为了能够理解到axml格式的含义,自己能写代码,就会加深理解度。

第二步,使用apktool工具进行反编译apk

这里的apktool工具是开元的。我们可以自己更改代码也可以针对apktool工具进行漏洞分析。

结束语

这里是一些反编译软件的源码地址:
apktool:https://github.com/iBotPeaches/Apktool
Jadx-gui:https://github.com/skylot/jadx

0x4回编译

回编译使用apktool工具,也可以使用aapt工具,和之前的生成apk非常相似,其实过程原理一样。

你可能感兴趣的:(Android逆向-操刀天下)