最近突然心血如潮开始学了Android破解,初入门,便是将经验记录下来。

准备工作:

1、一个登录简单APP

在我们破解之前,我们需要做一个简单的登录APP,输入相应的账号与密码便是弹出登录成功的对话框,账号与密码不匹配的话则是弹出登录失败的对话框,如下图

由于我之前已经写了一篇关于制作登录界面的简单APP的博文,这里便是不多说了,详情请进http://www.cnblogs.com/kexing/p/8000783.html,图片也是从那篇博文复制过来的

建议大家还是照着我的教程做一下APP,之后对我下面所说的破解就会有更深的理解

这是我之前那篇所做的登录APP,把地址给大家吧,大家下载之后,按照我下面的步骤开始破解

链接: https://pan.baidu.com/s/1dFew3y5 密码: 6666

2.android破解工具——Androidkiller

  这里介绍一下android破解工具,Androidkiller,这款软件可谓是大名鼎鼎,不了解的话可以去百度搜索看看

  下载地址:链接: https://pan.baidu.com/s/1dET7ce1 密码: 6666

开始破解:

  使用Androidkiller打开需要破解的apk,之后反编译成功,点击工程管理器,就会出现这样的一个界面(第一次运行可能会出现卡死的情况,解决方法是将软件关闭,重新打开,之后在项目历史记录选择打开)

这里说一下,original文件夹里面放的是原始的AndroidMainfest和相关的签名,res文件夹则是放有相关的布局,颜色,图片,音乐等资源,smail文件夹则是存放这个app中所有的java文件

我上面只是比较粗略的讲解,想要深入了解的同学可以参考这一篇博文http://blog.csdn.net/bbzz100/article/details/51568616

我们重点的修改就是smail文件夹中的文件

我们可以看到其中有个MainActivity,这个就是主界面的java文件的smail文件,由于这个是一个简单的登录APP,所以里面没有太多的界面,我们可以很清楚主界面,但是,一般的APP可不是只有一个界面,这时,我们怎么办呢?答案很简单,通过关键字进行查找,从而定位到相关的smail文件中。所以说,破解一款APP,你还得使用过它,在使用过程中找出关键字

如我们这个简单的登录APP来说,我们可以搜索登录失败来寻找相对应的smail

在右上角搜索功能框输入登录失败,点击右下角的搜索全部,可以看到没有结果,这是为什么呢?因为在生成apk的时候,开发工具就会将apk中的相关文字转换成了Unicode,所以,我们可以将登录失败转为Unicode,再次搜索查看结果,Androidkiller搜索框就是自带了转换Unicode的功能,如下图

我们选择选择文本转Unicode,再次搜索,可以看到有了结果

我们展开它,双击第二行,就会跳到其所在的smail文件

到现在,我们需要理清一下破解思路,我们需要输入不匹配的账号密码,使其弹出登录成功的对话框。

上图我们找到了弹出登录失败的对话框,我们需要做的就是,修改条件不满足的时候所执行的代码

这里先补充两个smali指令 一个是if-eqz 另一个是if-nez 这两条指令是相对的
(1)if-eqz vA, vB, :cond_**  如果vA等于vB则跳转到:cond_**,可以看成boolean a = VA==VB,if-eqz a, :cond_** 当a为true,也就是VA等于VB,就执行cond_**,否则,就跳过cond_**,执行下一行代码
(2)if-nez vA, vB, :cond_**  如果vA不等于vB则跳转到:cond_**,同上,boolean a = VA!=VB, if-nez a,:cond_**  当a为true,也就是VA不等于VB,就执行cond_**,否则,就跳过cond_**,执行下一行代码

补充:v5为假,则说明用户名不对,所以弹出登录失败,v5为真,也就是用户名对了,就继续判断密码是否正确,密码不正确,也是弹出登录失败的对话框

破解方法:

破解之前强调一个问题 修改完smali代码后一定要ctrl+s保存 不然程序还是拿原来的smali代码编译

1.将上述的两个判断用户名与密码的判断,也就是if-eqz修改为if-nez,那么输入不对的账号名与密码就会跳过cond_0,相当于不弹出登录失败的对话框,直接往下执行,之后就是弹出登录成功的对话框

PS:如果输入的是原本的那个正确的用户名和密码,就会弹出登录失败

2.将这两个if-eqz删除掉,不管输入什么,即使是正确的账号名与密码均是弹出登录成功的对话框

3.利用goto语句,直接跳过这两个if-eqz

修改完之后,点击编译

之后就可以看到编译成功的提示,点击红色方框那行,就会跳转到资源管理器中

之后,就将该apk发给手机,在手机安装测试效果

这里提一下,还可以使用adb功能连接手机进行测试,或者连接到Android模拟器,将apk安装到模拟器中测试

