APP安全_Android反编译

反编译

Android的反编译工具:apktool,JEB等。

  • Apk 文件的结构,如下:
  1. META-INF:签名文件
  2. res:资源文件,里面的 xml 格式文件在编译过程中由文本格式转化为二进制的 AXML 文件格式
  3. AndroidManifest.xml:android 配置文件,编译过程依然被转换为 AXML 格式
  4. classes.dex:java 代码编译后产生的类似字节码的文件(dalvik 字节码,核心逻辑)
  5. resources.arsc:具有 id 值资源的索引表(asserts 文件夹中的资源不会生成索引)
  6. 其他文件:可由开发者自己添加,诸如 assets 等,或者 lib(native so 代码)等目录
  • 一般APK破解过程:
  • 逆向破解Android小技巧
  1. 信息反馈:通过界面的一些弹出信息,界面特点寻找突破点。
  2. 特征函数:比如搜Toast,Log,getSignature等。
  3. 代码注入:把toast或者log函数注入到程序中,跟踪位置。
  4. 打印堆栈:插入new Exception(“定位”).printStackTrace()。
  5. 网络抓包:通过抓包得到的关键字段,在代码中定位。
  • 推荐资料书
  1. Android软件安全与逆向分析
  2. Android Security Internals

配套装备

  1. Apktool
  2. signapk.jar【apk签名工具】
    java -jar signapk.jar testkey.x509.pem testkey.pk8 old.apk new.apk
  3. dex2jar
  4. jd-gui
  5. JEB

Apktool+dex2jar+jd-gui

apktool安装(MacOS)

  1. 点击下载地址,在看雪学院网站下载相应的apktool包;
  2. 解压,将包中的三个文件复制到/usr/local/bin下;
  3. 执行apktool,查看安装情况。

dex2jar安装

  1. 点击下载地址

jd-gui安装(MacOS)

  1. 点击下载地址

反编译apk包

  1. 进入存放apk目录;
  2. apktool d XX.apk;【编译apk:apktool b app文件】
  3. 在同级目录中出现与包名一样的文件,生成的文件如下:

    各文件简单介绍如下:
    AndroidManifest.xml:清单文件,非二进制。
    apktool.yml:apk属性。
    original:原始数据,应用的二进制清单和签名。
    res:资源文件。
    smali:dex解析的代码。smali是dex虚拟机的解析格式,在dex2jar中也包含smali格式的转换。

反编译classes.dex文件

  1. 将需要反编译的apk重命名后缀为zip,解压,解压后的文件夹中有个classes.dex文件,获取该文件的路径 ;
  2. 输入命令cd xxx/xxx/dex2jar,进入下载的dex2jar文件夹中 ;
  3. 输入命令sh dextool.sh xxx/xxx/xxx/classes.dex,进行反编译classes.dex文件;
  4. 操作完成后,会在dex2jar文件夹中生成一个classes-dex2jar.jar文件 ;
  5. 打开jd-gui工具,将classes-dex2jar.jar拖入jd-gui界面上,就能够看到Java文件。

踩过的坑

  1. 反编译apk包报错

    执行反编译apk包时,提示Could not decode arsc file;
    产生原因:apktool.apk版本太低,下载最新的版本,将旧的apktool.jar替换。

JEB

安装

  1. 下载地址
  2. 解压,将JEB根目录配置到环境变量中;
  3. 运行jeb_macos.sh,启动JEB窗口;
  4. File->open,选择*.apk。

踩过的坑

  1. mac下运行jeb_macos.sh报错

    报错原因:jeb包中的swt是win版本
    解决办法:下载mac版本的swt,swt-3.6.1-cocoa-macosx-x86_64.jar.zip,存放到Jeb/bin下,将swt-3.6.1-cocoa-macosx-x86_64.jar修改成swt.jar。

原文地址:https://www.cnblogs.com/yoyoyang/p/11815432.html

时间: 2024-10-11 20:19:51

APP安全_Android反编译的相关文章

[APP]如果你想反编译

反编译,主要用到两类工具,一个就是获取apk包的包名(appPackage)和类名(appActivity)的工具,其实就是反编译出java源代码,dex2jar和jd-gui:一个是将一个apk包反编译然户加入自己签名,修改一些参数,让它更好的用于自动化测试的apptoools,下面简单介绍这两个工具的使用: 一.dex2jar和jd-gui 1.下载APK,修改APK后缀名为zip并解压该zip文件: 2.打开文件夹找到classes.dex文件,并把他复制到dex2jar文件夹下面,在cm

