安卓逆向(一)-安卓逆向环境及认识apk

安卓逆向环境及认识apk

Posted by hmoytx on October 31, 2022

安卓逆向(一)-安卓逆向环境及认识apk

前言

web太卷了,混子选手卷不动了,准备开始学习安卓逆向,有多少写多少,保证尽可能不断更。

安卓逆向环境

这里简单讲一下我自己的环境,我是mac,所以只挑了我能用且常用的一些工具,框架。
硬件环境:

1.mac  
2.真机环境(pixel 1/2 nexus 5x)

软件环境:

1.基础的java开发环境  
2.idea/android studio 
3.jadx
4.jeb
5.IDA
6.模拟器
7.虚拟机: r0env
8.frida

认识apk

apk(android Application PacKage) 是Android软件包的分发格式,它本身是个zip压缩包,因此可以用解压缩工具把apk当做zip文件一样去解压。
1
APK根目录下可能出现的目录和文件如下: 2
解压后,得到上图中的安卓相关文件。

apk打包流程

apk可以在apktool等工具修改了安卓对应的文件后,重新打包为apk文件。
apk的打包流程:
3
apk重打包:

java -jar apktool.jar d a.apk  //解包
java -jar apktool.jar b b a/ -o a.apk //打包

keytool -genkey -v -keystore mysign.keystore -alias mysign -keyalg RSA -keysize 2048 -validity 10000  //生成证书
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore  mysign.keystore  a.apk mysign  //签名

dex文件

dex(Dalvik EXecutable format)即Dalvik 可执行文件。它的结构如下:

 struct DexFile{
    DexHeader    Header;
    DexStringId  StringIds[stringIdsSize];
    DexTypeId    TypeIds[typeIdsSize];
    DexFieldId   FieldIds[fieldIdsSize];
    DexMethodId  MethodIds[methodIdsSize];
    DexProtoId   ProtoIds[protoIdsSize];
    DexClassDef  ClassDefs[classDefsSize];
    DexData      Data;
    DexLink      LinkData;
};

一张图讲完:
4
关于9个区段的作用,可以去参考上图学习。这里篇幅问题不再展开。

总结

讲了下基础的环境以及对apk文件的认识。算是记录下学习的过程,希望不断更。