点赞后看,养成习惯
喜欢的话 可以点个关注哟
你们的点赞支持对博主们来说很重要哦 !!!
结合最近测试经历,发现, 某地区的4款APP中,有三款apk均无加壳、混淆机制。
使用dex2jar、apktool、apkide等工具便可对其进行反编译与编译操作,而仅有一款APP疑似做了反逆向工程,反编译后不可重新进行编译。
那么到底,什么是反编译分析呢?
简单来说,反编译分析就是一种从源代码层面上分析APP安全性的手段。我们通过审计源码,来发现应用程序可能存在的漏洞。
我们知道,APP的反编译有两种反编译方式,dex2jar和apktool。
dex2jar反编译出java源代码, 易读性比较高。
apktool反编译出的是java汇编代码,可以反编译出来smali反汇编代码、res资源文件、assets配置文件、lib库文件、我们可以直接搜索smali文件和资源文件来查找链接等。
在本篇文章里,就和大家分享有关于上述工具的一些使用。
apktool ,其作用是拿到apk 中的dex文件
dex2jar,把dex转化为jar文件,这是最关键的一步
gui ,这是一个图形化工具,查看jar里面的代码
autosign,签名工具,对再编译的apk进行二次签名认证
四件套全家桶,我已经打包如下:
Call个6666获取资源
下载压缩包,解压缩后,能看到以下三款软件。 这里,我把一个app安装包移到了该目录底下。
在该目录底下进入CMD,输入
java -jar apktool_2.3.4.jar d -f com.tydic.tibet.workhelper.apk -o
就会使用apktool工具对该apk进行反汇编,并输出文件到目录底下
查看目录下反编译的情况。在生成的文件和文件夹当中,我们关心的是【res】文件夹中和AndroidManifest.xml文件,打开res文件夹,里面就有我们想要看到的东西了,如下图所示:
想查看哪个xml文件就使用文本编辑器打开看看吧,反正全部都可以看到了。 以上就是使用apktool这个工具将一个apk反编译得到图片、XML配置、语言资源等文件的过程。
接下来使用dex2jar反编译apk得到Java源代码
将apk文件后缀名改成zip,然后解压。
将其中的classes.dex文件复制
放到dex2jar-2.0 目录下
然后在该界面进入DOS命令行,输入"d2j-dex2jar classes.dex
",得到如下文件
复制一份classes-dex2jar.jar到上级目录,然后将该文件拖拽至jd-gui.exe工具,即可查看java源代码
发现java源码并未经过混淆,接下来便可以进行源代码分析工作(这需要我们掌握一些app正向开发的知识点)
( 对于一些被混淆过的class,反编译的效果就不是那么理想了,被混淆过的class反编译后的效果图(类文件名称以及里面的方法名称都会以a,b,c…之类的样式命名)
在这里,为方便演示, 我简单地分析了下string.xm;尝试修改应用名
修改后将其重新打包
java -jar apktool_2.3.4.jar b
将其重命名为test.apk,拷贝到autosign目录下,执行命令
java -jar signapk.jar testkey.x509.pem testkey.pk8 test.apk test_signed.apk
将生成的test_signed.apk拖拽入雷电模拟器中,发现APP应用名确实被修改了
以上便是一次简单的反编译分析,由于该apk没有进行加壳、混淆等反逆向工程,所以一路下来较为顺畅。
不过大家可别大意,以为反逆向的过程总是那么一路顺风,要知道现在的加固APK方式也是层出不穷。
加固之后: 篡改后无法正常运行、无法正常动态调试、反动态注入无法注入、反编译无法获取到原dex代码或完整的dex代码、So文件的整体加密,使用自定义链接器的技术,对SO文件进行整体的加密,完全阻止IDA等逆向工具的静态分析。
道阻且长,还得努力~~~
以上文章,作为自己的学习笔记,仅供参考
本文完,感谢你的阅读!!!
最后,如果本文对你有所帮助,希望可以点个赞支持一下。你们的鼓励将会是博主原创的动力。