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

举报
Vista_AX 发表于 2023/06/28 08:33:08 2023/06/28
【摘要】 APP安全——反编译分析(反编译、再编译、签名)

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

image.png


# 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安装包移到了该目录底下。

image.png


在该目录底下进入CMD,输入
java -jar apktool_2.3.4.jar d -f com.tydic.tibet.workhelper.apk -o vpn

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

image.png


查看vpn目录下反编译的情况。在生成的文件和文件夹当中,我们关心的是【res】文件夹中和AndroidManifest.xml文件,打开res文件夹,里面就有我们想要看到的东西了,如下图所示: ![image.png](https://bbs-img.huaweicloud.com/blogs/img/20230628/1687912097996146878.png)

image.png

想查看哪个xml文件就使用文本编辑器打开看看吧,反正全部都可以看到了。 以上就是使用apktool这个工具将一个apk反编译得到图片、XML配置、语言资源等文件的过程。

2、dex2jar反编译

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

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

image.png

将其中的classes.dex文件复制

image.png


放到dex2jar-2.0 目录下

image.png


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

image.png

3、jd-gui查看java源码

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

image.png

发现java源码并未经过混淆,接下来便可以进行源代码分析工作(这需要我们掌握一些app正向开发的知识点)

image.png


对于一些被混淆过的class,反编译的效果就不是那么理想了,被混淆过的class反编译后的效果图(类文件名称以及里面的方法名称都会以a,b,c....之类的样式命名
![image.png](https://bbs-img.huaweicloud.com/blogs/img/20230628/1687912166246854886.png)

4、修改源码并重新打包

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

image.png


修改后将其重新打包
java -jar apktool_2.3.4.jar b vpn 

image.png


默认apk生成路径是在文件夹内的dist下
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200823081235724.png#pic_center)

5、autosign二次签名

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

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

image.png


test_signed.apk就是签名后的apk
![image.png](https://bbs-img.huaweicloud.com/blogs/img/20230628/1687912197848369570.png)

6、测试是否生效

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

image.png



03 简单小结

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

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

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

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





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

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

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。