1.复习了一天数值分析
2.简单记录一下apk的文件结构吧,加深印象。
明天考数值分析,看了一天PPT,我爱数学,但是数学不爱我。
网上找的博客看的,写的比较详细,转载自:https://www.cnblogs.com/doit8791/p/5223201.html
这里简单记录一下。
apk是一个压缩文件,后缀改为zip可以解压出来。
AndroidMainfest.xml
一些配置清单,名字、版本、权限、引用的库文件等等。找一个apk看看这个文件,就什么都懂了。
META-INF目录
存放签名信息,android程序生成release版本的apk需要签名,加密信息应该就保存的这里了。
res目录
存放各种资源文件。最终被映射到Android工程中的R文件中,对各种资源会生成对应ID。逆向android主要是找strings.xml,便于定位关键字符串。一般在values文件夹中,layout文件夹是存放的应用界面布局。
lib目录
存放依赖的native库文件,.so文件是C/C++写的。可以根据特定目录确定是什么架构的。.so文件在逆向中应用挺多。
assets目录
印象不是很深,我在之前CTF题中没有使用过这个目录。和res有点相似。
resources.arsc
编译后的二进制资源文件的索引。应该就是程序运行,然后从这个文件根据对应ID找到对应的res资源文件。
classes.dex文件
java字节码文件,这个文件很重要,可以用jeb等转换成java源码。说到这就不得不提一下几个文件的转换了。
工具 | 作用 | 命令 |
---|---|---|
javac | java--->class | javac test.java |
dx | class--->dex | dx --dex --output=test.dex test.class |
baksmali | dex--->smali | java -jar baksmali.jar d xxx.dex |
smali | smali--->dex | java -jar smali.jar -o 目标dex文件 [smali文件夹] |
dex2jar | dex--->jar | d2j -dex2jar.bat dex文件 |
apktool | apk--->smali | java -jar apktool.jar d test.apk |
baksmali.jar和smali.jar有时候java自带的老出问题,我是从网上下载的。https://bitbucket.org/JesusFreke/smali/downloads/
当然敲命令有点费事,可以去吾爱的爱盘下载android逆向工具包。