Enjarify - Android逆向(二)

首先奉上enjarify的Github地址,小伙伴们可以clone到本地使用哦

Enjarify介绍

上一节我们说了,在开发Android应用时,Android工具经过ADT的复杂编译后转换成dex文件,这是一个逐步优化的过程,dex是Android系统中可以在Dalvik虚拟机上直接运行的文件格式。java源代码dex文件的指令码就是Dalvik虚拟机专有的一套指令集,专门为嵌入式系统优化过,相比标准java的.class文件,它体积小,运行效率高。而我们可以通过一系列操作将这个Dalvik字节码反编译回JVM虚拟机可执行的字节码文件。这里enjarify就是这样的一个Python工具,只要将apk文件拖到它的执行脚本上即可以实现自动化的反编译。

安装和使用

配置运行环境

enjarify基于Python 3环境,所以你可能需要安装Python 3(点击这里下载)

下载enjarify

安装完Python并且clone上面给出的GitHub仓库后我们就可以使用enjarify啦

配置环境变量

在程序根目录下执行:

​ python3 -O -m enjarify.main ${PATH}\yourapp.apk

Linux & Mac 用户:

ln -s "$PWD/enjarify.sh" ~/bin/enjarify

Windows用户:

右键点击此电脑 -> 点击属性 -> 找到左侧的高级系统设置 -> 在弹出的系统属性面板找到高级选项卡 -> 点击下方的环境变量 -> 在弹出的环境变量面板里找到下方系统变量中的Path变量 -> 双击后添加enjarify所在的目录后保存

使用enjarify

这里预先假设你的APP安装包名为yourapp.apk并且APK在终端所在目录下

enjarify yourapp.apk

或者你想反编译的是dex文件,可以这样使用

enjarify classes2.dex

默认的输出文件在当前目录下并且名为[inputname]-enjarify.jar. 如果想修改输出文件名可以使用 -o或者 --output 选项。例如:

enjarify yourapp.apk -o yourapp.jar

通常情况下,enjarify不会重写已经存在的输出文件,如果需要覆盖输出文件的话就得使用 -f或者 --force 选项。

Enjarify的限制

只支持version 35的dex文件格式,所以在 Android N, O, 和 P中引入的与Java 8有关的特性的文件都无法进行反编译(这个一般不会出问题的,遇到的也都是大佬)。

Enjarify目前无法转换metadata,例如源文件属性,行号和注释。

性能小贴士

Enjarify是基于Python 3的嘛,这里使用PyPy要比CPython快好多,Linux的脚本里面包装了PyPy,Windows的话要自己搞一下了。

可以通过 --fast选项来提高反编译速度,这样会降低一些可读性,这里你自己做决定吧,大部分包应该用不到这个功能。

首发于个人博客Bismuth

android p ify 三星,Enjarify - Android逆向(二)相关推荐

  1. 三星android webview,[转]三星GS4(Android 4.3)上webview crash问题

    转载自:http://faywong.github.io/posts/2015-01-15-03.html 最近发现客户端中android4.3上GS4手机上的WebApp应用特别容易crash.分析 ...

  2. 三星android 4.4,三星I9508V Android 4.4-5.0 (GALAXY S4 移动4G版)刷Recovery教程

    我们要为三星I9508V Android 4.4-5.0 (GALAXY S4 移动4G版)刷机,就需要先刷入三星I9508V Android 4.4-5.0 (GALAXY S4 移动4G版)第三方 ...

  3. 三星android测试机型,三星最新Android 10升级计划公布!共22款机型,有你的吗?...

    原标题:三星最新Android 10升级计划公布!共22款机型,有你的吗? 3月3日消息,今天知名数码博主曝光了三星升级Android 10的计划表.需要注意的是,升级计划可能因为开发进度.测试结果存 ...

  4. android n ify三星,三星年度Android旗舰Galaxy S9包装盒曝光!

    日前,在网上曝光了一张疑似 Galaxy S9 的包装盒谍照,从图片上来看,这是包装盒的背部,上面包含了不少的硬件信息,但绝大多数大家都已经猜到了. 三星的这部年度旗舰 Android 手机 Gala ...

  5. 三星对Android的支持,三星应对Android设备开放Gear手表兼容性

    [搜狐数码消息]4月11日消息,三星去年推出的Galaxy Gear存在不少问题,其中较为明显的一个是支持的手机型号非常有限,即便是三星自己的Galaxy系列.而在今年的Gear系列设备身上,这一点有 ...

  6. Android逆向笔记-使用Android Studio调试Smali代码(方式二)

    这里我使用Android Studio写了这样的一个程序: 这里我使用Android Studio写了这样的一个程序: 然后点下BUTTON后: 下面写下如何调试这种程序. 开发环境: win 10: ...

  7. s5原生android 5.0,三星Galaxy S5升级Android 5.0:美味棒棒糖

    快速设置与通知 作为Android 5.0 Lollipop重要的新特性之一,在全新TouchWiz的声音与通知菜单也中也新增了智能通知选项,可对每一个应用的通知状态进行管理,避免敏感信息泄露,而通知 ...

  8. Android安装BusyBox(三星N7108)

    近期公司安卓app测试,分配任务为监控APP内存.CPU占用率.因安卓是基于linux开发,故很容易就联想使用Linux监控相关的命令.想法总是美好的,现实总是残酷的,使用三星 Galaxy Note ...

  9. Android 应用程序集成Google 登录及二次封装

    谷歌登录API:  https://developers.google.com/identity/sign-in/android/ 1.注册并且登录google网站 https://accounts. ...

最新文章

  1. ping与telnet的区别
  2. Leetcode: LRU Cache
  3. http拨测是什么意思_HTTP 501 是什么意思?
  4. teradata 数据定义
  5. Palo Alto Networks 支持仪表盘漏洞泄露数千份客户支持工单
  6. 喜欢就争取,得到就珍惜,错过就忘记—dbGet(二)
  7. Mac cmake命令不可用-bash: cmake: command not found
  8. 11开根号不用计算机,数学开根号有什么方法?不用计算器
  9. 常用adb命令 主要针对车机硬件类用的多
  10. 一起talk C栗子吧(第一百零三回:C语言实例--进程间通信大阅兵)
  11. 怎样才能叫高级程序员?
  12. Firefox os
  13. LruCache源码浅析
  14. IDEA 安装快捷键提示工具:Key promoter X
  15. 辩证看待曾仕强老师的易经的智慧
  16. 机器学习中的数学——距离定义(九):测地距离(Geodesic Distance)
  17. Geekban极客班 第三周
  18. 探讨IT人的创业方向
  19. php.krab病毒,SQLServer数据库中了勒索病毒加密,扩展名改为Globeimposter-Alpha666qqz
  20. 布谷鸟哈希函数的参数_Cuckoo Hash 布谷鸟哈希

热门文章

  1. redis高级进阶(2)
  2. 《数据整理实践指南》一第2章 是我的问题还是数据的问题
  3. 关于CSS一些细节问题
  4. Android--Handler的使用方法:在子线程中更新界面
  5. 路由映射-route-map之一路由再发布
  6. java中有jar连接数据库 SqlHelper配置
  7. 论大学毕业后是否适合创业
  8. Web 开发人员和设计师必读文章推荐【系列三十】
  9. win10安装pytorch很慢,如何解决?
  10. tensorflow2.1学习--熟悉TensorFlow写整个项目即鸢尾花项目