Android 应用逆向破解

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

aapt d badging Calculator.apk | grep targetSdkVersion
使用baksmali对Calculator.odex去odex并反编译成smali代码文 件, -a指明sdk版本,-x指定需deodex的odex文件,-d指明依赖的 framework目录,-o指定去输出目录。
void,只能用于返回值类型 boolean byte short char int long(64位) float double(64位)
对象:Lpackage/name/ObjectName; 如:Ljava/lang/String; 相当于 java.lang.String 数组: [I, [Ljava/lang/String; [Ljava/lang/String;表示一个String对象数组。对于多维 数组,只要增加[就行了,[[I相当于int[][]
baksmali -a 15 -x Calculator.odex –d framework -o Calculator/smali
修改相应的源码和资源后,重新编译、签名。
语法
类汇编语言、寄存器结构、可读性较高 类型 描述符 类型
基本类型:
引用类型:
V Z B S C I J F D
java –jar smali.jar –o HelloWorld.dex HelloWoldOut
执行
adb push HelloWorld.dex /data/local/ adb shell dalvikvm –cp /data/local/HelloWorld.dex HelloWorld 只能汇编和反汇编DEX文件
APK编译工具

AAPT资源打包工具

Android Assets Packaging Tool 编译资源文件;生成R.java

AIDL

根据*.aidl文件自动生成java文件

Dex

将Java编译产出的*.class文件转换成dex文件

ApkBuilder APK打包工具

将前面编译产出的中间文件打包成APK
apktool
apk解包 |-- HelloWorld/ |-- AndroidManifest.xml 被编译成二进制的配置文件 |-- class.dex Android可执行文件 |-- resources.arsc 被编译成二进制的主资源文件 |-- assets/ 不需编译的原始资源文件目录 |-- res/ 资源文件目录 |-- lib/ 库文件目录 |-- META-INF/ APK的签名信息 apk反编译 |-- out/ |-- AndroidManifest.xml 配置文件 |-- apktool.yml 反编译生成的文件,供apktool使用 |-- assets/ 不需反编译的资源文件目录 |-- lib/ 不需反编译的库文件目录 |-- res/ 反编译后的资源文件目录 |-- smali/ 反编译生成的smali源码文件目录

JarSigner Java签名工具

使用生成的数字证书给APK签名

ZipAlign APK优化工具

优化APK,更小内存占用、更高运行效率
APK编译过程
What is smali?
Android
DEX可执行
JesusFreke Google Code开 源项目
Dalvik VM
文件格式
广告注入、去除 汉化和破解
acore.jar
ext.jar
framework.jar
service.jar
android.policy.jar
deodex
odex处理过的apk包中不包含dex文件,其对应的odex文件放在与 apk文件同一目录下,我们先把apk文件中其他的资源等文件先反编 译出来。 apktool d Calculator.apk ./Calculator 通过aapt命令获取apk使用的SDK的版本号targetSdkVersion为15。
apktool
Introduce
封装和改进smali工具 DEX文件的反汇编和汇编 资源文件进行反编译和编译 支持断点调试
Usage
加载framework资源包 java –jar apktool.jar if framework-res.apk 反编译 java –jar apktool.jar d HelloWorld.apk out/ 编译 java –jar apktool.jar b out/ HelloWorld.apk
smali baksmali
汇编器
ROM定制
反汇编器
smali/baksmali
smali/baksmali 反汇编(dex -> smali)
java –jar baksmali.jar –o HelloWorldOut HelloWorld.dex
修改…
汇编(smali -> dex)
deodex odex?
Optimized DEX ,优化的dex文件格式 大部分厂商发布的手机上都会做odex处理 odex处理过的jar/apk包中可能不存在dex文件
odex dex
odex文件在不同的framework 上是无法被dalvik虚拟机加载的。
强依赖 odex /system/framework
Smali基本原理
目录 APK组成
什么是smali 反编译、编译
语法规范、格式
修改smali代码 断点调试
Biblioteka Baidu
APK组成

Android应用程序包文件(APK文件)其实是zip压缩包格式,使用解 压工具进行解压,可以看到其目录组成:
|-- HelloWorld/ |-- AndroidManifest.xml 被编译成二进制的配置文件 |-- class.dex Android可执行文件 |-- resources.arsc 被编译成二进制的资源索引文件 |-- assets/ 不需编译的原始资源文件目录 |-- res/ 被编译成二进制的资源文件目录 |-- lib/ 库文件目录 |-- META-INF/ APK的签名信息
相关文档
最新文档