1 / 27

安卓应用逆向工程

安卓应用逆向工程. ANDROID APPLICATION REVERSE ENGINEERING. 封奕成 BadBoyRED. What's APK?. What's in the APK?. 1. asset: 在 java 代码中通过 AssetManager 类来访问的一个资源目录,项目编译时不会被编译生成索引文件。. What's in the APK?. AssetManager 对 asset 的相关方法:. What's in the APK?. 2. res:

melissaj
Download Presentation

安卓应用逆向工程

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 安卓应用逆向工程 ANDROID APPLICATION REVERSE ENGINEERING 封奕成 BadBoyRED

  2. What's APK?

  3. What's in the APK? 1. asset: 在java代码中通过AssetManager类来访问的一个资源目录,项目编译时不会被编译生成索引文件。

  4. What's in the APK? AssetManager对asset的相关方法:

  5. What's in the APK? 2. res: 在项目编译时也会被一起编译的资源目录,被编译后会生成索引文件,在java代码中只需要通过R.resourceType.fileName来访问。

  6. What's in the APK? 访问res的相关操作:

  7. What's in the APK? 3. lib: 存放.so文件。 .so文件:.so文件是unix的动态连接库,是二进制文件,作用相当于windows下的.dll文件。并且,Android应用支持的cpu架构取决于APK中位于lib目录中的.so文件。

  8. What's in the APK? 4. META-INF: 存放工程的一些属性文件。 5. AndroidManifest.xml: Android工程基础配置属性文件。

  9. What's in the APK? 6. classes.dex: java代码编译得到的可被Dalvik VM直接运行的文件。 7. resources.arsc 对res目录下资源的一个索引文件。

  10. What's Smali? Dalvik VM: Google专门为Android平台设计的一套虚拟机,拥有专属的DEX可执行文件格式和指令集代码。 [Based on stack] JVM: .java -> .class -> .jar [Based on register] Dalvik VM: .java -> .class -> .dex -> .odex Smali: 类比汇编语言,smali语言是对 Dalvik 虚拟机字节码的一种解释。

  11. What's Smali? 原始类型:

  12. What's Smali? 定义方法: functionName (Type1Type2Type3...)returnType *Type之间紧挨着,没有任何间隔符。

  13. What's Smali? 条件跳转:

  14. What's Smali? 条件跳转:

  15. What's AndroidKiller? AndroidKiller:类比IDA,AndroidKiller是对apk文件解包,并可以把smali语言转换到java语言的小(he)工(wu)具(qi),还可以改包等等。

  16. What's AndroidKiller? 查看程序入口: *入口为net.bluelotus.tomorrow.easyandroid.MainActivity

  17. What's AndroidKiller? 单击程序入口,即可显示程序入口代码所在的类。

  18. What's AndroidKiller?

  19. What's AndroidKiller?

  20. What's AndroidKiller? 界面上方有Android逆向常用工具:

  21. What's AndroidKiller? 在工程管理器中可以查看包内容的架构:

  22. What's AndroidKiller? AndroidKiller最重要的功能之一是可以改包并且重编译。当把smali代码更改了之后,通过Android菜单下的编译可以将当前工程重编译,得到目的APK。 当同时有多个工程存在时,通过批量编译可以编译多个工程。 由于不同版本的Apktool的编译情况存在微小差异,通过Apktool管理器可以更改默认Apktool。

  23. What’s Apktool? AndroidKiller的解包改包相关功能都是直接通过Apktool实现的。 Apktool v2.2.6的选项集:

  24. What’s Apktool? APK解包: apktool d filename.apk

  25. What’s Apktool? APK重打包: apktool b directoryName

  26. What’s Apktool? APK签名: jarsigner -verbose -keystorekeyStoreName.keystore -signedjarnewFileName.apkoriginalFileName.apkkeyStoreName.keystore

  27. Thanks.https://badboyred.com

More Related