【android】Android 破解实例(一)

注:这篇文章是北京大学移动平台软件开发课程 课后技术报告,如有错误,敬请指出。

        转载请注明出处:http://blog.csdn.net/mafia1989/article/details/27815697


   背景:

所谓破解,具体就是指反编译APK(APK文件就是android操作系统的应用程序安装文件)文件进行汇编级的代码分析,并修改代码,以改变原程序的功能。

相对于在Windows平台下复杂的加壳,脱壳以及反汇编技术,我们在android平台下不仅可以进行汇编级的分析 --smali字节码,也可以通过一些工具直接转化成java源代码(以下将详细说明),并相对于PC平台的加壳技术,Google在android中引入了ProGuard进行了代码混淆。

概念及基本准备:

dalvik虚拟机:Google为Android平台设计了一套虚拟机来运行Android程序,它就是Dalvik Virtual Machine。Dalvik虚拟机运行的是Dex字节码,其以一个DEX(Dalvik Ececute) 可执行文件形式存在,Dalvik虚拟机通过解释DEX文件来执行代码。

smali文件:就是Dalvik虚拟机运行的Dex字节码所对应的汇编文件,类似于java虚拟机的汇编语言Jasmin,实际上这2者的 语法是非常相像的,如果你想了解更多,请访问Google Code上的Smali项目主页:https://code.google.com/p/smali/

ProGuardProGuard是一个SourceForge上非常知名的开源项目。官网网址是:http://proguard.sourceforge.net/Java的字节码一般是非常容易反编译的。为了很好的保护Java源代码,我们往往会对编译好的class文件进行混淆处理。ProGuard的主要作用就是混淆。当然它还能对字节码进行缩减体积、优化等。

第一个工具:APKTool (下载地址 http://pan.baidu.com/s/1i363Qtv),APKTool是GOOGLE提供的APK编译工具,需要JAVA运行环境。可以对APK进行反编译,使用它可以将其反编译成非常接近打包前的原始格式。逆向AndroidManifest.xml、资源文件resources.arsc以及将dex文件反编译成可以调试的smali文件。修改后,可以将其编译回apk文件。APKTool也可以用来汉化Android软件然后重新打包发布。 

第二个工具:dex2jar (下载地址 http://pan.baidu.com/s/1CNKwI),将Dalvik虚拟机的dex文件转换回标准Java的class文件的工具,然后可以用JD-GUI工具直接打开查看。

第三个工具:JD-GUI  (下载地址 http://pan.baidu.com/s/1c0tMNOc),一款用C++开发的JAVA反编译工具,该工具省掉了将jar文件转换成java源文件步骤,直接以源码的形式显示jar文件中的内容。


下面是我们这次要进行破解的APK:

三国志2霸王之大陆,下载地址(http://pan.baidu.com/s/1hql7mvy)这是曾经fc时代很流行的游戏,也是我小时候经常玩的一个游戏,但是这次在手机上下载了这个游戏,要积分才能玩。。如下图所示:


步骤一:

先将sanguo2.apk 重命名为sanguo2.zip ,然后解压缩,得到一个文件包,包里文件如图所示:



步骤二:

此时,使用dex2jar这款工具,将dex文件转化为jar文件,在CMD下 命令格式为  dex2jar.bat  "绝对路径"\classes.dex 

生成classes_dex2jar.jar文件。




步骤三:通过jd-gui将jar文件反编译为java文件

运行jd-gui.exe,打开文件classes_dex2jar.jar,可以看到源码,这里的源码有可能使用了Google的 ProGuard将类与变量名混淆成了无意义的abc字符,如图:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值