APP安全——反编译分析(反编译、再编译、签名)

点赞后看,养成习惯
喜欢的话 可以点个关注哟
你们的点赞支持对博主们来说很重要哦 !!!

为方便您的阅读,可戳下方蓝字,快速跳转

  • 00 前言
  • 01 软件说明
  • 02 反编译分析步骤
    • 1、apktool反汇编
    • 2、dex2jar反编译
    • 3、jd-gui查看java源码
    • 4、修改源码并重新打包
    • 5、autosign二次签名
    • 6、测试是否生效
  • 03 简单小结

APP安全——反编译分析(反编译、再编译、签名)_第1张图片

00 前言

结合最近测试经历,发现, 某地区的4款APP中,有三款apk均无加壳、混淆机制。

使用dex2jar、apktool、apkide等工具便可对其进行反编译与编译操作,而仅有一款APP疑似做了反逆向工程,反编译后不可重新进行编译。

那么到底,什么是反编译分析呢?

简单来说,反编译分析就是一种从源代码层面上分析APP安全性的手段。我们通过审计源码,来发现应用程序可能存在的漏洞。

我们知道,APP的反编译有两种反编译方式,dex2jarapktool

dex2jar反编译出java源代码, 易读性比较高。

apktool反编译出的是java汇编代码,可以反编译出来smali反汇编代码、res资源文件、assets配置文件、lib库文件、我们可以直接搜索smali文件和资源文件来查找链接等。

在本篇文章里,就和大家分享有关于上述工具的一些使用。


01 软件说明

apktool ,其作用是拿到apk 中的dex文件

dex2jar,把dex转化为jar文件,这是最关键的一步

gui ,这是一个图形化工具,查看jar里面的代码

autosign,签名工具,对再编译的apk进行二次签名认证

四件套全家桶,我已经打包如下:

Call个6666获取资源


02 反编译分析步骤

1、apktool反汇编

下载压缩包,解压缩后,能看到以下三款软件。 这里,我把一个app安装包移到了该目录底下。

APP安全——反编译分析(反编译、再编译、签名)_第2张图片


在该目录底下进入CMD,输入

java -jar apktool_2.3.4.jar d -f com.tydic.tibet.workhelper.apk -o 

就会使用apktool工具对该apk进行反汇编,并输出文件到目录底下

APP安全——反编译分析(反编译、再编译、签名)_第3张图片


查看目录下反编译的情况。在生成的文件和文件夹当中,我们关心的是【res】文件夹中和AndroidManifest.xml文件,打开res文件夹,里面就有我们想要看到的东西了,如下图所示:

APP安全——反编译分析(反编译、再编译、签名)_第4张图片
APP安全——反编译分析(反编译、再编译、签名)_第5张图片
APP安全——反编译分析(反编译、再编译、签名)_第6张图片
想查看哪个xml文件就使用文本编辑器打开看看吧,反正全部都可以看到了。 以上就是使用apktool这个工具将一个apk反编译得到图片、XML配置、语言资源等文件的过程。

2、dex2jar反编译

接下来使用dex2jar反编译apk得到Java源代码

将apk文件后缀名改成zip,然后解压。

APP安全——反编译分析(反编译、再编译、签名)_第7张图片
将其中的classes.dex文件复制

APP安全——反编译分析(反编译、再编译、签名)_第8张图片


放到dex2jar-2.0 目录下

APP安全——反编译分析(反编译、再编译、签名)_第9张图片


然后在该界面进入DOS命令行,输入"d2j-dex2jar classes.dex",得到如下文件

APP安全——反编译分析(反编译、再编译、签名)_第10张图片

3、jd-gui查看java源码

复制一份classes-dex2jar.jar到上级目录,然后将该文件拖拽至jd-gui.exe工具,即可查看java源代码

APP安全——反编译分析(反编译、再编译、签名)_第11张图片
发现java源码并未经过混淆,接下来便可以进行源代码分析工作(这需要我们掌握一些app正向开发的知识点)

APP安全——反编译分析(反编译、再编译、签名)_第12张图片


对于一些被混淆过的class,反编译的效果就不是那么理想了,被混淆过的class反编译后的效果图(类文件名称以及里面的方法名称都会以a,b,c…之类的样式命名

APP安全——反编译分析(反编译、再编译、签名)_第13张图片

4、修改源码并重新打包

在这里,为方便演示, 我简单地分析了下string.xm;尝试修改应用名

APP安全——反编译分析(反编译、再编译、签名)_第14张图片


修改后将其重新打包

java -jar apktool_2.3.4.jar b  

APP安全——反编译分析(反编译、再编译、签名)_第15张图片


默认apk生成路径是在文件夹内的dist下

APP安全——反编译分析(反编译、再编译、签名)_第16张图片

5、autosign二次签名

将其重命名为test.apk,拷贝到autosign目录下,执行命令

java -jar signapk.jar testkey.x509.pem testkey.pk8 test.apk test_signed.apk 

APP安全——反编译分析(反编译、再编译、签名)_第17张图片


test_signed.apk就是签名后的apk

APP安全——反编译分析(反编译、再编译、签名)_第18张图片

6、测试是否生效

将生成的test_signed.apk拖拽入雷电模拟器中,发现APP应用名确实被修改了

APP安全——反编译分析(反编译、再编译、签名)_第19张图片


03 简单小结

以上便是一次简单的反编译分析,由于该apk没有进行加壳、混淆等反逆向工程,所以一路下来较为顺畅。

不过大家可别大意,以为反逆向的过程总是那么一路顺风,要知道现在的加固APK方式也是层出不穷。

加固之后: 篡改后无法正常运行、无法正常动态调试、反动态注入无法注入、反编译无法获取到原dex代码或完整的dex代码、So文件的整体加密,使用自定义链接器的技术,对SO文件进行整体的加密,完全阻止IDA等逆向工具的静态分析。

道阻且长,还得努力~~~





以上文章,作为自己的学习笔记,仅供参考

本文完,感谢你的阅读!!!

最后,如果本文对你有所帮助,希望可以点个赞支持一下。你们的鼓励将会是博主原创的动力。
在这里插入图片描述

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