android反编译

来源:互联网 发布:python获取 macd 编辑:程序博客网 时间:2024/05/16 07:03

反编译工具:apktool1.5.2.tar apktool-install-windows-r05-ibot.tar

反编译命令:apktool d Test.apk out

重新编译apk:apktool b out

签名工具:signapk

重签名:signapk Test.apk

Dalvik虚拟机:javac Test,java编译生成Test.class文件,然后执行命令:dx –dex –output=Test.dex Test.class 生成dex文件

查看java字节码:javap -c -classpath . Test

查看Dalvik字节码:dexdump.exe -d Test.dex

android系统启动过程:android系统启动加载完内核后,第一个执行的是init进程,init进程首先做的是设备的初始化工作,然后读取inic.rc文件并启动系统中的重要外部程序Zygote.Zygote进程是android所有进程的孵化器进程,他启动后会首先初始化Dalvik虚拟机,然后启动system_server并进入Zygote模式,通过socket等候命令。当执行一个android应用程序时,system_server进程通过socket方式发送命令给Zygote,Zygote收到命令后通过fork自身创建一个Dalvik虚拟机的实例来执行应用程序的入口函数,这样一个程序启动就完成了。

dex 文件反汇编工具1 baksmali 命令:java -jar baksmali.jar -o baksmaliout Test.dex 使用在apk修改、补丁、破解,广泛使用

dex 文件反汇编工具2 ddx 命令:java -jar ddx.jar -d dout Test.dex

编写编译smali文件,需android环境

smali 命令:java -jar smali.jar -o classes.dex HelloWorld.smali  HelloWorld

adb push HelloWorld.zip /data/local/

adb shell dalvikvm -cp /data/local/HelloWorld.zip HelloWorld

反编译方法二:

快速破解:android 应用程序代码都存储在dex文件中,修改代码中的执行路径,使用ida pro 找到程序破解点对应的文件偏移。使用zip压缩软件取出apk中的dex文件,用ida pro打开进入反汇编界面,通过字符串的对应的id找到破解突破口,退出,使用16进制编辑工具打开dex文件(c32asm),定位到破解点,修改保存。

apk程序安装时会调用dexopt对dex进行验证与优化。dex文件中dexheader头的check字段标识了dex文件的合法性,被篡改过的dex文件在验证时计算checksum会失败,这样会导致程序安装失败,因此,我们需要重新计算并写回checksum值。使用dexfixer工具重写dex文件的checksum,

将dex替换到apk中,然后删除apk中的META-INF 文件夹,签名安装。

定位关键代码:

1.信息反馈法

2.特征函数法

3.顺序查看法

4.代码注入法

5.栈跟踪法

6.Method Profiling

0 0
原创粉丝点击