一、Android简介 Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。Android上的APP绝大部分是使用Java语言开发,编译时会编译成Dalvik字节码(即dex文件),运行时由Android自带的Davik虚拟机解释执行。由Java开发的APP很容易被逆向破解,目前市面上已有的Java程序反编译工具有baksmali、jd-gui、apktool等。为防止APP被逆向破解,对抗反编译工具成为重要手段,常见方法有:使反编译工具无法正常运行、代码混淆等。二、Android代码混淆
代码混淆技术基本原理是使反编译工具反编译出来的代码人难以阅读,从而达到防止被逆向破解的目的。PC上的代码混淆技术已经很成熟,有加花指令、多态变形等技术手法,Android代码混淆技术才刚刚起步,目前已知的技术手法如下。
2.1Java类名、方法名混淆 Dalvik字节码包含了大量的调试信息,如类名、方法名、字段名、参数名、变量名等,使用反编译工具可以还原这些信息。由于类名、方法名等通常都会遵循一定的命名规范,破解者很容易根据这些信息来猜测代码功能,阅读起来就跟查看源代码一样。从Android2.3开始,Google在SDK中加入了一 款叫ProGuard的代码混淆工具,ProGuard会删除这些调试信息,并用无意义的字符序列来替换类名、方法名等,使得使用反编译出来的代码难以阅读,提升逆向难度。使用ProGuard混淆过过后,反编译出来的类名和方法名无法阅读,但是反编译出来的功能代码仍然是非常容易阅读的,和源代码差不多,破解者仍通过阅读功能代码来自行标记类名、方法名等,然后逆向破解。
2.2Java代码混淆 通过对功能代码流程进行乱序混淆,实际运行时乱序混淆后的代码流程却和原始代码流程是一样的,但反编译出来的代码流程静态阅读时与原始流程有很大差异,使破解者很难通过静态分析理解代码功能,从而保护代码不被逆向分析。比如,原始的代码流程是1->2->3->4->5->6->7,经过乱序混淆后静态反汇编查看到的代码流程可能变成2->7->5->1->6->4->3,实际运行时代码流程仍然是1->2->3->4->5->6->7。目前使用这种代码混淆技术的Android保护工具有APKProtect。
爱华网本文地址 » http://www.aihuau.com/a/25101015/259350.html
更多阅读
最为详细的教程,教你如何反编译与回编译 精——简介学会反编译比较关键,也是我们美化必须掌握技术,学会反编译也是实现制作ROM的起步,ROM高手必然是反编译高手这里有必要说一下,教程只是给你一个动手的那一个跷板,教程不是万能的,给了你基
电脑端反编译教程:用apktool反编译工具1.Windows徽标键+R 弹出运行对话框 输入cmd ,回车;会弹出命令提示符窗口2.输入:“E:”回车(其中E为盘符,apktool在哪个盘就输入哪个盘的盘符)3.输入:“cd apktool”回车(其中apktool为反编译工具所在文件
Jodeclipse 是Jode的Eclipse插件,JadClipse是Jad的Eclipse插件,它们都是非常好的反编译插件。Jode Eclipse Plugin 1.0.5 for Eclipse version 3
整理下Android开发相关工具:共有四个工具,其中adt-bundle-windows-x86_64-20140702.zip和adt-bundle-windows-
Apktool v1.5.2 - APK反编译工具Changelog1.5.22013.02.02原帖地址:http://connortumbleson.com/apktool-v1-4-5-a-tool