手把手教您搞懂Android反编译篮球

我到底想要的是怎么样的生活

前言

反编译旁人的顺序不是何等值得炫耀的事,希望大家最好只是兴趣探索,而不是利益驱动。本文重要目标是绕开一个简练的激活程序。

只是唯有和谐才知晓自己的对象是怎么,假若有肯定的思绪和对象,不妨大胆的去谋划和落实。

手把手教您搞懂Android反编译

转载时请务必注脚出处:http://www.iosxxoo.com/2016/06/29/2016-06-29/

当下本身瞄准新生入学这多少个空子想赚笔外快,做小商品用品需要相比多的老本还要要有场合售卖,思来想去决定只售卖每个宿舍床位都急需的锁头,抓住学生家长和学生的“危机心绪”,而且以此标准的切入点只有我这一家,社团的销售团队在这两天取得不错的大成,为此我和自己的一块儿人两个花了800块去吃了日料。

再一次打包

咱俩大体修改后多少个地点,其实重新包装也分外概括,在cmd中举办以下命令即可:

sh apktool.sh b FooAPP -o NewFooApp.apk

里头b是build的意趣,表示大家要将FooAPP文件夹打包成APK文件,-o用于指定新变化的APK文件名,那里新的公文叫作NewFooApp.apk。执行结果如下图所示:

篮球 1

然后你会发觉同级目录下生成了新的apk文件:

篮球 2

而是要注意,这几个apk现在如故不可以设置的,因为大家从不对它举办签字,重新签名后它就是个名副其实的盗版软件了,我们自然要明了谴责这种作为。

二.这种机会是个另外,如若没有采用好,这辈子就这么了

Done

作者:
@biggergao
私家博客: Mr.码了大漠

2016年06月29日

篮球 3

反编译代码

dex2jar解压下来文件过多,在mac上大家需要用到dex2jar的是这多少个东西(windows上对应用bat文件):

  • d2j_invoke.sh
  • d2j-dex2jar.sh
  • lib

篮球 4

AndroidStudio打包好的APK文件的后缀,需改为.zip,然后解压。从解压的文书中找到classes.dex文件,并将其放入dex2jar如出一辙目录下,如下:

篮球 5

并在cmd中也跻身到同一的目录,然后实施:

sh d2j-dex2jar.sh classes.dex

执行如下:

篮球 6

下一场我们会得到一个classes-dex2jar.jar文件,我们借助JD-GUI工具打开即可,打开如下:

篮球 7

可以见到代码非常明晰,这样大家就足以看出任何APP的代码逻辑了。

有时候问到收入和有益,总有令人羡慕的声响传入,我则难堪的笑一笑,像极了钱钟书先生的语录“围墙外的人想进入,围墙里的人想出去。

动用盗版APK

我们用NewFooApp.apk安装好盗版app后,发现图标变成了篮球,并且随便输入数据都能经过激活了:

篮球 8

1

什么?总的来说仍然挺有趣的吗,但是别用歪了。

参考链接:

Android安全攻防战,反编译与混淆技术完全解析(上)-
郭霖

Android安全技能解密与预防 –
周圣韬

这阵子我高一提高二时因为战绩不好被分到了文科班的三号种子里,

哪些是反编译

大家知晓,Android的主次打包后会生成一个APK文件,这一个文件可以直接设置到任何Android手机上,因而,反编译就是对这多少个APK举行反编译。Android的反编译分成两个部分:

  1. 一个是对代码反编译,也就是java文件的反编译。
  2. 一个是对资源反编译,也就是res文件的反编译。

到底要哪些过上温馨想要的生存

重点源码表达:

第51行仓储的不错的四个激活号码,通过:将账号密码隔开,如下

private static final String[] DUMMY_CREDENTIALS = new String[]{
            "foo@163.com:20135115",
            "bar@163.com:20135115"
};

前日只有激活码正确才能经过激活。

第331行是Execute函数,逻辑判断的局部。

    @Override
    protected void onPostExecute(final Boolean success) {
        mAuthTask = null;
        showProgress(false);

        if (success) {
            new AlertDialog.Builder(LoginActivity.this)
                    .setTitle("恭喜您")
                    .setMessage("成功激活!")
                    .show();
//                finish();
        } else {
            mPasswordView.setError(getString(R.string.error_incorrect_password));
            mPasswordView.requestFocus();
        }
    }

只是试想当年没有积极性要求留级,固然自己再怎么卖力去学学也不可以突破“三号班级”的国有瓶颈吧。

所需的工具

篮球 9

反编译代码的工具:

反编译资源的工具:

这句话表明了 三件事:

反编译资源

apktool下载完成后有一个.sh文件和.jar文件,大家把APK放进来,如下:

篮球 10

在cmd中进入apktool目录,执行命令:

sh apktool.sh apktool d FooApp.apk

d是decode的意味,表示我们要对FooApp解码,结果如下:

篮球 11

下一场您会惊喜的发现多了一个FooApp文件夹。

篮球 12

重大目录表达:

  • AndroidManifest.xml:描述文件
  • res:资源文件
  • smail:反编译出来的保有代码,语法与java不同,类似汇编,是Android虚拟机所利用的寄存器语言

三、拒绝无谓的埋头苦干,采取比努力首要

修改逻辑

咱俩因而源码或者JD-GUI查看反编译的代码可以看出激活码判断逻辑如下:

    @Override
    protected void onPostExecute(final Boolean success) {
        mAuthTask = null;
        showProgress(false);

        if (success) { 
        // 激活码正确
            new AlertDialog.Builder(LoginActivity.this)
                    .setTitle("恭喜您")
                    .setMessage("成功激活!")
                    .show();
//                finish();
        } else {
            mPasswordView.setError(getString(R.string.error_incorrect_password));
            mPasswordView.requestFocus();
        }
    }

由此大家只需要找到反编译后的if(success)的口舌,并将其修改成if(!success)即可,如下:

if (success)//修改成if(!success)
{
...
} else {
...
}

如此我们就水到渠成的颠倒了原先的逻辑,大家输入一个荒谬的激活码,就会被判定成正确的。挺简单的,是啊。

目前我们来动手修改:

  1. 打开smail里的LoginActivity$UserLoginTask.smali文件.

  2. 全局搜索if-eqz,通过AlertDialog首要字帮助定位,发现在第228行

    篮球 13

  3. ok,就是此处了,然后将if-eqz修改成if-nez,他们对应Java的语法如下:

Smail 语法 Java 语法
if-eqz v0, if(v0 == 0)
if-nez v0, if(v0 != 0)

ok,大功告成,现在就可以再一次打包了。关于smail语法,有趣味的平素Google就行了。

毕业后就在世界一百强的外企区域总部工作,在大人眼中,这是一份荣誉且稳定的办事。

热身准备

首先大家需要一个APK,这里我自己写了一个,源码下载地址:http://download.csdn.net/detail/u012891055/9671973,打包成APK后下载到手机上。

它的基本点效用是模拟邮箱激活,尽管我们输入了不当的数额则无法通过激活。所以大家的目标很简单,就是让这一个论断逻辑失效。

篮球 14

虽说只是很小的作业,但我确信自己是爱好做营销和企图工作的,我很感恩我在这么些公司学习到的人事物,有这一次工作机遇让自家读书到合作社的管理情势和见闻了职场人众生相。

修改App icon

开拓我们的叙述文件,高清无码:

篮球 15

可以看到我们的App
icon名称为ic_launcher,大家找到所有mipmap先河的文件夹,替换成下图即可:

篮球 16

ic_launche

篮球 17

在终极再一次包装后我们的App
icon就会被改动了,可是在再度打包在此之前,我们还有最要害的一件事没有做,这就是修改激活码判断逻辑。

供销社宿舍是租在一个镇上,同事们几近都住在那里,通常共同坐大巴上下班,业余大部分时间也都是跟同事一起吃吃喝喝,时不时还会集体篮球和足球比赛,小日子过得比较滋润。

双重签名

再一次签名也是很简单的,我一向用的一个已有签名文件,使用Android
Studio或者Eclipse都足以非常简单地生成一个签名文件。

在cmd中实践格式如下:

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore 签名文件名 -storepass 签名密码 待签名的APK文件名 签名的别名

下一场大家就足以用这个apk举行设置了,为了追求更快的运作速度,我们可以对其展开五遍字节对齐,这里就隐瞒了。

鉴于自己的经历和心思我把这么些群众号和想做的品牌命名为【创橘】,寓意change。

之所以在本人被选定到工作将来,他们都一贯很好听,在爱人亲戚面前提起自己的商店时都不自觉的如痴如醉在其中。

本身认为是开玩笑的,没悟出来得竟如此热烈,我的舍友跟自身开玩笑说“我们机关有一个一定的话题,就是本次喝酒聊上四回喝酒,下次喝酒聊这两回喝酒。”

本身起来感受到那项“业务能力”的严重性之处并一一创下了多少个“第一次”的笔录:“人生第一次喝洋酒”、“人生第一次断片”、“人生第一次见到苦味酒一斤的老公”….

其时心境细腻的本人专门跑去问上几届的师兄,发现上几届一致的班级里,三号种子最多能考多少个2B的学堂。

二、在您舒舒服服的时候,外人却在得到未来

一、每个人都有温馨的舒适区

自己在这多少个公司前景如何

店铺虽然在主动谋求转型,不过行业却是在强弩之末,特别是自家所在的机构

在自己辗转反侧几个中午后,果断跟自家爸说要留级,这时只听说有人高三复读,没听说有人高一再接再厉要求留级的,我们年级的长官也是难堪。

如出一辙的道理来看回自家前些天的做事,我骨子里特别欣赏跟营销和策划有提到的东西,平日会研讨各个跟商业有关的事物和行事。

少数次宿醉之后,我都在很用力的沉思多个问题:

有时候跟好多少个也是一路毕业的对象交换,寒暄几句后谈及工作,发现朋友们都必将水平的在为温馨的事业大力加油,加班加点都是熟视无睹。

人家提供的见地永远只好作参照,就像当年年级的集团管理者是不匡助我留级的,可能鉴于很多缘故,诸如于他们自己或者是“业绩要求”,于自我而言也许是“真以为没有必要”。

究竟是先行者,他们的见地一定程度上是从未有过错的,只要没有犯错误,这么些工作不会自由地失去,而且进集团未来会提供科学的福利待遇给自家。

如此这般一份体制内的办事,在自我眼中是从未有过什么特别看法的,刚先导找工作的时候,我也只是带着“广撒网”的心气投了简历,内心里直接把它位于自家的offer“保底区”。

市场化水平不高,在明日互联网+盛行的躁动年代,着实让我迫不及待在此处待下去会不会被社会所淘汰了。

在信用社里待了一段时间后,也初叶参预重点的“业务”了,早就在面试时就听说大家机关紧要的“业务”是饮酒

首要的是启示了我想做的一个样子,这就是关心职场人的正常,工作之后看到众多同事因为工作原由此吸引的正规问题,这里不光是人身上的,也有诸多职场人现实面对的思维、心理、人生规划问题,故而一向在思想是否为我们这么些上班族或者说都市的奋斗者解决这下边的题材。

接下去的岁月,我通常跟着同事参预各类酒局,久而久之也从推杯换盏之中喝出点“味道”来。不得不感慨中国宏达的酒文化,在铺子里算是精晓到了点皮毛。

恐怕是家里在准四线城市的原由,在长辈眼中它的意思已然不同于其他的做事了,她们给这样的offer贴上“铁饭碗”、“体面”、“不用奔波艰巨”、“社会身份高”的竹签。

就是这般,我承诺父母先去上班看看,等到不合适了再出来做其余的,刚开始即使薪资比不上BAT等互联网集团,但还算是不错的,每个月支付之余也够自己去喝点小酒和出去玩。

一.每个人终生中或多或少会拥有两次机会,让您之后不一致

盼望更多的奋斗者可以找到自己想要的并为之矢志不渝。

三.越到后来,犯错的机会成本越高

巴菲特曾经说过,每个投资者都应当倘若自己手上有一张可以打20个洞的投资决策卡,每做三回投资就打一个洞,用完停止。

您看我不用折腾挺舒服的,我却苦于一腔热血努力无门。

父母辈在经验了社会的酸甜苦辣沧桑后,不停地给本人洗脑“你看那一个xxx家里是做事情的,也是叫他外外孙子考个公务员,这年头生意不佳做,出去打工压力大要做得到底….”

四、我相信唯有沉浸其中,才可为其中之人服务

各类人都有和好的言情,在自身一贯不追求的年华里,我特意喜欢靠自己努力和才智赚到钱的感到,这一点让自家想起大学时代自己做过的有的工作,比如当年自己在高等学校新生开学此前筹划的“卖锁头”。