对于《Debugging Android Application》一文中最后附上的练习,我采用了另一种静态方法绕开原有的逻辑去破解。主要的过程如下:

  利用apktool将练习的runtime.apk文件反编译,生成的smali格式的反汇编代码,接着从smali文件的代码中寻找突破口,修改程序,再利用apktool重新编译生成apk文件并签名,最后运行测试。

  首先安装原应用程序测试功能,当输入正确的PIN码时,就如下左图所示,而输入错误的PIN码时,就如下右图所示。

  

  程序破解的目标是无论输入什么PIN码值,程序都反馈“Correct PIN entered”.

需要用到的工具

  1.apktool.用于apk文件的反编译和重新编译

  2.签名工具-signapk。重新编译打包的apk文件是没有签名的,不能安装测试,因此需要有工具对apk文件签名。

反编译apk文件

  此前,我已经将apktool添加到系统的PATH环境变量中,以便直接使用。接着运行以下命令:

  apktool d runtime.apk

  就会生成一个新目录runtime,该目录下有以下的目录和文件

res目录存放程序中所有的资源文件,smali目录存放了程序所有的反汇编代码。

分析代码

  阅读smali目录下的文件,由于该程序比较简单,可以容易猜测出主文件是\smali\com\FS\runtime1目录下的MainActivity.smali文件

  打开文件需找突破口。

  在先前测试原应用程序时可以发现,当输入错误的PIN码时,会弹出 "Incorrect PIN please try again later"提示,而输入正确的PIN码时,会弹出"Correct PIN entered"提示。因此,可以在代码中寻找这些关键的提示,来确定不同的逻辑代码段。

  根据代码中85行和107行的提示,确定了以上两段代码,并且可以发现78行的条件跳转指令if-eqz v1, :cond_1(如果v1寄存器的值为0,则跳转到cond_1标号处),由此推断出从该指令跳转到cond_1即为输入错误PIN码的情况,而顺序执行下来的就是输入正确PIN码的情况。综上判断,指令if-eqz v1, :cond_1为程序的破解点,只要把该行删除,无论输入何值,程序都不会跳转到输出错误提示的代码段中,即达到我们破解的目标:无论输入什么PIN码值,程序都反馈“Correct PIN entered”。

重新编译并签名

  保存退出后,开始重新编译打包成apk文件,在runtime的上级目录下运行命令:

  apktool b runtime

  编译成功。在runtime目录下有一个dist目录,里面存放着编译成功的apk文件。接下来就是为apk文件签名。我是利用了Android源码包里的签名工具signapk.jar进行签名的。同时利用源码包里的testkey.pk8和testkey.x509.pem,使用三者生成一个signapk.bat,只要将signapk.jar、testkey.pk8、testkey.x509.pem和signapk.bat放在同一目录下,并且将该目录添加到系统的PATH环境变量中,就可以直接使用了。

  运行以下命令:

  signapk runtime.apk

  成功的话就会生成一个签名过的apk,名字叫signed.apk。

安装测试

  最后进行安装测试。开启安卓模拟器后运行命令:

  adb install signed.apk

  安装成功。测试。

  输入任意字符,点击Check按钮,都会输出提示”Correct PIN entered”

  破解成功!

