这节正式开始破解编写的第一个Android工程,打开Android Killer,把第一节自己编写的Android apk拖入Android Killer。

PS: 如果Android Killer不能编译成APK,或者反编译失败,应该是apktool等工具版本低了,参见AndroidKiller高版本反编译失败解决

把APK拖到Android Killer界面,把apk文件拖到Android Killer界面,工具自动开始反编译,反编译完成后点击左侧入口处即可打开MainActivity。(如果卡在正在反编译APK源码请稍等..,关闭Android Killer重新打开即可)

  先思考下,破解这个程序的关键点是什么: 当我们填写错误的激活码时会提示 “非法的激活码,注册失败”,填写正确激活码提示“激活码合法,已注册”。

我们分别找到这二句代码处,把执行注册失败地方的代码修改为去执行注册成功的代码不就破解了吗?OK,思路有了就开始吧。

  点击Android Killer的工程搜索标签页,输入 非法的激活码,注册失败,点击Aa图标 -> 文本转Unicode,点击搜索,来到对应的smali代码处。搜索注册成功的方法同上,如图:

看到提示成功和失败二个地方都在confirmJHM方法里,都是把字符串传给v0寄存器,然后使用invoke-static调用makeText方法显示。

成功的逻辑在上面,如果没有跳转的话是不会执行失败的逻辑的,肯定是跳转绕过了成功部分。

往上找,发现37行 if-eqz v0, :cond_0  即:如果v0等于0,就跳转到cond_0执行,就提示失败;即如果v0不等于0就提示成功。

继续往上分析代码可知,31行const-string v0,"abc"存储正确的激活码abc,33行把我们填写的激活码p1跟abc做比较,如果不想等就返回0,35行把函数返回值给v0寄存器。

现在我们知道了,只要我们不让程序跳转到cond_0执行就可以提示成功了,怎么办呢?修改办法有很多,只要实现我们想要的效果就可以了。这儿我们直接注销低37行的smali代码即可。

ctrl+s保存修改,点击左上角的Android标签页->编译。编译完成后生成新的apk。重新测试下,输入错误激活码也能显示注册成功

Android逆向 破解第一个Android程序的更多相关文章

  1. Android逆向破解表单注册程序

    Android逆向破解表单注册程序 Android开发 ADT: android studio(as) 程序界面如下,注册码为6位随机数字,注册成功时弹出通知注册成功,注册失败时弹出通知注册失败. 布 ...

  2. Android逆向破解表单登录程序

    Android逆向破解表单登录程序 Android开发 ADT: android studio(as) 程序界面如下,登录成功时弹出通知登录成功,登录失败时弹出通知登录失败. 布局代码 <?xm ...

  3. Android工程:引用另一个Android工程的方法详解

    本篇文章是对在Android中引用另一个Android工程的方法进行了详细的分析介绍.需要的朋友参考下   现在已经有了一个Android工程A.我们想扩展A的功能,但是不想在A的基础上做开发,于是新 ...

  4. Android逆向——破解水果大战

    最近公司需要测试安卓app安全,但安卓基本上0基础,决定开始学习下安卓逆向根据吾爱破解上教程 <教我兄弟学Android逆向系列课程+附件导航帖> https://www.52pojie. ...

  5. 【Android实验】第一个Android程序与Activity生命周期

    目录 第一个Android程序和Activity生命周期 实验目的 实验要求 实验过程 1. 程序正常启动与关闭 2. 外来电话接入的情况 3. 外来短信接入的情况 4. 程序运行中切换到其他程序(比 ...

  6. Android学习笔记_70_一个应用程序启动另一个应用程序的Activity

    第一种(我自己写的) :之前在网上看来一些,很多不是我要的可以启动另外一个应用程序的主Activity. //这些代码是启动另外的一个应用程序的主Activity,当然也可以启动任意一个Activit ...

  7. 零开始Android逆向教程(一)——初探Android逆向

    这段时间因为某些业务驱动,开始研究一些逆向相关的东西,浏览了下其所包含的大致内容,发现真是一个新大陆,跟之前耳听目染过的一些门面介绍完全不是一个层级的,真正的印证了下手难这一说法.   谨此以本文开始 ...

  8. Creating an Android Project(创建一个android项目)

    一个android项目包含了你的应用程序中的所有源代码文件,我们可以通过android sdk tools轻松地创建一个拥有默认文件跟文件夹的android项目. 这部分课程我们将展示两种创建andr ...

  9. 如何把一个android工程作为另外一个android工程的lib库

    http://zhidao.baidu.com/question/626166873330652844 一个工程包含另一个工程.相当于一个jar包的引用.但又不是jar包反而像个package 在网上 ...

随机推荐

  1. MySql主从同步和延迟同步

    MySql同步与延迟同步 Mysql同步 一 Mysql主服务器上操作 1 开启服务器上的log_bin功能 # vim/etc/my.cnf 增加一下两行 log_bin=mysql-bin ser ...

  2. Prim Algoritm(最小生成树)

    Prim Algorithm.这个算法可以分为下面几个步骤: 将顶点集V分成两个集合A和B,其中集合A表示目前已经在MST中的顶点,而集合B则表示目前不在MST中的顶点. 在B寻找与集合A连通的最短的 ...

  3. javaweb的web.xml配置说明,初始化过程

    [重点]初始化过程可知容器对于web.xml的加载过程是context-param >> listener  >> fileter  >> servlet 首先了解 ...

  4. winDBG排错小记

    去年底,公司一个上线了近一年的系统逐渐出现访问缓慢,操作超时的问题.本人使用winDBG工具对抓下来的内存映象进行了诊断,虽最后没有查出什么原因,但在过程中也学到了不少东西,现记录如下 一. “Fai ...

  5. 扒一扒HTTPS网站的内幕

    215年6月,维基媒体基金会发布公告,旗下所有网站将默认开启HTTPS,这些网站中最为人所知的当然是全球最大的在线百科-维基百科.而更早时候的3月,百度已经发布公告,百度全站默认开启HTTPS.淘宝也 ...

  6. Deep learning with Python 学习笔记(4)

    本节讲卷积神经网络的可视化 三种方法 可视化卷积神经网络的中间输出(中间激活) 有助于理解卷积神经网络连续的层如何对输入进行变换,也有助于初步了解卷积神经网络每个过滤器的含义 可视化卷积神经网络的过滤 ...

  7. webpack4使用mode优化开发环境配置

    @subject: webpack mode @author: leinov @date: 2018-11-29 mode webpack的 mode 配置用于提供模式配置选项告诉webpack相应地 ...

  8. Eclipse 4.3 Kepler最快汉化方法

    eclipse 4.3汉化 eclipse 4.3 ---kepler已经于2013年6月26日发布主要版本,详见:eclipse in wikipedia   1.上eclipse官网:http:/ ...

  9. Jquery 基本动画

    1.三组基本的动画 显示:show .隐藏hide.滑入:slideUp.滑出:slideDown.滑入滑出切换:slideTpggle.淡入:fadeIn.淡出:fadeOut.淡入淡出切换:fad ...

  10. ionic 混合应用开发

    windows下安装配置 npm install -g ionic npm install -g cordova ionic start myproject cd myproject ionic pl ...