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

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

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

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

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

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

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

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




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

2、dex2jar反编译

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

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


将其中的classes.dex文件复制

放到dex2jar-2.0 目录下

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

3、jd-gui查看java源码

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


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

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

4、修改源码并重新打包

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

修改后将其重新打包

java -jar apktool_2.3.4.jar b vpn

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

5、autosign二次签名

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

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

test_signed.apk就是签名后的apk

6、测试是否生效

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

03 简单小结

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

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

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

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

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

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

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

APP安全——反编译分析(反编译、再编译、签名)相关推荐

  1. C编译成其他语言,编程达人 所有的编程语言最后会编译成C,再编译成汇编,最后落实到硬件操作上吗?...

    首先上结论: (1)不是所有的编程语言都要先编译成C (2)甚至有编程语言连编译成汇编这一步都跳过了. (3)不是所有的编程语言都需要编译,有的是纯解释型语言 1. 编程语言到硬件执行之间到底发生了什 ...

  2. APP渗透—查脱壳、反编译、重打包签名

    APP渗透-查脱壳.反编译.重打包签名 1. 前言 1.1. 其它 2. 安装工具 2.1. 下载jadx工具 2.1.1. 下载链接 2.1.2. 执行文件 2.2. 下载apktool工具 2.2 ...

  3. app加固apk文件防止反编译apk打包流程

    文章目录 [1]加固 一.为什么要加固 二.加固方案 ①免费的第三方加固方案 ②付费的第三方加固方案SDK ③Java IO 流实现AES加密dex [2]加固方案的实现方式 [3]apk文件构造 [ ...

  4. Android——浙理体育(飞翔的红蜻蜓)反编译分析

    基本概念 飞翔的红蜻蜓:飞翔的红蜻蜓app是一款由北京知行灵动科技有限公司开发的专门为高校阳光体育开发的手机跑步软件,输入高校阳光体育管理系统的学号和密码就可以开启跑步了,但是一定要注意连接好校内wi ...

  5. Jar包反编译后修改源码再编译

    Jar包反编译后修改源码再编译 文章目录 Jar包反编译后修改源码再编译 1. 场景 2. 详细步骤 2.1 查看源码 2.2 生成源文件 2.3 构建项目 2.4 编译成jar包 3. 参考链接 1 ...

  6. 关于安卓Apk反编译 再编译回来不能正常安装的问题

    使用apktool反编译apk之后,再编译回去,发现不能正常安装,而使用ApkToolKitV3.0反编译,再编译回去就可以正常安装. 主要原因是因为使用apktool编译回没有签名. 所以不能安装, ...

  7. .net dll 反编译修改IL再编译,修改版本号

    记一次.net dll 反编译修改IL再编译exe 可用Everything搜索ildasm.exe 在用ildasm.exe打开dll或exe 点击文件右键转储 转储之后用visua studio ...

  8. 某地理位置模拟APP从壳流程分析到破解(劫持so过反调试)

    转自:http://bbs.pediy.com/thread-217059.htm 工具与环境 Xposed IDA 6.8 JEB 2.2.5 Fiddler2 010Editor NEXUS 5 ...

  9. android 反编译_Android 反编译实战

    ❝ 文中相关工具下载链接:https://pan.baidu.com/s/1_bknFSnsYxLUNJ3WTulEFA 提取码:4qo8 ❞ 我的所有原创Android知识体系 https://gi ...

  10. Java——编译与反编译

    ** 一.基础知识 ** 1.1 编程语言 在介绍编译和反编译之前,我们先来简单介绍下编程语言(Programming Language).编程语言(Programming Language)分为低级 ...

最新文章

  1. PCIe例程理解(一)用户逻辑模块(接收)仿真分析
  2. 多线程——实现Callable接口
  3. 【跃迁之路】【522天】程序员高效学习方法论探索系列(实验阶段279-2018.07.12)...
  4. c 向html页面传值,html页面之间的传值,获取元素和方法的调用
  5. mysql主从在线的搭建
  6. 《编码规范和测试方法——C/C++版》作业 ·008——编写一个符合依赖倒置原则的简单学生管理系统
  7. 安全教育平台账号后四位_安全教育平台登录账号是什么?
  8. 下载pdf分页和不分页代码
  9. 一个浏览图片新闻的App
  10. 太网交换机芯片-KSZ系列
  11. 知识点 - 后缀数组
  12. python getattrribute_Python学习——面向对象高级之反射
  13. qmmp安装包linux版,Qmmp音频播放器1.2.1发布下载(附Ubuntu 18.04下安装方法)
  14. 以太坊源码学习(一) 正本清源
  15. SQLite FTS3 和 FTS4 插件
  16. 【回归预测】基于TPA-LSTM(时间注意力注意力机制长短期记忆神经网络)实现数据多输入单输出回归预测附matlab代码
  17. Django项目连接MongoDB的三种方法
  18. Qt 按钮控件虚线框
  19. 谱半径一定大于0_[转载]关于谱半径(spectrum radius)
  20. 计算字符串长度(可同时字母和汉字,字母占一个字符,汉字占2个字符)

热门文章

  1. Dreamweaver入门基础与HTML视频教程
  2. c语言 文本放大,Javascript 编写的文字放大效果_js
  3. 数学分析教程(科大)——2.7笔记+习题
  4. 深信服面试智力题-------三人求平均工资
  5. php连接 mysql的三种连接方式
  6. 一个20岁工作了4年男网管真情自白书
  7. 理光2014ad扫描服务器响应,理光mp2014ad扫描驱动和打印驱动
  8. windwos .bat脚本大全
  9. Ubuntu通过清华镜像源下载软件
  10. resin java_让resin4自动编译java文件