Android简单应用程序破解——runtime.apk的更多相关文章

  1. Android 开发笔记“程序安装包APK的制作”

    资源来源:http://blog.csdn.net/qualcent/article/details/6959547 完成Android项目后,需要将程序打包成APK文件(Android Packag ...

  2. 解决IE apk变成zip:Android 手机应用程序文件下载服务器Nginx+Tomcat配置解决方法

    APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ...

  3. 解决IE apk变成zip:Android 手机应用程序文件下载服务器 配置解决方法

    APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ...

  4. 解决IE下载 apk/ipa 变成zip:Android 手机应用程序文件下载服务器 配置解决方法

    解决IE apk/ipa变成zip:Android 手机应用程序文件下载服务器 配置解决方法 APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Da ...

  5. Android破解学习之路(一)——简单的登录破解

    最近突然心血如潮开始学了Android破解,初入门,便是将经验记录下来. 准备工作: 1.一个登录简单APP 在我们破解之前,我们需要做一个简单的登录APP,输入相应的账号与密码便是弹出登录成功的对话 ...

  6. 基于qml创建最简单的android机图像采集程序

    前提是在已经搭建为android编写程序的qt平台上面,我们只需要简单几部就可以搭建最简单的android机图像采集程序 1.生成新的ququick app 2.在配置中添加 multimedia,因 ...

  7. Linux课程实践三:简单程序破解

    一.基本知识 1. 常用指令机器码 不同版本对应机器码不同,这里以我做实验的kali(Intel 80386)为例. 指令 作用 机器码 nop 无作用(no operation) 90 call 调 ...

  8. 微信5.0 Android版飞机大战破解无敌模式手记

    微信5.0 Android版飞机大战破解无敌模式手记 转载: http://www.blogjava.net/zh-weir/archive/2013/08/14/402821.html 微信5.0 ...

  9. 如何开发Android Wear应用程序

    Android Wear是连接安卓手机和可穿戴产品的一个平台.自从今年上半年发布以来,Android Wear获得了大量关注,既有来自消费者的关注,也有来自开发商的关注,后者希望自己的应用程序已经准备 ...

随机推荐

  1. vue 搭建框架到安装插件依赖,Element、axios、qs等

    一.使用vue 单页面开发,首先要安装好本地环境 步骤如下: 1 下载nodejs 安装 (此时npm 和 node环境都已经装好)2 安装淘宝镜像 npm install -g cnpm --reg ...

  2. Flutter 首页必用组件NestedScrollView

    老孟导读:昨天Flutter 1.17版本重磅发布,新的版本主要是优化性能.修复bug,有人觉得此版本毫无亮点,但也从另一方面体现了Flutter目前针对移动端已经较为完善,想了解具体内容,文末有链接 ...

  3. CC2530ADC应用

    ADC单通道外部电压采集 需要设置一个上机位命令控制字符. 系统时钟初始化——32MHZ晶振 串口0函数初始化——设置串口对应引脚,波特率,清楚中断标志 串口0接收中断响应函数——U0DBUF将控制命 ...

  4. Java常用关键字总结

    1.abstract abstract修饰类,表示抽象的意思,抽象类可以含有非抽象变量和成员变量,也可以有普通方法和构造方法,但是不能被实例化(接口),但是可以被子类继承. public abstra ...

  5. CentOS7.2 安装 MongoDB 3.4

    服务器版本 CentOS7.2 MongoDB版本 3.4 1/ 下载所需资源 阿里镜像地址 http://mirrors.aliyun.com/mongodb/yum/redhat/7/mongod ...

  6. Least Cost Bracket Sequence(贪心)

    Least Cost Bracket Sequence(贪心) Describe This is yet another problem on regular bracket sequences. A ...

  7. mysql+redis缓存策略常见的错误

    什么时候应该更新缓存 应该是从数据库读取数据后,再更新缓存,从缓存读取到数据,就不需要再重新写缓存了,一个常见的错误是,每次访问接口都更新缓存,这样的话,如果接口一直有流量,那么db中的数据,就一直没 ...

  8. MySQL slave状态之Seconds_Behind_Master zz

    在MySQL的主从环境中,我们可以通过在slave上执行show slave status来查看slave的一些状态信息,其中有一个比较重要的参数Seconds_Behind_Master.那么你是否 ...

  9. Centos7中磁盘管理及扩展

    前提要求: 虚拟机:centos7 虚拟机软件:VMware Workstation 12 在安装Centos系统时,磁盘选择为LVM逻辑卷.当选择为LVM后才能创建逻辑卷等(必须) 数据格式选择的是 ...

  10. 容器技术之Docker基础入门

    前文我们了解了下LXC的基础用法以及图形管理工具LXC WEB Panel的简单使用,有兴趣的朋友可以参考https://www.cnblogs.com/qiuhom-1874/p/12904188. ...