Android破解学习之路(一)——简单的登录破解的更多相关文章

  1. Android开发学习之路-RecyclerView滑动删除和拖动排序

    Android开发学习之路-RecyclerView使用初探 Android开发学习之路-RecyclerView的Item自定义动画及DefaultItemAnimator源码分析 Android开 ...

  2. Android开发学习之路--基于vitamio的视频播放器(二)

      终于把该忙的事情都忙得差不多了,接下来又可以开始good good study,day day up了.在Android开发学习之路–基于vitamio的视频播放器(一)中,主要讲了播放器的界面的 ...

  3. Android开发学习之路--Android Studio cmake编译ffmpeg

      最新的android studio2.2引入了cmake可以很好地实现ndk的编写.这里使用最新的方式,对于以前的android下的ndk编译什么的可以参考之前的文章:Android开发学习之路– ...

  4. Android开发学习之路--网络编程之xml、json

    一般网络数据通过http来get,post,那么其中的数据不可能杂乱无章,比如我要post一段数据,肯定是要有一定的格式,协议的.常用的就是xml和json了.在此先要搭建个简单的服务器吧,首先呢下载 ...

  5. Android开发学习之路--Activity之初体验

    环境也搭建好了,android系统也基本了解了,那么接下来就可以开始学习android开发了,相信这么学下去肯定可以把android开发学习好的,再加上时而再温故下linux下的知识,看看androi ...

  6. Android开发学习之路--Android系统架构初探

    环境搭建好了,最简单的app也运行过了,那么app到底是怎么运行在手机上的,手机又到底怎么能运行这些应用,一堆的电子元器件最后可以运行这么美妙的界面,在此还是需要好好研究研究.这里从芯片及硬件模块-& ...

  7. Android开发学习之路--MAC下Android Studio开发环境搭建

    自从毕业开始到现在还没有系统地学习android应用的开发,之前一直都是做些底层的驱动,以及linux上的c开发.虽然写过几个简单的app,也对android4.0.3的源代码做过部分的分析,也算入门 ...

  8. Android破解学习之路(十)—— 我们恋爱吧 三色绘恋 二次破解

    前言 好久没有写破解教程了(我不会告诉你我太懒了),找到一款恋爱游戏,像我这样的宅男只能玩玩恋爱游戏感觉一下恋爱的心动了.. 这款游戏免费试玩,但是后续章节得花6元钱购买,我怎么会有钱呢,而且身在吾爱 ...

  9. Android开发学习之路--逆向分析反编译

      一般情况下我们想要了解别人的app怎么实现这个动画,这个效果的时候,总是会想到反编译一下,看下布局,看下代码实现.对,这对于有经验的玩家确实手到擒来了,但是初学者,根本就不知道怎么反编译,怎么看代 ...

随机推荐

  1. Python实现网站注册验证码生成类

    # -*- coding:utf-8 -*- ''' Created on 2017年4月7日 @author: Water ''' import os import random import st ...

  2. 用source语句引用mysql文件的细节注意

    今天在使用 mysql数据库的时候,创建 数据表的时候出现了很多的小问题,今天一天花费了大量的时间去解决这些问题.首先就是一些小的细节,在文本编辑器上编辑好了SQL语句,然后转移到mysql的命令行中 ...

  3. 阿里JAVA开发手册零度的思考理解(二)

    转载请注明原创出处,谢谢! 说在前面 人生的大道上默默地走,就必须要有一盏灯亮着为你引导方向!而这盏灯抑或只是一句话,一句鼓励,一个赞美,一次承认,一次认可,一次相识一次交流-- 上篇文章:阿里JAV ...

  4. Azure ARM虚拟机部署反恶意软件-安全扩展

    Azure虚拟机,默认情况下没有安装杀毒软件.如果您有此需求可以通过Azure 扩展进行安装,有关Azure反恶意软件的官方说明请参考:https://docs.azure.cn/zh-cn/secu ...

  5. 新手入门Flume搭建部署

    在root的用户下 1):• 前提 安装JDK环境 2):• 在官网下载Flume,http://mirror.bit.edu.cn/apache/flume 既是:wget  http://mirr ...

  6. java读写锁ReadWriteLock

    package com.java.concurrent; import java.util.concurrent.locks.ReadWriteLock; import java.util.concu ...

  7. 各大网站vip视频破解

    昨天朋友问我有没有XX视频网站的会员,现在的视频网站那么多个,要是都买会员,那还得了,作为一名程序员,想看vip视频还是自己可以动手的. 然后就自己动手用vue做了个破解vip视频的网站,界面简介,不 ...

  8. Golang源码探索(二) 协程的实现原理

    Golang最大的特色可以说是协程(goroutine)了, 协程让本来很复杂的异步编程变得简单, 让程序员不再需要面对回调地狱, 虽然现在引入了协程的语言越来越多, 但go中的协程仍然是实现的是最彻 ...

  9. javascript 中遍历数组的简单方法

    在Javascript中有自带方便遍历数组的方法(此方法非彼方法不要误会哦): 1 .利用for( index in array ){}; 2.利用 array.forEach( function(e ...

  10. Node.js初探之GET方式传输

    Node.js初探之GET方式传输 例子:form用GET方法向后台传东西 html文件: <form action="http://localhost:8080/aaa" ...