前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于反编译的搜索

Android Apk的反编译与代码混淆_Android-手机开发技术训练营 设为首页收藏本站 网上书城 请 登录 后使用快捷导航没有帐号?立即注册 用户名 Email 自动登录 找回密码 密码 登录 立即注册 快捷导航--> 首页Portal设计产品设计与用户体验开发手机开发技术运营APP推广与营销资讯移动互联网最新最热资讯博客业界知名博客下载开发资料、源码下载书城手机开发相关网上书城社区开发者社区,移动互联网手机开发者的社交圈子 AndroidHTML5iOSJAVAWindows Phone 36氪ReadWriteWebTech2IPOTechWebTechWeb热门人物艾瑞网爱范儿程序员杂志创业家虎嗅网互联网那些事儿蓝色理想派代网速途网淘宝UED腾讯CDC译言应用邦月光博客 搜索 搜索 文章用户 专注于手机开发技术_手机应用app开发_移动应用开发的移动互联网开发社区-手机开发技术训练营 &rsaquo; 首页 &rsaquo;开发&rsaquo; Android &rsaquo; 查看内容 --> Android Apk的反编译与代码混淆 2014-2-20 05:42| 发布者: admin| 查看: 24| 评论: 0 摘要: 一、反编译1.获取工具:  既然是反编译,肯定要用到一些相关的工具,工具可以到这里下载,里面包含三个文件夹,用于反编译,查看反编译之后的代码;  其实这两工具都是google官方出的,也可在google code上下载 ... 一、反编译1.获取工具:  既然是反编译,肯定要用到一些相关的工具,工具可以到这里下载,里面包含三个文件夹,用于反编译,查看反编译之后的代码;  其实这两工具都是google官方出的,也可在google code上下载 dex2jar,apktool;2-1.反编译获取java源代码:  将要反编译的apk文件后缀改为zip并解压,得到classes.dex,它就是java文件编译再通过dx工具打包而成的,将classes.dex复制到apk2java目录下的dex2jar-0.0.9.9文件夹;在命令行下进入dex2jar-0.0.9.9文件夹,输入命令:dex2jar.bat classes.dex,会生成一个jar文件classes_dex2jar.jar,用工具包中jdgui工具即可查看代码;2-2.反编译获取程序的源代码和图片、XML配置、语言资源等文件:  打开apk2java文件夹,进入apktool1.4.1,里面有三个文件aapt.exe,apktool.bat,apktool.jar;  在命令行下定位到apktool1.4.1文件夹,输入命令:apktool.bat d abc123.apk abc123;后两个参数分别是apk所在位置,反编译后代码存放位置;下面是我反编译QQ得到的androidManifest.xml文件的内容,输入命令为:apktool.bat d c:\qq.apk c:\qq;3.图形化反编译:  在工具包中,还有一个文件夹Androidfby,里面包含两个图形化反编译工具,其本质上就是对dex2jar和apktool两个工具进行了一层包装,使之有一个图形化的操作界面;    二、代码混淆  前面说了反编译,我们当然不希望我们的应用被别人反编译,所以就得在打包的时候进行代码混淆,这样的包也可反编译出代码,但是代码的可读性很低,从而达到保护代码的目的;  在我们新建的项目中,都有一个proguard-project.txt文件,默认里面是没有任何配置的,只有一些说明性的注释文字;我们就是能过它,来进行代码混淆的,首先需要为该文件添加需要混淆的代码说明; -optimizationpasses 5 -dontusemixedcaseclassnames -dontskipnonpubliclibraryclasses -dontpreverify -verbose -optimizations !code/simplification/arithmetic,!field/*,!class/merging/* -keep public class * extends android.app.Activity -keep public class * extends android.app.Application -keep public class * extends android.app.Service -keep public class * extends android.content.BroadcastReceiver -keep public class * extends android.content.ContentProvider -keep public class * extends android.app.backup.BackupAgentHelper -keep public class * extends android.preference.Preference -keep public class com.android.vending.licensing.ILicensingService -keepclasseswithmembernames class * { native <methods>; } -keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet); } -keepclasseswithmembernames class * { public <init>(android.content.Context, android.util.AttributeSet, int); } -keepclassmembers enum * { public static **[] values(); public static ** valueOf(java.lang.String); } -keep class * implements android.os.Parcelable { public static final android.os.Parcelable$Creator *; }  在上面的脚本文件混淆中,保留了继承自Activity、Service、Application、BroadcastReceiver、ContentProvider等基本组件以及com.android.vending.licensing.ILicensingService,并保留了所有的Native变量名及类名,所有类中部分以设定了固定参数格式的构造函数,枚举等等。(详细信息请参考android-sdk\tools\proguard\examples中的例子及注释。)  最后,在project.properties文件中,添加对proguard-project.txt文件的引用:proguard.config=proguard-project.txt  下面是一个代码混淆过后的apk反编译之后得到的代码,可以看出,如果给你一个这样的jar文件,你如何去读取整理它的代码?  更多请参见:http://developer.android.com/guide/developing/tools/proguard.html >>延伸扩展:1。当程序中有使用第三方jar包时,常常需要过滤掉反射的R文件及jar包,以及防止读取jar包是出现读取错误、防止因为警告导致打包不成功等等问题;  -keep class **.R$* { *; } 过滤R文件  -keep class packagename.** {*;} 过滤第三方包(packagename为第三方包的包名)  -libraryjars libs/mmbilling.jar 防止读取第三方jar包时读取内容错误  -dontwarn android.net.http.** 不提示读取某个包的警告2。当混淆打包的apk文件上有bug时,我们一般所用的统计平台所收集到的错误信息也是混淆之后的代码信息,我们自身也看不明白了,这种情况下可以单独把某个类提取出来,不进行混淆;参考上面对继承了Activity的类的保留方法,对单个个别的类进行保留;   var sogou_ad_id=119233; var sogou_ad_height=60; var sogou_ad_width=640; --> 鲜花 握手 雷人 路过 鸡蛋 收藏 分享 邀请 下一篇:CDN的实现原理上一篇:安卓版多功能手机助手应用源码 相关分类 Android HTML5 iOS JAVA Windows Phone 下级分类 安卓书籍 最新文章 配置Android SDK 开发环境(转)Windows平台的JDK安装(转)安卓开发随记安卓图形解锁2.1&hellip;&hellip;Android中的单位简介CameraFlash手电筒1.1&hellip;&hellip;什么是3GAndroid(4)—Mono For Android 第一个AppAndroid开发学习之Activity的简介53个要点提高PHP编程效率 热门阅读 Activity生命周期详解Android 系统 root 破解原理分析Android(4)—Mono For Android 第一个AppAndroid开发系列(十六) QQ聊天界面完整版Android Google Maps 开始53个要点提高PHP编程效率Android常用权限permission列表摘录界面设计之尺寸篇(转载)1.1&hellip;&hellip;什么是3GAppCan可以视为Rexsee的存活版 var sogou_ad_id=105056; var sogou_ad_height=200; var sogou_ad_width=200; --> 广告报价| |网站地图 Copyright &copy; 2012-2013 手机开发技术训练营(http://www.app-edu.net) 版权所有 All Rights Reserved. Powered by Discuz! X2.5 蜀ICP备12030941号-2 积分 0, 距离下一级还需 积分 回顶部