android逆向工程教程

             很多时候老板会要求我们开发的android软件要进行加固和混淆的,混淆可以使用android原生的build.gradle下的代码实现,

 buildTypes {
        release {
            minifyEnabled false
            multiDexEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig signingConfigs.YunCanteenSC_RL
        }
    }

             也可以使用第三方的加固工具来实现,这些都是题外话啦,有兴趣的可以去学一下混淆规则。因为如果不进行混淆或者加固我们的APP就很容易让不怀好意的人进行破解,那为什么我们还要搞逆向工程?这样我们不就是那些不怀好意的人么?其实不然,学逆向工程可以更好的检查自己APP的漏洞防止被人有机可乘。

             要进行逆向我们先下载以下几个工具:

  1. dex2jar 这个工具用于将dex文件转换成jar文件 
    下载地址:http://sourceforge.net/projects/dex2jar/files/
  2. jd-gui 这个工具用于将jar文件转换成java代码 
    下载地址:http://jd.benow.ca/
  3. apktool.jar 这个工具用于最大幅度地还原APK文件中的图片、布局、字符串等等一系列的资源。 
    下载地址:https://ibotpeaches.github.io/Apktool/
  4. apktool.bat 这个工具是为了省去重复步骤自己编辑的,内容如下:
@echo off
if "%PATH_BASE%" == "" set PATH_BASE=%PATH%
set PATH=%CD%;%PATH_BASE%;
java -jar -Duser.language=en "%~dp0\apktool.jar" %1 %2 %3 %4 %5 %6 %7 %8 %9

下载完后,解压dex2jar,目录如下:

android逆向工程教程_第1张图片

然后把要逆向的APK文件进行解压,获取classes.dex,这个文件就是存放Java代码的。

android逆向工程教程_第2张图片

接着把classes.dex文件拷贝到dex2jar解压后的目录下,使用cmd进入dex2jar解压后的目录下,执行如下命令:

d2j-dex2jar classes.dex

 执行后如果没有报错就会生成一个Jar文件,结果如下:

android逆向工程教程_第3张图片

再接着我们使用下载好的第二个工具 jd-gui 打开我们刚刚生成的Jar文件就会发现文件名和类名都和我们源码的几乎一样,除了一些布局文件和资源文件,因为引用这些文件都是以ID的形式。结果如下:android逆向工程教程_第4张图片

           虽然已经反编译完成了但是你无法知道那个是程序的入口啊,此时一般都是去查看androidManifest.xml文件。但是我们反编译并没有这个文件,我们可以回去查看APK解压文件里面是有这个文件的,那直接打开是不是就可以观看到我们想要看的内容呢?答案肯定是不行的,如果这么简单我们还费这么大功夫干嘛是吧?不信?你可以看看:

android逆向工程教程_第5张图片

    这个东西我相信暂时还没有人能看懂吧?此时我们就需要用到我们的第三和第四个工具,和上面的做法差不多,把要反编译的APK文件拷贝到这个两个工具目录下,接着使用CMD,进入这两个工具目录下,执行如下命令:

apktool d Demo.apk

android逆向工程教程_第6张图片

再打开反编译出来的资源文件,就能 正常的查看androidManifest.xml的内容和布局文件的内容了,这就是以上全部内容。

原创链接:https://blog.csdn.net/weixin_40600325/article/details/84531211

你可能感兴趣的:(android,android逆向工程)