APP反编译第一课《如何找到核心代码》

相信很多人都应该会去接触APP反编译,本小七给大家带来入门级别套路,自己也在慢慢摸索学习,一起成长吧.第一步,反编译需要的工具有:一.java环境,其实这里你只要安装了burp就不用管这个的二.apktool工具三.dex2jar工具四.sublime工具:Sublime Text 是一款流行的代码编辑器软件,也是HTML和散文先进的文本编辑器,可运行在Linux,Windows和Mac OS X.五.jd-gui.exe工具首先我们来看看 Apk 文件的结构: META-INF:签名文件(这个

Android 反编译初探 应用是如何被注入广告的

本文由我的微信公众号:鸿洋(hongyangAndroid)原创首发. 转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/53370414: 本文出自:[张鸿洋的博客] 一.概述 最近和朋友聊天,发现一些灰色产业链通过批量反编译市场上的apk,然后进行注入广告,再重新打包上渠道. 我想大家都不希望自己家的产品或者自己的app那么容易被"占据",但是想要自身能够防御,首先要知道对方的手段.所以本篇博客的目的不是教大家如何

浅析,反编译 Android APK流程分享!

作为公司的技术兼产品人员,看到别人开发的优秀Android APK实在羡慕,在Android开发的过程,也很想去学习别人那些漂亮的动画和布局,或是产品逻辑等是怎么做的,所以最近学习了对APK的反编译,只做学习借鉴,提升产品竞争力,不为任何不法企图之用.        首先下载反编译软件apktool .dex2jar. jd-gui对APK进行反编译 工具介绍: apktool :资源文件获取,可以提取出图片文件和布局文件进行使用查看,其原理详情:(http://my.oschina.net/1

反编译app方法

如果你没有代码,那么可以反编译该app. 这里将用到2个工具,分别是dex2jar和jd-gui.你可以在这里下载目前为止的最新版本以及示例apk. 我们以工具包里的ContactManager.apk为例,简单介绍一下反编译的流程. 1,重命名ContactManager.apk为ContactManager.zip并解压得到文件classes.dex: 2,解压dex2jar-0.0.9.15.zip,并从命令行进入该文件夹: 3,运行命令 d2j-dex2jar.bat path_to\c

手把手教你反编译别人的app

虽然iOS系统相比于其他手机操作系统相对安全,但是这个安全并不是绝对的,我一直相信,道高一尺魔高一丈.此文想以实际例子出发,告诉大家,如何去反编译一个app,并且从某个角度来说,iOS没有传说中的"安全". 这里只最简单的结论给大家,具体原理以及工具的详细使用,请各位自行Google,为什么这么做呢,因为我想用最简单的语言,让没有汇编基础的同学也能明白. 将用以下几个方面来阐述我的观点: iOS app可以"有条件"地被反编译 脱掉App Store给"二

安卓App安全保护,如何防止app反编译!

先进的移动设备具有各种奇妙的功能,从长远来看可以节省大量的时间和金钱.但这些设备真是太新了,所以他们具有"不可预料的弱点和保护不当的价值." 手机方面,恶意软件大约99%的目标是针对Android的,而Java编程语言里的漏洞被人利用的机会最高.文章出处!www.ijiami.cn 基于可理解的原因,尽管中国已是智能手机生产大国和消费大国,但智能手机的"大脑"即操作系统还全靠"外援",目前主要有谷歌的安卓系统和苹果的IOS系统.两者中,开放的安卓

App反编译二次打包常见问题处理

1.二次打包时报错:Error retrieving parent for item: No resource found that matches the given name 如: D:\用户文件夹\Desktop\APP反编译\Android反编译工具包(最新版)\apk2java\apktool1.4. 1\HJ7\res\values\styles.xml:11: error: Error retrieving parent for item: No reso urce found t

[转]结合HierarchyViewer和APK文件反编译获得APP元素id值

背景: 最近在使用Robotium进行Android自动化测试.遇到了一个问题:我需要获得一个View的id(int型数值).此前我在http://maider.blog.sohu.com/255448342.html和http://maider.blog.sohu.com/255485243.html两篇文章中讲述了如何打开手机上的View Server来使用HierarchyViewer.HierarchyViewer对查看UI组件固然有帮助,但要想获取一个元素的id还是不行的.请看下图: