zoukankan      html  css  js  c++  java
  • 安卓简单逆向修改

    安卓简单逆向修改

    今天来聊聊Android软件的逆向修改怎么样啊?
    如今Android市场,风云变幻。。。开玩笑啦。。。大家别介意。
    有很多软件,特别是单机软件,不需要联网的那种。如果没做好一些必要的安全加固防护的话,就很容易出现被别人(特指厚颜无耻之人)做逆向工程处理,改个名字换个图标,然后再把里面的版权信息和关键字眼去掉或者更改一下,然后换掉软件的包名就准备打包发布出去。美其名曰:成功研发了一款某某软件。

    其实,如果软件开发者简单的将软件打包开发出来,不做一些加固处理,签名校验这些操作的话。随便街边一个人都可以完成上面那些改名字,换图片删关键字的操作。
    因为实在是太简单了,但是我也相信,我不是针对谁,在座的各位,未必都会这些简单的操作吧。

    那下面就由我带领大家从搭建环境开始,到动手改个名字开始操作好吗?

    以下的内容需要这些开发环境。

    JDK、Android killer或者APK-IDE、APK-DB

    为啥必须要这些环境呢?且听我细细道来。。。

    首先安装一下Android killer,他是绿色版的,解压就可以用。

    如果没有安装jdk的话,会有以下提示

     



    这个是APK-IDE的提示

     

     



    所以,我们先装个JDK吧。

     

     

     

    然后再装个APK-DB

     

     

    这个APK-DB按照提示装好后,便基本没他什么事了。但是它可以提供直接在文件夹看apk的图标哟。也可以直接右键反编译,挺叼的,有兴趣可以了解一下下。

    OK,现在进入动手环节

    首先,用手机发送一个软件到电脑上,我这里发的是“画板“这个软件。

     

     

    为了确认我们能反编译这个软件,首先要,查一下壳

     

     

    嗯,没有壳。美滋滋。(壳的概念,后面出一篇来填坑哈,大家现在知道就好)

    由于已经安装了那个APK-DB,所以能看到软件图标。分辨起来比较快。
    接着拖apk到apk killer里面,可以看到右下角的日志在疯狂的跑

     

     

    但是,在最后面的结果那个可以看到apk源码反编译失败,所以这个时候,我们需要在Android栏中的apktool 管理器中添加一下工具。(如果没有出现这一步的同学可以忽略这段了)

     



    添加好后,在下面 默认apktool版本哪里,选择自己刚才添加的那个。
    然后删除掉刚才反编译源码失败的那个工程

     

     

     

    重新打开软件对apk进行反编译就可以看到APK源码反编译完成的提示了。
    为啥一定要搞到这个源码反编译成功呢?
    主要是为了后面如果要分析软件的运行流程以及一些关键代码的时候用到。

     

     

    好了,反编译完的时候,界面大概长这个样子

     

     

    上面一共七个点,我在这里简单说明一下
    1、应用名称
    2、包名
    3、入口点
    4、活动
    5、接收器
    6、服务
    7、应用权限

    我们本篇文章不展开说明上面对应的每一个点,东西说太多的话,影响主线内容哈。

    修改应用图标以及名称

    回到主页面。打开“工程管理器”选项。
    在下面双击 AndroidManifest.xml这个清单文件。
    何谓清单文件?

    每个Android应用的根目录中都必须包含一个 AndroidManifest.xml 文件(且文件名精确无误)。 清单文件向 Android 系统提供应用的必要信息,系统必须具有这些信息方可运行应用的任何代码。
    此外,清单文件还可执行以下操作:
    为应用的 Java 软件包命名。软件包名称充当应用的唯一标识符。
    描述应用的各个组件,包括构成应用的 Activity、服务、广播接收器和内容提供程序。它还为实现每个组件的类命名并发布其功能,例如它们可以处理的 Intent 消息。这些声明向 Android 系统告知有关组件以及可以启动这些组件的条件的信息。
    确定托管应用组件的进程。
    声明应用必须具备哪些权限才能访问 API 中受保护的部分并与其他应用交互。还声明其他应用与该应用组件交互所需具备的权限
    列出 Instrumentation 类,这些类可在应用运行时提供分析和其他信息。这些声明只会在应用处于开发阶段时出现在清单中,在应用发布之前将移除。
    声明应用所需的最低 Android API 级别
    列出应用必须链接到的库

    可以清楚看到在application这个标签中。对图标和应用名称有明确定义指向

     



    这个时候,我们直接去res这个目录里面去找对应的资源。
    先改个名字吧。
    进入到/res/values/strings.xml中,找到这个app_name。

     

     



    但是名字不是叫画板呀。
    因为画板是中文的软件叫法,painter是英文的叫法。所以,这个时候,我们可以去到中文对应的资源文件夹中。/res/values-zh-rCN/strings.xml中。

     

     

     

    在这里,我将软件名字换成“手绘板”。
    然后在顶栏选中Android,然后点击编译。

     

     

    接着拿数据线连上手机。进入“开发者模式”。
    什么?开发者模式找不到?
    莫慌,让我来告诉你这个“开发者模式”在哪里吧。
    鉴于现在应该没谁还用Android 2.x的系统了。我就直接说大部分通用的打开开发者模式的办法。

    首先、你得进入手机的设置。
    然后、点击“关于手机”。
    再然后、找到版本号。
    再再然后、连续点击多次版本号,一般点个四五次就会提示你进入开发者模式了。
    还没完,你接着一般要到其他设置里面,找到开发者选项。
    随后点击进入后,打开“USB调试”
    然后再确认一下调试授权就可以跟你的主机搭上关系了。

    图示如下

     

     

    OK,一阵折腾后,开发者模式终于搞定了。
    然后回到顶栏,在apk安装管理器右边有个设备,点刷新再看一下下拉框。可以看到一串字母加数字的东西了。

    这个时候,点击安装,这个时候就会在手机上面将刚才的那个更改编译好的软件安装到手机。

     

     

    如果手机是还没安装过这个软件的话,直接这样安装是不会有问题的。但是如果已经安装过了的同学,再点安装的时候就会提示冲突。因为重新编译的版本使用是自己的签名文件。导致了软件签名冲突。

    这个时候点击卸载,将软件卸载掉就好了。然后再安装就不会出问题了。

     

     

    这个时候已经可以看到名字已经被改过来了。

    再改个图标看看?
    前面已经找到了icon的所在地。我们就去drawable文件夹去找到对应的icon图片给替换过来。因为Android系统不同版本支持的图片情况不一样(这样解释好像不够准确)。所以会有很多drawable文件夹,咱们一个个去看。找到符合图片内容就换掉就好了。

     

     

    换一下图标

     

     

    然后从新编译,打包就可以看到图标已经被替换过来了。

     

     

    安装后,打开可以看到软件依旧可以正常使用。

     

     

    请忽视我的灵魂画作…………
     

    好了,本期就先这样吧。大家学习后,切勿使用到非法地方,本期内容仅供大家学习交流。

     

    推荐阅读:

     

    本文对你有没帮助呀,喜欢的话,记得留言、点赞、转发哟。谢谢各位!



    欢迎扫码关注我的微信公众号:叙之亭

  • 相关阅读:
    大话领域驱动
    c#之循环效率
    编程思想之——"人是活的,程序是死的"
    C#之系统异常处理机制
    EF操作扩展之async
    C#提供APP接口之JSON差异
    EF操作MySql
    WCF 消息压缩性能问题及解决方法
    [NoSQL]-Elasticsearch 7.9
    [Linux]-Debian10基础使用
  • 原文地址:https://www.cnblogs.com/marxcbr/p/10861618.html
Copyright © 2011-2022 走看看